Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

GRUB : ajouter une entrée manuellement

GRUB est un gestionnaire de démarrage et de chargement de système très répandu. Grâce à lui, il est possible d’utiliser différents systèmes d’exploitation sur le même ordinateur. Nous pouvons également démarrer le même système de différentes manières, par exemple Linux en mode graphique, texte ou récupération.

Dans ce tutoriel, nous apprendrons à configurer le menu GRUB et à définir l’entrée par défaut.
Pour cela, je vous donne plusieurs exemples de syntaxes d’entrée GRUB.

Comment ajouter une entrée manuellement dans GRUB

Pré-requis – Avant de commencer

Voici ce que vous devez savoir :

  • Le fichier à éditer est /etc/grub.d/40_custom. Il est important d’ajouter l’entrée à la fin du fichier
  • Vous devez connaître le numéro du disque et l’UUID de votre partition principale, pour cela, utilisez la commande blkid
  • Lors de chaque modification de la configuration, vous devez mettre à jour la configuration de GRUB avec la commande grub-update

Vous pouvez aussi consulter ce guide en parallèle pour mieux connaître les directives GRUB :

Je vous rappelle que dans le cas d’un Dual-Boot, l’ajout de l’OS comme entrée au démarrage de GRUB peut se faire à l’aide d’os-prober. Plus de détails : os-prober et grub-mkconfig : configurer GRUB automatiquement

Ajouter une entrée Linux au démarrage GRUB

Pour pouvoir configurer un démarrage Linux, vous devez connaître le chemin fichier du noyau Linux sur lequel booter.
Il s’agit du fichier vmlinuz.
Si un disque RAM, sous la forme d’un fichier initrd est utilisé, vous devez aussi connaître.

menuentry 'Ubuntu demo' {
        insmod part_gpt
        set root=(hd1,1)
        search --no-floppy --fs-uuid --set 9c41c63d-38ab-48d1-94b1-f61810b3c78d 
        linux /boot/vmlinuz-6.8.0-31-generic root=UUID=9c41c63d-38ab-48d1-94b1-f61810b3c78d ro quiet
        initrd /boot/initrd.img-6.8.0-31-generic
}       

Dans cet exemple :

  • insmod part_gpt — charge le module pour reconnaître les partitions GPT (GUID Partition Table). Reportez-vous à la fin de cet article pour une liste des modules insmod
  • set root=(hd1,1) — initialise la variable root, ici il s’agit de la première partition de disque du disque 2 (sdb). Notez que cette valeur peut être modifiée par la directive search.
  • search –no-floppy –fs-uuid –set=root <UUID> cherche la partition avec l’UUID spécifié et assigne le résultat à la variable root.
  • linux /boot/vmlinuz-linux root=UUID=<UUID> ro quiet — utilisez l’UUID pour spécifier la partition racine pour le noyau Linux.
  • initrd — Le chemin

Vous devez bien entendu remplacer les UUID de cet par les votre retourné par la commande blkid.

L’entrée search est facultative mais en utilisant des UUID ou des labels, la directive search rend la configuration GRUB plus robuste face aux changements de matériel (comme l’ajout ou le retrait de disques).
Elle permet d’écrire des configurations GRUB qui fonctionnent indépendamment de l’ordre des disques, ce qui est utile dans les systèmes avec plusieurs disques ou partitions.

Mettez à jour la configuration de GRUB avec la commande suivante :

sudo update-grub

Enfin redémarrez votre PC, la nouvelle entrée doit apparaître dans GRUB :

Ajouter une entrée Linux au démarrage GRUB

Ajouter une entrée Ubuntu Terminal

Voici un autre exemple où cette fois-ci, nous ajoutons une entrée de démarrage pour ouvrir un Terminal Ubuntu.

menuentry 'Ubuntu text terminal' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux_text_terminal' {
insmod part_gpt
insmod ext2
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
set root=(hd1,1)
search --no-floppy --fs-uuid --set 9c41c63d-38ab-48d1-94b1-f61810b3c78d
linux /boot/vmlinuz-6.8.0-31-generic root=UUID=9c41c63d-38ab-48d1-94b1-f61810b3c78d systemd.unit=multi-user.target ro
initrd /boot/initrd.img-6.8.0-31-generic
}

Puis on met à jour la configuration de GRUB à l’aide de la commande update-grub.
Au prochain redémarrage, on constate que la nouvelle entrée est bien présente.

Ajouter une entrée Ubuntu Terminal dans GRUB

Ajouter une entrée Windows au démarrage GRUB

GRUB peut très bien être utilisé pour passer la main à un chargeur de démarrage Windows.
Pour cela, on utilise la directive chainloader pour donner la main à un chargeur de démarrage différent.

Par exemple pour ajouter une entrée Windows en mode UEFI :

