====== Réaliser une clé USB bootable sur plusieurs images ISO ======
* Objet : //' zavez pas lu l'titre ?// LOL
* Niveau requis : {{tag>avisé}}
Dans ce qui suit, la clé usb est désignée par ///dev/sdx// ; pour trouver le device correspondant à votre clé, utiliser la commande :
fdisk -l
.
===== Introduction =====
En terme de mobilité, j'aime bien avoir sur moi une ou deux clés bootables pour jouer au geek devant un parterre de noobs ébahis. :-P \\
L'inconvénient est que ce n'est pas forcément pratique d'avoir une distro par clé, surtout pour partager les données persistantes. \\
D'où l'idée d'avoir une seule clé contenant plusieurs images ISO.
===== Vue d'ensemble =====
Si la mise en œuvre peut parfois se révéler délicate, le principe est relativement simple :
* installer un chargeur d'amorçage sur la clé : [[doc:systeme:grub2|GRUB]] dans le cadre de ce tuto ;
* placer sur la clé les images voulues ;
* donner à GRUB les indications pour amorcer les dites images.
===== Procédure =====
Pour éviter certains problèmes, le mieux est d’utiliser une clé vierge, ou reformatée. \\
Si ce n'est pas le cas, il est possible de la réinitialiser rapidement : voir [[utilisateurs:paskal:tutos:effacement-usb|Effacement rapide d'un stick usb]] \\
==== Création de la partition amorçable ====
Créons tout d'abord une partition primaire amorçable, à l'aide, par exemple, de la commande [[doc:systeme:fdisk|fdisk]] :
fdisk /dev/sdx
Entrer les commandes suivantes : \\
d Entrée (autant de fois que nécessaire pour détruire les partitions éventuellement présentes) \\
n Entrée (pour créer une nouvelle partition) \\
p Entrée (pour qu'elle soit de type primaire) \\
Entrée (numéro de partition mais, par défaut, c'est 1) \\
Entrée (premier secteur, par défaut 2048 \\
2000000 Entrée (dernier secteur, par défaut le maximum disponible ; prendre suffisamment pour contenir les ISO et laisser de la place pour une partion contenant les données persistantes) \\
a Entrée (pour définir la partition amorçable) \\
1 Entrée (pour indiquer que ce sera la première partition et que son flag de boot sera levé) \\
t Entrée (pour définir le type de partition) \\
1 Entrée (dans le cas où il y aurait plusieurs partitions définies) \\
c Entrée (pour définir une partition FAT32) \\
w Entrée (pour valider et écrire la table de partitions sur la clé)
Il reste maintenant à démonter la(les) partition(s) :
umount /dev/sdx1
formater la(les) partition(s) :
mkfs.vfat -F 32 -n multilive /dev/sdx1
remonter la première partition :
mkdir /mnt/usb && mount /dev/sdx1 /mnt/usb
et enfin installer GRUB :
grub-install --force --no-floppy --boot-directory=/mnt/usb/boot /dev/sdx
==== Téléchargement des images ====
J'ai choisi de placer les images ISO dans le dossier /iso de la première partition.
cd /mnt/usb/iso
wget -c http://cdimage.debian.org/cdimage/release/current-live/i386/iso-hybrid/debian-live-8.3.0-i386-lxde-desktop.iso
Cette commande est à réitérer pour les différentes images souhaitées.
Si vous souhaitez ce que votre image a dans le ventre, installez //udevil// pour la monter facilement dans le gestionnaire de fichiers.
==== Configuration de GRUB ====
On peut trouver sur la toile plusieurs exemples de fichier grub.cg. \\
Voici le mien (il est destiné à lancer les ISO de Tails, Kali Linux et SystemRescueCD, ainsi que le MemTest compris dans SystemRescueCD) :
# fichier de configuration grub.cfg
set timeout=10
set default=0
menuentry "Tails i386 2.0.1" {
set isofile='/iso/tails.iso'
loopback loop $isofile
linux (loop)/live/vmlinuz2 boot=live config findiso=${isofile} live-media=removable apparmor=1 security=apparmor nopersistent noprompt timezone=Etc/UTC block.events_dfl_poll_msecs=1000 noautologin module=Tails
initrd (loop)/live/initrd2.img
}
# Warning: Emergency memory erasure does not seem to work when booting this way.
# Remove the live-media=removable option if the iso file is not on removable media.
menuentry "Kali Linux 386 2016.1" {
set isofile='/iso/kali.iso'
loopback loop $isofile
linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=sudo username=root hostname=kali
initrd (loop)/live/initrd.img
}
set isofilename="systemrescuecd.iso"
# Because System Rescue CD's boot loader adds a / when searching as it really likes it in the root of the drive
# set isorelativepath="boot/iso/$isofilename"
set isorelativepath="iso/$isofilename"
set isofullpathname="/$isorelativepath"
menuentry "System Rescue Cd x86 4.7.1" {
loopback loop $isofullpathname
linux (loop)/isolinux/rescue32 isoloop=$isorelativepath
initrd (loop)/isolinux/initram.igz
}
menuentry "System Rescue CD MemTest86+" {
loopback loop $isofullpathname
linux16 (loop)/bootdisk/memtestp
}
===== Conclusion =====
Pas de doute : il faut rebooter ... ;-)
===== Références =====
* [[http://www.pendrivelinux.com/boot-multiple-iso-from-usb-via-grub2-using-linux/ | Boot Multiple ISO from USB via Grub2 using Linux]] (en)
* [[https://help.ubuntu.com/community/Grub2/ISOBoot | Grub2/ISOBoot]] (en)
* [[https://help.ubuntu.com/community/Grub2/ISOBoot/Examples | Grub2/ISOBoot/Examples]] (en)
* [[https://wiki.archlinux.org/index.php/Multiboot_USB_drive | Multiboot USB drive]] (en)
* [[https://www.system-rescue-cd.org/forums/viewtopic.php?f=14&t=2808&sid=cea56117aad883654a27423c24344fd2&start=45 | SystemRescueCD boot iso from within grub2]] (en)
* [[http://pr-nizar.blogspot.fr/2013/04/multiboot-usb-grub2.html | Créer sa clé USB Multiboot avec Grub2]] (fr)
* [[https://doc.ubuntu-fr.org/tutoriel/grub2_lancer_des_images_iso | Lancer des images iso directement depuis GRUB 2]] (fr)
* [[http://www.icaunux.org/doku.php?id=multiboot_facile_avec_grub#grub_peut_lancer_des_images_iso | Grub peut lancer des images ISO]] (fr)