<p class="spip">Depuis 2001, la plupart des PC sont capables de démarrer directement sur un périphérique USB. Malheureusement on trouve peu de documentation claire sur le sujet, pourtant cette méthode présente de nombreux avantages. Je vais donc décrire comment démarrer et personnaliser l’installateur Debian à partir d’une clé USB.</p>

<p class="spip"><strong class="spip">I. Deux méthodes de boot différentes</strong></p>

<p class="spip">D’abord il faut s’assurer que le BIOS contient les périphériques USB dans sa séquence de boot. On trouve deux méthodes ’USB-ZIP’ et ’USB-HDD’. La première est plus ancienne et lit la clé USB comme une disquette, il ne doit pas y avoir de partitions, et le premier secteur doit contenir un programme de boot de 512 octets. La seconde utilise la clé comme un disque dur, avec le même format de MBR et de partitions. De nos jours, tous les disques USB sont formatés dans le second format plus standard, par conséquent, si votre BIOS dispose de l’option USB-HDD, préférez celle-ci.</p>

<p class="spip"><strong class="spip">II. L’installeur Debian pour le boot USB</strong></p>

<p class="spip">Le dépôt de l’installeur Debian comporte un dossier <i class="spip">hd-media</i> pour ce genre de boot :</p>

<p class="spip"><i class="spip">vmlinuz</i> - un noyau Linux Debian standard</p>

<p class="spip"><i class="spip">initrd.gz</i> - un ramdisk avec l’installeur de base (sans le support reseau) et un module permettant de charger n’importe quelle image ISO de CD ou DVD d’installation Debian.</p>

<p class="spip"><i class="spip">gtk/initrd.gz</i> - le même ramdisk, mais avec l’installeur graphique GTK et non plus nCurses.</p>

<p class="spip"><i class="spip">boot.img.gz</i> - une image de clé USB préfabriquée avec les éléments décrits ci-dessus, amorcés par syslinux</p>

<p class="spip"><a href="ftp://ftp.debian.org/debian/dists/sid/main/installer-i386/current/images/hd-media/" class="spip_out">ftp://ftp.debian.org/debian/dists/sid/main/installer-i386/current/images/hd-media/</a></p>

<p class="spip"><strong class="spip">III. Une première approche quick’n’dirty (la seule qui fonctionne en USB-ZIP)</strong></p>

<p class="spip">Il faut disposer d’une clé d’une capacité d’au moins 128Mo. On va se servir de l’image préfabriquée boot.img.gz
Si votre clé se trouve en /dev/sda, il suffit de télécharger l’image boot.img.gz et de l’écrire sur la clé :</p>

<p class="spip"><code class='spip_code' dir='ltr'># zcat boot.img.gz > /dev/sda
</code></p>

<p class="spip">(bien entendu toutes les données de la clé seront ecrasées)
Il est alors possible de booter sur la clé avec la méthode USB-ZIP, mais il manque encore l’image du CD d’installation. Pour l’ajouter :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code># mount /dev/sda /mnt<br />
# cp debian-testing-i386-businesscard.iso  /mnt/<br />
# umount /mnt<br />
</code></div>
<p class="spip">Vous pouvez mettre l’image CD que vous voulez, tant qu’elle tient sur la clé. Une fois l’installation commencée, l’image sera chargée toute seule.</p>

<p class="spip"><strong class="spip">IV.Personnalisation de l’installeur USB</strong></p>

<p class="spip">On va maintenant fabriquer nous-mêmes la clé, en la personnalisant et en utilisant la méthode USB-HDD.</p>

<p class="spip">Pour commencer il faut créer une partition FAT16 qui va contenir les fichiers de l’installeur et l’image CD (prévoyez 30Mo pour le premier, le second pourra varier entre 30Mo (Buisinesscard) et 4Go (DVD)) :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code># fdisk /dev/sda<br />
<br />
   Device Boot      Start         End      Blocks   Id  System<br />
/dev/sda1               1         198       49073    6  FAT16<br />
<br />
# mkdosfs /dev/sda1<br />
# mount /dev/sda1 /mnt<br />
# cp initrd.gz /mnt/<br />
# cp vmlinuz /mnt/<br />
# cp gtk/initrd.gz /mnt/initrdg.gz<br />
# cp debian-testing-i386-businesscard.iso  /mnt/<br />
</code></div>
<p class="spip">Maintenant, il nous faut un chargeur de démarrage. Après plusieurs essais je trouve que GRUB se comporte bizzarement avec les clés USB (ne trouve pas le stage1 pour 2 PC sur 3 lors de mes tests), Lilo a marché dans tous les cas, c’est donc lui qu’on va utiliser (installez le paquet lilo). Voici le fichier lilo.conf que j’ai utilisé :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>disk=/dev/sda<br />
bios=0x80<br />
boot=/dev/sda<br />
map=/tmp/map<br />
install=/tmp/boot-compat.b<br />
keytable=/tmp/fr.kmp<br />
lba32<br />
ignore-table<br />
force-backup=/dev/null<br />
<br />
prompt<br />
<br />
image=/mnt/vmlinuz<br />
        label=Install<br />
        initrd=/mnt/initrd.gz<br />
        append=" vga=normal ramdisk_size=12000 root=/dev/ram rw"<br />
