< Annexe E - Déboguer le noyau avec gdb | TutoOS | Liste des fichiers attachés >
Contrairement à Grub, Grub2 nécessite une partition (on ne peut utiliser le volume disque "brut").
Pour créer une image de disque avec bximage
:
$ bximage > hd > flat > 10 > c.img
Pour spécifier les caractéristiques physiques du disque (C/H/S) et créer une partition :
$ fdisk c.img > x > c 20 > h 16 > s 63 > r > n, p, 1 > a 1 > w
Il faut ensuite associer le disque et la partition avec les loopback afin de
pouvoir les manipuler. L'offset (paramètre -o
) en octets est obtenu en multipliant le
numéro du secteur où débute la partition par 512. L'exemple ci-dessous illustre le cas où
il y a 2 partitions avec une première, de 5 Mo, qui début au secteur 63 :
# losetup /dev/loop0 c.img # losetup -o 32256 --sizelimit 5644800 /dev/loop1 c.img # losetup -o 5677056 /dev/loop2 c.img
On crée un système de fichiers ext2 sur la première partition puis on la monte :
# mke2fs -O ^resize_inode /dev/loop1 # mount -t ext2 /dev/loop1 /mnt/virtual
L'option -O ^resize_inode
permet de simplifier la structure du
système de fichiers en refusant certaines évolutions.
Ensuite, on installe Grub2. Il faut commencer par décrire les volumes disques :
# mkdir -p /mnt/virtual/boot/grub # cat > /mnt/virtual/boot/grub/device.map << EOF (hd0) /dev/loop0 (hd0,1) /dev/loop1 (hd0,2) /dev/loop2 EOF
Le fichier suivant décrit comment charger le noyau. Il est possible d'utiliser le standard multiboot ou le nouveau standard multiboot2 :
# cat > /mnt/virtual/boot/grub/grub.cfg << EOF set default=0 set timeout=5 set root=(hd0,1) menuentry "AdaKernel" { multiboot /boot/kernel boot } EOF # cp kern/kernel /mnt/virtual/boot # sudo grub-install --no-floppy --root-directory=/mnt/virtual \ --modules="part_msdos ext2 biosdisk configfile normal multiboot multiboot2" \ /dev/loop0
Et voilà ! Grub2 est installé. Suite aux mises à jour du noyau, n'oubliez pas d'utiliser la commande sync
.
< Annexe E - Déboguer le noyau avec gdb | TutoOS | Liste des fichiers attachés >