Table des matières

Clé USB Multibootable Debian

Introduction

Mettre une iso sur une clé USB pour pouvoir jouir du live et faire de l'install c'est bien, mais en mettre plusieurs c'est mieux !
Certains outils automatisés existent déjà (tels que multisystem ou encore easy2boot).
Mais bon, on est des grands garçons, on va faire ça à la main plutôt.

Aller, en piste !

Formatage de la clé et installation de grub

Première étape : formater la clé en fat32. Je vous laisse le choix de la méthode…

Pas besoin de refaire ce qui a été fait maintes fois ! Vous trouverez suffisamment de doc ici : Partitionnement, mkfs
Cette manoeuvre effacera les données contenues dans votre clé USB ! Si vous n'avez pas l'habitude de faire ça, utilisez un outil graphique comme gparted plutôt que la ligne de commande, ou vous risquez de formater un partition de votre disque dur par erreur !

Ensuite, on va installer grub sur cette clé. Il faut d'abord la monter. Bon, vous pouvez le faire en graphique (on clique dessus depuis le gestionnaire de fichiers).
Maintenant, il faut repérer le point de montage :

blkid -o list | grep vfat
retour de la commande
/dev/sdb1    vfat             /media/user_name/CFDE-4500 CFDE-4500

Donc ici c'est /media/user_name/CFDE-4500

Vous pouvez également l'obtenir en fouinant quelque peu dans votre gestionnaire de fichier…

On se place dedans :

cd /media/user_name/CFDE-4500
Ou bien, si votre gestionnaire de fichier possède l'option Ouvrir un terminal ici, on l'utilise !

On installe grub :

grub-install --boot-directory=boot --recheck --force /dev/sdb

Placez vos iso à la racine de la clé USB ou bien, si vous avez de la place sur la clé, dans plusieurs répertoires distincts afin d'être mieux organisé.

L'initrd pour hd-media

Bien, maintenant, il va falloir télécharger une petite archive pour que le mode install se déroule sans encombre : l'initrd.gz

L'initrd est une image du RAM-disque initiale : un disque virtuel RAM configuré pour le démarrage de Linux, contenant possiblement des modules nécessaires pour monter l'image du système et certains scripts pour le faire.

Or l'initrd.gz se trouvant dans les iso standart de Debian ne convient pas pour un clé USB, elle est faite pour les supports optiques (CD/DVD). L'iso ne sera pas détecté durant l'installation, excepté si elle a été placé dans la clé à l'aide de la commande dd ou cp.
Sauf que nous, on veut mettre plusieurs iso sur une même clé USB…

Une autre solution serait d'utiliser des iso hybrides ou des images hdd…

Renommez-les en “initrd-i386.gz” et “initrd-amd64.gz” comme je l'ai fais pour éviter de les confondre ou qu'elles ne s'écrasent l'une l'autre !
De même, placez-les à la racine de la clé, ou dans un dossier…

Configuration

Maintenant viens la partie technique : configurer le grub.cfg !
Utilisez votre éditeur de texte préféré :

editor boot/grub/grub.cfg

Voilà un exemple avec le DVD i386 et le DVD amd64 :

grub.cfg
set timeout =-1
 
menuentry "DVD d'installation Debian Jessie i386 (mode expert)" {
  set isofile='/debian-8.4.0-i386-DVD-1.iso'
  loopback loop $isofile
  linux (loop)/install.386/vmlinuz priority=low
  initrd '/initrd-i386.gz'
}
 
menuentry "DVD d'installation Debian Jessie amd64 (mode expert)" {
  set isofile='/debian-8.4.0-amd64-DVD-1.iso'
  loopback loop $isofile
  linux (loop)/install.amd/vmlinuz priority=low
  initrd '/initrd-amd64.gz'
}
Attention : si vous avez placé vos iso et vos initrd.gz dans un dossier adapter le fichier de configuration en conséquence !
Si les iso sont par exemple dans un dossier ISO, alors ce sera :
  set isofile='/ISO/debian-8.4.0.i386-DVD-1-ISO'

De même, si vos initrd sont dans un dossier initrd, il faudra mettre :

  initrd '/initrd/initrd-i386.gz'
L'utilisation du mode expert (option : priority=low) n'est pas anodin :

Cela permettra d'accéder à une option lors de la détection de l'iso qui consiste à indiquer à l'installateur sur quelle partition chercher l'iso.
Sinon, il va se mettre à monter tout ce qu'il trouve comme partition en quête d'une iso à la racine de chacune d'entre elle.
Cela permet de gagner du temps.

D'ailleurs, une fois cette étape passée, vous pouvez aller dans le menu changer la priorité des questions de configuration pour repasser à élevée qui est la valeur par défaut.
J'ai constaté que priority=medium suffisait. Donc, à part si vous êtes fans du mode expert…

Et voici un exemple avec les deux iso live xfce :

grub.cfg
menuentry "Debian Live xfce i586" {
  set isofile='/debian-live-8.4.0-i386-xfce-desktop.iso'
  loopback loop $isofile
  linux  (loop)/live/vmlinuz1 boot=live config fromiso=/dev/sdb1/$isofile
  initrd (loop)/live/initrd1.img
}
 
menuentry "Debian Live xfce i686-PAE" {
  set isofile='/debian-live-8.4.0-i386-xfce-desktop.iso'
  loopback loop $isofile
  linux  (loop)/live/vmlinuz2 boot=live config fromiso=/dev/sdb1/$isofile
  initrd (loop)/live/initrd2.img
}
 
menuentry "Debian Live xfce amd64" {
  set isofile='/debian-live-8.4.0-i386-xfce-desktop.iso'
  loopback loop $isofile
  linux  (loop)/live/vmlinuz boot=live config fromiso=/dev/sdb1/$isofile
  initrd (loop)/live/initrd.img
}
Ici aussi, l'option : fromiso=/dev/sdb1/$isofile, tout comme le mode expert ci-dessus, permet d'indiquer quelle iso booter en live sans avoir à chercher sur toutes les partitions. Chez moi, ça ne bootait même pas sans cette option !

Autres options

Différentes options d'amorçage sont disponibles. Certaines sont spécifiques au mode installation, d'autre au live.
Je vais vous en citer quelques unes…

Pour apprendre à les connaître de manière didactique, je vous conseille d'installer isomaster :
apt-get install masteriso

Ce logiciel vous permet d'explorer et de modifier une image iso.
Pratique non ?

Allez voir dans les images iso officielles de Debian, dans le répertoire isolinux surtout. Mais vous pouvez aussi jeter un coup d'oeil à install et live, cela vous permettra de mieux comprendre l'organisation des fichiers qui permettent de faire booter l'iso…

Installation en mode graphique

Dupliquez un entrée, changer le titre et remplacez la ligne

  linux (loop)/install.386/vmlinuz priority=low

par :

  linux (loop)/install.386/gtk/vmlinuz priority=low
Pour les iso amd64, c'est install.amd au lieu de install.386.

Si vous utilisez live-build pour vous faire des iso custom - outre le fait que vous assurez grave ! - il se peut qu'il n'y ait pas d'extension du tout.
Je vous invite à étudier attentivement le répertoire binary.

Mode rescue

Rajoutez à la fin de la ligne :

rescue/enable=true
On peut le combiner avec le mode graphique.

Synthèse vocale

speakup.synth=soft

Activer les partitions swap :

swap=true

Charger la totalité du système dans la RAM :

toram
Avec cette option, vous pouvez retirer la clé après le boot : le système continuera de tourner !

Francisation [live]

lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes
Si l'horloge de votre BIOS est à l'heure locale plutôt qu'à l'heure UTC, passez-vous des deux dernières options (timezone et utc).

Nom d'utilisateur et d'hôte [live]

username=toto hostname=ordi

Esthétique [live]

Pour avoir juste un joli splash pendant le démarrage et rien d'autre :

quiet splash noprompt

Centralisation des options

Sauf que ça commence à faire des longues lignes à chaque fois tout ça…
Du coup, on va plutôt définir les options une bonne fois pour toute au début du fichier, puis les réutiliser par la suite dans chaque entrée comme suit :

grub.cfg
timeout=-1
 
set param='config lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes username=toto hostname=ordi quiet splash noprompt'
 
menuentry "Debian Live xfce amd64" {
  set isofile='/debian-live-8.4.0-i386-xfce-desktop.iso'
  loopback loop $isofile
  linux  (loop)/live/vmlinuz boot=live fromiso=/dev/sdb1/$isofile $param
  initrd (loop)/live/initrd.img
}

Et le tour est joué !

Liens