OpenRC (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de Openrc. Data da última tradução: 2020-08-14. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.
Atenção: O Arch Linux possui suporte oficial apenas para o systemd. Ao usar o OpenRC, mencione isso em solicitações de suporte.

O OpenRC é um gerenciador de serviços mantido pelos desenvolvedores do Gentoo. O OpenRC é baseado em dependências e trabalha com o programa init fornecido pelo sistema, normalmente SysVinit.

Instalação

Atenção: O openrcAUR depende (implicitamente) do sysvinitAUR, que entra em conflito com o systemd-sysvcompat. Portanto, o sistema inicializa com sysvinit simples por padrão (não com o OpenRC ou systemd), certifique-se de adicionar um init=some-init ao parâmetro do kernel.

O OpenRC e os pacotes acompanhantes estão disponíveis no AUR. Para obter detalhes sobre os componentes init, consulte Init.

Instale o pacote openrcAUR ou openrc-gitAUR. A partir da versão 0.25, o OpenRC fornece seu próprio init em /usr/bin/openrc-init. Opcionalmente, você pode usar outras inits de, por exemplo, busybox ou openrc-sysvinitAUR[link quebrado: package not found]. Observe que quando openrc-init é usado, deve ser emparelhado com openrc-shutdown, e não o shutdown ou reboot comandos de outros pacotes, caso contrário, você encontrará erros.

Um conjunto básico de arquivos de serviço está disponível no pacote openrc-arch-services-gitAUR. Outros pacotes podem ter arquivos de serviço fornecidos fora deste pacote; é recomendável uma pesquisa no AUR.

Para manter a compatibilidade com o initscripts-forkAUR, arquivos de configuração são instalados em /etc/openrc/.

Inicializando

Para inicializar com OpenRC defina o {ic|init}} opção no kernel parameters.
Para usar o init integrado do OpenRC, defina init=/usr/bin/openrc-init. Para usar o SysVinit, fornecido pelo openrc-sysvinitAUR[link quebrado: package not found], defina init=/usr/bin/init-openrc.
Observe que ao usar openrc-init, o /etc/inittab o arquivo não é usado.

Configuração

O diretório /etc/openrc/conf.d, e o arquivo /etc/openrc/rc.d é usado para a configuração.

Para obter informações gerais sobre a configuração do OpenRC, consulte:

Para obter instruções ao migrar do systemd, veja Init#Configuração.

Serviços

Os serviços OpenRC são ativados pela emissão rc-update add service_name runlevel como root. Recomenda-se habilitar pelo menos os seguintes serviços:

Nome do serviço Nivel de execução Descrição
udev sysinit Conexão automática do dispositivo
alsa padrão ALSA estado
acpid padrão eventos ACPI
dbus padrão Messagem dbus
dcron padrão Scheduling
syslog-ng padrão Sistema de logs
Atenção: Se estiver usando init=/usr/bin/openrc-init em seus parâmetros de kernel, você precisará habilitar manualmente os serviços do getty, caso contrário, você ficará sem TTYs interativos[1]

Se necessário, crie serviços para cada getty desejado criando links simbólicos para /etc/openrc/init.d/getty. Por exemplo: para o /dev/tty1:

# ln -s /etc/openrc/init.d/agetty{,.tty1}
# rc-update add agetty.tty1 default

Veja também Serviços nativos (EN) e Daemons.

Rede

A rede é configurada por meio de newnet. [2] Modifique o arquivo /etc/openrc/conf.d/network; tanto o comando ip (iproute2) e o ifconfig (net-tools) são suportados. Abaixo está um exemplo de configuração usando ip.

ip_eth0="192.168.1.2/24"
defaultiproute="via 192.168.1.1"
ifup_eth0="ip link set \$int mtu 1500"

O serviço de rede é adicionado ao nível de execução de inicialização por padrão, então nenhuma ação adicional é necessária. Veja Network configuration para informações gerais de rede.

Nota: Você também pode usar o NetworkManager, dhcpcd ou netcfgAUR habilitando os respectivos serviços. O netcfg tem o mesmo comportamento do netctl (veja [3] se você deseja habilitar a conexão de perfis na inicialização - requer wpa_actiond). Veja ferramentas netcfg (EN).

Logs de inicialização

Para habilitar o log de inicialização, descomente a linha rc_logger="YES" em /etc/openrc/rc.conf. Quando habilitado, os logs de inicialização são armazenados em /var/log/rc.log.

Hostname

OpenRC define o nome do host de /etc/openrc/conf.d/hostname. O arquivo tem a seguinte aparência:

# Defina como o nome do host desta máquina
hostname="meunomedohost"

Módulos do kernel

OpenRC usa /etc/openrc/conf.d/modules ao invés de /etc/modules-load.d. Por exemplo:

