Sto eseguendo GRUB 2.00 su un sistema Gentoo Linux.

Compilo manualmente i miei kernel e poi li installo in /boot con make install. Al momento ho i seguenti kernel in /boot:

# ls -1 /boot/vmlinuz* /boot/vmlinuz-3.7.4-gentoo-5 /boot/vmlinuz-3.7.4-gentoo-first /boot/vmlinuz-3.7.4-gentoo-fourth /boot/vmlinuz-3.7.4-gentoo-third 

Lesecuzione di grub2-mkconfig produce il seguente output:

# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.7.4-gentoo-third Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth Found linux image: /boot/vmlinuz-3.7.4-gentoo-first Found linux image: /boot/vmlinuz-3.7.4-gentoo-5 done 

Se ora leggo il file /boot/grub2/grub.cfg risultante, noto che sono state create le seguenti voci:

  • Una voce predefinita principale che avvia vmlinuz-3.7.4-gentoo-third
  • Un sottomenu con tutte le altre voci (comprese quelle di ripristino), nello stesso ordine di grub2-mkconfig comando

Il problema è che al momento del boot vorrei caricare di default la quinta revisione del mio kernel (vmlinuz-3.7.4-gentoo-5), non il terzo (vmlinuz-3.7.4-gentoo-third). Inoltre preferisco non accedere al sottomenu per la scelta del kernel giusto da caricare.

Come posso modificare questo comportamento? Come posso dire a GRUB che voglio eseguire la quinta revisione del mio kernel per impostazione predefinita e non la terza revisione precedente? In generale, come posso modificare la riga di immissione predefinita in modo che corrisponda al kernel che desidero e non a uno apparentemente casuale scelto da GRUB?

Ho anche provato a inserire le seguenti righe in /etc/default/grub:

GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true 

Questo non risolve il problema nel modo desiderato. Ma almeno GRUB sembra ricordare lultimo kernel da cui ho avviato e lo seleziona automaticamente dal sottomenu. È solo che non mi piace accedere al sottomenu.

Commenti

  • Ho notato che hai specificato -o /boot/grub2/grub.cfg come file di output. La directory /boot/grub/ esiste ancora?

Risposta

Per selezionare una voce di menu nel sottomenu “Opzioni avanzate” imposta GRUB_DEFAULT = “1> 3”. Ora puoi eseguire grub2-mkconfig per generare il file di configurazione di grub . Al prossimo riavvio dovrebbe avviarsi vmlinuz-3.7.4-gentoo-5.

Nota : Questo non cambierà la voce predefinita in il menu di grub, cioè la voce predefinita indicherà ancora la stessa voce che hai in questo momento. Ma limmagine che verrà avviata di default sarà la quarta immagine sotto le “Opzioni avanzate”. Per rendere vmlinuz-3.7.4-gentoo-5 come voce predefinita nel menu di grub, lordine delle immagini dovrebbe essere tale che vmlinuz-3.7.4-gentoo-5 dovrebbe essere la prima immagine quando esegui grub2-mkconfig .

Commenti

  • Nota che le virgolette sono importanti. Cioè GRUB_DEFAULT = 1 > 3 ha vinto ‘ t funziona.

Risposta

Se hai un sottomenu nel tuo grub.cfg dovresti usare due cifre in questo modo:

grub-reboot "1>3" 

Il primo è lindice del menu e il secondo è lindice del sottomenu .

Ad esempio, per avviare lultima voce da config in questo modo:

grep menu /boot/grub/grub.cfg menuentry "Debian GNU/Linux" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-simple-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { submenu "Advanced options for Debian GNU/Linux" $menuentry_id_option "gnulinux-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (sysvinit)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (recovery mode)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-4.6.0-0.bpo.1-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64 (sysvinit)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { menuentry "Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)" --class debian --class gnu-linux --class gnu --class os $menuentry_id_option "gnulinux-3.16.0-4-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f" { 

dovresti usare:

grub-reboot "1>5" 

e riavvia.

Commenti

  • Strano. lindice del sottomenu inizia con 0, mentre il menu principale da 1