<br />
image=/mnt/vmlinuz<br />
        label=GInstall<br />
        initrd=/mnt/initrdg.gz<br />
        append=" video=vesa:ywrap,mtrr vga=788 ramdisk_size=12000 root=/dev/ram rw"<br />
</code></div>
<p class="spip">Pour générer fr.kmp (et donc avoir Lilo avec un clavier français) :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ keytab-lilo fr > /tmp/fr.kmp
</code></p>

<p class="spip">Finalemment :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code># lilo -C lilo.conf -M /dev/sda<br />
# lilo -C lilo.conf<br />
</code></div>
<p class="spip">La clé devrait démarrer avec le choix entre une installation graphique et texte.</p>

<p class="spip"><strong class="spip">V. Méthode hybride</strong></p>

<p class="spip">On peut aussi combiner les deux méthodes et utiliser l’image préfabriquée en USB-HDD, ceci a l’avantage de garder le joli menu Syslinux avec ses menus d’aide, ce qui n’était pas le cas de l’installation artisanale précédente.</p>

<p class="spip">Comme pour la clé précédente, il faut créer une partition FAT16 (cette fois-ci avec le drapeau boot activé).</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>     Device Boot      Start         End      Blocks   Id  System<br />
/dev/sda1   *           1         198       49073    6  FAT16<br />
</code></div>
<p class="spip">On va ensuite extraire le contenu de l’image préfabriquée et le copier :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>$ gunzip boot.img.gz<br />
$ mkdir /tmp/debian-usb<br />
# mount -o loop boot.img /tmp/debian-usb<br />
# mount /dev/sda1 /mnt<br />
# cp /tmp/debian-usb/* /mnt/<br />
# umount /tmp/debian-usb<br />
</code></div>
<p class="spip">Vous voyez alors que l’image préfabriquée contient les mêmes fichiers <i class="spip">initrd, linux, initrdg</i> plus les fichiers de configuration de Syslinux (un chargeur de démarrage pour disquettes).</p>

<p class="spip">Il faut à présent réinstaller le secteur d’amorçage de Syslinux. Installez les paquets mtools et syslinux, puis exécutez :</p>

<p class="spip"><code class='spip_code' dir='ltr'># syslinux /dev/sda1
</code></p>

<p class="spip">Pour utiliser syslinux avec un clavier français :</p>

<p class="spip"><code class='spip_code' dir='ltr'>$ keytab-lilo fr > /mnt/fr.kmp
</code></p>

<p class="spip">et ajoutez la ligne <code class='spip_code' dir='ltr'>KBDMAP fr.kmp</code>
dans <i class="spip">/mnt/syslinux.cfg</i></p>

<p class="spip">Comme pour les autres variantes, il faut copier l’image CD sur la clé :</p>

<p class="spip"><code class='spip_code' dir='ltr'># cp debian-testing-i386-businesscard.iso  /mnt/
</code></p>

<p class="spip">Maintenant on a une partition 1 avec un secteur de boot, il faut qu’un chargeur de démarrage du MBR lui passe la main. Pour ce faire, on va encore utiliser Lilo avec le fichier de configuration suivant :</p>
<div style='text-align: left;' class='spip_code' dir='ltr'><code>disk=/dev/sda<br />
bios=0x80<br />
boot=/dev/sda<br />
map=/tmp/map<br />
install=/tmp/boot-compat.b<br />
keytable=/tmp/fr.kmp<br />
lba32<br />
ignore-table<br />
force-backup=/dev/null<br />
<br />
other=/dev/sda1<br />
        label=Debian<br />
</code></div>
<p class="spip">Même remarque qu’avant pour <i class="spip">fr.kmp</i>.</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code># lilo -C lilo.conf -M /dev/sda<br />
# lilo -C lilo.conf<br />
</code></div>
<p class="spip">On peut enfin démarrer dessus, avec un beau menu plein d’options :)</p>

<p class="spip"><strong class="spip">VI. Conclusion</strong></p>

<p class="spip">L’installation USB présente beaucoup d’avantages
<br /> Pas de CD à graver.
<br /> C’est plus rapide (plus de CD qui grince).
<br /> On peut facilement changer d’image ISO.
<br /> Il est possible d’automatiser l’installation avec un fichier preseed.cfg sur la clé. (voir la section 4.7 du <a href="http://www.debian.org/releases/stable/i386/ch04s07.html.fr" class="spip_out">manuel d’installation Debian</a>)</p>