Boot, GRUB e rollback
12. LVM e initramfs
O novo Debian precisava encontrar o root localizado dentro do LVM durante o estágio inicial do boot.
Foram instalados:
apt install -y lvm2 initramfs-tools
Validação:
pvs
vgs
lvs
Nenhuma alteração foi realizada no VG destinado aos dados da aplicação.
13. Instalação do kernel Debian
O kernel Debian foi instalado com:
apt install -y linux-image-amd64
Na execução documentada:
Linux 6.12.94+deb13-amd64
O initramfs foi inspecionado:
lsinitramfs /boot/initrd.img-* | \
grep -E 'lvm|dm-mod|dm_mod|ext4'
Foram confirmados:
dm-mod
ext4
lvm
Isso demonstrava que o initramfs possuía os componentes necessários para localizar e montar o novo root LVM/ext4.
14. Limpeza do /boot antigo
A partição /boot tinha aproximadamente 1 GiB e continha kernels antigos acumulados.
Antes da limpeza foi preservada uma cópia da configuração GRUB:
cp -a /boot/grub /root/grub-ubuntu-backup
Foram removidos somente kernels antigos já identificados como desnecessários.
Foi mantido o kernel Ubuntu efetivamente em execução:
vmlinuz-5.4.0-169-generic
initrd.img-5.4.0-169-generic
System.map-5.4.0-169-generic
config-5.4.0-169-generic
Após a limpeza, o /boot caiu para aproximadamente:
80 MiB utilizados
828 MiB disponíveis
Essa limpeza permitiu manter simultaneamente o kernel Ubuntu de recuperação e o novo kernel Debian.
15. Compartilhamento temporário do /boot
A partição /dev/sdb2, que já estava montada como /boot no Ubuntu, foi disponibilizada dentro do chroot:
mount --bind /boot /mnt/debian13/boot
Dentro do Debian:
findmnt /boot
O kernel Debian foi reinstalado para garantir que seus arquivos fossem gravados no /boot físico:
apt install --reinstall -y linux-image-6.12.94+deb13-amd64
O /boot passou então a conter simultaneamente:
Ubuntu 20.04
vmlinuz-5.4.0-169-generic
initrd.img-5.4.0-169-generic
Debian 13
vmlinuz-6.12.94+deb13-amd64
initrd.img-6.12.94+deb13-amd64
16. GRUB e estratégia de rollback
Como o servidor utilizava BIOS/Legacy, foi instalado:
apt install -y grub-pc
O GRUB foi configurado para apresentar o menu durante os primeiros boots:
GRUB_DEFAULT=0
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=menu
Entrada explícita para rollback
Não se confiou exclusivamente no os-prober.
Foi criada uma entrada manual para o Ubuntu:
cat > /etc/grub.d/41_ubuntu_fallback <<'EOF'
#!/bin/sh
cat <<'GRUBEOF'
menuentry 'Ubuntu 20.04 - FALLBACK' {
insmod part_gpt
insmod ext2
insmod lvm
search --no-floppy --fs-uuid --set=boot <UUID-DO-BOOT>
linux /vmlinuz-5.4.0-169-generic root=/dev/mapper/sys-root ro
initrd /initrd.img-5.4.0-169-generic
}
GRUBEOF
EOF
chmod 755 /etc/grub.d/41_ubuntu_fallback
A configuração foi então gerada:
update-grub
Foram verificadas explicitamente as entradas:
grep -nE "^menuentry |^submenu " /boot/grub/grub.cfg
grep -A12 -B2 \
"Ubuntu 20.04 - FALLBACK" \
/boot/grub/grub.cfg
grep -A18 -m1 \
"menuentry 'Debian GNU/Linux'" \
/boot/grub/grub.cfg
O Debian aparecia como entrada padrão utilizando:
/vmlinuz-6.12.94+deb13-amd64
root=/dev/mapper/sys-Root
O Ubuntu permanecia disponível como fallback:
/vmlinuz-5.4.0-169-generic
root=/dev/mapper/sys-root
Gravação do GRUB
Somente depois dessas validações o bootloader foi efetivamente gravado:
grub-install --target=i386-pc /dev/sdb
grub-install --recheck \
--target=i386-pc /dev/sdb
Resultado:
Installation finished. No error reported.
17. Checklist antes do primeiro reboot
Nenhum reboot foi executado imediatamente após a instalação do GRUB.
Foram validados individualmente:
Root e /boot
findmnt /
findmnt /boot
findmnt --verify --verbose
Kernel
ls -lh \
/boot/vmlinuz-6.12.94+deb13-amd64 \
/boot/initrd.img-6.12.94+deb13-amd64
LVM
lvs
Driver da interface
find /lib/modules/6.12.94+deb13-amd64 \
-name 'tg3.ko*'
Rede
cat /etc/network/interfaces
cat /etc/systemd/network/10-management.link
ifquery enp5s0f0
SSH
sshd -t
systemctl is-enabled ssh
GRUB
grub-probe --target=device /
grub-probe --target=device /boot
Resultado esperado:
/ -> /dev/mapper/sys-Root
/boot -> /dev/sdb2
Esse checklist foi particularmente importante porque a máquina era administrada remotamente e não havia operador disponível no local para recuperação imediata.
18. Saída do chroot e primeiro reboot
O chroot foi encerrado:
exit
Os mounts auxiliares foram desmontados:
umount /mnt/debian13/boot
umount /mnt/debian13/dev/pts
umount /mnt/debian13/dev
umount /mnt/debian13/proc
umount /mnt/debian13/sys
umount /mnt/debian13/run
umount /mnt/debian13
Validação:
findmnt -R /mnt/debian13
Por fim:
sync
sync
reboot