Créer sa clé USB Multiboot avec Grub2

Dans un précident article j'ai parlé de comment créer sa clé usb Multiboot avec syslinux, là je vais expliquer comment la créer avec grub2.

Attachez vos ceintures ça va un peu secouer!

GNU GRUB (acronyme signifiant en anglais «GRand Unified Bootloader») est un programme d'amorçage de micro-ordinateur: un bootloader. Il s'exécute à la mise sous tension de l'ordinateur, après les séquences de contrôle interne et avant le système d'exploitation proprement dit, puisque son rôle est justement d'en organiser le chargement.

Lorsque le micro-ordinateur héberge plusieurs systèmes (on parle alors de multi-amorçage: multiboot), il permet à l'utilisateur de choisir quel système démarrer.

Bon tout ça vous vous en foutez éperdument donc je vous épargnierais les détails sordides!

Commençons sans plus tarder!

Nous allons utiliser la même fenêtre terminal pour toutes les étapes; passez en mode Super Utilisateur avec un petit:

sudo su

et c'est parti!

Commencez par repérez votre flash disque, faîtes un:

fdisk -l

Vous aurez un affichage du genre

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 têtes, 63 secteurs/piste, 60801 cylindres, total 976773168 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00088d7f

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *        2048   968667135   484332544   83  Linux
/dev/sda2       968669182   976771071     4050945    5  Étendue
/dev/sda5       968669184   976771071     4050944   82  partition d'échange Linux / Solaris

Disque /dev/sdb : 8103 Mo, 8103395328 octets
47 têtes, 20 secteurs/piste, 16837 cylindres, total 15826944 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00017384

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sdb1   *        2048    15826942     7912447+   b  W95 FAT32

Vous pouvez vous aider aussi de la commande:

blkid

Moi j'ai ça:

/dev/sda1: UUID="6ccd7efb-8550-47d0-a97d-2466d35307a9" TYPE="ext4" 
/dev/sda5: UUID="cb5108b7-ac35-45bb-89dc-9e15de646bc0" TYPE="swap" 
/dev/sdb1: LABEL="discus" UUID="5DFA-A0DA" TYPE="vfat"

Pour moi donc mon flash disque est sur sdb et il contient une seule partition qui est sdb1. C'est sur ce disque et cette partition que je vais travailler pour le reste du tuto.

Vérifiez bien votre disque(il n'est peut-être pas sur sdb et peut-être qu'il contient plusieurs partitions et pas qu'une seule et c'est pas sdb1 que vous voulez utiliser comme partition); vous devrez adapter les commandes qui vont suivre à votre configuration à vous; une erreur à ce niveau peut endommager un autre disque et AUCUN RETOUR EN ARRIERE N'EST POSSIBLE!

Démontez le volume:

umount /dev/sdb1

Formattez la paritition en vfat:

mkfs.vfat -F 32 -n discus /dev/sdb1

Définir la 1ère parition du disque comme bootable(amorce):

parted /dev/sdb set 1 boot on

Si vous en avez envie vous pouvez faire 2 partitions sur votre disque avec fdisk ou gparted; vous pouvez alors mettre la 1ère partition bootable ou la deuxième: parted /dev/sdb set 2 boot on

Créez un nouveau point de montage pour votre disque pour ne pas interférer avec le système d'exploitation: (et n'oubliez pas de le démonter et de le supprimer comme je le dis à la fin)

mkdir /media/discus

Montez le disque sur le point de montage qu'on a créé:

mount /dev/sdb1 /media/discus

Installez le MBR (Master Boot Record: zone amorce) de grub sur la racine de votre disque:

grub-install --force --no-floppy --root-directory=/media/discus /dev/sdb

sdb et non pas sdb1; c'est sur la racine du disque qu'on veut l'installer!

Créez un dossier pour les fichiers iso des distributions que vous voulez mettre sur votre disque:

mkdir /media/discus/iso

Démontez votre disque: (comme j'ai dit que j'allais le dire un peu plus haut! )

umount /dev/sdb1

Supprimez le point de montage qu'on a créé:

rmdir /media/discus

Quittez la fenêtre terminal.. Ca y est on a terminé!

Déjà?!

Eh bein non pas tout-à-fait.. Mais c'est plus simple de terminer la suite en mode graphique!

Maintenant si vous allez voir votre flash disque vous y trouverez quelque chose comparable à ça:

/
  ├── iso/              Dossier de nos fichiers iso
  ├── boot/
      ├── grub/
          ├── fonts/    Polices de caractères
          ├── i386-pc/  Modules de grub
          ├── locale/   Dossier des fichiers de traduction
          ├── grub.cfg  Fichier de configuration de grub
          ├── grubenv   Fichier de sauvegarde de grub2

Bein maintenant il reste plus qu'à copier les fichiers iso des distributions que vous voulez installer sur votre clé et les mettre dans le dossier iso c'est pas trop compliqué n'est-ce pas?

Et à configurer grub en éditant le fichier grub.cfg avec votre éditeur de texte favori et en y collant ceci:

set timeout=10
set default=0

timeout: temps d'attente avant de démarrer le choix par défaut; mettez à 0 pour un boot sans attente et à -1 pour une attente infinie!

default: l'élément du menu qui sera choisi par défaut (numéro de l'entrée de menu en partant de 0).

En fonction des distributions que vous voulez mettre sur votre disque copiez ces entrées du menu: (à adapter bien entendu en fonction du nom du fichier .iso; là je l'ai fait court pour simplifier)

Ubuntu 12.10 Quantal Quetzal:

menuentry "Ubuntu" {
loopback loop /iso/ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu.iso noeject noprompt splash --
initrd (loop)/casper/initrd.lz
}

Kali 1.0.2:

menuentry "Kali" {
 search --set -f /iso/kali.iso
 loopback loop /iso/kali.iso
 linux (loop)/live/vmlinuz findiso=/iso/kali.iso boot=live noconfig=sudo username=root hostname=kali quiet splash
 initrd (loop)/live/initrd.img
}

Mantra-OS Bodhi:

menuentry "Mantra-OS" {
loopback loop /iso/mantra-os.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/mantra-os.iso noeject noprompt splash --
initrd (loop)/casper/initrd.lz
}

Je ne peux pas être exaustif sur la liste des distributions. Si vous avez besoin d'aide sur l'entrée de menu d'une distribution en pariticulier postez-la avec la version exacte et je l'ajouterais à cette liste!

D'autres options et trucs surtout graphiques sur la configuration de grub2 existent biensûr; je n'ai fait qu'effleurer la carapace de la bête!

Peut-être qu'un de ces jours je mettrais un tuto sur comment faire un thème graphique pour grub2..

Des commentaires?! Des demandes?! N'hésitez pas!

Quelques lectures sur le sujet:

[1] Le manuel de grub2: http://www.gnu.org/software/grub/manual/grub.html

[2] "Theming grub: a beginner's guide" http://ubuntuforums.org/showthread.php?t=1534689


Lire aussi: