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
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 nellagrub-set-default
guidagrub-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 eseguiregrub2-mkconfig
. Ma allavvio la voce predefinita è ancoravmlinuz-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.
-o /boot/grub2/grub.cfg
come file di output. La directory/boot/grub/
esiste ancora?