NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...
(reprend son souffle)
... OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOON !
On ne modifie par
grub.cfg directement !
Contrairement au fichier
menu.lst de GRUB Legacy, le fichier
grub.cfg est
entièrement regénéré automatiquement à chaque nouvelle exécution de
update-grub. Du coup, n'importe quelle modification apportée dans ce fichier se trouverait écrasée. D'où la raison pour laquelle il n'est pas accessible en écriture : ce n'est pas ce fichier qu'il faut modifier.
Pour modifier le contenu du menu de GRUB 2, il faut modifier plusieurs fichiers de configuration qui se trouvent dans
/etc/grub.d/. Ils correspondent à des emplacement dans le menu de GRUB 2 : le contenu de
00_header sera situé plus haut dans le fichier
grub.cfg généré que le contenu de
40_custom.
Pour ajouter des systèmes personnalisés, c'est le fichier
/etc/grub.d/40_custom qu'il faut modifier. Voici son contenu original :
#!/bin/sh
exec tail -n +3 $0
# This file is an example on how to add custom entries
Pour ajouter une ou des instructions de chaînage vers d'autres systèmes d'exploitation qui n'auraient pas été détectés par
os-prober et ajoutés automatiquement dans
30_os-prober, on ajoutera les entrées dans
40_custom (en veillant à
ne rien supprimer du contenu original) :
#!/bin/sh
exec tail -n +3 $0
# This file is an example on how to add custom entries
menuentry "Intitulé apparaissant dans le menu de GRUB 2" {
instruction1
instruction2
instruction3
...
}
## Quelques exemples
# Enchaînement vers un amorceur localisé dansle secteur d'amorçage
# d'une autre partition :
menuentry "Vers GRUB Legacy d'Ubuntu 9.04 sur /dev/sda2" {
set root=(hd0,2)
chainload +1
}
# Enchaînement vers un fichier de menu de GRUB 2
# (ne fonctionne pas vers un menu de GRUB Legacy) :
menuentry "Vers GRUB 2 de Kubuntu 'Karmic Koala' (oh ! ça fait KKK ! berk !) sur /dev/sda3" {
set root=(hd0,3)
configfile /boot/grub/grub.cfg
}
# Chargement d'un système FreeBSD :
menuentry "Vers FreeBSD sur quatrième partition primaire" {
set root=(hd0,4,a)
freebsd /boot/loader
}
(
40_custom ajoute les entrées de menu complètement à la fin du menu de GRUB 2. Si on souhaite les ajouter avant les entrées pour Ubuntu, eh bien, il suffit d'enregistrer
40_custom sous un autre nom dont le chiffre serait inférieur à 10, par exemple
09_custom. Ainsi, les entrées personnalisées se trouvent avant celles d'Ubuntu. Pour les placer entre les entrées d'Ubuntu et les entrées
memtest :
15_custom. Entre le
memtest et les entrées de systèmes trouvés automatiquement ? oui, vous avez deviné :
25_custom. 😉)