Risposta

puoi anche usare GRUB_DEFAULT=saved. In questo caso “devi utilizzare

$ grub2-set-default -h Usage: grub2-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. -h, --help print this message and exit -v, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier. 

o se è solo per il prossimo avvio:

$ grub2-reboot -h Usage: grub2-reboot [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB, for the next boot only. -h, --help print this message and exit -v, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier. 

Answer

Con centos7 (o RHEL7) e grub2:

grub utilizza la voce “saved_entry” di grubenv come impostazione predefinita per lavvio, sniplet da /boot/grub2/grub.cfg:

if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi 

per verificare qual è “saved_entry” ora è la mia build:

grub2-editenv list 

saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)

per cambiarlo, ad esempio, nella build di debug:

grub2-editenv - set saved_entry="CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)" 

Answer

Prova

mkdir -p /boot/grub/backup mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup 

Questo sposta tutti i tuoi kernel inutilizzati in una directory di backup, ora:

grub2-mkconfig -o /boot/grub/grub.cfg 

Questo aggiunge solo la scelta r5 al tuo menu. Dopo averlo fatto, leggi questo collegamento questo e quindi ripristina tutti i kernel nella directory di backup in modo diverso da vmlinuz se insisti a mantenerli

Risposta

Quello che ho fatto per ottenere il risultato desiderato è stato:

  • impostare GRUB_DEFAULT=saved come indicato nella grub-set-default guida

    grub-set-default Menu entry not specified. Usage: grub-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULT=saved in /etc/default/grub. -h, --help print this message and exit -V, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory MENU_ENTRY is a number, a menu item title or a menu item identifier.

  • Imposta il valore predefinito

    grub-set-default "1>2"

    Crea un nuovo file in / boot / grub chiamato grubenv con le informazioni richieste.

  • Dopo averlo ricreato il file di configurazione

    grub-mkconfig > /boot/grub/grub.cfg

E ho visto che la configurazione è stata modificata per utilizzare lo stato salvato:

if [ "${next_entry}" ] ; then set default="${next_entry}" set next_entry= save_env next_entry set boot_once=true else set default="${saved_entry}" fi

Risposta

Puoi impostare la scelta predefinita in base a un valore numerico. Se imposti

`GRUB_DEFAULT=3` 

in /etc/default/grub
Limpostazione predefinita è la voce gentoo-5.
GRUB_DEFAULT è zero offset, quindi 3 selezionerà la quarta voce come desideri.

Commenti

  • Non ‘ non so perché, ma sembra che non ‘ funzioni. Ho impostato GRUB_DEFAULT=3 come hai detto, quindi riesco a eseguire grub2-mkconfig. Ma allavvio la voce predefinita è ancora vmlinuz-3.7.4-gentoo-third.
  • Prova a commentare GRUB_SAVEDEFAULT=true Non dovrebbe ‘ non importa, ma ‘ non è necessario con nume rical.
  • Non ‘ ho questa opzione nel mio file /etc/default/grub.

Risposta

Ho il sospetto che grub2-mkconfig ordina i kernel in ordine inverso, assumendo che principalmente contengono numeri di versione crescenti in modo monotono. Quindi inizia a scegliere i tag per adattarli a tale convenzione.

Rispondi

in ubuntu:

sudo grub-pc 

grub-pc ti consente di scegliere quale menu.

sudo update-grub 

vedi: https://askubuntu.com/questions/384388/how-to-select-option-in-configuration-grub-pc-menu

Risposta

mv quei file di versione nuova / non utilizzata in /boot in una directory di backup, ad esempio /boot/back

initrd.img-3.13.0-xx-generic vmlinuz-3.13.0-xx-generic config-3.13.0-xx-generic System.map-3.13.0-xx-generic 

Riavvia il sistema in modalità di ripristino, quindi scegli grub nella finestra di dialogo di ripristino, quindi tutto andrà bene.

Penso che sia il metodo più adatto. Sto usando Ubuntu 14.04.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *