Historique: Créer un système Live USB personnalisé
Aperçu de cette version: 11
Table des matières
NB : cet article sera peut être supprimé, il est ici comme carnet de notes sur un projet qui m'a pris un peu de temps.
Objectif
Présentation
L'objectif de cet article est de relater de l'installation d'un système Linux sur une clé USB. Cette clé permet de démarrer un ordinateur d'architecture 386 avec une clé et de faire tourner un certain nombre d'applications. L'idée est de faire une distribution musicale sur une clé de taille 1Go, sachant que ces clés vallent aujourd'hui quelque 60 €.
L'intérêt est de disposer d'une clé à la manière d'un CD live, permettant de se connecter sur un PC pour y faire un certain nombre d'opérations musicales nomades.
Etat de l'art
L'idée est de disposer d'1 GO et de n'y installer que le strict nécessaire pour pouvoir disposer d'un certain nombre de logiciels sur mesure.
Il existe des distributions minilunix pour clé de 64Mo, il existe des documentations permettant de faire des distributions à base de système Knoppix. Mais l'idée est de faire ici une clé sur mesure.
Après avoir fait des essais avec un système Gentoo, j'ai renoncé pensant que le poids des compilateurs était un frein à l'économie de mémoire.
Le choix s'est donc porté sur une Debian.
Installation
Description
Etape 1
La première étape est de charger sur le site de débian une image ISO minimale appelée business card. Cette image tient sur 40Mo et elle permet de graver un CDROM. Cette installation nécessite un accès réseau. L'installeur a trouvé une adresse IP car j'avais un serveur DHCP sous la main.
Le CDROM est booté sur un vieux PC qui sait quand même démarrersur une clé USB.
Attention : au démarrage certains PC ne reconnaissent la CLE USB au moment de l'installation que si le PC est physiquement allumé quand la clé est dedans. Un simple reboot peut perdre la clé.
Il faut passer au démarrage l'option
linux26 vga=771
L'idéal serait de prendre un noyau 2.6 mais il ne reconnait pas la clé USB comme disque dur.
Afin que l'écran soit reconnu (cela ne concerne que mon cas, mais comme cet article me permet de consigner toutes les étapes)
Etape 2
J'ai choisi d'installer Linux sur la clé complète, c'est à dire que j'ai laissé la Debian faire deux partitions sur la clé USB : une de swap et une grande partition ext3. La partition de swap si elle s'avère inutile pourra être remplacée par une partition VFAT par la suite permettant d'utiliser la clé USB comme une clé 64Mo.
Durant l'installation il est utile de surveiller par les touches CONTROL ALF F2 en ouvrant une console et par une commande df que la partition tient la charge en terme de quantité d'espace disque.
Vérifier aussi que le noyau installé est bien un 2.6 par une commande uname -r
Etape 3 : Création initrd
Par défaut, votre clé USB bootera mais fera un "kernel panic" en disant qu'elle ne trouve pas le "ROOT device". La raison en est simple. Sous Linux, les périphériques USB de type stockage (Mass Storage) sont reconnu en tant que périphériques SCSI.
Pouyr chager ces modules au démarrage nous devons créer un nouvel "initrd" (INITial Ram Disk). La méthode la plus simple pour effectuer l'opération est d'utiliser l'outil "mkinitrd" (8) fourni par debian.
Liste des modules
Pour que notre clé USB soit reconnu après le boot du noyau, nous devons charger des modules. Ceux-ci sont a spécifier dans /etc/mkinitrd/modules.
Il faut ajouter les deux lignes suivantes:
usb-storage
sd_mod
sd_mod
Ces deux modules doivent être présents dans votre noyau (ce qui est le cas pour les noyau debian par défaut).
Configuration de mkinitrd
L'outil mkinitrd vient avec un fichier de configuration. Celui-ci est dans /etc/mkinitrd/mkinitrd.conf (5). Nous devons y changer deux lignes comme indiqué ci-dessous
MODULES=all
ROOT=/dev/sda1
ROOT=/dev/sda1
Création de l'image
Pour créer votre image, il suffit d'appeler mkinitrd avec les bons paramètres.mkinitrd -k -o myinitrd 2.6.8-2-386
La valeur 2.6.8-2-386 correspond a la version complète de notre noyau ainsi qu'au répertoire contenant les modules (/lib/modules/<version>/)
Lors de l'execution un message similaire apparaitra, notez ce répertoire, c'est a cete emplacement que vous trouverez votre initrd
/usr/sbin/mkinitrd: The working directory /tmp/mkinitrd.qWUHpq will be kept.
une simple copie de fichier :
cp ./initrd/myinitrd /boot/myinitrd
N'oubliez pas d'adapter votre lilo.conf ou votre grub pour prendre en compte le nouvel initrd en question.
Premiers tests
En spécifiant dans votre BIOS que vous souhaitez booter sur la clé USB vous devriez maintenant pouvoir booter sur la clé USB sans problème.
A la première installation le système Linux minimal vous demandera les mots de passe root et les heures ainsi que des informations de configuration et chargera à l'aide de l'utilitaire aptitude les packages debian à jour.
Ce système vous permet d'utiliser Linux sur une centaine de Mega mais vous n'avez pas à ce stade là d'interface graphique.
La suite des opérations va viser à installer X11
Customisation de la clé
Travail préparatoire
Explications
Quelques modifications sont nécessaires pour installer votre système Linux mais :
- en général votre controleur USB est configuré sans aucune optimisation avec des traces de débug qui ralentissent le processus, il va falloir recompiler le noyau
- il va falloir installer X11 et le reste.
La méthode retenue consiste à prendre un PC avec un disque d'accès rapide, de copier la clé dessus de tout installer sur cette portion de disque et une fois que tout sera installé (ou de temps en temps) recopier le contenu du disque sur la clé pour la tester.
L'important c'est qu'à présent votre clé est capable de booter.
Mise à disposition d'un espace de travail rapide
Les commandes suivantes copies le contenu la clé sur votre partition disque /mnt/flash
mount -o ro /dev/sda1 /mnt/usb/
cd /mnt/usb
mkdir /mnt/flash
cp -pdr ./* /mn/flash/
mount -o bind /proc /mnt/flash/proc
chroot /mnt/flash/ /bin/bash -l
cd /mnt/usb
mkdir /mnt/flash
cp -pdr ./* /mn/flash/
mount -o bind /proc /mnt/flash/proc
chroot /mnt/flash/ /bin/bash -l
Vous êtes maintenant sur la parition /mnt/flash avec votre shell bash comme si vous étiez sur /
Vous avez une machine virtuelle sur votre disque dur et pouvez continuer l'installation
On va dire à Debian d'installer xfce4 ce qui provoquera l'installation de X et de tous les outils nécessaires
apt-get install xfce4