Syslinux sur une clef usb
Par Vanaken Jonathan le jeudi, janvier 7 2010, 01:12 - Informatique - Lien permanent
Brève note sur l'installation du bootloader (chargeur de démarrage) syslinux sur une clef usb.
La particularité de syslinux réside dans le fait qu'il permet de booter un noyau linux contenu sur un système de fichier FAT32.
Ce tuto est réalisé depuis Fedora 12. Donc il vous suffit de changer quelques petites choses et il devrait être opérationnel sur votre distribution :).
Le tuto est prévu tel que la clef usb se trouve en /dev/sdb avec comme première et seule partition /dev/sdb1 en FAT32. Sinon il faudra l'adapter en conséquence. Ensuite, toutes les procédures sont à effectuer en root.
$ yum install syslinux
une fois installé, copions le mbr syslinux sur le mbr de votre clef usb. Ceci permettra de placer le chargeur de démarrage sur votre clef. Sans quoi votre clef n'est pas bootable.
$ dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb
Marquez la partition sdb1 comme bootable à l'aide de fdisk par exemple:
$ fdisk /dev/sdb
Commande (m pour l'aide): a
Numéro de partition (1-4): 1
Commande (m pour l'aide): p
Disque /dev/sdb: 8019 Mo, 8019509248 octets
255 têtes, 63 secteurs/piste, 974 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x04030201
Périphérique Amorce Début Fin Blocs Id Système
/dev/sdb1 * 1 974 7823623+ b W95 FAT32
Commande (m pour l'aide): w
La table de partitions a été altérée!
Appel de ioctl() pour relire la table de partitions.
Synchronisation des disques.
Notre clef est maintenant bootable. Pour compléter la séquence de boot, la clef doit contenir quelque fichiers. Pour se faire, exécutons:
$ # -d /boot signifie qu'il copiera le nécessaire dans ce nouveau dossier.
$ # Très utile si on ne veut pas que tout se mélange avec les fichiers de la clef :).
$ syslinux -d /boot/ /dev/sdb1
Montons la partition sdb1 et créons le menu du menu.
$ mkdir /mnt/temp
$ mount /dev/sdb1 /mnt/temp
$ vi /mnt/temp/boot/syslinux.cfg
Et entrez vos lignes de boot. Par exemple:
timeout 150
default gentoo
LABEL gentoo
kernel gentoo
append initrd=gentoo2.igz root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/ dokeymap keymap=be
Reste plus qu'a copier votre noyau et son initrd dans le répertoire défini plus haut. Je vous laisse faire, vous devez savoir ce qu'il vous faut ;).
Voilà. Il ne me reste plus qu'à vous conseiller de regarder la doc officielle sur syslinux ou encore sa man page pour affiner vos options. 
Enjoy :).