Grub con Win, Debian e Slackware
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- hal9000
- Linux 2.x
- Messaggi: 236
- Iscritto il: dom 7 gen 2007, 21:24
- Nome Cognome: Alessandro Zamori
- Slackware: 64 14.2
- Kernel: huge-4.4.75
- Desktop: xfce
- Località: Roma
Grub con Win, Debian e Slackware
Come da titolo sul mio PC attualmente ci sono: Win 10, Debian 11.1 e Slackware 64 Current. Il Grub della Debian avvia tutti sistemi operativi, solo che ho visto che la Current sta aggiornando il kernel di frequente però ho paura che se aggiorno il kernel della Slackware 64 poi non si avvia più con il grub della Debian che rispetto alla Slackware avvia anche Win. Come posso fare per fare in modo che il Grub della Debian continui a gestire l' avvio dei tre sistemi operativi aggiornando il kernel? Ho letto sul forum che un' altro frequentatore del forum si era creato dei file di avvio personali ma la mia conoscenza di Grub è quasi zero.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Il problema non si pone se in grub.cfg l'avvio del kernel è basato su collegamenti simbolici. In questo caso è infatti sufficiente aggiornare i collegamenti simbolici ad ogni aggiornamento del kernel senza dover modificare il grub.cfg.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Se sei interessato posso mettere nero su bianco la configurazione che adotto io.
- joe
- Iper Master
- Messaggi: 3797
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Grub con Win, Debian e Slackware
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
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:
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à.
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
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
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à.
- Allegati
-
- grub.cfg.TXT
- (2.74 KiB) Scaricato 57 volte
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Non ricordo bene, ma avevo notato anch'io un problema del link simbolico vmlinuz con il kernel huge. Infatti per non lasciare nulla al caso, con lo script che ho fatto elimino ad ogni aggiornamento tutti i link simbolici e li ricreo con i target corretti.
Per quanto riguarda grub concordo sull'opportunità di preparare dei template ad hoc da mettere in grub.d: grub rileva la presenza dei sistemi operativi installati nelle varie partizioni e costruisce le relative entry, però procede per tentativi e crea un lungo elenco di entry taroccate. Ad esempio, per la Slackware ne fa parecchie, almeno 5 o 6 e non è detto che funzionino. Ma questo problema esiste in generale con tutte le versioni di grub distribuite dalle varie distro.
Il mio consiglio è di usare il grub della Debian con l'accortezza di avere in grub.d il template predisposto per la Slackware, se gli aggiornamenti della Debian sono eseguiti in automatico. In questo modo si evitano sul nascere una serie di problemini che salterebbero fuori invece con l'uso del Grub della Slackware: le entry per i sistemi Debian like sono un po' più complicate di quelle per le installazioni di Slackware.
Per quanto riguarda grub concordo sull'opportunità di preparare dei template ad hoc da mettere in grub.d: grub rileva la presenza dei sistemi operativi installati nelle varie partizioni e costruisce le relative entry, però procede per tentativi e crea un lungo elenco di entry taroccate. Ad esempio, per la Slackware ne fa parecchie, almeno 5 o 6 e non è detto che funzionino. Ma questo problema esiste in generale con tutte le versioni di grub distribuite dalle varie distro.
Il mio consiglio è di usare il grub della Debian con l'accortezza di avere in grub.d il template predisposto per la Slackware, se gli aggiornamenti della Debian sono eseguiti in automatico. In questo modo si evitano sul nascere una serie di problemini che salterebbero fuori invece con l'uso del Grub della Slackware: le entry per i sistemi Debian like sono un po' più complicate di quelle per le installazioni di Slackware.
- joe
- Iper Master
- Messaggi: 3797
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Grub con Win, Debian e Slackware
Il kernel huge che ho io è il vecchio 4.qualcosa, mentre il 5.10 in realtà è un ricompilato da me più di recente utilizzando il config del generic. Non è se ricordo bene il generic di Pat che per la stabile è sempre il 4.qualcosa...
Infatti:
Probabile che io abbia compilato il kernel 5.10 partendo da slackbuild della current o comunque da quel config. non ricordo di preciso.
Ai fini del nostro discorso il vmlinuz puoi puntarlo al kernrel che vuoi. Nel mio caso in realtà non viene poi usato nel grub.cfg, al suo posto ho distinto vmlinuz-generic e per l'huge vmlinuz-huge. L'importante è che poi si configuri grub in modo coerente insomma, deve richiamare i link giusti in base a quello che si vuole avviare, tutto lì.
A dirla tutta, il mio è anche non bellissimo tra le altre cose perché la initrd col kernel huge non serve e quella riga andrebbe anche tolta. Era saltata fuori perché avevo fatto uno script che generava a sua volta gli script di grub... Insomma era un po' un esperimento che se non ricordo male avevo riportato anche qui sul forum, ma è passato troppo tempo per ricordarmi. Segno questo che con la trovata dei link simbolici, la configurazione di grub non la tocchi più in caso di upgrade del kernel, tutto sommato mi sembra una soluzione onesta.
La configurazione di grub per debian può anche essere più elaborata ma dopo tutto dovrebbe creare alla fine un grub.cfg sempre e comunque fatto e finito. Una soluzione semplice, se non serve avere configurazioni più complicate come quelle che crea grub in automatico, è prendere spunto da quella automatica per buttarne giù una statica e andare di link simbolici anche su Debian. L'aggiornamento automatico installerà anche lì kernel initrd ecc ecc, ma a valle di quella situazione si può sempre intervenire per creare il suoi bravo set di collegamenti simbolici e avviare il sistema col vecchio grub.cfg.
Sempre che nello specifico di Debian non vi siano altri automatismi che poi possano aspettarsi una situazione diversa. Sì Debian non è Slackware, ma credo che ci si possa comunque lavorare per gestire in modo comodo il multiboot.
PS.
Avevo anche messo una partizione con la current e usavo la dir /boot della current per gestire l'avvio col suo /boot/grub/grub.cfg,ecc...
Poi ho tolto la partizione della current e non avviavo più nulla. Ovvio, una svista...
Però dopo quell'inghippo mi sono deciso a creare una piccola partizione ext2 che ospita praticamente il contenuto di /boot/grub, così anche togliendo un eventuale sistema in multiboot, si può sempre avviare da un altro sistema rimanente, in pratica non c'è più un sistema "master" che contiene la configurazione necessaria al "core" di grub, il pezzo eseguibile per capirci, installato in testa al disco o nella partizione EFI.
Infatti:
Codice: Seleziona tutto
kernel-generic-4.4.14-x86_64-1.txz a general purpose SMP Linux kernel
kernel-headers-4.4.14-x86-1.txz Linux kernel include files
kernel-huge-4.4.14-x86_64-1.txz a fully-loaded SMP Linux kernel
Ai fini del nostro discorso il vmlinuz puoi puntarlo al kernrel che vuoi. Nel mio caso in realtà non viene poi usato nel grub.cfg, al suo posto ho distinto vmlinuz-generic e per l'huge vmlinuz-huge. L'importante è che poi si configuri grub in modo coerente insomma, deve richiamare i link giusti in base a quello che si vuole avviare, tutto lì.
A dirla tutta, il mio è anche non bellissimo tra le altre cose perché la initrd col kernel huge non serve e quella riga andrebbe anche tolta. Era saltata fuori perché avevo fatto uno script che generava a sua volta gli script di grub... Insomma era un po' un esperimento che se non ricordo male avevo riportato anche qui sul forum, ma è passato troppo tempo per ricordarmi. Segno questo che con la trovata dei link simbolici, la configurazione di grub non la tocchi più in caso di upgrade del kernel, tutto sommato mi sembra una soluzione onesta.
La configurazione di grub per debian può anche essere più elaborata ma dopo tutto dovrebbe creare alla fine un grub.cfg sempre e comunque fatto e finito. Una soluzione semplice, se non serve avere configurazioni più complicate come quelle che crea grub in automatico, è prendere spunto da quella automatica per buttarne giù una statica e andare di link simbolici anche su Debian. L'aggiornamento automatico installerà anche lì kernel initrd ecc ecc, ma a valle di quella situazione si può sempre intervenire per creare il suoi bravo set di collegamenti simbolici e avviare il sistema col vecchio grub.cfg.
Sempre che nello specifico di Debian non vi siano altri automatismi che poi possano aspettarsi una situazione diversa. Sì Debian non è Slackware, ma credo che ci si possa comunque lavorare per gestire in modo comodo il multiboot.
PS.
Avevo anche messo una partizione con la current e usavo la dir /boot della current per gestire l'avvio col suo /boot/grub/grub.cfg,ecc...
Poi ho tolto la partizione della current e non avviavo più nulla. Ovvio, una svista...
Però dopo quell'inghippo mi sono deciso a creare una piccola partizione ext2 che ospita praticamente il contenuto di /boot/grub, così anche togliendo un eventuale sistema in multiboot, si può sempre avviare da un altro sistema rimanente, in pratica non c'è più un sistema "master" che contiene la configurazione necessaria al "core" di grub, il pezzo eseguibile per capirci, installato in testa al disco o nella partizione EFI.
- hal9000
- Linux 2.x
- Messaggi: 236
- Iscritto il: dom 7 gen 2007, 21:24
- Nome Cognome: Alessandro Zamori
- Slackware: 64 14.2
- Kernel: huge-4.4.75
- Desktop: xfce
- Località: Roma
Re: Grub con Win, Debian e Slackware
Grazie a tutti per l' interessamento e le risposte, ora almeno ho le idee un pò più chiare. Visto che ho un kernel huge senza initrd a questo punto posso procedere così: modifico il grub.cfg della Debian in modo che punti ai link simbolici della Slackware (ho comunque visto che ci sono già: vedi sotto):
senza fare altro, poi aggiorno il kernel della Slackware e modifico il grub.cfg indirizzandolo ai link simbolici. Dopo di che quando aggiorno il kernel della Debian con il relativo grub.cfg devo rimodificarlo per la parte Slackware facendolo puntare ai link simbolici mentre se aggiorno il kernel slackware non devo fare nulla. Ho capito bene?
Codice: Seleziona tutto
menuentry 'Slackware-15.0 GNU/Linux, with Linux 5.15.7 (recovery mode) (on /dev/sdb2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-
huge-5.15.7-root=/dev/sdb2 ro single-87bc07c9-35b5-4dfa-a536-d81e1155acae' {
insmod part_gpt
insmod ext2
set root='hd1,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2 87bc07c9-35b5-4dfa-a536-d81e1155acae
else
search --no-floppy --fs-uuid --set=root 87bc07c9-35b5-4dfa-a536-d81e1155acae
fi
linux /boot/vmlinuz-huge-5.15.7 root=/dev/sdb2 ro single
}
menuentry 'Slackware-15.0 GNU/Linux, with Linux huge (on /dev/sdb2)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-huge--87bc07c9-35b
5-4dfa-a536-d81e1155acae' {
insmod part_gpt
insmod ext2
set root='hd1,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2 87bc07c9-35b5-4dfa-a536-d81e1155acae
else
search --no-floppy --fs-uuid --set=root 87bc07c9-35b5-4dfa-a536-d81e1155acae
fi
linux /boot/vmlinuz-huge root=/dev/sdb2 ro
}
- joe
- Iper Master
- Messaggi: 3797
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Grub con Win, Debian e Slackware
Il problema è l'aggiornamento, o meglio la "rigenerazione" di grub.cfg.
Il file in questione di configurazione di grub, non è pensato per essere modificato a mano. L'operazione di rigenerazione che si fa in seguito all'aggiornamento dei kernel se non configurata in modo opportuno adotta degli automatismi che prendono delle iniziative sovrascrivendo la soluzione che avevi predisposto in precedenza, perché appunto il grub.cfg viene rigenerato, cioè proprio sovrascritto e i tuoi link simbolici possono essere ignorati o tenuti in conto dall'automatismo (non so nello specifico) ma accanto a loro ti ritrovi altre 10 voci all'avvio che magari non vuoi.
Questa operazione di rigenerazione puoi anche non farla. Il problema è capire cosa decide di fare Debian quando aggiorni anche i kernel. Non mi stupirei se APT si occupasse anche di lanciare "grub-update", che è un wrapper al nostro "grub-mkconfig".
Questa roba puoi capirla meglio tenendo presente il sistema di funzionamento di grub2.
Molto in sintesi vai a vedere in /etc/grub.d/
ci sono degli script che non fanno altro che generare, proprio scrivendolo, il file di configurazione finale solitamente posto in /boot/grub/grub.cfg.
Se tu modifichi grub.cfg, quando poi fai girare, direttamente o attraverso APT, grub-update, quegli script vengono richiamati e vanno a generare un nuovo grub.cfg che sovrascriverà quello vecchio.
Ecco perché dicevo, prova a vedere se ti ci trovi togliendo tutti gli automatismi dalla configurazione di grub in Debian, andando a modificare i permessi in esecuzione sui files in /etc/grub.d/*. Rendi eseguibile quello di intestazione e basta, poi ti crei un unico script custom scopiazzando dall'attuale grub.cfg, basa la configurazione su link simbolici anche per Debian.
In questo modo quando aggiorni il kernel in debian piuttosto che in slackware, andrai solo a verificare i link simbolici puntandoli ai nuovo kernel. Senza toccare la configurazione di grub. E anche se APT vorrà lanciare grub-update, l'operazione non altererà il grub.cfg.
Non è detto che sia la soluzione migliore, ma sicuramente ti consente di avere più controllo su grub e un menu di boot più ordinato ed essenziale. In ogni caso avere sempre una live testata che funzioni a portata di mano può tornare utile quando si mette mano a queste cose. Se sbagli ad impostare qualcosa, oppure se sbaglia APT a configurare grub, hai sempre una porta di servizio per entrare e rimediare.
Il file in questione di configurazione di grub, non è pensato per essere modificato a mano. L'operazione di rigenerazione che si fa in seguito all'aggiornamento dei kernel se non configurata in modo opportuno adotta degli automatismi che prendono delle iniziative sovrascrivendo la soluzione che avevi predisposto in precedenza, perché appunto il grub.cfg viene rigenerato, cioè proprio sovrascritto e i tuoi link simbolici possono essere ignorati o tenuti in conto dall'automatismo (non so nello specifico) ma accanto a loro ti ritrovi altre 10 voci all'avvio che magari non vuoi.
Questa operazione di rigenerazione puoi anche non farla. Il problema è capire cosa decide di fare Debian quando aggiorni anche i kernel. Non mi stupirei se APT si occupasse anche di lanciare "grub-update", che è un wrapper al nostro "grub-mkconfig".
Questa roba puoi capirla meglio tenendo presente il sistema di funzionamento di grub2.
Molto in sintesi vai a vedere in /etc/grub.d/
ci sono degli script che non fanno altro che generare, proprio scrivendolo, il file di configurazione finale solitamente posto in /boot/grub/grub.cfg.
Se tu modifichi grub.cfg, quando poi fai girare, direttamente o attraverso APT, grub-update, quegli script vengono richiamati e vanno a generare un nuovo grub.cfg che sovrascriverà quello vecchio.
Ecco perché dicevo, prova a vedere se ti ci trovi togliendo tutti gli automatismi dalla configurazione di grub in Debian, andando a modificare i permessi in esecuzione sui files in /etc/grub.d/*. Rendi eseguibile quello di intestazione e basta, poi ti crei un unico script custom scopiazzando dall'attuale grub.cfg, basa la configurazione su link simbolici anche per Debian.
In questo modo quando aggiorni il kernel in debian piuttosto che in slackware, andrai solo a verificare i link simbolici puntandoli ai nuovo kernel. Senza toccare la configurazione di grub. E anche se APT vorrà lanciare grub-update, l'operazione non altererà il grub.cfg.
Non è detto che sia la soluzione migliore, ma sicuramente ti consente di avere più controllo su grub e un menu di boot più ordinato ed essenziale. In ogni caso avere sempre una live testata che funzioni a portata di mano può tornare utile quando si mette mano a queste cose. Se sbagli ad impostare qualcosa, oppure se sbaglia APT a configurare grub, hai sempre una porta di servizio per entrare e rimediare.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Una domanda: gli aggiornamenti della Debian vengono fatti in automatico con riconfigurazione automatizzata di grub.cfg? Faccio questa domanda perché ho notato che in Ubuntu grub viene riconfigurato ad ogni aggiornamento del kernel.
Se avviene questo anche con la tua Debian ti consiglio di preimpostare in grub.d un template per la Slackware. In questo modo non dovrai mettere mano a grub.cfg e ad ogni aggiornamento del kernel della Debian la entry per la Slackware viene reimpostata automaticamente senza mettere mano a grub.cfg.
Lo stesso accorgimento vale se fai l'aggiornamento alla bisogna e poi riconfiguri grub (se non ricordo male il comando dovrebbe essere sudo update-grub, che sarebbe equivalente al grub-mkconfig nella Slackware.
Nei limiti del possibile è ragionevole evitare di mettere mano direttamente in grub.cfg: una piccola distrazione può comportare problemi di boot non irreparabili ma sempre rognosi quando capitano.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Per maggiore chiarezza, nella mia macchina, che attualmente ha solo una current installata, ho un grub con tre entry, una per il kernel generic, una per il kernel huge e una per l'interfaccia UEFI. Devo ancora installare una Debian ma per il boot userò sempre il Grub di Slackware perché per me è più familiare.
In grub.d ho personalizzato gli script usati da grub-mkconfig togliendo i permessi di esecuzione a quelli che non mi interessano. La numerazione nei nomi dei file è importante perché definisce la cronologia di esecuzione degli script. Il tutto è come appare in questa immagine:
La prima entry ad essere impostata da grub-mkconfig (= update-grub nei sistemi Debian-like) è quella configurata nello script 11_generic, che ha questo codice:
Questo script può essere impostato tale e quale anche in un eventuale grub.d in una distribuzione Debian. Come puoi vedere non c'è nessun riferimento alla versione del kernel perché grub accede al kernel e all'initrd attraverso dei collegamenti simbolici.
Questi collegamenti simbolici vanno reimpostati solo quando aggiorni il kernel nella Slackware, ma il Grub in un'altra distribuzione continuerà a funzionare correttamente senza metterci mano.
Spero di essere stato chiaro
In grub.d ho personalizzato gli script usati da grub-mkconfig togliendo i permessi di esecuzione a quelli che non mi interessano. La numerazione nei nomi dei file è importante perché definisce la cronologia di esecuzione degli script. Il tutto è come appare in questa immagine:
La prima entry ad essere impostata da grub-mkconfig (= update-grub nei sistemi Debian-like) è quella configurata nello script 11_generic, che ha questo codice:
Codice: Seleziona tutto
#! /bin/sh
set -e
echo "Configuro Slackware kernel generic (/dev/sda3)" >&2
cat << EOF
menuentry 'Linux Slackware Current (su /dev/sda3 kernel generic-5.15.xx)' --class slackware_15 --class gnu-linux --class gnu --class os $menuent>
load_video
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_int = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 8535dacc-0121-466f-8b0e-4f>
else
search --no-floppy --fs-uuid --set=root 8535dacc-0131-466f-8b0e-4f662be0eda5
fi
echo 'Caricamento del kernel Linux generic ...'
linux /boot/vmlinuz-generic root=UUID=8535dacc-0131-466f-8b0e-4f662be0eda5 ro
echo 'Caricamento del ramdisk iniziale ...'
initrd /boot/initrd-generic
}
EOF
Questi collegamenti simbolici vanno reimpostati solo quando aggiorni il kernel nella Slackware, ma il Grub in un'altra distribuzione continuerà a funzionare correttamente senza metterci mano.
Spero di essere stato chiaro
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Grub con Win, Debian e Slackware
Aggiungo:
se su Debian usate uno script custom per le entry Slackware, disattivate os-prober:
se su Debian usate uno script custom per le entry Slackware, disattivate os-prober:
Codice: Seleziona tutto
## /etc/default/grub
GRUB_DISABLE_OS_PROBER="true"
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Naturalmente, altrimenti saltano fuori come minimo una decina di entry per la stessa distribuzione!
- hal9000
- Linux 2.x
- Messaggi: 236
- Iscritto il: dom 7 gen 2007, 21:24
- Nome Cognome: Alessandro Zamori
- Slackware: 64 14.2
- Kernel: huge-4.4.75
- Desktop: xfce
- Località: Roma
Re: Grub con Win, Debian e Slackware
Grazie per le risposte, quindi se ho capito bene per la Debian:
creo qui uno script 11_linux come da esempio di gian_d, tolgo i permessi di esecuzione a 10_linux e 30_os-prober aggiungo a grub
e poi
per far leggere la nuova configurazione. Stessa cosa anche per Slackware. Il tutto per sicurezza prima di fare i vari aggiornamenti del kernel Slackware.
Piccolo dubbio: il grub di Slackware non legge Win e al momento neanche Debian perchè installata dopo, ma se rigenero ora il grub Slackware andraà a sovrascrivere quello Debian non facendo così partire Win?
Il problema si pone perchè mia mogle usa ancora Win e tutto questo dovrebbe servire a facilitale le cose.
Codice: Seleziona tutto
root@attila:/etc/grub.d# ls
00_header 05_debian_theme 10_linux 20_linux_xen 30_os-prober 30_uefi-firmware 40_custom 41_custom README
Codice: Seleziona tutto
## /etc/default/grub
GRUB_DISABLE_OS_PROBER="true"
Codice: Seleziona tutto
update-grub
Piccolo dubbio: il grub di Slackware non legge Win e al momento neanche Debian perchè installata dopo, ma se rigenero ora il grub Slackware andraà a sovrascrivere quello Debian non facendo così partire Win?
Il problema si pone perchè mia mogle usa ancora Win e tutto questo dovrebbe servire a facilitale le cose.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Se devi usare il Grub della Debian, per quale motivo devi rigenerare quello della Slackware?
In ogni modo bisogna fare chiarezza sul cosa intendi per rigenerare.
1) con il comando grub-mkconfig (sottinteso -o /boot/grub/grub.cfg) ciò che hai fatto con la Debian non viene minimamente modificato. Questo comando infatti modifica solo il grub.cfg che si trova nella directory /boot/grub della partizione in cui installata. A meno che non abbia una partizione dedicata /boot/grub che viene montata sia sulla Slackware sia sulla Debian (cosa che sconsiglio assolutamente: questa partizione va montata solo sulla distribuzione di cui si utilizza il boot loader!
2) con il comando grub-install /dev/sd* vai invece a sovrascrivere il mbr o la partizione UEFI (a seconda del tipo di partizionamento che hai fatto). Chiaramente questo comando non devi lanciarlo perché andresti a installare il grub di Slackware al posto del grub di Debian. Naturalmente se hai più di un disco nulla ti vieta di fare l'installazione di due grub, di cui sarà chiaramente attivo solo quello del disco che ha la priorità nella sequenza di boot impostata nel BIOS.
In ogni modo bisogna fare chiarezza sul cosa intendi per rigenerare.
1) con il comando grub-mkconfig (sottinteso -o /boot/grub/grub.cfg) ciò che hai fatto con la Debian non viene minimamente modificato. Questo comando infatti modifica solo il grub.cfg che si trova nella directory /boot/grub della partizione in cui installata. A meno che non abbia una partizione dedicata /boot/grub che viene montata sia sulla Slackware sia sulla Debian (cosa che sconsiglio assolutamente: questa partizione va montata solo sulla distribuzione di cui si utilizza il boot loader!
2) con il comando grub-install /dev/sd* vai invece a sovrascrivere il mbr o la partizione UEFI (a seconda del tipo di partizionamento che hai fatto). Chiaramente questo comando non devi lanciarlo perché andresti a installare il grub di Slackware al posto del grub di Debian. Naturalmente se hai più di un disco nulla ti vieta di fare l'installazione di due grub, di cui sarà chiaramente attivo solo quello del disco che ha la priorità nella sequenza di boot impostata nel BIOS.
-
- Linux 3.x
- Messaggi: 654
- Iscritto il: mer 16 lug 2014, 17:35
- Nome Cognome: Giancarlo Dessì
- Slackware: 64 current
- Kernel: 6.6.xx
- Desktop: KDE 5.27
- Località: Sardinia
- Contatta:
Re: Grub con Win, Debian e Slackware
Nella precedente macchina avevo quattro dischi. In quello di default (quello lanciato dal BIOS) avevo installato il grub della Slackware, nel secondo disco c'era invece installato il grub di una Debian.
Questo perché poi copiavo il codice del grub.cfg generato dalla Debian sul template specifico in /etc/grub.d utilizzato per costruire l'entry della Debian sul grub della Slackware.
Questo perché poi copiavo il codice del grub.cfg generato dalla Debian sul template specifico in /etc/grub.d utilizzato per costruire l'entry della Debian sul grub della Slackware.