GRUB 2 usa una configuración completamente diferente de la de GRUB Legacy. La configuración de GRUB Legacy se gestiona por medio del archivo menu.lst, pero GRUB 2 no utiliza ningún archivo menu.lst. En su lugar, GRUB 2 utiliza un archivo de configuración, grub.cfg, para almacenar el mismo tipo de información. Similar al archivo menu.lst, el archivo grub.cfg se encuentra en el nivel superior del conjunto de datos ZFS de la agrupación raíz, /pool-name/boot/grub, por ejemplo, /rpool/boot/grub/grub.cfg.
La sintaxis del archivo grub.cfg se basa en un subconjunto de secuencias de comandos bash, que es más complejo y eficaz que el lenguaje similar a directivas utilizado en el archivo menu.lst que se muestra en el siguiente ejemplo:
title title bootfs pool-name/ROOT/bootenvironment-name kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS module$ /platform/i86pc/$ISADIR/boot_archive
En comparación, la misma configuración se almacena en el archivo grub.cfg, de la siguiente forma:
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 }
Otra diferencia importante entre los archivos grub.cfg y menu.lst es que no se edita el archivo grub.cfg. El archivo menu.lst admite entradas de menú creadas por el usuario y cambios manuales en parámetros y variables globales del archivo de configuración de GRUB, además de entradas de menú generadas automáticamente por el sistema. En cambio, el archivo grub.cfg se administra mediante varios subcomandos de bootadm, muchos de los cuales son nuevos en esta versión. Los distintos subcomandos de bootadm permiten administrar la mayoría de las tareas de administración del cargador de inicio. Consulte Administración de la configuración de GRUB con el comando bootadm.
Otra característica del archivo grub.cfg es que se genera automáticamente siempre que se modifica la configuración del cargador de inicio. El archivo también se genera automáticamente durante algunas operaciones y cuando se usan determinados comandos de administración de inicio. Si es necesario, puede generar manualmente un nuevo archivo grub.cfg mediante la ejecución del comando bootadm con el nuevo subcomando generate-menu. Utilice este subcomando para crear un nuevo archivo grub.cfg sólo si se daña la configuración de inicio. Consulte Cómo volver a generar manualmente el menú de GRUB.
Para su referencia, la configuración de GRUB 2 se almacena en los siguientes archivos:
grub.cfg: es el archivo de configuración principal utilizado por GRUB 2.
/pool-name/boot/grub/menu.conf: es un archivo utilizado por Oracle Solaris para generar el archivo de configuración grub.cfg final.
El archivo menu.conf es un metarchivo de configuración de GRUB independiente que almacena la representación de análisis automático de la configuración de GRUB 2.
/pool-name/boot/grub/custom.cfg: es un archivo editable que se encuentra en la misma ubicación que los archivos grub.cfg y menu.conf. El administrador crea el archivo custom.cfg (no está en el sistema de manera predeterminada). Este archivo se reserva para agregar construcciones más complejas (entradas de menú u otra información de secuencias de comandos) en la configuración básica de GRUB.
El archivo grub.cfg hace referencia al archivo custom.cfg. Si existe un archivo custom.cfg en el sistema, los comandos o las directivas presentes en ese archivo se procesan mediante el archivo grub.cfg. Para obtener más información, consulte Personalización de la configuración de GRUB.