¿Hay alguna forma de recuperar la lista de títulos de "menuentries" de GRUB?
Necesito un resultado en un formato que grub-set-default
acepte. p.ej.
"Ubuntu"
"Memory test (memtest86+)"
etc.
command-line
grub2
madneon
fuente
fuente
Respuestas:
Utilizando
awk
le brinda una lista completa de todas las entradas de menú en
grub.cfg
.fuente
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
awk
. : \awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg
para usargrub-set-default
Captura de pantalla en color (versión corta)
La rueda de desplazamiento del ratón uso, Home, End, PgUp, PgDn, ↑y ↓teclas para navegar por el menú.
Captura de pantalla de texto (versión larga)
El script bash se usa en
whiptail
lugar dedialog
mostrar el menú. Una ventaja es que puede copiar la imagen del terminal en el portapapeles como texto y pegarla en este sitio web como texto. Otras ventajas incluyen:dialog
no está instalado por defecto en Ubuntu Server o Lubuntu.whiptail
está incluido por defecto.Aquí hay una captura de pantalla de texto:
Resalte la entrada y presione Entrar
Use las teclas de navegación para resaltar una opción y presione Enterpara ver los controladores pre-kernel cargados
grub
y los parámetros de arranque pasadosgrub
al kernel al arrancarlo:grub-menu.sh
script bashgrub-menu.sh
solo tiene una opción para ajustar:Establezca el valor en
true
(ocultar las entradas adicionales) ofalse
(enumerar todas las entradas).El formato predeterminado se puede anular al llamar al script usando:
o:
El código:
fuente
Exactamente esto me ha estado molestando durante más de un año, así que hice un guión rápido y sucio para hacerlo. ¿Espero que esto ayude a otros?
Esto apila los nombres en una cola push / pop, pero no la indexación del menú, por lo que podría ser mejor, pero he ido tan lejos como podría ser molestado.
Aquí puedes ver una captura de pantalla de mi cuadro que muestra cómo se ejecuta
Como se solicitó en un comentario de 2019/8, mencioné anteriormente hacer un "arranque temporal". Esta idea fue lo que comenzó originalmente mi script, y el método de arranque temporal vino de otra publicación y es algo como esto
# vi /etc/default/grub
# sudo update-grub
# sudo grub-set-default 0
# sudo grub-reboot 4
Ref: https://ubuntuforums.org/showthread.php?t=1310463
fuente
push
ypop
en tu respuesta. Ojalá los hubiera conocido antes de escribir mi respuesta.test
1. Configure GRUB_DEFAULT en GRUB_DEFAULT = guardado (/ etc / default / grub) 2. Actualice la configuración de grub en / boot #sudo update-grub 3. Configure el SO predeterminado para cargar (esto se cargará cada vez que reinicie la máquina) # sudo grub -set-default 0 4. Cuando necesite cargar otro sistema operativo (el número es un número de menú del sistema operativo como en /boot/grub/grub.cfg, esto cargará otro sistema operativo solo una vez durante el próximo reinicio; el reinicio se iniciará manualmente): sudo grub-reboot 4Esta debería ser la "cadena" correcta ...
La última tubería elimina el espacio en blanco al comienzo de cada fila y corrige la secuencia numérica de acuerdo con la entrada del número de grub. Salida de muestra:
Si desea ver todas las entradas, también las avanzadas, puede usar
pero la secuencia de números no es adecuada para usar con grub-set-default.
fuente
Me acabo de enterar de que puede usar el autocompletado (presionando
tab
dos veces) en comandos comogrub-reboot
ogrub-set-default
y le dará una lista de las entradas disponibles en el menú de arranque. Luego puede copiar el título que desee literalmente, no necesita usar un número.Desafortunadamente, por alguna razón mi instalación de Windows 7 no aparece de esa manera.
fuente
Otro awk one-liner que maneja submenús:
Este podría ser un pensamiento falible, porque \ t se usa para identificar entradas de submenú.
fuente
En OpenSuSE, grub2-once proporciona la identificación del menú que luego puede usar en otros comandos. Sin embargo, no hay mucha ayuda para los usuarios de Ubuntu.
fuente