OpenRC (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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