La configuration de GRUB 2 est tout à fait différente de celle de GRUB Legacy. Il convient de gérer la configuration de GRUB Legacy par le biais du fichier menu.lst, alors que GRUB 2 ne comprend pas de fichier menu.lst. GRUB 2 stocke le même type d'informations dans le fichier de configuration grub.cfg. Tout comme le fichier menu.lst, le fichier grub.cfg est situé au niveau supérieur du jeu de données ZFS du pool root, /pool-name/boot/grub, tel que /rpool/boot/grub/grub.cfg.
La syntaxe du fichier grub.cfg repose sur un sous-ensemble de scripts bash, plus complexe et puissant que le langage de type directive figurant dans le fichier menu.lst, comme illustré dans l'exemple suivant :
title title bootfs pool-name/ROOT/bootenvironment-name kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS module$ /platform/i86pc/$ISADIR/boot_archive
Pour comparaison, la même configuration est stockée dans le fichier grub.cfg, comme suit :
menuentry "<title>" { insmod part_msdos insmod part_sunpc insmod part_gpt insmod zfs search --no-floppy --fs-uuid --set=root f3d8ef099730bafa zfs-bootfs /ROOT/<BE name>/@/ zfs_bootfs set kern=/platform/i86pc/kernel/amd64/unix echo -n "Loading ${root}/ROOT/<BE name>/@$kern: " $multiboot /ROOT/<BE name>/@/$kern $kern -B $zfs_bootfs set gfxpayload="1024x768x32;1024x768x16;800x600x16;640x480x16;640x480x15;640x480x32" insmod gzio echo -n "Loading ${root}/ROOT/<BE name>/@/platform/i86pc/amd64/boot_archive: " $module /ROOT/<BE name>/@/platform/i86pc/amd64/boot_archive }
Une autre différence importante entre les fichiers grub.cfg et menu.lst tient au fait qu'il ne faut pas modifier le fichier grub.cfg directement. Le fichier menu.lst prend en charge les entrées de menu créées par l'utilisateur et les modifications apportées aux variables et paramètres du fichier de configuration GRUB global, en plus des entrées de menu générées automatiquement par le système. En revanche, il convient d'administrer le fichier grub.cfg par le biais de différentes sous-commandes bootadm, dont la plupart ont été instaurées dans cette version. Les sous-commandes bootadm vous permettent de gérer la plupart des tâches d'administration du programme d'amorçage. Reportez-vous à la section Administration de la configuration de GRUB par le biais de la commande bootadm.
D'autre part, le fichier grub.cfg est généré automatiquement chaque fois que vous apportez des modifications à la configuration du programme d'amorçage. Ce fichier est également généré automatiquement au cours de certaines opérations et de l'exécution de commandes spécifiques d'administration de l'initialisation. Si nécessaire, vous pouvez générer manuellement un nouveau fichier grub.cfg en exécutant la commande bootadm avec la nouvelle sous-commande generate-menu. Ajoutez cette sous-commande pour créer un nouveau fichier grub.cfg uniquement si la configuration d'initialisation est endommagée. Reportez-vous à la section Régénération manuelle du menu GRUB.
A titre de référence, la configuration de GRUB 2 est stockée dans les fichiers suivants.
grub.cfg est le fichier de configuration principal de GRUB 2.
/pool-name/boot/grub/menu.conf est le fichier utilisé par Oracle Solaris pour générer le fichier de configuration grub.cfg final.
Le fichier menu.conf est un fichier de métaconfiguration GRUB distinct qui stocke la représentation de la configuration de GRUB 2 dans un format analysable.
/pool-name/boot/grub/custom.cfg est un fichier éditable qui se trouve au même emplacement que les fichiers grub.cfg et menu.conf. Le fichier custom.cfg est créé par l'administrateur (et non sur le système par défaut). Ce fichier est réservé à l'ajout de structures plus complexes (entrées de menu ou autres informations de script) à la configuration de GRUB.
Le fichier custom.cfg est référencé dans le fichier grub.cfg. En présence d'un fichier custom.cfg sur le système, les commandes ou directives qui y figurent sont ensuite traitées par le fichier grub.cfg. Pour plus d'informations, reportez-vous à la section Personnalisation de la configuration de GRUB.