Dopo aver lottato per 2 ore, ho trovato un modo molto più semplice per raggiungere questo obiettivo. Ho appena RTFM.;)
Aggiungi due righe a /etc/default/grub
GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved
Fai il sudo update-grub
, riavvia, accedi al menu di grub e seleziona la voce di menu o sottomenu di cui hai bisogno. La scelta verrà salvata ogni volta e quindi il tuo computer si avvierà automaticamente. Quando scegli manualmente una voce diversa, questa diventa la nuova impostazione predefinita.
Penso che la maggior parte delle distribuzioni abbia spostato i kernel aggiuntivi nel sottomenu delle opzioni avanzate a questo punto, come ha scoperto TomTom con hisArch.
Non volevo modificare la struttura del mio menu di livello superiore per selezionare un kernel precedente come predefinito. Ho trovato la risposta qui:
http://www.humans-enabled.com/2014/08/how-to-set-default-grub-kernel-boot.html
Per riassumere:
1) Trova il $menuentry_id_option
per il sottomenu:
$ grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
2) Trova il $menuentry_id_option
per la voce di menu per il kernel che vuoi usare:
$ grep gnulinux /boot/grub/grub.cfg
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
3) Commenta il tuo attuale grub predefinito in /etc/default/grub
e sostituirlo con il $menuentry_id_option
del sottomenu dal passaggio uno e il $menuentry_id_option
del kernel selezionato dal passaggio due separati da >
.
Nel mio caso il GRUB_DEFAULT
modificato è:
#GRUB_DEFAULT=0
GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"
4) Aggiorna grub per apportare le modifiche. Per Debian questo è fatto così:
$ sudo update-grub
Fatto. Ora, quando avvii, il menu avanzato dovrebbe avere un asterisco e dovresti eseguire l'avvio nel kernel selezionato. Puoi confermarlo con uname
.
$ uname -a
Linux NAME 4.18.0-0.bpo.1-amd64 #1 SMP Debian 4.18.0-0 (2018-09-13) x86_64 GNU/Linux
Riportarlo al kernel più recente è semplice come commentare la nuova riga e decommentare #GRUB_DEFAULT=0
:
GRUB_DEFAULT=0
#GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"
quindi rieseguendo update-grub
.
Come menzionato nei commenti, puoi impostare il kernel predefinito per l'avvio usando grub-set-default X
comando, dove X è il numero del kernel in cui vuoi eseguire l'avvio. In alcune distribuzioni puoi anche impostare questo numero modificando il /etc/default/grub
file e impostazione GRUB_DEFAULT=X
, quindi eseguendo update-grub
.
Il numero è l'indice di un array di kernel/impostazioni del kernel mostrato nel menu di GRUB durante l'avvio, dove 0 è la prima voce (più in alto). Di solito puoi trovare il numero giusto cercando menuentry
righe in /boot/grub/grub.cfg
, in questo modo:
grep menuentry /boot/grub/grub.cfg
Vedrai ogni kernel elencato con il nome mostrato nel menu di avvio di GRUB. Il primo è 0, il secondo è 1 e così via.