====== Clé USB Multibootable Debian ======
* Objet : du tuto Créer une clé bootable avec grub afin de pouvoir démarrer différentes iso Debian !
* Niveau requis : {{tag>intermédiaire}}
* Suivi : {{tag>à_corriger à_placer}}
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]]
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=177449]]
===== 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 [[http://liveusb.info|multisystem]] ou encore [[http://www.easy2boot.com/|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 : [[doc:systeme:administration#partitionnement|Partitionnement]], [[doc:systeme:mkfs|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
/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...
* Pour les iso i386 c'est celle-ci : [[https://mirrors.kernel.org/debian/dists/stable/main/installer-i386/current/images/hd-media/initrd.gz|initrd-i386.gz]]
* Et pour les amd64 c'est celle-là : [[https://mirrors.kernel.org/debian/dists/stable/main/installer-amd64/current/images/hd-media/initrd.gz|initrd-amd64.gz]]
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 :
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 :
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 :
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 ======
* Dans le wiki debian-facile : https://debian-facile.org/utilisateurs:paskal:tutos:usb-multiboot-iso
* Un joli grub.cfg duquel je me suis inspiré : https://www.debian-fr.org/t/boot-image-iso-avec-grub-impossible/60644/10
* Wiki d'Archlinux sur le multibootage USB . https://wiki.archlinux.org/index.php/Multiboot_USB_drive#Debian