Essa dica explica o passo a passo para adicionarmos um
bootsplash na inicialização e no desligamento do sistema.
Pra quem gosta do
plymouth - que é o software responsável por mostrar o boot gráfico nas principais distribuições - sabe que ele depende inteiramente do systemd, ou seja, inviável utilizarmos no
Slackware.
Esse método é bem simples e faz uso apenas de shell script para mostrar uma imagem no fundo enquanto roda os scripts da pasta /etc/rc.d. Não é preciso recompilar o kernel.
* Os créditos dos autores estão no final desse texto.
1. GERAR UM INITRD PARA O KERNEL ATUAL
Se você já usa o
kernel-generic, então pode pular essa parte. Quem usa o
huge, é necessário alterar para o kernel-generic e gerar um arquivo initrd.gz para rodar o bootsplash.
Para gerar o initrd, rode o script abaixo:
sudo -i
# /usr/share/mkinitrd/mkinitrd_command_generator.sh | bash
Dentro da pasta /boot, foi criado uma pasta e um arquivo; respectivamente initrd-tree e initrd.gz.
Agora precisamos recriar os links System.map, config, e vmlinuz da pasta boot para apontar para o kernel-generic:
sudo ln -sf /boot/System.map-generic-$(uname -r) /boot/System.map
$ sudo ln -sf /boot/config-generic-$(uname -r) /boot/config
$ sudo ln -sf /boot/vmlinuz-generic-$(uname -r) /boot/vmlinuz
Por último, precisamos incluir o initrd no
lilo.conf:
image = /boot/vmlinuz
initrd = /boot/initrd.gz
label = "Linux"
root = /dev/sdXY
read-only
Onde /dev/sdXY corresponde ao HD (X) e a partição (Y) onde se encontra a raiz do sistema.
Após as alterações, rode o comando para gravar as alterações do lilo:
sudo -i lilo
No caso do grub, basta rodar o sudo grub-mkconfig -o /boot/grub/grub.cfg, porém haverá entradas duplicadas no menu do boot. Para eliminarmos essas entradas, remova esses links da pasta boot:
sudo rm /boot/vmlinuz-huge /boot/vmlinuz-generic
Se quiser remover também o huge do menu - o que acho ideal já que ele não será mais utilizado - renomeie a entrada dele para que o grub não detecte:
sudo mv /boot/vmlinuz-huge-$(uname -r) /boot/disabled-vmlinuz-huge-$(uname -r)
Agora, devemos recriar o grub.cfg para que as alterações sejam feitas:
sudo grub-mkconfig -o /boot/grub/grub.cfg
A saída deverá ser semelhante a essa:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-generic-4.4.14
Found initrd image: /boot/initrd.gz
done
Uma entrada generic e sem huge, então está ok!
2. O SCRIPT RC.BOOTSPLASH-MASTER
Esse script fica responsável por executar o rc.S, rc.M, rc.0, e rc.6 em background, enquanto uma imagem é mostrada. Para isso, basta mover o script para /etc/rc.d e criar alguns links. Para baixar o script e instalar:
wget www.meunix.blog.br/scripts/rc.splash-master
$ sudo install -m0755 -o 0:0 rc.splash-master /etc/rc.d
Criar os links necessários:
sudo ln -s /etc/rc.d/rc.splash-master /etc/rc.d/rc.0-splash
$ sudo ln -s /etc/rc.d/rc.splash-master /etc/rc.d/rc.6-splash
$ sudo ln -s /etc/rc.d/rc.splash-master /etc/rc.d/rc.M-splash
$ sudo ln -s /etc/rc.d/rc.splash-master /etc/rc.d/rc.S-splash
3. ALTERAÇÃO DO INITTAB
Devemos agora modificar o arquivo inittab para apontar para os scripts *-splash.
No arquivo
inittab, comente as linhas seguintes e adicione as referências para os links criados anteriormente:
# System initialization (runs when system boots).
#si:S:sysinit:/etc/rc.d/rc.S
si:S:sysinit:/etc/rc.d/rc.S-splash
# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K
# Script to run when going multi user.
#rc:2345:wait:/etc/rc.d/rc.M
rc:2345:wait:/etc/rc.d/rc.M-splash
# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now
# Runlevel 0 halts the system.
#l0:0:wait:/etc/rc.d/rc.0
l0:0:wait:/etc/rc.d/rc.0-splash
# Runlevel 6 reboots the system.
#l6:6:wait:/etc/rc.d/rc.6
l6:6:wait:/etc/rc.d/rc.6-splash
Feitas as alterações, salve e feche o arquivo.
4. CRIAÇÃO DA IMAGEM
Essa parte exige um pouco de conhecimento de GIMP, pois agora que já esta tudo configurado, falta o principal: a imagem que será usada para o bootsplash.
No GIMP, crie uma imagem com a mesma resolução do framebuffer. Se você usa driver proprietário de vídeo, essa resolução é a mesma usada nas configurações do lilo ou do grub. No caso do driver opensource, crie uma imagem na mesma resolução que você usa no ambiente gráfico.
Após a criação da imagem, exporte para o formato .ppm e mova para a pasta boot com o nome slackwarelinux.ppm. O comando ficaria assim:
sudo mv local_da_imagem.ppm /boot/slackwarelinux.ppm
Depois é testar, reiniciando a máquina para ver o bootsplash em funcionamento.
Referências