Page suivante Page précédente Table des matières
4. Composants
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.
ext2a é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.cla chaîne "ext2". Si elle n'y est pas, alors il vous faudra utiliser un système de fichiersminix, et en conséquence, la commandemkfs.Pour créer un système de fichiers sur disquette sur mon système, je lance la commande suivante :
mke2fs /dev/fd0La commande
mke2fsdétectera automatiquement l'espace disponible et ne requiert donc pas de paramètres supplémentaires. ((NdT: vérifiez à deux fois avant de lancer unmke2fs. 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 :devrait marcher.mount -t ext2 /dev/fd0 /<répertoire vide>
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 :
- Le compiler avec le minimum d'options nécessaire, et laisser tomber tout le reste. Le réseau est un bon candidat à la suppression, ainsi que le support pour les périphériques dont vous n'avez pas besoin pour votre système amorce/racine.
- Le compresser en utilisant l'option standard "noyau compressé" du makefile :
Référez-vous à la documentation du source du noyau pour une description à jour sur la compilation de noyaux compressé. ((NdT: et aussi le Kernel-HOWTO)). Note : le source du noyau est habituellement dansmake zImage/usr/src/linux.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
/devcontenant 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 commandemkdir. Les fichiers périphériques spéciaux doivent par contre être créés par la commandemknod.Il y a un raccourci heureusement : plutôt que de faire un zillion de
mknod, copiez le contenu du répertoire/devet 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 :en supposant que la disquette soit montée surcp -dpR /dev /mnt/mnt. Les optionsdpfont 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 -lpour afficher les numéros de périphérique mineurs et majeurs et créez-les sur disquette avecmknod. Beaucoup de distributions incluent un scriptMAKEDEVdans 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,/procet/etcvous 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 :
/devcomme décrit ci-dessus dans la section "Périphériques"./procdoit juste exister, donc il suffit de le créer avecmkdir.- Deux autres,
/mntet/usrsont (aussi) des répertoires où des partitions sont montées, utilisés plus tard quand le système amorce/racine tournera. Donc, il faut aussi juste les créer.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 :
- Ceux qui sont absolument requis, comme
rc,fstab,passwd.- Ceux qui sont peut-être nécessaires, mais personne n'en est sûr.
- Ceux qui n'ont aucune utilité.
Les fichiers secondaires peuvent être identifiés avec la commande :
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.ls -trulSur mes disquettes racines, j'ai réduit le nombre de fichiers à 15. Ceci réduit le travail à trois ensembles de fichiers :
- Ceux que je dois configurer pour un système amorce/racine :
rc le script de démarrage système fstab liste des partitions à monter inittab paramètres pour le processus init, le premier processus lancé lors du démarrage.- ceux que je réduis pour un système amorce/racine :
Ceux-ci devraient être raccourcis sur les systèmes sécurisés pour éviter de de copier les mots de passe des utilisateurs hors du système, et de telle manière que lorsque vous amorcez depuis la disquette, les "login" non désirés soient rejetés avec toute la vigueur nécessaire.passwd liste des utilisateurs shadow contient les mots de passes ((NdT: dans un système avec les shadow-passwords))- Les autres. Ils marchent pour l'instant, donc je les laisse.
A part ceux-ci, je n'ai eu réellement qu'à adapter deux fichiers, et ce qu'ils doivent contenir est étonnement court.
rcdevrait contenir :et vous n'avez pas besoin en réalité d'utiliser#!/bin/sh /etc/mount -av /bin/hostname amorce_racinehostname. Mêmemountn'est nécessaire que pour monter/procpourps; Linux tournerait sans. ((NdT: vous voudrez probablement ajouter quelque chose comme/bin/loadkeys /etc/fr-latin1.frpour avoir un clavier français. La présence demountdans/etccomme celle deloadkeysdans/binet celle defr-latin1.mapdans/etcn'est pas très conforme au "Linux FileSystem Standard". Sur votre partition disque, ce serait mal)).fstabdevrait contenir :Je ne crois pas que la première ligne soit nécessaire non plus, mais il se trouve que si je l'enlève,/dev/fd0 / ext2 defaults /proc /proc proc defaultsmountne montera pas/proc.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/gettyqui ont desttysou desttySà la fin de la ligne. Quoiqu'il en soit, il n'est pas totalement inutile de laisser les/destty((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
/etcainsi 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, commecpio,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 :
ld.solibc.so.4Si 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 quelibc.so.4peut être un lien symbolique vers une bibliothèque avec un numéro de version inclus dans le nom du fichier. Si vous faites :vous verrez quelque chose comme :ls -l /liblibc.so.4 -> libc.so.4.5.21Dans 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 delibc.so.4commelibc.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 :
- Le périphérique à utiliser pour la racine.
- S'il faut utiliser un disque virtuel en mémoire.
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
mntsur 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/fd0dans 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
ext2sur 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
telinitet/etc/inittabpour en savoir plus sur le mode simple utilisateur)).J'utilise aussi des commandes
DELAY,MESSAGEetTIMEOUT, 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 entré, Linux sera chargé avec les paramètres par défaut après 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 /MBRoù 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.
- Option en ligne de commande - vous pouvez entrer des options en ligne de commande pour définir le périphérique racine, la taille du disque mémoire, des paramètres pour les périphériques, ou d'autres choses encore. Si vous mettez une commande
DELAY = nndans votre fichier de configuration LILO, alors ce dernier s'arrêtera pour vous permettre de choisir le noyau à charger, ainsi que sur la même ligne toute option. Par exemple :passera les paramètresvmlinux aha152x=0x340,11,3,1 roaha152xsuivants au pilote du disque aha152x SCSI (sous réserve que ce pilote ait été inclus dans le noyau lors de sa compilation), et demandera à ce que la racine soit montée en lecture seule (ro).- L'option "
lock" en ligne de commande. Cette option demande à LILO de conserver la ligne de commande entrée comme la ligne de commande par défaut à utiliser pour tous les prochains amorçages. C'est particulièrement utile lorsque vous avez un périphérique qui ne peut pas être sélectionné automatiquement. En utilisantlock, vous pouvez éviter d'avoir à entrer les paramètres du périphérique à chaque démarrage. Par exemple :vmlinux aha152x=0x340,11,3,1 root=/dev/sda8 ro lock- Commande de configuration
APPEND. Elle vous permet de donner une liste de paramètres de périphériques. C'est une alternative àlock. Remarque : toutes les parties de la forme<nom>=<valeur>DOIVENT être mises entre guillemets. Par exemple :APPEND = "aha152x=0x340,11,3,1"- Commande de configuration
DELAY. Elle oblige LILO à faire une pause d'un certain nombre de dixièmes de seconde, et permet à l'utilisateur d'interrompre l'amorçage automatique de la ligne de commande par défaut pour en entrer une autre.
Page suivante Page précédente Table des matières