Sommaire Index Rechercher Liens A Propos
[LinuxFocus Image]
[Barre de Navigation]
  Nouveautés   Archives

Créer une Version (Assez utile) de Linux

par Mooneer Salem


Introduction

Avez vous vu ces sites où l'on vous promet une version utile de Linux sur une ou deux disquettes ? Elle n'ont généralement que peu de programmes ou de possibilités. Je vais vous montrer comment créer une disquette boot/root qui contient presque tout ce que vous utilisez ou avez besoin.

Avant tout, vous avez besoin d'une ou deux disquettes vierges selon la quantité de logiciel que vous allez mettre dans votre version de Linux. Grossièrement, votre version de Linux sera juste constituée d'une disquette boot/root et peut être d'une autre d'utilitaires. Si ces termes ne vous disent rien, je vous suggère de consulter le chapitre 2 du Bootdisk-HOWTO avant de commencer.

Allons y. Voici les étapes élémentaires pour faire votre version de Linux sur disquettes :

  1. Compiler un noyau minimal personnalisé.
  2. Créer un système de fichier pour votre disquette
  3. Tout copier sur la ou les disquette(s)

Compiler le Noyau

A cause de la taille de la disquette limitée à 1.44 Mega-octets (1440 Kilo-octets) de données, vous ne pouvez pas simplement y copier votre noyau original. D'abord, récupérez les sources du noyau et décompactez les dans /usr/src/linux. Ensuite, passez la commande suivante depuis ce même répertoire :

make config

Dans cette phase de configuration, n'incluez que ce dont vous avez vraiment besoin. Sur le mien je n'ai que les supports pour ext2, les disquettes et PPP. Votre paramètrage peut être différent selon ce que vous installez. Ensuite, lancer la commande :

make dep; make clean; make zImage

make zImage est très important ! Il compresse le noyau final. Une fois cette commande terminée, le noyau devrait se trouver dans le répertoire /usr/src/linux/arch/i386/boot avec le nom zImage.

Le Système de Fichier: Pas n'Importe Quels Vieux Fichiers

Maintenant nous devons créer le système de fichier pour la disquette. Plutôt que de copier directement tout le tas sur la disquette, nous allons compresser tous les programmes. Ceci rendra un peu plus difficile les modifications permanentes. D'abord, nous passons la commande :

dd if=/dev/zero of=DEVICE bs=1k count=3000

Où DEVICE est le chemin de l'endroit où vous allez conserver le système de fichiers non compressé sur votre disque dur. Entrez ensuite la commande ci-dessous et pressez Entrée après avoir remplacé DEVICE par le chemin des fichiers non compressés sur votre disque dur :

mke2fs -m 0 DEVICE

Si make2fs vous demande si vous voulez vraiment faire cela, répondez oui.

Nous avons alors à monter le nouveau système de fichier. Puisqu'il est à l'intérieur d'un fichier normal, le "périphérique loopback" doit être compilée dans le noyau pour pouvoir le monter. Si votre noyau (pas celui crée pour la disquette, mais celui de votre système) ne supporte pas cette option, alors recompilez le. Vous devez répondre (Y)es (ou (M)odule) à cette question:

Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?]
lors de la configuration du noyau. Remarquez que vous recompilez VOTRE noyau normal, pas celui de la disquette ; il vous faudra donc inclure tous les pilotes et utilitaires que vous avez déjà. Si le périphérique loopback est compilé comme un module, n'oubliez pas de l'installer (modprobe loop).
mount -t ext2 DEVICE /mnt
Si le programme mount se fait prier, essayez:
mount -o loop -t ext2 DEVICE /mnt

Maintenant vous devez copier tous les fichiers dont vous avez besoin sur votre nouveau système de fichiers. D'abord, faites un cd vers /mnt. Créez les répertoires suivants :

 
/dev 
/proc 
/etc 
/bin 
/lib 
/mnt 
/usr 

Occupons nous des fichiers dans /dev en tapant ce qui suit :

cp -dpR /dev /mnt/dev

Si vous manquez de inodes, allez dans /mnt/dev et supprimez les fichiers de périphériques dont vous n'avez pas besoin. Une fois les fichiers de /dev copiés, passons à /etc. Par précaution, copiez tous les fichiers de /etc vers /mnt :

cp -dpR /etc /mnt/etc

Puis copiez tout le répertoire /lib vers /mnt:

cp -dpR /lib /mnt/lib

Pour /bin, copiez seulement les choses dont vous pensez avoir besoin vers /mnt.

Tout Copier Sur Votre Disquette

Maintenant nous devons tout copier sur la ou les disquette(s). Pour cela nous devons compresser le système de fichier avec les commandes suivantes:

 
cd / 
umount /mnt 
dd if=DEVICE bs=1k | gzip -9 > rootfs.gz 

Il est important à ce point de vérifier la taille du noyau. Allez en /usr/src/linux/arch/i386/boot et passer une commande ls -l. Ensuite, vous devez diviser la taille du noyau par 1024. Par exemple, si la taille de mon noyau est de 250000 octets, alors le résultat est 245 Ko. Utilisez le nombre total de Kilo-octets que vous calculés précédemment avec la valeur de n'importe quelle commande qui disait ROOTBEGIN. Copiez le noyau sur la disquette avec la commande suivante :

dd if=zImage of=/dev/fd0

Cette commande écrira le noyau sur la disquette. Entrez ensuite la commande ci-dessous pour dire au noyau de trouver le système de fichier sur la disquette :

rdev /dev/fd0 /dev/fd0

Maintenant vous avez un peu de calcul en hexa à faire. Ajoutez 4000 à l'équivalent hexa de ROOTBEGIN (qui est F5 dans cet exemple). Convertissez la réponse sous forme décimale et insérez la dans la commande suivante à la place de 16629:

rdev -r /dev/fd0 16629

Finallement, copiez le système de fichier sur la disquette avec la commande :

dd if=rootfs.gz of=/dev/fd0 bs=1k seek=ROOTBEGIN

Le système de fichier root sera copié sur la disquette derrière votre noyau. Vous avez fini ! Pour la seconde disquette, le processus est plus simple. Copiez juste les fichiers que vous voulez sur la disquette. Toutefois, afin de pouvoir utiliser les fichiers qui sont sur cette seconde disquette, vous devrez entrer la commande suivante après avoir booté avec la disquette :

 
mount /dev/fd0 /usr 
Une dernière remarque : si vous bricolez un peu tout ça, vous serez probablement capable de faire une version de Linux que vous pourrez diffuser au public en tant que " distribution " à part de Linux. Juste une idée :)

Traduit en français par John Perr


Pour en savoir plus:
© 1998 Mooneer Salem
Ce site Web est maintenu par Miguel A Sepulveda.