OpenRC (Português)
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
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[link quebrado: package not found]. 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. 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[link quebrado: package not found], arquivos de configuração são instalados em /etc/openrc/.
Inicializando
Para inicializar com OpenRC, defina o {ic|init}} opção nos parâmetros do kernel.
Para usar o init integrado do OpenRC, defina init=/usr/bin/openrc-init.
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 | Runlevel | 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 |
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 Gentoo:Systemd#Native services.
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.
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 Gentoo:Localization/Guide#Keyboard layout for the console 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 os parâmetros do kernel.
| 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
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. [3]
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.
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[link quebrado: package not found] para o dbus)