Testando e usando o systemd em Sabayon Linux
Dica publicada em Linux / Hardware
Testando e usando o systemd em Sabayon Linux
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.
DICA AGORA OBSOLETA. TODOS OS SABAYONS NOVOS VEM COM SYSTEMD COMO PADRÃO
IMPORTANTES COMPLEMENTOS E ATUALIZAÇÔES DA DICA:
RESOLVENDO PROBLEMA DE PERDA DE BOOT COM Systemd:
Se você está usando Systemd, após algumas atualizações, a nova versão (no meu caso,pelo menos), "trocou" o Caminho, o Path do executável INIT e com isso,não há mais Boot.
a mensagem de erro é:
"/sbin/init.d/sysvinit/init not found"
A Solução é simples. Editando o Grub:
http://www.vivaolinux.com.br/dica/Editando-diretamente-o-arquivo-controlador-do-GRUB-2/
Troque na linha do boot do kernel:
real_init=/sbin/init.d/sysvinit/init
por:
real_init=/sbin/init.d/sysvinit/final/init
Atualizado a 23 de Agosto 2013;
APOS ATUALIZAÇÂO NOVA PERDA DE BOOT DO KERNEL:
Ocorre tanto com Systemd como com Sysvinit clássico!
Solução, não é o pacote Systemd versão nova, é o Kernel, faça downgrade do kernel ao 3.10.6 ou ao 3.9.11, em condições de chroot.
Procedimento de Elduderino, Itália:
https://forum.sabayon.org/viewtopic.php?f=57&t=30617&p=165746#p165746
No meu caso, deixei o kernel 3.9.11, mascarei, e vou deixar assim até o kernel 4 ! rsrsrsrsrsrsr