Artisan Numérique

/système/stockage/kernel/ Démarrer GNU/Linux sur un média amovible

Le but est ici de démarrer notre GNU/Linux préfére sur des médias "exotiques", en une carte Compact Flash ou une 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

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.

Compact-Flash ou clef USB

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.

rootmkdosfs -F 16 /dev/sdb1

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 :

roottar -zxvf ms-sys-2.1.0.tgz
rootcd ms-sys-2.1.0
rootmake
rootcd bin
root./ms-sys -d /dev/sdb
DOS/Windows NT master boot record successfully written to /dev/sda

root./ms-sys /dev/sdb
/dev/sdd has an x86 boot sector,
it is a Microsoft DOS/NT/95A master boot record, like the one this
program creates with the switch -d on a hard disk device.

rootsync

Voilà, le disque est correctement préparé, nous devons encore installer SYSLinux :

syslinux /dev/sdb1

Dernière étape, il nous faut recopier les fichiers de ~/faux_linux et créer à la racine un fichier syslinux.cfg :

bootstrap/isolinux/isolinux.cfg" nolines="true">
  default linux
  prompt 0

  label linux
  KERNEL boot/vmlinuz-2.6.27
  append initrd=boot/initrd-2.6.27 vga=788

en spécifiant les options root=/dev/nfs rw ip=dhcp nfsroot=IP_SERVEUR:/machine_lointaine et en utilisant un kernel monolithique, il est possible de démarrer sur un partage NFS qui serait par exemple le dossier ~/faux_linux.

Voilà, c'est terminé, il ne reste plus qu'à redémarrer pour vérifier que tout se passe sans problèmes.