4. Composants

Contenu de cette section

4.1 Systèmes de fichiers

Le noyau Linux accepte maintenant deux systèmes de fichiers pour des disques racines copiés automatiquement dans des disques mémoire. ext2 a été ajouté quelque part entre les versions 1.1.17 et 1.1.57 (j'ignore quand exactement). Si vous avez un noyau correspondant, cherchez dans /usr/src/linux/drivers/block/ramdisk.c la chaîne "ext2". Si elle n'y est pas, alors il vous faudra utiliser un système de fichiers minix, et en conséquence, la commande mkfs.

Pour créer un système de fichiers sur disquette sur mon système, je lance la commande suivante :

        mke2fs /dev/fd0

La commande mke2fs détectera automatiquement l'espace disponible et ne requiert donc pas de paramètres supplémentaires. ((NdT: vérifiez à deux fois avant de lancer un mke2fs. mke2fs est pratiquement irréversible))

Une manière simple de tester le résultat est alors d'essayer de monter la disquette. Si c'est du ext2, alors :

        mount -t ext2 /dev/fd0 /<repertoire vide>
devrait marcher.

4.2 Noyau

Compiler un noyau

Dans la plupart des cas, il devrait être possible de copier votre noyau courant et d'amorcer la disquette à partir de celui-ci. Par contre il y a des cas où vous voudrez construire une disquette à part.

Une des raisons est la taille. Le noyau est l'un des fichiers les plus gros dans un système minimal, donc si vous voulez créer une disquette d'amorce/racine, vous devrez réduire la taille du noyau autant que possible. Le noyau accepte maintenant le changement de disquette après l'amorçage et avant de monter la racine, donc il n'est plus nécessaire de mettre le noyau et le reste sur la même disquette ; dans ce cas ces commentaires ne s'appliquent pas.

Il y a deux moyens de réduire la taille du noyau :

Ayant déterminé l'ensemble minimum des options à inclure dans un noyau, il se peut que vous en ayez plusieurs à ajouter. L'utilisation la plus fréquente d'une disquette amorce/racine est probablement l'examen et la récupération d'un système de fichiers corrompu. Pour cela il se peut que vous ayez besoin de support du noyau.

Par exemple, si vos archives sont toutes mises sur bande en utilisant Ftape pour accéder à votre lecteur de bande, et si d'aventure vous perdiez votre disque racine, vous seriez dans l'impossibilité de récupérer vos archives. Vous auriez alors à réinstaller Linux et Ftape, puis tenter de lire et extraire vos précieuses archives.

Il est probablement souhaitable de garder une copie de la même version des utilitaires d'archivages utilisés pour écrire les archives pour ne pas perdre du temps et de l'énergie à installer des versions ne pouvant pas les lire.

Bonne idée : ajouter à votre noyau de disquette amorce/racine quelque support I/O que vous ayez ajouté à votre noyau pour l'archivage. Notez toutefois que le module Ftape (tout du moins la version que j'ai) est assez gros et ne tiendra pas sur une disquette amorce/racine. Vous pouvez le mettre sur une disquette utilitaires, comme décrit ci-dessous dans la section "Ajouter des disquettes utilitaires".

La procédure pour compiler le noyau est décrite dans la documentation qui vient avec le noyau. Elle est simple à suivre, donc commencez par regarder dans /usr/src/linux. Note : si vous avez des problèmes de compilation du noyau, vous ne devriez peut-être pas essayer de créer des disquettes de amorce/racine de toute façon.

4.3 Périphériques

Un répertoire /dev contenant tous les fichiers spéciaux pour tous les périphériques utilisés par le système est obligatoire pour tout système Linux. Le répertoire lui-même est un répertoire normal, et peut être créé par la commande mkdir. Les fichiers périphériques spéciaux doivent par contre être créés par la commande mknod.

Il y a un raccourci heureusement : plutôt que de faire un zillion de mknod, copiez le contenu du répertoire /dev et supprimez ce dont vous n'avez pas besoin. Le seul impératif est de copier les fichiers en utilisant l'option -R. Ceci copiera le répertoire sans tenter de copier le contenu des fichiers. Notez que si vous utilisez la minuscule -r, le résultat sera très différent puisque vous copiez le contenu de tous vos périphériques (disques, lecteurs de cd). Ou tout du moins la partie pouvant tenir sur une disquette. Donc attention et utilisez :

        cp -dpR /dev /mnt
en supposant que la disquette soit montée sur /mnt. Les options dp font que les liens symboliques sont copiés comme des liens, plutôt que, assez peu judicieusement, leur contenu ; et que les attributs du fichier sont préservés, en particulier les droits d'accès, et les groupes et propriétaires.

Si vous voulez créer les fichiers de périphérique sur la disquette à la force du poignet, faites un ls -l pour afficher les numéros de périphérique mineurs et majeurs et créez-les sur disquette avec mknod. Beaucoup de distributions incluent un script MAKEDEV dans le répertoire /dev. Il peut être utilisé pour créer les fichiers périphériques mais il est probablement plus facile de copier le /dev, particulièrement dans le cas de disques de secours.

4.4 Répertoires

Il se peut qu'avec simplement /dev, /proc et /etc vous puissiez amorcer un système Linux - je ne sais pas, je n'ai pas essayé. Par contre un ensemble minimum raisonnable de répertoires consiste en :

/dev

Requis pour les entrées/sorties avec les périphériques

/proc

Utilisé par la commande ps

/etc

Répertoire des fichiers de configuration système

/bin

Utilitaires exécutables faisant partie du système

/lib

Bibliothèques partagées

/mnt

Répertoire sur lequel monter les partitions à maintenir

/usr

Applications et utilitaires supplémentaires

Notez que l'arborescence présentée ici est valable uniquement pour la disquette racine. Voyez le Linux File System Standard pour des informations plus précises sur la façon de structurer un système Linux "standard".

Quatre de ces répertoires se créent très simplement :

Les trois répertoires restants sont décrits dans les sections qui suivent.

/etc

Ce répertoire doit contenir un certain nombre de fichiers de configuration. Sur la plupart des systèmes, ceux-ci peuvent être divisés en trois groupes :

Les fichiers secondaires peuvent être identifiés avec la commande :

        ls -trul
qui donne les fichiers dans l'ordre inverse de date de dernier accès. Les fichiers non utilisés ne sont évidemment pas nécessaires pour une disquette racine.

Sur mes disquettes racines, j'ai réduit le nombre de fichiers à 15. Ceci réduit le travail à trois ensembles de fichiers :

A part ceux-ci, je n'ai eu réellement qu'à adapter deux fichiers, et ce qu'ils doivent contenir est étonnement court.

Inittab devrait être correct tel quel, à moins que vous ne vouliez vous assurer que des utilisateurs ne puissent se loger via le port série. Pour empêcher cela, mettez en commentaire les lignes de /etc/getty qui ont des ttys ou des ttyS à la fin de la ligne. Quoiqu'il en soit, il n'est pas totalement inutile de laisser les/des tty ((tout court)) de façon à ce que vous puissez quand même vous loger vous.

Pour le reste, copier simplement tous les fichiers texte dans le répertoire /etc ainsi que tous les exécutables dont vous n'êtes pas sûr qu'ils ne soient pas utiles. Comme modèle, voir l'exemple dans la section "Exemple de liste (ls-lR) d'une disquette amorce/racine".

/bin

C'est un endroit pratique pour mettre les utilitaires supplémentaires dont vous avez besoin pour effectuer les opérations de base ; des utilitaires comme ls, mv, cat, dd, etc...

Voir la section intitulée "Exemple de liste (ls-lR) d'une disquette amorce/racine" pour la liste des fichiers que j'ai mis dans mon répertoire /bin. Vous remarquerez peut-être que je n'ai mis aucun des utilitaires requis pour récupérer depuis une archive, comme cpio, tar, gzip, etc... En effet, je les mets sur une disquette utilitaires pour économiser l'espace de la disquette amorce/racine. Une fois que j'ai démarré avec celle-ci, elle est copiée dans le disque mémoire laissant le lecteur de disquette libre pour monter une autre disquette (la disquette utilitaires donc). Je la monte habituellement dans /usr.

La création d'une disquette utilitaire est décrite ci-dessous dans la section intitulée "Ajouter des disquettes utilitaires".

/lib

Deux bibliothèques doivent être présentes pour lancer de nombreux programmes sous Linux :

Si elles ne sont pas trouvées dans votre répertoire /lib, alors le système est dans l'impossibilité de démarrer. Si vous avez de la chance peut-être verrez-vous un message vous expliquant pourquoi.

Elles doivent être présentes dans un répertoire existant, /lib. Remarquez que libc.so.4 peut être un lien symbolique vers une bibliothèque avec un numéro de version inclus dans le nom du fichier. Si vous faites :

        ls -l /lib
