Wikilivres/Aller plus loin avec GRUB/Dynamique des commandes
Pour conclure l'exemple précédent (vu dans /Des commandes derrière les menus) on peut déduire ce qui suit:
- Le logiciel GRUB est d'abord chargé pour être affiché à l'écran
- Des modules de décompression sont chargés en mémoire
- Ensuite seulement les images (compressées) de Linux et d'initrd sont chargées.
Cela n'a l'air de rein mais signifie bien que les modules chargés ne sont ni ceux de Linux, ni ceux d'une image Initrd, mais bien des fichiers issus d'une (ou plusieurs) image(s) Grub. Ce sont donc deux sujet différents.
Les fichiers qui constituent Grub
Dans cette page, nous commençons à nous intéresser à Grub et aux fichiers qui le constituent.
Attention: si nous mentionnons les fichiers utilisé par Grub, nous ne conseillons pas de les modifier pour ne pas endommager le fonctionnement du démarrage. En effet, si l'installation Grub ou sa configuration sont endommagées, le système ne pourra pas démarrer.
Les images
modifierLe manuel en langue anglais de Grub mentionne plusieurs fichiers images. Ici, le terme de fichier image, ne désigne pas un fichier graphique, mais plutôt une sorte de métaphore. Un fichier image désigne à la manière d'une photographie, l'état instantané d'un système de fichiers, c'est-à-dire une arborescence de fichiers, concaténé dans un fichier unique. On peut aussi parler de IMG (format de fichier) sur la Wikipedia.
Le logiciel Grub est pourvu d'images spécifiques à certains dispositifs de démarrage. La documentation anglaise mentionne spécifiquement
- boot.img, une image démarrée par le BIOS des PC, servant à lire le premier secteur pour charger l'image core.
- diskboot.img, lors du démarrage d'un disque dur
- cdboot.img, une image démarrée depuis un cédérom
- pxeboot.img, une image démarrée depuis le réseau fonctionannt avec PXE (voir Preboot Execution Environment sur la Wikipedia)
- lnxboot.img, une image démarrée depuis le logiciel LILO (un autre chargeur de système d'exploitation)
- kernel.img, une image contenant les fonction d'exécution basique de Grub, telles que gestion des périphériques et des fichiers, variables d'environneemnt, mode rescue, interpréteur de ligne de commande. Cette image est intégrée dans des images core.
- core.img, il s'agit d'une image construite en assemblant l'image kernel de Grub et une list ad hoc de modules.
- Tous les autres fichiers de Grub sont des modules chargés dynamiquement
Les modules
modifierLes modules sont usuellement suffixés par le suffixe .mod. Ce sont des fichiers exécutables qui peuvent être chargés depuis Grub, mais pas depuis Linux. Les modules sont chargés par la commande insmod.
La documentation/boot/grub/locale/ anglaise ne contient pas une liste de module complète.
Sur un système Linux classique, les modules grub sont disponibles dans un sous-dossier de /boot/grub. Ils peuvent par exemple se trouver dans un dossier x86_64-efi. Ils sont relativement nombreux. Certains systèmes peuvent disposer de plus de 250 modules Grub.
Les modules et le noyau peuevent concerner différents fonctions liées au chargement.
A titre purement informel, voici une tentative de classement[1]
Nombre | Dossier | Commentaires |
---|---|---|
2 | bus | |
59 | commands | Des commandes comme help, lspci, date, ou cat |
20 | disk | Des modules disque, comme LVM, MDRAID, SCSI, memdisk |
1 | efiemu | |
1 | font | |
28 | fs | Des systèmes de fichiers comme cpio, ext2, iso9660, tar, FAT, NTFS, |
1 | gdb | |
1 | gettext | |
1 | gfxmenu | |
1 | hello | |
1 | hook | |
5 | io | Modules de décompression tels que gzio et xzio. |
2 | kern | |
14 | lib | Libraires telles que crc64, random ou disk. |
4 | loader | Tel que multiboot |
1 | mmap | |
3 | net | |
1 | normal | |
11 | partmap | Des systèmes de paritions comme Amiga, Apple, BSD label, GPT, MSDOS ou SUN. |
1 | parttool | |
8 | term | Des modules de terminal tels que AT_keyboard, USB_keyboard, GFXterm, Terminfo, Serial |
20 | tests | Des modules de test comme videotest ou usbtest. |
9 | video | Des modules de vidéo tels que EFI_GOP, Bitmap, Colors |
Parmi les modules, les commandes sont enregistrées[2] avec un nom et une chaîne de caractères de quelques mots servant d'aide. La stratégie d'internationalisation doit permettre d'accéder à cette ligne d'aide en langue française.
Les autres fichiers
modifierUn dossier contient des informations de régionalisation, dites locales en langue anglaise. Ce dossier peut porter le nom de /boot/grub/locale/ Ces fichiers de localisation portent le suffixe .mo. Ils sont au format "GNU message catalog".
Un dossier contenant les informations sur la disposition du clavier. Ce dossier peut porter le nom de /boot/grub/layouts/ Ces fichiers de description des touchers du clavier portent le suffixe .gkb. Un fichier fr.gkb peut exister ou bien être généré.
Parmi les autres fichiers présents, peuvent être mentionnés:
- un fichier device.map qui contient une liste des disques dur.
- un fichier load.cfg
- un fichier grub.cfg (ce fichier ne doit pas être modifié; il doit être généré automatiquement)