Outils du site

Menu du site


Traductions de cette page:
tech:tools:debian7_netinst_patch_for_usb_stick

Patch Debian 7 Netinst pour clé USB

Comme pour d'autres tâches de maintenance, lorsqu'il s'agit d'installer GNU/Linux Debian sur un PC, je dois prévoir différentes méthodes pour des cas particuliers où la méthode directe classique serait inopérante.
J'ai été amené à créer un patch de l'image Debian Netinst afin d'être certain de pouvoir installer Debian sur n'importe quel PC à domicile.

Problèmes et contournements

Problème n° 1 : impossible de lire le DVD

Parfois, le lecteur DVD du PC est défectueux, trop vieux pour lire les supports réinscriptibles ou bien le DVD lui-même est corrompu.

Contournement n°1

Le manuel d'installation Debian préconise d'installer Debian depuis une clé USB clonée depuis le DVD d'installation. Pendant la phase de démarrage du PC, le BIOS identifie la clé USB comme un disque CD au format ISO-9660 ce qui permet à l'installateur Debian de démarrer.

Dans un terminal linux, cloner une image DVD dans une clé USB est aussi simple que cela :

  1. Insérer la clé USB
  2. Entrer dmesg pour trouver le nom du nouveau périphérique inséré qui doit ressembler à /dev/sd..
    (par exemple: /dev/sdb1)
  3. Enter dd if=/chemin/vers/le_fichier_dvd.iso of=/dev/sd..
    (par exemple: dd if=/chemin/vers/le_fichier_dvd.iso of=/dev/sdb1)

Problème n°2

Le contournement n°1 fonctionne souvent la première fois si la clé est neuve mais échoue les fois suivantes en raison de la mort des cases mémoires à mesure que l'on écrit sur le périphérique flash (on peut vérifier par : cmp /chemin/vers/le_fichier_dvd.iso /dev/sd..). Si l'on met à jour plusieurs fois la clé USB, ceci entraîne des surprises : l'installateur Debian se bloque par incapacité de lire certains fichiers sur le pseudo CD-ROM USB.

Contournement n°2

Le contournement officiel fourni par l'équipe est un outil appellé hd-media (cf. « Boot Debian from an USB device »).
hd-media rend possible l'installation de Debian depuis un fichier image disque à jour, placé sur un disque USB externe1).

Problème n°3

Dans certains cas, il est impossible de démarrer le fichier iso du disque d'installation Debian par l'utilitaire hd-media : soit parce que le fichier iso est corrompu, soit parce qu'une autre image disque (Ubuntu, etc.) est prise en priorité.

Contournement n°3

On envisage alors d'installer Debian par internet au moyen du mini-CD d'installation Debian netinst. Malheureusement, à l'instar de l'image disque DVD Debian classique, ce mini-CD n'est pas censé être émulé en procédure loopback sous Grub-PC.

C'est ici qu'intervient mon contournement non officiel :
J'ai patché les images disques linux initiales de ces mini-CD amd64 et i386 afin qu'ils reconnaissent les répertoires d'emplacement de ces mini-CD décompressés.

Le netinst patché

Bien que le netinst d'origine soit un fichier d'image disque au format iso, ce netinst patché est un répertoire. Pour le démarrer, il faut donc utiliser le gestionnaire de démarrage Grub-PC.

Démarrer le netinst patché

Dans le fichier grub.cfg du bootloader Grub-PC, il suffit d'appeler le fichier initrd-patched.gz et de passer deux nouvelles options au noyau linux pour que l'installateur chargé en mémoire trouve le répertoire de son CD-ROM.

Ci-dessous, un exemple simple de programmation du bootloader Grub-PC, afin de démarrer l'installation de debian-netinst patché. Dans cet exemple, on suppose que les contenus des CDROM netinst patchés sont décompressés dans les répertoires /install-dirs/debian-netinst-amd64 et /install-dirs/debian-netinst-i386 de la clé USB :

function show_netinst_process {
  set pager=1
  install_dir="$1"
  if test -f "$install_dir/debian-netinst-process-$lang.txt"; then
    cat "$install_dir/debian-netinst-process-$lang.txt"
  fi
  echo
  echo "Appuyez sur Entrer pour lancer l'installation netinst"
  read
  unset install_dir
}
 
probe --fs-uuid --set=cdrom_uuid "$root"
 
menuentry "debian-netinst-amd64" [
  show_netinst_process /install-dirs
  linux /install-dirs/debian-netinst-amd64/install.amd/vmlinuz setkmap=fr locale=fr_FR.UTF-8 vga=788 cdrom_uuid=$cdrom_uuid cdrom_dir=/install-dirs/debian-netinst-amd64 -- quiet
  initrd /install-dirs/debian-netinst-amd64/install.amd/initrd-patched.gz
}
 
menuentry "debian-netinst-i386" [
  show_netinst_process /install-dirs
  linux /install-dirs/debian-netinst-i386/install.386/vmlinuz setkmap=fr locale=fr_FR.UTF-8 vga=788 cdrom_uuid=$cdrom_uuid cdrom_dir=/install-dirs/debian-netinst-i386 -- quiet
  initrd /install-dirs/debian-netinst-i386/install.386/initrd-patched.gz
}

Voici le contenu du fichier $install_dir/debian-netinst-process-fr.txt évoqué ci-dessus :

L'installation du netinst patche s'interrompt
juste apres l'installation du systeme de base.
Voici comment continuer l'installation :
1 - Le menu s'affiche : choisir d'installer grub.
2 - Au redemarrage du PC, retirer la cle USB.
3 - Apres redemarrage, lancer le programme suivant :
    /root/firstboot

Caractéristiques ajoutées

  • Le support complet des système de fichiers de types ext2/ext3/ext4 sont ajoutés aux supports des systèmes de fichiers existants (ISO-9660 et vfat)
  • Les options de démarrage du noyau linux suivantes sont ajoutées :
    cdrom_dir=/chemin/répertoire_du_mini-CD_décompressé
    cdrom_uuid=UUID_de_la_partition_du_périphérique_contenant_ce_mini-CD_décompressé
  • L'exécution manuelle du script /root/firstboot permet de continuer facilement l'installation Debian après le premier redémarrage2)
  • L'installateur s'interrompt juste après l'installation du système de base et revient au menu principal du mini-CD (bug à corriger) : dans ce menu, il faut sélectionner « Installer le programme de démarrage GRUB sur un disque dur ». À l'extinction/redémarrage, le fichier sources.list Debian officiel est créé avec les miroirs français, ce qui permet de reprendre l'installation depuis le disque dur lui-même

Téléchargement

Voici les fichiers tarball :

Contact

Envoyer un message

(*) Champs obligatoire

Si vous ne pouvez pas lire le code, téléchargez ce fichier .wav pour l'écouter.
1)
Notez que contrairement à Ubuntu, l'émulation d'image disque d'installation dans Grub-PC n'est pas supportée pour Debian (cf. bug report "ISO loopback support for Debian installer").
2)
Il n'est pas possible d'exécuter le script /root/firstboot automatiquement au premier démarrage. En effet, la localisation incomplètement initialisée empêche le fonctionne normal du script /usr/bin/tasksel.
tech/tools/debian7_netinst_patch_for_usb_stick.txt · Dernière modification: 05/01/2019 00:46 (modification externe)