Confermo anch'io, forse hal aveva letto qualche mio precedente tentativo di configurare grub in modo semplice per le mia necessità:
1. files di configurazione grub posizionati in partizione dedicata (non è questo l'argomento del topic però)
2. grub.cfg contenente link simbolici generici piuttosto che files riferiti alla versione del kernel in uso.
3. in /boot il file del kernel "vmlinuz-ecc-ecc-versione" deve avere il suo corrispondente link simbolico "vmlinuz", questo nome deve essere lo stesso richiamato nel grub.cfg
Nella pratica:
- aggiorni il kernel quando fai l'aggiornamento della current
- l'operazione se non ricordo male dovrebbe automaticamente cancellare i vecchi link simbolici che puntavano al vecchio kernel e ricrearne di nuovi aventi stesso nome (vmlinuz), ma che punteranno alla nuova versione installata del kernel (vmlinuz-generic-5.10.4 nel mio caso specifico).
- alla fine in boot avrai una cosa del genere
Codice: Seleziona tutto
# file /boot/*|grep symbolic
/boot/README.initrd: symbolic link to /usr/doc/mkinitrd-1.4.10/README.initrd
/boot/System.map: symbolic link to System.map-generic-5.10.4
/boot/config: symbolic link to config-generic-5.10.4
/boot/initrd-generic.img: symbolic link to initrd-5.10.4.img
/boot/vmlinuz: symbolic link to vmlinuz-generic-5.10.4
/boot/vmlinuz-generic: symbolic link to vmlinuz-generic-5.10.4
/boot/vmlinuz-huge: symbolic link to vmlinuz-huge-4.4.240
Spetta, nel mio caso c'è un problemino cl kernel huge: il collegamento vmlinuz-huge punta ancora al vecchio 4.4.240. D'altra parte non ho installato il kernel huge 5.10, quindi è anche giusto così alla fine, va be' comunque la cosa funziona perché il kernel huge non ha bisogno di intrd. Ora non ricordo perché ho quella situazione...
Ad ogni modo quello che conta è che ho installato il vmlinuz-generic-5.10.4 e ho il suo link simbolico vmlinuz.
In allegato ho messo il grub.cfg. Ne riporto solo un pezzo:
Codice: Seleziona tutto
menuentry 'Slackware 14.2 Stable | Kernel Generic' {
savedefault
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
echo 'caricamento linux vmlinuz-generic...'
linux /boot/vmlinuz-generic root=/dev/sda3 ro
initrd /boot/initrd-generic.img
La cosa importante relativamente alla versione che viene aggiornata è la creazione dell'initrd.
Creo la initrd relativa l nuovo kernel, nel mio caso sopra l'avevo chiamata initrd-5.10'.4.img.
E creo anche il suo link simbolico initrd-generic.img.
Nel config di grub ci sono in nomi dei link simbolici, svincolati dalla versione del kernel.
In particolare grub cercherà di avviare "vmlinuz-generic" usando come root la partizione /dev/sda3. E appoggiandosi all'initrd chiamata initrd-generic.
Quando aggiornerò il kernel "generic", dovrò ricreare la initrd e la collegherò sempre al nome initrd-generic.
Farò anche attenzione che il collegamento vmlinuz-generic punti al nuovo kernel che avrò installato.
In questo modo non dovrò ritoccare il grub.cfg.
Fin qui tutto liscio.
Il problema è che se tu dovessi aggiornare qualcosa in debian e lanciare disgraziatamente un grub-update o come si chiama in debian il comando per rigenerare grub.conf.
Allora potrai avere qualche problemino perché gli automatismi di grub possono incasinare la situazione col risultato che potresti on riuscire ad avviare slackware.
Ecco perché mi ero creato la configurazione sopra in modo "custom" e più che altro "statico", in modo che una volta scritto lo script di grub piazzato in /etc/grub.d/42_slackware, fine della storia. Ovviamente avevo anche disattivato gli altri script di grub tofliendo loro il tag di esecuzione con "chmod -x". Ho lasciato solo quello di intestazione "00_header". Questa roba nel tuo caso dovrai farla sul sistema da cui aggiorni la configurazione di grub cioè Debian, però dovrai adottare una soluzione simile anche per Debian usando anche lì dei link simbolici.
Cioè, ricapitolando: se sai quali sistemi hai sul disco e come devono essere avviati, meglio creare script più rigidi fati a mano piuttosto che lasciar fare a os_probe o altre diavolerie che richiama grub.
Se non sei capace di scrivere gli script a mano, in realtà puoi scopiazzare dal tuo grub.cfg attuale se è funzionante. Io avevo fatto così.
Poi quando aggiorni qualcosa sia da debian che da slackware, ti sistemi i link simbolici, mentre le configurazioni di grub non le toccherai mai più, a meno di altre necessità.