Skip to Content

Installer Debian à partir d’une clé ou un disque dur USB

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.

I. Deux méthodes de boot différentes

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.

II. L’installeur Debian pour le boot USB

Le dépôt de l’installeur Debian comporte un dossier hd-media pour ce genre de boot :

vmlinuz - un noyau Linux Debian standard

initrd.gz - 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.

gtk/initrd.gz - le même ramdisk, mais avec l’installeur graphique GTK et non plus nCurses.

boot.img.gz - une image de clé USB préfabriquée avec les éléments décrits ci-dessus, amorcés par syslinux

ftp://ftp.debian.org/debian/dists/sid/main/installer-i386/current/images/hd-media/

III. Une première approche quick’n’dirty (la seule qui fonctionne en USB-ZIP)

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é :

# zcat boot.img.gz > /dev/sda

(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 :

# mount /dev/sda /mnt
# cp debian-testing-i386-businesscard.iso  /mnt/
# umount /mnt

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.

IV.Personnalisation de l’installeur USB

On va maintenant fabriquer nous-mêmes la clé, en la personnalisant et en utilisant la méthode USB-HDD.

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)) :

# fdisk /dev/sda

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         198       49073    6  FAT16

# mkdosfs /dev/sda1
# mount /dev/sda1 /mnt
# cp initrd.gz /mnt/
# cp vmlinuz /mnt/
# cp gtk/initrd.gz /mnt/initrdg.gz
# cp debian-testing-i386-businesscard.iso  /mnt/

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é :

disk=/dev/sda
bios=0x80
boot=/dev/sda
map=/tmp/map
install=/tmp/boot-compat.b
keytable=/tmp/fr.kmp
lba32
ignore-table
force-backup=/dev/null

prompt

image=/mnt/vmlinuz
       label=Install
       initrd=/mnt/initrd.gz
       append=" vga=normal ramdisk_size=12000 root=/dev/ram rw"

image=/mnt/vmlinuz
       label=GInstall
       initrd=/mnt/initrdg.gz
       append=" video=vesa:ywrap,mtrr vga=788 ramdisk_size=12000 root=/dev/ram rw"

Pour générer fr.kmp (et donc avoir Lilo avec un clavier français) :

$ keytab-lilo fr > /tmp/fr.kmp

Finalemment :

# lilo -C lilo.conf -M /dev/sda
# lilo -C lilo.conf

La clé devrait démarrer avec le choix entre une installation graphique et texte.

V. Méthode hybride

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.

Comme pour la clé précédente, il faut créer une partition FAT16 (cette fois-ci avec le drapeau boot activé).

    Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         198       49073    6  FAT16

On va ensuite extraire le contenu de l’image préfabriquée et le copier :

$ gunzip boot.img.gz
$ mkdir /tmp/debian-usb
# mount -o loop boot.img /tmp/debian-usb
# mount /dev/sda1 /mnt
# cp /tmp/debian-usb/* /mnt/
# umount /tmp/debian-usb

Vous voyez alors que l’image préfabriquée contient les mêmes fichiers initrd, linux, initrdg plus les fichiers de configuration de Syslinux (un chargeur de démarrage pour disquettes).

Il faut à présent réinstaller le secteur d’amorçage de Syslinux. Installez les paquets mtools et syslinux, puis exécutez :

# syslinux /dev/sda1

Pour utiliser syslinux avec un clavier français :

$ keytab-lilo fr > /mnt/fr.kmp

et ajoutez la ligne KBDMAP fr.kmp
dans /mnt/syslinux.cfg

Comme pour les autres variantes, il faut copier l’image CD sur la clé :

# cp debian-testing-i386-businesscard.iso  /mnt/

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 :

disk=/dev/sda
bios=0x80
boot=/dev/sda
map=/tmp/map
install=/tmp/boot-compat.b
keytable=/tmp/fr.kmp
lba32
ignore-table
force-backup=/dev/null

other=/dev/sda1
       label=Debian

Même remarque qu’avant pour fr.kmp.

# lilo -C lilo.conf -M /dev/sda
# lilo -C lilo.conf

On peut enfin démarrer dessus, avec un beau menu plein d’options :)

VI. Conclusion

L’installation USB présente beaucoup d’avantages

 Pas de CD à graver.

 C’est plus rapide (plus de CD qui grince).

 On peut facilement changer d’image ISO.

 Il est possible d’automatiser l’installation avec un fichier preseed.cfg sur la clé. (voir la section 4.7 du manuel d’installation Debian)

Commentaires

Installer Debian à partir d’une clé ou un disque dur USB

Génial, toujours d’actualité, je m’en suis servi hier soir pour faire une installation.

Installer Debian à partir d’une clé ou un disque dur USB

Bonjour,

Dans vos explications, vous détaillez bien comment faire à partir de Linux. On devinne dès lors les commandes ou les marches a suivre sous Windows.
MAIS : Comment installer LILO alors que le PC est sous Windows ?
>Avant de passer au pinguin, faudrait enlever la fenêtre !<

Merci

> Installer Debian à partir d’une clé ou un disque dur USB

Mettre une capture d’écran ne me parait pas indispensable dans ce cas d’autant plus que tout les Bios sont différents.
Mais en effet, tu peux ajouter les manips en une phrase pour tes deux Bios différent pour guider l’utilisateur.

> Installer Debian à partir d’une clé ou un disque dur USB

D’accord, je vais essayer de prendre des captures d’écran, mais c’est pas évident au démarrage de l’ordi. Justement j’en ai deux avec deux bios radicalement différents qui supportent l’USB :)

> Installer Debian à partir d’une clé ou un disque dur USB

Voilà c’est corrigé, bonne remarque :)

> Installer Debian à partir d’une clé ou un disque dur USB

Bonsoir Alexis,
Je viens de lire ton article et je me demandais s’il ne serait pas intéressant de développer ton premier point concernant le Bios, à savoir, comment mettre l’USB-HDD par défaut dans le bios. pour certains non-initiés comme moi, par exemple, ces petites intros (que l’on peut trouver ailleurs j’en conviens) nous sont bien utiles pour nous lancer dans la suite de l’opération avec une certaine assurance... A+

> Installer Debian à partir d’une clé ou un disque dur USB

Bonjour Alexis,

J’ai tout lu mais j’ai pas testé. L’article est claire et très intéressant.

J’ai une toute petite remarque concernant les commandes :

  •  Je pense qu’il est important de mettre le $ ou le # devant la ligne de commande pour montrer ce qui doit être fait sous root ou sous simple utilisateur. De plus cela permet de faire la différence entre ce qu’il faut saisir et le résultat obtenu.