/etc/openrc/conf.d/modules
# Você deve consultar a documentação e configuração do seu kernel
# para obter uma lista de módulos e suas opções.

modules="vboxdrv acpi_cpufreq"

Locale

O layout do teclado pode ser configurado via /etc/openrc/conf.d/keymaps e /etc/openrc/conf.d/consolefont. Você também pode definir as configurações por meio do arquivo /etc/locale.conf, que é obtido via /etc/profile.d/locale.sh.

Veja [4] e Locale para mais detalhes.

Uso

Esta seção traça um paralelo entre systemd e outro sistema de init.

Você pode omitir o .service e a extensão .target, especialmente se estiver editando temporariamente o kernel parameters.

SystemD SysVinit OpenRC Descrição
systemctl list-units rc.d list rc-status Listar o status dos serviços em execução
systemctl --failed rc-status --crashed Verificar serviços com falha
systemctl --all rc-update -v show Exibir todos os serviços disponíveis.
systemctl (start, stop, restart, status) daemon.service rc.d (start, stop, restart) daemon rc-service daemon (start, stop, restart, status) Mude o estado do serviço.
systemctl (enable, disable) daemon.service chkconfig daemon (on, off) rc-update (add, del) daemon Ative ou desative o serviço.
systemctl daemon-reload chkconfig daemon --add Crie ou modifique a configuração.

Dicas e truques

Inicialização silenciosa

Para ocultar mensagens de inicialização do OpenRC, você pode editar o /etc/inittab e adcionar --quiet para cada comando openrc. Para mais informações, verifique com $ openrc -h.

Solução de problemas

Erro ao desmontar /tmp

Ao desligar o sistema, você pode receber uma mensagem de erro como

* Unmounting /tmp ...
* in use but fuser finds nothing [ !! ]

Isso pode ser corrigido adicionando

no_umounts="/tmp"

ao /etc/openrc/conf.d/localmount

Nota: Esse problema ocorre apenas se o tmp estiver montado como tmpfs.

Desativar IPv6 não funciona

Uma opção é adicionar:

# Desativar ipv6
net.ipv6.conf.all.disable_ipv6 = 1

em um arquivo com uma extensão .conf debaixo do /etc/openrc/sysctl.d

Durante o desligamento, remontando a raiz como falha somente leitura

Se acontecer o acima, edite o arquivo /etc/openrc/init.d/mount-ro e coloque:

telinit u

após a seguinte linha:

# Libere todas as gravações pendentes no disco agora
sync; sync

/etc/sysctl.conf não encontrado

Por padrão, sysctl --system é chamado para carregar a configuração do sysctl. Isso inclui o arquivo /etc/sysctl.conf, que foi removido do Arch. [5]

Para evitar um erro de arquivo ausente, crie o arquivo:

# touch /etc/sysctl.conf

opentmpfiles-setup falhou ao iniciar

Ao inicializar o openrc, você pode ver linhas como estas:

* Setting up tmpfiles.d entries ...
chattr: Operation not supported while setting flags on /var/log/journal
chattr: No such file or directory while trying to stat /var/log/journal/%m
chattr: Operation not supported while setting flags on /var/log/journal/remote
[ !! ]
ERROR: opentmpfiles-setup failed to start

Isso é causado por /usr/lib/tmpfiles.d/journal-nocow.conf usando opções que são válidas apenas se o journal estiver em um sistema de arquivos btrfs.

Veja https://github.com/OpenRC/opentmpfiles/issues/2 para detalhes.

Uma solução alternativa é criar um /etc/tmpfiles.d/journal-nocow.conf vazio para substituir as configurações.

Usando OpenRC com um ambiente de desktop

Se estiver usando OpenRC com um ambiente desktop, O ConsoleKit pode ajudar. Instale o serviço ao /etc/openrc/init.d, e habilite-o:

# rc-update add consolekit default

Veja ConsoleKit para mais informações.

Comece com OpenRC 0.28 SysVinit é substituído por openrc-init, shutdown é substituído por openrc-shutdown, usando o consolekit o sistema pode desligar ao desligar a partir da sessão de desktop. Então use elogind-gitAUR ative-o com:

# rc-update add elogind default

Além disso, você precisa substituir polkit-consolekit por polkit-elogindAUR[link quebrado: package not found], ou o sistema irá soar o alarme "não autorizado a executar operação" ao montar o dispositivo usb e não pode reiniciar ou desligar a partir da sessão de desktop.

Revertendo para o systemd

Reverter para o systemd deve ser simples na maioria dos casos. É essencialmente a reversão da migração para OpenRC, com cuidado no seguinte:

  • Remoção ou edição do parâmetro init= na linha de comando do kernel
  • Substituição de quaisquer pacotes feitos para o OpenRC ou outros sistemas sem o systemd para seus pacotes equivalentes (por exemplo, substituição do dbus-nosystemdAUR para o dbus)

Veja também