OldGentooWiki:Boot-update

De Gentoo-Quebec.

(Redirigé depuis Boot-update)

Sommaire

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
Outils personnels