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
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 |
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.
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
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)