Tout d'abord, comprenez comment Ubuntu configure Grub2.
- /boot/grub/grub.cfg est le menu Grub2
- la commande update-grub génère automatiquement ce fichier
- ... en lisant les paramètres par défaut dans / etc / defaults / grub
- ... et en cours d' exécution dans shellscripts /etc/grub.d
Donc, si vous ne voulez pas modifier grub.cfg après chaque mise à jour du noyau, vous voulez modifier les scripts dans /etc/grub.d afin que vos modifications soient appliquées à chaque fois que update-grub est exécuté.
Deuxièmement, pour répondre directement à votre première question, je ne connais aucun moyen de rendre invisibles des options de démarrage spécifiques mais toujours accessibles via le menu Grub. Il y a beaucoup de petites choses à propos de Grub1 qui n'ont pas été réimplémentées dans Grub2, et cela ne m'étonnerait pas si c'était l'une d'entre elles.
Au lieu de cela, vous pouvez rendre toutes les entrées de menu invisibles (jusqu'à ce qu'elles soient mises en surbrillance) en définissant la couleur de police du menu sur la même couleur que l'arrière-plan. Dans /etc/grub.d/05_debian_theme , changez menu_color_normal pour que la première couleur (police) corresponde à la deuxième couleur (arrière-plan). Laissez menu_color_highlight différent, de sorte que l'entrée sous le curseur s'affiche.
# 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
Obtenir un séparateur dans le menu Grub.
Dans Grub1, vous insérez une nouvelle entrée comme celle-ci. Si je me souviens bien, vous aviez besoin de la déclaration racine pour en faire une entrée de menu valide, sinon Grub1 l'ignorait.
# separator
title --------------------
root
Je soupçonne que Grub2 pourrait être similaire. Une entrée de menu très basique ressemble à ceci dans grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Étant donné que "n'importe quoi" dans les guillemets doubles s'affiche comme titre, vous pouvez simuler un séparateur avec cela. Comme Grub1, Grub2 veut que le mot clé linux le traite comme une véritable entrée de menu, alors faites attention de ne pas le sélectionner accidentellement.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Malheureusement, «n'importe quoi» ne veut rien dire ; pendant que je testais cela, j'ai essayé une longue chaîne de tirets ("----------------") et cela n'a jamais fonctionné. Mais il aime la courte chaîne de points ci-dessus, vous pouvez donc l'utiliser.
.....
Voilà comment créer un séparateur. Pour créer un groupe et les placer où vous le souhaitez automatiquement, vous devez les ajouter dans les scripts dans /etc/grub.d .
Pour cet exemple, mettons un simple séparateur entre les différentes sections de grub.cfg . Si vous regardez /etc/grub.d , vous voyez les scripts suivants:
- 00_header
- 05_debian_theme
- 10_linux - entrées pour les noyaux Ubuntu et la récupération
- 20_memtest86 + - entrée pour Memtest86 +
- 30_os-prober - entrées pour Windows et autres distributions Linux
- 40_custom - rien par défaut; les entrées utilisateur spéciales peuvent aller ici
Nous allons créer un nouveau script, un séparateur et y placer les éléments suivants:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Maintenant, déplacez ce script en place pour le premier séparateur et liez-le en place pour les autres. Les scripts sont exécutés dans l'ordre, donc si vous voulez que le premier arrive avant 10_linux , nommez-le 09_separator ou quelque chose.
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 une entrée spécifique est définie par défaut dans / etc / default / grub , vous devrez peut-être la mettre à jour - Grub2 commence à compter les entrées de menu à 0, et chacun de ces "séparateurs" est une entrée valide, donc ils comptent aussi. Si votre entrée par défaut précédente était 0 et que vous avez ajouté un séparateur avant, n'oubliez pas de remplacer GRUB_DEFAULT par 1
Maintenant, lancez update-grub et examinez /boot/grub/grub.cfg - vous devriez voir les séparateurs là-dedans. Si vous le faites, redémarrez et vérifiez-les.
....
Si vous souhaitez placer des séparateurs ailleurs, disons entre différentes versions du noyau, vous devrez modifier 10_linux (ou un autre script) directement et trouver l'endroit approprié pour ajouter le séparateur. Vous pouvez utiliser les lignes du script ci-dessus; inclure tout sauf la première ligne #! / bin / sh .
Si vous voulez quelque chose de plus joli, utilisez des images ou des thèmes de démarrage Grub. Je dois vous donner une vérification de la pluie sur ces sujets, mais consultez les ressources ci-dessous.
Ressources:
Il y a deux grands guides Grub2 sur UbuntuForums que j'ai appris à connaître et à aimer:
GNU Grub 2 est une autre excellente ressource. Il a un ensemble de scripts pour peaufiner le Grub2 de Karmic ( divulgation complète: je ne les ai pas essayés ).
La page Format de thème de Grub Wiki est un must pour le piratage des thèmes Grub2.