Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/03/2012, à 01:29

Arbiel

[Tuto] Amorcer avec ou sans affichage du menu Grub

On sait paramétrer la création du menu Grub pour qu'il amorce directement, sans affichage du menu, sur une entrée définie par défaut. Mais on a plus de difficultés à modifier ce comportement pour faire amorcer le PC sur une autre entrée du menu. Et en cas de dysfonctionnement, on peut même avoir à amorcer le PC à partir d'un support amovible pour venir modifier les fichiers de gestion de Grub et pour exécuter update-grub.

Ceci m'a amené à écrire un script Grub pour modifier son comportement qui devient alors le suivant :
si la touche "ctrl" est enfoncée, le menu est présenté pour permettre à l'utilisateur de choisir une entrée
sinon, Grub amorce le PC directement avec le système qui a été préalablement défini.

Cette définition du système à utiliser sans affichage du menu nécessite la création du fichier /boot/grub/direct_boot.cfg

set uuid=<uuid_de_la_partition_racine>
set kernel=<chemin_accès_noyau>
set initrd=<chemin_accès_fichier_initrd>
set kernelopt="<paramètres_noyau>"

Les valeurs à utiliser sont celles qui apparaissent dans l'entrée du menu correspondant au système à utiliser

menuentry 'Le système à utiliser' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    set gfxpayload=$linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos7)'
    search --no-floppy --fs-uuid --set=root <uuid_de_la_partition_racine>
    linux    <chemin_accès_noyau> root=UUID=<uuid_de_la_partition_racine> <paramètres_noyau>
    initrd     <chemin_accès_fichier_initrd>
}

La présence d'espaces dans <paramètres_noyau> explique la présence des doubles " de l'exemple.

Pour changer le système à amorcer par défaut, il suffit de modifier les valeurs enregistrées dans le fichier /boot/grub/direct_boot.cfg, sans avoir à exécuter la commande update-grub.

Pour mettre en oeuvre ce fonctionnement, il faut

a) créer le fichier /etc/grub.d/06_custom avec le contenu ci-dessous

#! /bin/sh
set -e

cat << EOF
if ! keystatus --ctrl ; then
    if [ -f  $prefix/direct_boot.cfg ]; then
      source $prefix/direct_boot.cfg
    set gfxpayload=$linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
        search --no-floppy --set=root --fs-uuid \${uuid}
        linux \${kernel} root=UUID=\${uuid} \${kernelopt}
    initrd \${initrd}
        boot
   fi
fi
EOF

b) marquer le fichier comme exécutable,
c) et exécuter update-grub.

Cependant avant d'exécuter update-grub, il est recommandé
a) de contrôler la bonne exécution par la commande

 sudo grub-mkconfig -o fichier_de_contrôle

b) de vérifier le contenu du fichier de contrôle
c) de sauver le contenu actuel de /boot/grub/grub.cfg
d) de vérifier que l'on dispose bien des outils nécessaires pour amorcer le PC à partir d'un support amovible afin de pouvoir réinitialiser /boot/grub/grub.cfg en cas de catatrophe

Arbiel

Dernière modification par Arbiel (Le 11/03/2012, à 01:32)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne