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 2007, quando Roy Marples, se aposentou como desenvolvedor do Gentoo GNU/Linux. No entanto, ele desejou manter o projeto baselayout-2 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 oGithub.
O OpenRC fornece uma série de recursos interessantes:
Configurar o OpenRC é uma tarefa simples, este artigo oferece alguns passos para otimizar o uso desse sistema de incializaçã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.
Para adicionar ou editar um nome de host, edite ou crie o arquivo /etc/conf.d/hostname e adicione:
hostname="nome_desejado"
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
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
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.
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
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:
Runlevels externos:
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
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
Para listar todos os serviços, execute:
$ rc-service --list
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
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
Para iniciar um serviço, execute:
# rc-service <serviço> start
Por exemplo,
# rc-service sshd start
Para reiniciar um serviço, execute:
# rc-service <serviço> restart
Por exemplo,
# rc-service sshd restart
Para parar um serviço, execute:
# rc-service <serviço> stop
Por exemplo,
# rc-service sshd stop