OldGentooWiki:Boot-update
De Gentoo-Quebec.
Guide de l'utilisateur Funtoo de sys-boot/boot-update
Du point de vue de l'utilisateur, il est essentiel de savoir que sys-apps/coreboot se veut être une abstraction autour des gestionnaires de boot, autrement dit GRUB mais aussi LiLo à l'avenir. En l'état seulement GRUB est supporté et coreboot différencie sys-boot/grub-legacy-0.97 et sys-boot/grub-1.97, les gérant de façon transparente.
Options d'installation de sys-boot/boot-update:
En ce qui concerne Funtoo, il n'y a rien à préconfigurer, pas de USE flags, nada.
Gardons pour plus tard la configuration nécessaire pour porter sys-apps/coreboot sous Gentoo ou Sabayon ou même VidaLinux.
Installer sys-boot/boot-update:
~ # emerge boot-update
Après l'installation coreboot aura copié les fichiers suivants:
~ # cat /var/db/pkg/sys-boot/boot-update-1.4.5/CONTENTS | grep obj | cut -f2 -d' ' /sbin/boot-update /usr/share/man/man8/boot-update.8.bz2 /usr/share/man/man5/boot.conf.5.bz2 /usr/share/doc/coreboot-1.4.5/boot-update.8.rst.bz2 /usr/share/doc/coreboot-1.4.5/boot.conf.5.rst.bz2 /usr/share/doc/coreboot-1.4.5/boot.conf.example.bz2 /usr/lib/python2.6/site-packages/funtoo/boot/helper.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/grub-legacy.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/grub.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/__init__.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/lilo.py /usr/lib/python2.6/site-packages/funtoo/boot/__init__.py /usr/lib/python2.6/site-packages/funtoo/boot/config.py /usr/lib/python2.6/site-packages/funtoo/boot/resolver.py /usr/lib/python2.6/site-packages/funtoo/boot/extension.py /usr/lib/python2.6/site-packages/funtoo/__init__.py /usr/lib/python2.6/site-packages/funtoo/old/template.py /usr/lib/python2.6/site-packages/funtoo/core/__init__.py /usr/lib/python2.6/site-packages/funtoo/core/config.py ~ #
A noter qu'on y trouve:
- un fichier de configuration: /etc/boot.conf (l'ebuild l'aura extrait),
- une commande super utilisateur: boot-update,
- une manpage pour boot-update,
- une manpage pour boot.conf.
Il est intéressant de lire la manpage de boot-update:
~ # man boot-update
Il est crucial de lire la manpage de boot.conf pour comprendre son méchanisme et facilliter la lecture de ce qui suit:
~ # man boot.conf
Editer /etc/boot.conf:
Pour générer une configuration de boot saine et tirer partie des fonctionalités de coreboot, il faut se plonger dans son unique fichier de configuration /etc/boot.conf et prendre connaissance des valeurs par défaut.
~ # boot-update --showdefaults
# These are default, hard-coded settings that can be overridden by the
# /etc/boot.conf file.
section boot {
path /boot
generate grub
timeout 5
default bzImage
}
section color {
normal cyan/blue
highlight blue/cyan
}
section default {
type linux
scan /boot
kernel bzImage[-v] kernel[-v] vmlinuz[-v] vmlinux[-v]
params root=auto rootfstype=auto
}
~ #
Coreboot définit plusieurs fonctions intégrées: boot, color, display et default (mais aussi initrd). Toutes autres fonctions définies dans /etc/boot.conf sont assimilées à des entrées de boot.
Détails de /etc/boot.conf par défaut
Son installation par défaut devrait ressembler à ce qui suit:
boot {
generate grub
default "Funtoo Linux"
timeout 3
}
"Funtoo Linux" {
kernel bzImage[-v]
}
"Funtoo Linux genkernel" {
kernel kernel-genkernel[-v]
initrd initramfs-genkernel[-v]
params += real_root=auto
}
"Funtoo Linux uvesafb" {
kernel bzImage-uvesafb[-v]
params += video=uvesafb:1440x900-8,mtrr=2
}
"Windows 7" {
type win7
params root=/dev/sda1
}
"Windows XP" {
type winxp
params root=/dev/sda4
}
On constate donc que par défaut, la fonction 'boot' est définie:
boot {
generate grub
default "Funtoo Linux"
timeout 3
}
Cette entrée signifie que:
- coreboot utilisera GRUB pour générer la configuration de boot,
- l'entrée de boot par défaut est celle définie dans "Funtoo Linux",
- le timeout de boot par défaut vaut 3.
En ce qui concerne la clé 'generate' on peut imaginer un futur support pour LiLo (plus tard). Donc quand bien même elle est déjà définie comme valeur par défaut il est sage de la laisser présente.
Le bloc suivant:
"Funtoo Linux" {
kernel bzImage[-v]
}
est quant à lui ce qu'on peut appeler une entrée de configuration de boot. Elle signifie que le nom du noyau commence par les charactères 'bzImage' et que la suite de la chaîne correspond à son entière version.
On peut bien entendu passer des paramètres au noyau et/ou déclarer un initrd/initramfs:
"Funtoo Linux genkernel" {
kernel kernel-genkernel[-v]
initrd initramfs-genkernel[-v]
params += real_root=auto
}
On remarquera que ce bloc convient parfaitement au format de nommage de Genkernel du noyau et de l'initramfs.
Un point non anodin concerne la syntaxe '+=' que l'on aperçoit dans le précédent bloc: elle ajoute à soi-même le contenu qui suit (très pratique en terme de lisibilité).
Détails de l'entrée initrd{}
Exemple de /etc/boot.conf avec un seul noyau
boot {
generate grub
default "Funtoo Linux genkernel"
timeout 3
}
"Funtoo Linux genkernel" {
kernel kernel-genkernel[-v]
params real_root=/dev/sda3
}
On remarque ici notre entrée 'boot' comme expliqué plus haut. L'entrée de configuration de boot "Funtoo Linux genkernel" est l'exemple le plus simple.
Elle définit un noyau à l'aide de la clé 'kernel'. Cette dernière définit la syntaxe du nom de fichier du noyau: en l'occurence, le nom du fichier du noyau doit commencer par 'kernel-genkernel' et le reste est assimilé à la version du noyau. La clé 'params' sert à passer des paramètre au noyau, dans notre cas on passe la partition / (etc/fstab) qui servira au noyau à booter sur la bonne partition.
Exemple de /etc/boot.conf avec un seul noyau et initrd/initramfs
boot {
generate grub
default "Funtoo Linux genkernel"
timeout 3
}
"Funtoo Linux genkernel" {
kernel kernel-genkernel[-v]
initrd initramfs-genkernel[-v]
params real_root=/dev/sda3
params += init=/linuxrc
}
Exemple de /etc/boot.conf avec plusieurs noyaux et initrd/initramfs
boot {
generate grub
default "Funtoo Linux genkernel"
timeout 3
}
"Funtoo Linux genkernel" {
kernel kernel-genkernel[-v]
initrd initramfs-genkernel[-v]
params real_root=/dev/sda3
params += init=/linuxrc
}
"Funtoo Linux funkernel" {
kernel kernel-funkernel[-v]
initrd initramfs-funkernel[-v]
params real_root=/dev/sda3
params += init=/linuxrc
}
Exemple de /etc/boot.conf avec LUKS LVM et splash
boot {
generate grub
default "Funtoo Linux genkernel"
timeout 3
}
"Funtoo Linux genkernel" {
kernel kernel-genkernel[-v]
initrd initramfs-genkernel[-v]
params += real_root=/dev/mapper/root
params += crypt_root=/dev/sda3
params += dolvm
params += init=/linuxrc
params += splash=verbose,theme:gentoo
params += console=tty1
params += quiet
params += resume=swap:/dev/sda2
params += real_resume=/dev/sda2
}
Exemple de /etc/boot.conf avec Windows en dual boot
Exemple de /etc/boot.conf avec GRUB image et couleur
Générer la configuration de GRUB:
~ # boot-update
boot-update 1.4.5 / Copyright 2010 Funtoo Technologies ("-l" for license info, "-h" for help)
* Generating config for grub...
Funtoo Linux funkernel - kernel-funkernel-x86_64-2.6.33-gentoo-r1
DEFAULT > Funtoo Linux genkernel - kernel-genkernel-x86_64-2.6.33-gentoo-r1
* Completed successfully.
~ #
Guide du développeur Funtoo de sys-boot/boot-update-1.4.5
Contenu de sys-boot/boot-update
~ # qlist coreboot /sbin/boot-update /usr/share/man/man8/boot-update.8.bz2 /usr/share/man/man5/boot.conf.5.bz2 /usr/share/doc/coreboot-1.4.5/boot-update.8.rst.bz2 /usr/share/doc/coreboot-1.4.5/boot.conf.5.rst.bz2 /usr/share/doc/coreboot-1.4.5/boot.conf.example.bz2 /usr/lib/python2.6/site-packages/funtoo/boot/helper.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/grub-legacy.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/grub.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/__init__.py /usr/lib/python2.6/site-packages/funtoo/boot/extensions/lilo.py /usr/lib/python2.6/site-packages/funtoo/boot/__init__.py /usr/lib/python2.6/site-packages/funtoo/boot/config.py /usr/lib/python2.6/site-packages/funtoo/boot/resolver.py /usr/lib/python2.6/site-packages/funtoo/boot/extension.py /usr/lib/python2.6/site-packages/funtoo/__init__.py /usr/lib/python2.6/site-packages/funtoo/old/template.py /usr/lib/python2.6/site-packages/funtoo/core/__init__.py /usr/lib/python2.6/site-packages/funtoo/core/config.py ~ #
Importer du code
import funtoo.core.config
d = funtoo.core.config.ConfigFile('/etc/boot.conf')
bg = d.item("initrd", "load-modules").split()
print bg