Estoy ejecutando GRUB 2.00 en un sistema Gentoo Linux.
Compilo mis propios kernels manualmente y luego los instalo en /boot
con make install
. Tengo los siguientes núcleos en /boot
en este momento:
# 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
La ejecución de grub2-mkconfig
da como resultado el siguiente resultado:
# 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
Si ahora leo el archivo /boot/grub2/grub.cfg
resultante, noto que se han creado las siguientes entradas:
- Una entrada principal predeterminada que comienza
vmlinuz-3.7.4-gentoo-third
- Un submenú con todas las demás entradas (incluidas las de recuperación), en el mismo orden que
grub2-mkconfig
comando
El problema es que en el momento del arranque me gustaría cargar por defecto la quinta revisión de mi kernel (vmlinuz-3.7.4-gentoo-5
), no el tercero (vmlinuz-3.7.4-gentoo-third
). También prefiero no acceder al submenú para elegir el kernel correcto para cargar.
¿Cómo puedo cambiar este comportamiento? ¿Cómo puedo decirle a GRUB que quiero ejecutar la quinta revisión de mi kernel de forma predeterminada y no la tercera revisión anterior? En general, ¿cómo puedo cambiar la línea de entrada predeterminada para que coincida con el kernel que quiero y no con uno aparentemente aleatorio elegido por GRUB?
También intenté poner las siguientes líneas en /etc/default/grub
:
GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true
Esto no soluciona el problema de la manera que deseo. Pero al menos GRUB parece recordar el último kernel desde el que arranqué y lo selecciona automáticamente del submenú. Es solo que no me gusta acceder al submenú.
Comentarios
Respuesta
Para seleccionar una entrada de menú en el submenú «Opciones avanzadas», configure GRUB_DEFAULT = «1> 3». Ahora puede ejecutar grub2-mkconfig para generar el archivo de configuración de grub . En el próximo reinicio, vmlinuz-3.7.4-gentoo-5 debería iniciarse.
Nota : Esto no cambiará la entrada predeterminada en el menú de grub, es decir, la entrada predeterminada seguirá indicando la misma entrada que tiene ahora. Pero la imagen que se iniciará por defecto será la cuarta imagen en las «Opciones avanzadas». Para hacer que vmlinuz-3.7.4-gentoo-5 sea la entrada predeterminada en el menú de grub, el orden de las imágenes debería ser tal que vmlinuz-3.7.4-gentoo-5 debería ser la primera imagen cuando ejecute grub2-mkconfig .
Comentarios
- Tenga en cuenta que las comillas son importantes. Es decir. GRUB_DEFAULT = 1 > 3 no ‘ trabajaron.
Respuesta
Si tiene un submenú en su grub.cfg, debe usar dos dígitos como este:
grub-reboot "1>3"
El primero es el índice del menú y el segundo es el índice del submenú .
Por ejemplo, para iniciar la última entrada de la configuración de esta manera:
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" {
debe usar:
grub-reboot "1>5"
y reinicie.
Comentarios
- Extraño. el índice del submenú comienza con 0, mientras que el menú principal desde 1
Respuesta
también puede usar GRUB_DEFAULT=saved
. En este caso, «usaría
$ 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 si es solo para el próximo arranque:
$ 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.
Responder
Con centos7 (o RHEL7) y grub2:
grub usa la entrada «Saved_entry» de grubenv por defecto para arrancar, fragmento de /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
para comprobar cuál es la «entrada_ guardada» ahora es mi compilación:
grub2-editenv list
saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)
para cambiarlo, por ejemplo, a mi compilación de depuración:
grub2-editenv - set saved_entry="CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)"
Respuesta
Pruebe
mkdir -p /boot/grub/backup mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup
Esto mueve todos sus kernels no utilizados a un directorio de respaldo, ahora:
grub2-mkconfig -o /boot/grub/grub.cfg
Esto solo agrega la opción r5
a su menú. Después de hacerlo, lea este este enlace y luego vuelva a leer todos los núcleos en el directorio de copia de seguridad en algo diferente a vmlinuz si insiste en conservarlos
Respuesta
Lo que hice para lograr el resultado deseado fue:
-
establecer el
GRUB_DEFAULT=saved
como se describe en lagrub-set-default
ayudagrub-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.
-
Establece el valor predeterminado
grub-set-default "1>2"
Crea un nuevo archivo en / boot / grub llamado grubenv con la información requerida.
-
Después, vuelvo a crear el archivo de configuración
grub-mkconfig > /boot/grub/grub.cfg
Y he visto que se cambió la configuración para usar el estado guardado:
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
Respuesta
Puede establecer la opción predeterminada por valor numérico. Si establece
`GRUB_DEFAULT=3`
en /etc/default/grub
Establecerá la entrada gentoo-5 de forma predeterminada.
GRUB_DEFAULT
es un desplazamiento cero, por lo que 3 seleccionará la cuarta entrada que desee.
Comentarios
- No ‘ no sé por qué, pero Parece que no ‘ no funciona. Configuré
GRUB_DEFAULT=3
como dijiste, luego vuelva a ejecutargrub2-mkconfig
. Pero en el momento del arranque, la entrada predeterminada sigue siendovmlinuz-3.7.4-gentoo-third
. - Intenta comentar
GRUB_SAVEDEFAULT=true
No debería ‘ t importa, pero ‘ no es necesario con nume rical. - No ‘ no tengo esa opción en mi
/etc/default/grub
archivo.
Respuesta
Sospecho que grub2-mkconfig
ordena los núcleos en orden inverso, asumiendo que principalmente contienen números de versión que aumentan monótonamente. Así que comience a elegir sus etiquetas para que se ajusten a esa convención.
Respuesta
en ubuntu:
sudo grub-pc
grub-pc le permitirá elegir qué menú.
sudo update-grub
ver: https://askubuntu.com/questions/384388/how-to-select-option-in-configuration-grub-pc-menu
Responder
mv
esos archivos de versión nuevos / no usados en /boot
en un directorio de respaldo, por ejemplo /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
Reinicie el sistema en modo de rescate, luego elija grub en el diálogo de rescate, entonces todo estará bien.
Creo que es el método más adecuado. Estoy usando ubuntu 14.04.
-o /boot/grub2/grub.cfg
como archivo de salida. ¿El directorio/boot/grub/
todavía existe?