Créer sa clé USB Multiboot avec Syslinux

Pour ceux qui connaissent syslinux ils savent peut-être que c'est un bootloader tout comme grub sauf qu'il est plus facile et plus documenté que lui bien que grub2 soit à priori plus complet..

Mais bon nous ne sommes que des simples utilisateurs donc tout ça on s'en fout! On va tout juste utiliser syslinux et quelques utilitaires disque de base pour créer notre flash disque multiboot!

Pour commencer un petit:

sudo su

Et que la magie commence!

Tout d'abord repérez votre disque:

fdisk -l

Vous pouvez vous aider aussi de:

blkid

Pour moi mon disque est sur sdb et il comporte une seule partition qui est sdb1; toutes les manipulations seront basées sur cette configuration. Vérifiez bien votre configuration car une erreur à ce niveau-là c'est très chère payée: VOUS POURRIEZ ENDOMMAGER UN AUTRE DISQUE ET AUCUN RETOUR EN ARRIERE N'EST POSSIBLE!

Ceci étant dit passons.. Commençons par installer syslinux et son MBR sur le disque.

Démontez le disque:

umount /dev/sdb1

Formattez-le en vfat:

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

J'ai appelé mon disque discus vous pouvez changer ça.

Installez syslinux avec son mbr:

syslinux -maf /dev/sdb1

-m: installe le mbr sur la racine du disque

-a: "active" c'est-à-dire bootable

-f: forcer l'installation

Maintenant on va faire l'extraction/prépartion des fichiers iso des distributions qu'on va installer et des fichiers nécessaires à syslinux.

Moi j'ai un flash disque de 8Gb sur lequel je vais mettre Kali 1.0.2, son père BackTrack 5R3 et sa cousine d'une autre mère BackBox 3.01 (toutes des distributions basées sur Ubuntu/Debian conçues pour les "tests de pénétration" ).

Oui j'ai plein d'espace sur mon disque sur lequel je peux mettre plein de cochonneries!

Créons un dossier qui va servir de nouveau point de montage pour le flash disque:

mkdir /media/discus

Montons la partition sdb1 sur le point de montage:

mount /dev/sdb1 /media/discus

Créons le dossier de configuration de syslinux:

mkdir /media/discus/syslinux

Copions dedans les fichiers nécessaires à syslinux:

cp /usr/lib/syslinux/{vesamenu.c32,reboot.c32,poweroff.com} /media/discus/syslinux

Normalement ces fichiers sur ubuntu figurent dans /usr/lib/syslinux; si vous ne les trouvez pas faîtes un petit:

locate syslinux

ça vous aidera à y voir plus claire!

Créons les dossiers qui vont contenir le contenu des fichiers iso respectif de nos distributions:

mkdir /media/discus/syslinux/iso
mkdir /media/discus/syslinux/iso/kali
mkdir /media/discus/syslinux/iso/backtrack
mkdir /media/discus/syslinux/iso/backbox

Maintenant on va créer un dossier de montage pour les fichiers iso (/media/iso), on va les monter une à une, copier leurs contenus en démontant l'une pour monter l'autre à la fin de la copie puis supprimer finalement le point de montage puisqu'on n'en a plus besoin!

Mes fichiers iso se trouvent dans mon dossier Téléchargements alors adaptez ça à là où vous avez mis vos iso téléchargées.

mkdir /media/iso
mount -t iso9660 -o loop,ro /home/nizar/Téléchargements/kali.iso /media/iso
cp -r --preserve=all /media/iso/* /media/discus/syslinux/iso/kali
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Téléchargements/backtrack.iso /media/iso
cp -r --preserve=all /media/iso/* /media/discus/syslinux/iso/backtrack
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Téléchargements/backbox.iso /media/iso
cp -r --preserve=all /media/iso/* /media/discus/syslinux/iso/backbox
umount /media/iso/
rmdir /media/iso/
Notez bien: Vous aurez sans doute des erreurs de symlinks (liens symboliques).. mais n'y faîtes pas attention c'est sans réelle conséquence! De tout façon même avec le switch --preserve=all de cp quelques symlinks ne seront pas préservés..

Ça prend du temps pour copier tout ça; une bonne quinzaine de minutes disons; alors un peu de patience.. Sirotez des carottes entre temps y a de la vitamine E dedans: c'est bon pour la vue!

Procédons maintenant à la configuration du menu de boot syslinux. Créez le fichier syslinux.cfg dans /media/discus/syslinux/

gedit /media/discus/syslinux/syslinux.cfg

et copiez ce contenu dedans:

DEFAULT Kali
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32
MENU TITLE discus: The Ultimate Disk
MENU BACKGROUND anon1.png
MENU COLOR border 30;44 #40ffffff #a0000000 std
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
MENU COLOR help 37;40 #c0ffffff #a0000000 std
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
MENU WIDTH 80
MENU MARGIN 10
MENU ROWS 6
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29
 
LABEL Kali
MENU LABEL Kali
kernel /syslinux/iso/kali/live/vmlinuz
append initrd=/syslinux/iso/kali/live/initrd.img live-media-path=/syslinux/iso/kali/live boot=live noconfig=sudo username=root hostname=kali quiet splash vga=791--
 
LABEL BackTrack
MENU LABEL BackTrack
kernel /syslinux/iso/backtrack/casper/vmlinuz
append initrd=/syslinux/iso/backtrack/casper/initrd.gz live-media-path=/syslinux/iso/backtrack/casper ignore_uuid boot=casper quiet splash vga=791--
 
LABEL BackBox
MENU LABEL BackBox
kernel /syslinux/iso/backbox/casper/vmlinuz
append initrd=/syslinux/iso/backbox/casper/initrd.gz live-media-path=/syslinux/iso/backbox/casper ignore_uuid boot=casper locale=fr_FR bootkbd=fr console-setup/layoutcode=fr quiet splash vga=791--
 
LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32
 
LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

anon1.png est une image qui va servir de fond pour le menu du boot; vous pouvez la télécharger directement dans le dossier syslinux avec cette commande:

curl -L -o /media/discus/syslinux/anon1.png http://goo.gl/oVMWk

C'est une image exactement 640x480 8bit png. Vous pouvez faire votre propre image mais à condition qu'elle soit 640x480 8bit png ou jpg.

Pour mettre votre image à 8bit vous pouvez vous aider de cette commande d'ImageMagick:

convert image_entree.png -colors 256 image_sortie.png

N'oubliez pas à la fin de tout ça de démonter la clé:

umount /dev/sdb1

et de supprimer le dossier de montage qu'on a utilisé!

rmdir /media/discus

Et voilà tout!

Vous pouvez tester votre clé avec VirtualBox ou VMWare ou encore plus simplement qemu avec la commande:

qemu-system-i386 /dev/sdb

ou

qemu-system-x86_64 /dev/sdb

en fonction de votre architecture!

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

P.S: Il m'est bien-entendu impossible de tout vous expliquer dans un seul petit tutorial!
Vous avez encore biensûr vos points d'ombre donc je vous propose ces lectures:
[1] Le wiki de Syslinux: http://www.syslinux.org/wiki/index.php/SYSLINUX
[2] Personnalisation du menu: http://www.syslinux.org/wiki/index.php/Comboot/menu.c32
[3] Entrées de menu d'autres distributions que celles que j'ai utilisées (code source de YUMI): https://github.com/bwnickle/YUMI/tree/master/src/menu


Lire aussi: