GNU/Linux >> Linux Esercitazione >  >> Linux

Imposta il kernel predefinito in GRUB

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.


Linux
  1. CentOS / RHEL 7:come impostare la destinazione predefinita (runlevel predefinito)

  2. Fare in modo che il salvataggio predefinito funzioni con GRUB2...?

  3. Come impostare due route predefinite in Linux

  4. Come impostare il gateway predefinito

  5. Qual è il file predefinito per `hostname`?

Come impostare un indirizzo predefinito in cPanel

Linux:impostare il kernel predefinito in Grub?

Utilizzo di Sed per aggiornare il file Grub?

Impostare Mplayer come applicazione predefinita?

Come impostare il tuo indirizzo predefinito in cPanel

Come impostare un ambiente desktop predefinito all'avvio del sistema?