Primero, comprenda cómo Ubuntu configura Grub2.
- /boot/grub/grub.cfg es el menú Grub2
- el comando update-grub genera automáticamente ese archivo
- ... leyendo la configuración predeterminada de / etc / defaults / grub
- ... y ejecutando shellscripts en /etc/grub.d
Por lo tanto, si no desea editar grub.cfg después de cada actualización del núcleo, debe ajustar los scripts en /etc/grub.d para que sus cambios se apliquen cada vez que se ejecute update-grub .
En segundo lugar, para responder a su primera pregunta directamente, no estoy familiarizado con ningún medio para hacer que las opciones de arranque específicas sean invisibles pero aún accesibles a través del menú Grub. Hay muchas pequeñas cosas sobre Grub1 que no se volvieron a implementar en Grub2, y no me sorprendería si esta fuera una de ellas.
En su lugar, puede hacer que todas las entradas del menú sean invisibles (hasta que esté resaltado) configurando el color de fuente del menú al mismo que el color de fondo. En /etc/grub.d/05_debian_theme , cambie menu_color_normal para que el primer color (fuente) coincida con el segundo color (fondo). Deje menu_color_highlight diferente, para que aparezca la entrada debajo del cursor.
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
Obtener un separador en el menú Grub.
En Grub1 insertarías una nueva entrada como esta. Según recuerdo, necesitabas la declaración raíz para convertirla en una entrada de menú válida; de lo contrario, Grub1 la ignoró.
# separator
title --------------------
root
Sospecho que Grub2 podría ser similar. Una entrada de menú muy básica se ve así en grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Como "cualquier cosa" en las comillas dobles se muestra como el título, puede falsificar un separador con eso. Al igual que Grub1, Grub2 quiere que la palabra clave de Linux lo trate como una entrada de menú real, así que tenga cuidado de no seleccionarlo accidentalmente.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Desafortunadamente, "cualquier cosa" no significa nada ; mientras estaba probando esto probé una larga cadena de guiones ("----------------") y nunca funcionó. Pero le gusta la cadena corta de puntos que se muestra arriba, por lo que puede usar eso.
.....
Ahora, así es como hacer un separador. Para hacer un grupo y colocarlos donde los desee automáticamente, debe agregarlos a los scripts en /etc/grub.d .
Para este ejemplo, pongamos un separador simple entre las diferentes secciones de grub.cfg . Si observa /etc/grub.d , verá los siguientes scripts:
- 00_header
- 05_debian_theme
- 10_linux - entradas para kernels y recuperación de Ubuntu
- 20_memtest86 + - entrada para Memtest86 +
- 30_os-prober - entradas para Windows y otras distribuciones de Linux
- 40_custom - nada por defecto; entradas especiales de usuario pueden ir aquí
Crearemos un nuevo script, separador y colocaremos lo siguiente en él:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Ahora, mueva ese guión a su lugar para el primer separador y vincúlelo a su lugar para los demás. Los scripts se ejecutan en orden, así que si quieres que el primero venga antes de 10_linux , llámalo 09_separator o algo así.
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
Si tiene una entrada específica establecida como predeterminada en / etc / default / grub , es posible que deba actualizarla: Grub2 comienza a contar las entradas del menú en 0, y cada uno de estos "separadores" es una entrada válida, por lo que también cuentan. Si su entrada predeterminada anterior era 0, y ha agregado un separador antes, recuerde cambiar GRUB_DEFAULT a 1
Ahora ejecute update-grub y examine /boot/grub/grub.cfg : debería ver los separadores allí. Si lo hace, reinicie y compruébelo.
....
Si desea colocar separadores en otro lugar, por ejemplo, entre diferentes versiones de kernel, deberá editar 10_linux (u otro script) directamente, y encontrar el lugar apropiado para agregar el separador. Puede usar las líneas del guión anterior; incluya todo excepto la primera línea #! / bin / sh .
Si quieres algo más bonito, usa imágenes o temas de bienvenida de Grub. Necesito darle una lluvia de lluvia sobre esos temas, pero revise los recursos a continuación.
Recursos:
Hay dos grandes guías Grub2 en UbuntuForums que he llegado a conocer y amar:
GNU Grub 2 es otro gran recurso. Tiene un conjunto de secuencias de comandos para ajustar Grub2 de Karmic ( revelación completa: no las he probado ).
La página de formato de tema de Grub Wiki es imprescindible para hackear temas de Grub2.