menuentry 'Windows 10' --class windows --class os {
    insmod ntfs
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --no-floppy --set=root <UUID>
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Une autre façon de procéder est de demander à Grub de charger le

menuentry "Windows 10" { 
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
chainloader +1
}

C’est la directive chainloader +1 qui fait le travail en passant le contrôle au chargeur de démarrage situé dans le premier secteur de la partition spécifiée par set root.

Enfin en mode MBR, on peut aussi utiliser la direction ntldr pour charger le chargeur de démarrage bootmgr en indiquant son chemin.

menuentry "Windows 10" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
search --no-floppy --set=root --fs-uuid <UUID>
ntldr /bootmgr
}

Autres exemples avec Windows 10, toujours en MBR :

menuentry "Windows 10" {
insmod part_msdos
insmod ntldr
insmod ntfs
ntldr (hd0,msdos1)/bootmgr
}

Autres exemples de Chainloading avec GRUB

Pour charger en chaîne une ISO avec des arguments de ligne de commande du noyau personnalisés ou par défaut, une entrée similaire à la suivante :

menuentry "SYSRESCUECD" {
set iso=/systemrescuecd-x86-3.8.1.iso
loopback loop ${iso}
linux (loop)/isolinux/rescue64 nomodeset vga=791 docache setkmap=fr isoloop=${iso}
initrd (loop)/isolinux/initram.igz
}

Définir l’entrée par défaut de manière statique

Si vous désirez que le PC démarre automatiquement sur une entrée spécifique de GRUB.
Voici comment faire.

  • Éditez le fichier /etc/default/grub :
sudo nano /etc/default/grub
  • Ensuite, nous allons modifier GRUB_DEFAULT avec le nom de l’entrée par défaut :
GRUB_DEFAULT="gnulinux_text_terminal"
Remarquons que nous avons utilisé l’ID du menu, mais que l’index zéro de l’entrée est également autorisé.

Enfin mettez à jour la configuration GRUB.

sudo update-grub

Afficher le menu GRUB en permanence à chaque démarrage

Vous souhaitez que le menu de grub s’affiche à chaque démarrage du PC ?
Cela est possible, éditez le fichier de configuration /etc/default/grub puis modifiez/ajouter les directives suivantes :

GRUB_TIMEOUT_STYLE=menu

Ensuite définissez le délai avant laquelle GRUB charge l’entrée de démarrage par défaut.
Il est important de ne pas laisser la valeur à 0 sinon le menu va s’afficher très brièvement pour charger l’entrée de démarrage par défaut.

GRUB_TIMEOUT=10

Ensuite, nous devons mettre à jour GRUB.

Pour cacher à nouveau le menu GRUB au démarrage du PC, repassez la valeur de l’option GRUB_TIMEOUT_STYLE en hidden.

Quels sont les modules insmod

La directive insmod est utilisée pour charger des modules nécessaires au bon fonctionnement de GRUB. Ces modules ajoutent des fonctionnalités spécifiques, comme la prise en charge de systèmes de fichiers, de périphériques, ou d’autres capacités essentielles au processus de démarrage.

Module isnmod Description
insmod part_gpt Charge le module pour reconnaître les partitions GPT (GUID Partition Table).
insmod part_msdos Charge le module pour reconnaître les partitions au format MBR (Master Boot Record).
insmod ext2 Charge le module pour prendre en charge les systèmes de fichiers ext2, ext3, et ext4 (les systèmes de fichiers couramment utilisés sous Linux).
insmod fat Charge le module pour la prise en charge des systèmes de fichiers FAT, FAT16, et FAT32.
insmod ntfs Charge le module pour la prise en charge des systèmes de fichiers NTFS (utilisés par Windows).
insmod lvm Charge le module pour la prise en charge de LVM (Logical Volume Management), utile si le système est installé sur des volumes logiques.
insmod luks Charge le module pour déverrouiller des partitions chiffrées avec LUKS (Linux Unified Key Setup).
insmod gzio Charge le module pour gérer la compression gzip, utile si le noyau ou d’autres fichiers sont compressés avec gzip.
insmod normal Charge le module qui fournit le mode normal de GRUB, ce qui est nécessaire pour le chargement standard du système d’exploitation.
insmod chain Charge le module permettant le chaînage vers d’autres chargeurs de démarrage, souvent utilisé pour démarrer Windows à partir de GRUB.
insmod iso9660 Charge le module pour la prise en charge des systèmes de fichiers ISO 9660, utilisés sur les CD/DVD.
insmod linux Charge le module pour démarrer un noyau Linux.
insmod efi_gop Charge le module pour prendre en charge les interfaces graphiques GOP (Graphics Output Protocol) dans un environnement EFI.
insmod efi_uga Charge le module pour prendre en charge l’interface UGA (Universal Graphics Adapter) dans un environnement EFI.
insmod all_video Charge tous les modules vidéo disponibles, ce qui permet de gérer plusieurs types de sortie vidéo pour GRUB.
insmod font Charge le module de gestion des polices, utilisé pour afficher des textes avec des polices spécifiques dans le menu GRUB.

L’article GRUB : ajouter une entrée manuellement est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires