Introdução
Em Windows, drivers executáveis e bibliotecas DLL são usadas para reconhecer o hardware. Em
GNU/Linux e
Unix, módulos de kernel reconhecem cada periférico ou dispositivo, que depois será controlado por arquivos de texto especiais e scripts. Drivers executáveis são usados apenas em casos especiais, como placas de vídeo.
No boot, a interação entre o hardware e software é feita pela
camada de abstração de hardware, em inglês,
HAL - Hardware Abstraction Lawer.
Nos
Sabayons antigos, isso era feito através do pacote
hal, que hoje é considerado obsoleto em GNU/Linux (foi incorporado no
udev), e nos Sabayons novos foi substituído pelos pacotes
udisk e
upower.
A informação da camada de hardware é repassada a outros pacotes que, por sua vez, irão montar os dispositivos. O mais usado desses pacotes é o udev, mas às vezes, são usados outros ou mais de um, como o
mdev, eudev, devicekit, sysfs, evdev, dbus, etc.
Montados os dispositivos, chega a fase do boot de iniciar os serviços residentes em memória e os daemons e depois disso, o "nível de inicialização" (runlevel) definido na distribuição é carregado.
Isso é feito pelo pacote
OpenRC (ou em certos casos, pelos pacotes init, sysvinit, upstart ou lauchd) e controlado por arquivos de configuração como: "inittab", "rc.conf", etc.
Nas atuais versões de Sabayon (11, 12 e
Experimental 13), como em muitos outros GNU/Linux moderníssimos, há a tendência a substituir o OpenRC e o udev, por um só pacote, o
systemd:
Ele trabalha com a carga em processamento paralelo e incorpora as funções do udev e do OpenRC, acelerando muito o boot.
Testando o systemd
Justos créditos do procedimento a
Fábio Erculiani e
Joost Ruis, Time do Sabayon.
1. Você deve ter um Sabayon instalado. Atualize-o usando
Rigo, Sulfur ou comandos. Para isso, veja esta minha dica e links citados nela:
2. Se estiver totalmente atualizado, vai ter os pacotes do systemd instalados. Verifique com este comando:
equo s systemd
Se não estiver instalado, instale o pacote systemd e seu suporte e dependências:
sudo equo i systemd eselect-syvinit eselect-settingsd virtual/udev
3. Agora, troque o controlador de inicialização para o systemd:
sudo eselect sysvinit set systemd
$ sudo eselect settingsd set systemd
4.
Edite o arquivo do GRUB, e troque (se houver) o parâmetro antigo de Kernel "init=/linuxrc" por este:
real_init=/sbin/init.d/sysvinit/init
Complementos
1. Não é necessário trocar o kernel, mas se quiser pode fazê-lo.
A
maneira mais fácil em Sabayon é com
Kernel-Switcher:
sudo equo up && sudo equo u
$ equo s linux-sabayon
$ kernel-switcher list
E veja qual o kernel mais novo. Troque o kernel assim:
sudo kernel-switcher switch "nome completo do kernel mais novo"
Os drivers de vídeo serão reinstalados manualmente.
2. Certos comandos clássicos em GNU/Linux poderão não funcionar mais:
Exemplos: setar direto os níveis de inicialização, parar serviços, etc:
sudo init 0
$ sudo init 6
# service "serviço" stop
# reboot
Acostume-se aos novos tempos, novos comandos. Exemplo para parar um serviço:
# systemctl stop "serviço".service
Se "init 0" não funcionar, tente:
# shutdown -h -P now
Ou:
# poweroff
Para resetar o micro, se "reboot" não funcionar, tente:
systemctl reboot
3. Não remova os serviços udev do boot, nem os pacotes do udev nem do OpenRC, nem modifique o inittab "conf.d", "init.d", porque são dependências e porque se o fizer, não poderá voltar atrás e perderá o reconhecimento do hardware, essencial para o seu boot.
Voltando atrás
Não funcionou, ou não gostou de systemd. Voltar ao udev e ao Open-RC.
Execute estes comandos:
sudo eselect sysvinit set sysvinit
$ sudo eselect settingsd set open-rc
Reedite o arquivo do GRUB, recolocando o parâmetro:
init=/linuxrc
Resete o micro. Deve funcionar.
Caso não funcione, reinstale os pacotes do udev e seu suporte e tente resetar:
sudo equo i udev-init-scripts virtual/udev xf86-input-evdev dbus
Se ainda não der, reinstale também o OpenRC e o dbus. No udev, use a opção sem dependências, para não apagar o udev virtual:
sudo equo i dbus
$ sudo emerge -av --nodeps sys-fs/udev
Testes e conclusão
Estou testando e usando em dois computadores meus, com Sabayon:
- AMD Atlhon X2, 64 bits, 8 G de RAM, múltiplo boot, múltiplos ambientes gráficos, Sabayon Linux 11, 64 bits, atualizado. O gerenciador de login é KDM. Boot até a tela de login ocorre em 10 segundos.
- AMD Phenon X8, 64 bits, 16 G de RAM, duplo boot, múltiplos ambientes gráficos, Sabayon Linux 11, 64 bits atualizado. O gerenciador de Login é GDM. Boot até a tela de login ocorre em 6 segundos.
Em ambos os casos, considerável ganho de tempo.
Testei em
Gentoo também (computador descrito no item 1, acima). Nele, o procedimento é basicamente o mesmo, mas deve-se usar obrigatoriamente o
Portage para instalar os pacotes e o systemd está mascarado.