Aller au contenu

Aller plus loin avec GRUB/Dynamique des commandes

Un livre de Wikilivres.

Pour conclure l'exemple précédent (vu dans /Des commandes derrière les menus) on peut déduire ce qui suit:

  1. Le logiciel GRUB est d'abord chargé pour être affiché à l'écran
  2. Des modules de décompression sont chargés en mémoire
  3. 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.

Le 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 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

[modifier | modifier le wikicode]

Un 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)
  1. se basant sur l'organisation du code source de Debian
  2. Le code source fait un appel à une fonction grub_register_command