Le but est ici de démarrer notre GNU/Linux préfére sur des médias "exotiques", en l'occurence CD-ROM, Carte Compact Flash et clef USB. Les cas d'utilisation sont multiples allant de la transformation d'un live CD en disque USB bootable au démarrage d'une machine sur le réseau via NFS.
La source que vous utilisez dépendent des usages. Il peut s'agir d'un petit kernel monolithique qui ne connait que NFS pour démarrer sur un partage réseau, un live CD que l'on veut transformer en clef USB, ou encore un clef ou un CD d'installation par internet.
Pour faire simple nous allons utiliser ce tutoriel pour créer un dossier contenant un linux complet. Ce dossier va service de source à notre média, car une fois qu'il saura booter, il faut bien lancer quelque chose. Dans ce qui suit, ce dossier sera ~/faux_linux.
Pour créer un CD-ROM bootable, nous allons utiliser ISOLinux disponible en installant le paquet syslinux. Cette boite à outil va nous permettre de créer l'image iso à graver.
Commençons par fabriquer notre dossier "à graver" :
Ensuite il faut créer le fichier de configuration du bootloader bootstrap/isolinux/isolinux.cfg
Ensuite ne reste plus qu'à générer l'ISO et graver le tout :
Lorsque cdrecord a terminé, le CD est prêt à booter. Pensez à utilisez un CD réinscriptible car ça va sûrement pas marcher du premier coup
Cette approche peut se révéler pratique si vous utilisez la machine comme lecteur multimédia. Cela évite de faire le grille-pain avec un CD de démarrage. Il nous faut du coup un adaptateur CompactFlash/IDE et une carte de très petite capacité, ou une simple clef USB.
La première étape consiste à utiliser fdisk ou parted pour supprimer les partitions existantes et en créer une nouvelle, positionné en FAT16 et avec le fanion de démarrage.
Ceci fait il faut formater en FAT16 avec mkdosfs. A noter que j'ai eu pas mal d'essais infructueux en FAT32.
Notre disque ayant été correctement préparée, partitionnée, reste à lui coller un MBR. Le bon outil que j'ai trouvé pour cette tâche est ms-sys. Pour l'utiliser, procédez comme suit :
Voilà, le disque est correctement préparé, nous devons encore installer SYSLinux :
Dernière étape, il nous faut recopier les fichiers de ~/faux_linux et créer à la racine un fichier syslinux.cfg, le même que pour le CD-ROM.
Voilà, c'est terminé, il ne reste plus qu'à redémarrer pour vérifier que tout se passe sans problèmes.
- répondre
Jérôme, le 28 July, 2008 - 15:32Salut,
Article très intéressant, comme à l'accoutumée, d'autant plus que c'est un sujet que j'ai récemment abordé dans mon entreprise.
Apparemment, une solution alternative (si c'est la non-gestion du PXE qui est bloquante) est d'utiliser un binaire gérant ce dernier (http://etherboot.org/wiki/index.php).
Après bien sûr, il faut que le serveur soit compatible derrière, et il faut bien stocker ce binaire quelque part, sur un CD, ou tout autre support bootable (géré par le BIOS).
Bien sûr, dans un environnement sans PXE, sans disque, ta solution est la seule existante...
- répondre
Ulhume, le 28 July, 2008 - 15:41PXE est pas mal, il m'a même bien aidé pour installer Mandriva sur certaines machines (genre l'U810) mais le soucis est qu'il faut aussi une infrastructure PXE en face et surtout un BIOS qui gère le PXE si l'on n'a pas de carte magique
Sur la carte mini-itx que j'utilise ici, le boot PXE n'est pas dispo, donc je ne peux pas l'utiliser de manière directe. Ma seule solution qui me reste est de mettre un boot PXE sur une flash ou sur un CD 
- répondre
rodhia, le 25 October, 2008 - 11:24Bonjour,
Je bloquais sur la "bootabilisation" de la clé USB, peut être parce que j'étais en FAT32? Enfin bon j'essaie ta méthode, merci !
- répondre
Ulhume, le 25 October, 2008 - 12:43@rodhia je n'ai jamais réussi à faire fonctionner cette manipulation en fat32, avec USB ou flash. Avec une petite flash j'utilise FAT12 et sinon fat16.
- répondre
Dab, le 25 October, 2008 - 14:02Ton pb de FAT32 ne serait pas lié à l'initrd ? Celui ci contient bien le module vfat ?
gunzip < ton_initrd.gz | cpio -i --make-directories
- répondre
Ulhume, le 25 October, 2008 - 14:49@Dab non car je n'utilise pas initrd dans ce genre de cas de figure (kernel monolithique). En plus lorsque je dis que ça démarre pas, c'est au niveau du BIOS que ça coince. Linux n'est même pas encore arrivé.
- répondre
tuxce , le 27 October, 2008 - 12:32pour la clé usb/carte flash, grub peut aussi faire l'affaire ou si c'est une clé dédiée à cette usage et ne comportant qu'une seule partition, créer un systeme de fichier directement sur /dev/sdX permet de n'utiliser que syslinux pour la rendre bootable.
par contre pour les périphériques flash, le démarrage dépend du pc, sur le msi wind par exemple, le lecteur flash est connécté sur l'usb ce qui permet un démarrage dessus, alors que sur un dell xps, le lecteur est branché différemment (http://www.ideastorm.com/article/show/76005/Boot_from_SD_card_BIOS_option), le bios ne permet pas de démarrer dessus.
- répondre
Ulhume, le 27 October, 2008 - 14:49@tuxce l'idée est pas idiote en effet, c'est un peu moins "portable" que la solution classique mais pourquoi pas. Ceci dit, tu dois toujours résoudre le problème basique d'un boot sur USB/Flash.
Poster un nouveau commentaire