OpenRC (Português) - ArchWiki

Jump to content
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.

Artigos relacionados

- init

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 nos parâmetros do kernel.
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:

- OpenRC manuals
- OpenRC migration
- gentoo wiki.

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 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`

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

- Wikipedia:OpenRC
- Gentoo wiki
- Forum thread about OpenRC in Arch
- Blog: OpenRC on Arch Linux
- Manjaro wiki

Category:

- Init (Português)

Hidden category:

- Pages with broken package links