vous verrez quelque chose comme :
        libc.so.4 -> libc.so.4.5.21

Dans ce cas, la bibliothèque libc dont vous avez besoin est libc.so.4.5.21. (( NDT : naturellement il se peut même que ce soit un fichier différent de libc.so.4 comme libc.so.5 ))

4.5 LILO

Aperçu

Pour que l'amorce/racine soit utile, il faut qu'elle soit amorçable. Pour cela, la manière la plus simple (la seule ?) est d'installer un lanceur, qui est un morceau de programme contenu dans la disquette secteur 0, cylindre 0. Voir la section "Disquette d'amorce" pour un aperçu du déroulement du démarrage.

LILO est un lanceur disponible dans n'importe quel site ftp Linux. Il vous permet de déterminer entre autres~:

Exemple de fichier configuration LILO

C'est un endroit pratique pour fixer certaines options de démarrage du noyau. Mon fichier de configuration LILO racine/amorce, utilisé avec LILO 0.15 est :


boot = /dev/fd0
install = ./mnt/boot.b
map = ./mnt/lilo.map
delay = 50
message = ./mnt/lilo.msg
timeout = 150
compact
image = ./mnt/vmlinux 
        ramdisk = 1440
        root = /dev/fd0

Remarquez que boot.b, lilo.msg et le noyau doivent d'abord avoir été copiés sur la disquette en utilisant une commande comme :


cp /boot/boot.b ./mnt

Si ça n'est pas fait, et si le disque dur n'est pas disponible, LILO ne fonctionnera pas correctement à l'amorçage. Mauvaise idée : créer une disquette de secours qui a besoin du disque dur pour se lancer.

Je lance lilo avec la commande :

        /sbin/lilo -C <fichier configuration>

Je le lance dans répertoire qui contient le répertoire mnt sur lequel j'ai monté la disquette ((NdT: i.e. /). Ceci signifie que j'indique à LILO d'installer un lanceur sur le périphérique d'amorçage (/dev/fd0 dans ce cas), pour lancer un noyau dans le répertoire racine de la disquette.

J'ai aussi spécifié que je voulais le périphérique racine comme étant la disquette et qu'un disque mémoire serait créé avec 1440 1K blocs, la taille d'une disquette. Comme j'avais créé un système de fichiers ext2 sur la disquette, ceci complète les conditions requises pour que Linux puisse copier au démarrage le périphérique d'amorce dans un disque mémoire.

Les caractéristiques du disque virtuel en mémoire sont décrites dans la section intitulée "Disque virtuel en mémoire et disquettes racines" plus haut.

Ajoutons aussi que le paramètre "single" fait que Linux ne démarrera qu'en mode simple utilisateur. Ceci peut être utile pour empêcher les utilisateurs de se connecter à partir des ports série. ((NdT: voir telinit et /etc/inittab pour en savoir plus sur le mode simple utilisateur)).

J'utilise aussi des commandes DELAY, MESSAGE et TIMEOUT, de telle sorte que lorsque je lance le disque, LILO me donne la possibilité d'entrer des options en ligne de commande si je le désire. Je n'en n'ai pas besoin pour l'instant, mais qui sait de quoi demain sera fait ? Je peux avoir besoin de monter une autre partition ou de monter un système de fichiers en lecture seule.

Le fichier message que j'utilise contient :

Linux - Disquette d'amorce/racine
=================================
 
Entrer une ligne de commande de la forme :

      vmlinux [ options ]

Si rien n'est entre, Linux sera charge avec les 
parametres par defaut apres 15 secondes.

Cela permet simplement de me rappeler des options que j'ai choisies.

Les lecteurs sont invités à consulter la documentation de LILO, avec attention, avant d'installer quoi que ce soit. Il est assez facile de détruire des partitions si vous utilisez le mauvais paramètre boot =. Si vous manquez d'expérience, NE lancez PAS LILO à moins que vous compreniez tout, et que vous ayez vérifié trois fois vos paramètres.

Enlever LILO

Puisque nous parlons de LILO, voici une chose à ajouter : si vous avez un problème avec LILO sur un disque contenant DOS, vous pouvez toujours remplacer le secteur d'amorçage par le lanceur DOS en utilisant la commande DOS :

        FDISK /MBR

où MBR signifie "Master Boot Record". Remarquez que certains puristes sont en désaccord avec cette interprétation et peut-être à raison, mais en tout cas, ça marche.

Options de LILO utiles

LILO a plusieurs options utiles à garder en tête lors de la création de disquettes d'amorce.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre