OpenRC

OpenRC é um sistema de inicialização para Sistemas Operacionais GNU/Linux, GNU/Hurd e Unix, compatível com Posix. Criado pela equipe de desenvolvedores do Gentoo GNU/Linux. Sua finalidade é ligar/desligar e gerenciar os serviços do Sistema Operacional.

O OpenRC surgiu no final de 20071, quando Roy Marples, se aposentou como desenvolvedor do Gentoo GNU/Linux. No entanto, ele desejou manter o projeto baselayout-22 como um projeto independente. O Conselho do projeto Gentoo permitiu que ele continuace mantendo-o, para tanto o nome do projeto deveria ser modificado, surgindo o OpenRC sob a licença BSD.

Em 2010 o OpenRC voltou a ser mantido pelos desenvolvedores do Gentoo GNU/Linux, após Roy Marples decidir que não iria manter o projeto. William Hubbs e vários outros desenvolvedores assumiram o OpenRC a partir deste ponto, sendo a versão 0.8.x o primeiro lançamento feito pela nova equipe. Em 2011 o OpenRC voltou para arvora estável do Gentoo GNU/Linux.

Em 2013, a equipe do OpenRC tornou-se independente do Gentoo GNU/Linux novamente e mudou o desenvolvimento primário para o Github.

Características

O OpenRC fornece uma série de recursos interessantes:

  1. Compatível com a filosofia UNIX
  2. Portável para sistemas não GNU/Linux
  3. Suporte a Cgroups
  4. Inicialização paralela de serviços
  5. Inicialização baseada em dependências
  6. Cálculo de dependência automática
  7. Possibilita limitar/ilimitar recursos para cada serviço
  8. Seções de configurações divididas; init.d e conf.d
  9. Arquivos de configurações bem comentados e explicativos
  10. Scripts de inicialização extensíveis e personalizáveis
  11. Foi desenvolvido para ser 100% compatível com ambientes de virtualização
  12. Arquitetura modular adequada e separada de componentes opcionais; Cron, syslog…
  13. Manipulação de rede expressiva e flexível, incluindo VPN
  14. Modo verbose para debugar a atividade dos serviços

Configuração

Configurar o OpenRC é uma tarefa simples, este artigo oferece alguns passos para otimizar o uso desse sistema de incialização.

Logs de inicialização

Abra o arquivo de configuração /etc/rc.conf e descomente a linha referente rc_logger=“YES”. Os arquivos de logs serão armazenados em /var/log/rc.log.

Nome de host

Para adicionar ou editar um nome de host, edite ou crie o arquivo /etc/conf.d/hostname e adicione:

hostname="nome_desejado"

Teclado

Modificar o mapa de teclas para uso no console edite o arquivo /etc/conf.d/consolefont. Consulte a lista completa de todas as opções disponíveis em /usr/share/kbd/keymaps/i386. Para uma mata de taclado abnt2 padrão adicione:

keymap="br-abnt2"

Após editar os arquivos use o comando:

# rc-service keymaps restart

Gerenciador de login

Para ativar o gerenciador de login, edite o arquivo /etc/conf.d/xdm. No exemplo a seguir tomamos o slim como base.

DISPLAYMANAGER="slim"

Habilite o daemon xdm:

# rc-update add xdm default

Módulos do kernel

Para o carregamento automático de algum módulo do Kernel Linux-Libre edite o arquivo /etc/conf.d/modules.

modules="nome_do_módulo"

Isso é necessário apenas após a intalação de algum aplicativo ou driver, feita pelo administrador do sistema, por padrão todos os módulos nativos do Devuan GNU+Linux são carregados automaticamente.

Inicialização silenciosa

Para ocultar as mensagens do OpenRC durante a inicialização do sistema, edite o arquivo /etc/inittab e dicione a opção ao comando do OpenRC:

--quiet

Para mais informações use o comando help:

$ openrc -h

Runlevels

O OpenRC, assim como sysvinit e o init (BSD), possui um conceito de níveis de execução de tarefas (Runlevels), para definí-los o OpenRC usa nomes e não números como é feito da forma convencional. Existem dois tipos de Runlevels:

Runlevels internos:

  • sysinit: inicia o sistema.
  • shutdown: desliga o sistema.
  • reboot: reinicia o sistema.

Runlevels externos:

  • boot: inicia todos os serviços essenciais para o sistema e demais Runlevels.
  • default: usado para operações convencionais.
  • nonetwork: usado quando conexão com a internet não é necessária.
  • single: usado para modo de usuário único.

Exemplificando a transição entre Runlevels durante uma operação de uso convencional no Devuan GNU+Linux, seria algo parecido com:

sysinit -> boot -> default -> shutdown

Comandos do OpenRC

O OpenRC oferece inúmeros comandos para facilitar a administração dos serviços em um Sistema Operacional. Verificar serviços

Para verificar o status dos serviços em execução e seus respectivos Runlevels, execute:

$ rc-status

Listar serviços

Para listar todos os serviços, execute:

$ rc-service --list

Adicionar serviço

Para adicionar um serviço a um determinado Runlevel, execute:

# rc-update add <serviço> <runlevel>

Por exemplo,

# rc-update add sshd default

O Runlevel pode ser omitido no comando, desta forma o Runlevel de execução será adotado, normalmente o default.

# rc-update add sshd

Remover serviço

Para remover um serviço, execute:

# rc-update del <serviço> <runlevel>

Por exemplo,

# rc-update del sshd default

O Runlevel pode ser omitido no comando, desta forma o Runlevel de execução será adotado, normalmente o default.

# rc-update del sshd

Iniciar serviço

Para iniciar um serviço, execute:

# rc-service <serviço> start

Por exemplo,

# rc-service sshd start

Reiniciar serviço

Para reiniciar um serviço, execute:

# rc-service <serviço> restart

Por exemplo,

# rc-service sshd restart

Parar serviço

Para parar um serviço, execute:

# rc-service <serviço>  stop

Por exemplo,

# rc-service sshd  stop

Veja também

Ver comentários


  1. Para mais detalhes acesse: OpenRC History ↩︎

  2. Baselayout2 era o init padrão do Gentoo Linux na época que surgiu o OpenRC. ↩︎