Disquettes d'amorce Linux Tom Fawcett (fawcett@croftj.net) (traduction : Frank Pavageau, pavageau@imaginet.fr) 3.5, Juillet 1999 Ce document décrit comment définir et créer vos propres disquettes d'amorce et racine pour Linux. Ces disquettes peuvent être utilisées comme disques de secours, ou pour tester de nouveaux composants du système. Si vous n'avez pas lu la FAQ Linux et autres documents du même genre, tels que le HOWTO d'installation Linux et le Guide d'Installation de Linux, vous ne devriez pas essayer de créer de disquettes d'amorce. Si vous souhaitez juste créer des disquettes pour prévenir les cas urgents, lisez l'annexe "Disques d'amorce préfabriqués". Préface

Note : ce document peut être obsolète. Si la date sur la page de titre a plus de six mois, vérifiez la page du Linux Documentation Project (et sa traduction française ) au cas où une version plus récente s'y trouverait. Bien que ce document doive être lisible dans sa forme texte, il a Notes

grahamc@zeta.org.au) a écrit le premier Bootdisk-HOWTO et en a assuré la maintenance jusqu'à la version 3.1. Tom Fawcett (fawcett@croftj.net) a ajouté beaucoup d'informations pour le support du noyau 2.0, et effectue désormais la maintenance du document, depuis la version 3.2. Il contient toujours une bonne partie écrite par Chapman. Ce document concerne . Les informations contenues dans ce document concerne Linux sur plate-forme Retours et remerciements

Tout retour, bon ou mauvais, sur le contenu de ce document est le bienvenu. Nous avons fait de notre mieux pour vérifier que les instructions et informations ici présentes sont précises et fiables. Merci de nous signaler toute erreur ou omission. Nous remercions les nombreuses personnes nous ayant fourni des corrections et suggestions. Leurs contributions ont permis d'améliorer ce document bien au delà de ce que nous aurions pu réaliser seuls. Envoyez vos commentaires, corrections et questions à l'auteur à l'adresse ci-dessus (ou au traducteur pour des problèmes dans la version française). Cela ne me dérange pas d'essayer de répondre à vos questions, mais merci de lire la section d'abord. Politique de distribution

Copyright © 1995,1996,1997,1998,1999 by Tom Fawcett and Graham Chapman. This document may be distributed under the terms set forth in the Linux Documentation Project License at . Please contact the authors if you are unable to get the license.

This is free documentation. It is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. Copyright © 1995,1996,1997,1998,1999 Tom Fawcett et Graham Chapman. Ce document peut être distribué sous les termes de la Licence du Linux Documentation Project lisible à . Merci de contacter les auteurs si vous n'arrivez pas à récupérer la licence.

Cette documentation est libre. Elle est distribuée dans l'espoir d'être utile, mais sans aucune garantie ; sans même la garantie implicite de valeur marchande ou de correspondre à un but particulier. Vous utilisez les informations contenues dans ce document à vos propres risques. Nous déclinons toute responsabilité quant à son contenu. L'utilisation des concepts, des exemples ou de tout autre contenu se fait entièrement à vos propres risques. Tous les droits sont détenus par leurs propriétaires respectifs, sauf mention contraire explicite. L'utilisation d'un terme dans ce document ne constitue pas une limitation à sa validité en tant que marque. Le fait de citer un produit ou une marque particulière ne constitue pas un endossement. Il est fortement conseillé d'effectuer une sauvegarde de votre système avant une installation importante ainsi qu'à intervalles réguliers. Notes du traducteur

Correspondances anglais/français utilisées dans la traduction : I/O : E/S, entrées/sorties. backup : archive. boot loader : chargeur, lanceur. boot : amorce, amorcer, démarrage, démarrer. boot/root disk : disquette d'amorce/racine. dynamic library : bibliothèque partagée. filesystem : système de fichiers, système. inode : i-noeud. library : bibliothèque. loopback device : périphérique de boucle. package : paquetage. path : chemin. ramdisk : disque virtuel en mémoire, disque mémoire. root device : périphérique racine. root : racine. runlevel : niveau d'exécution. swap : pagination. Introduction

Les disques d'amorce Linux sont utiles dans nombre de situations, telles que : Tester un nouveau noyau ; Redémarrer après un problème de disque : tout depuis la perte d'un secteur d'amorce à l'atterrissage d'une tête de lecture sur le disque ; Réparer un système endommagé. Une petite erreur en tant que root peut rendre le système inutilisable, et il peut alors être nécessaire de démarrer depuis une disquette pour corriger le problème ; Mettre à jour des fichiers critiques du système, tels que Les disques d'amorce peuvent être obtenus de différentes manières : Utiliser ceux d'une distribution telle que la Slackware. Cela vous permettra au moins de démarrer ; Utiliser un paquetage de création de disques de secours, prévus pour les cas d'urgence ; Apprendre ce que nécessite le fonctionnement de chaque type de disque, puis créer les vôtres. Certaines personnes choisissent la dernière solution afin de tout faire eux-mêmes. Ainsi, si quelque chose ne marche plus, ils peuvent se débrouiller pour corriger le problème. Et c'est un excellent moyen pour apprendre le fonctionnement d'un système Linux. Ce document suppose une certaine familiarité avec les concepts d'administration d'un système Linux. Par exemple, vous devez connaître les répertoires, les systèmes de fichiers, les disquettes. Vous devez savoir utiliser /etc/passwd et fstab et quelle tête ils ont. Enfin, vous devez savoir que la plupart des commandes dans ce HOWTO doivent être exécutées en tant que root. Créer vos propres disquettes d'amorce à partir de zéro peut être compliqué. Si vous n'avez pas lu la FAQ Linux et autres documents du même genre, tels que le HOWTO d'installation Linux et le Guide d'Installation de Linux, vous ne devriez pas essayer de créer de disques d'amorce. Si vous souhaitez juste créer des disques pour prévenir les cas urgents, il est ci-dessous pour savoir où en trouver. Disques d'amorce et démarrage

Démarrage

sous DOS et /dev/fd0 sous Linux). Le BIOS essaye alors d'exécuter ce secteur. Sur la plupart des disques d'amorce, le secteur 0, cylindre 0 contient : soit le code d'un chargeur tel que LILO, qui trouve le noyau, le charge et l'exécute pour réaliser le démarrage proprement dit, soit le début du noyau d'un système d'exploitation, tel que Linux. Si un noyau Linux a été copié directement sur une disquette, le premier secteur du disque sera le premier secteur du noyau Linux lui-même. Ce premier secteur continuera le démarrage en chargeant le reste du noyau depuis le périphérique d'amorce. Une fois que le noyau est complètement chargé, il effectue certaines initialisations de périphériques. Il essaye ensuite de charger et monter un depuis un périphérique quelconque. Un système de fichiers racine est simplement celui qui est monté en tant que "/". Il faut dire au noyau où trouver ce système racine ; s'il ne peut trouver d'image à charger, il s'arrête. Dans certains cas au démarrage (souvent lors du démarrage depuis une disquette), le système de fichiers racine est chargé dans un , auquel le système accède ensuite en mémoire comme s'il s'agissait d'un vrai disque. Il y a deux raisons à un tel chargement en mémoire. Premièrement, la mémoire vive est plusieurs ordres de magnitude plus rapide qu'une disquette, et le système est donc rapide ; deuxièmement, le noyau peut charger un depuis la disquette et le décompresser en mémoire, permettant ainsi de stocker plus de fichiers sur la disquette. Une fois le système de fichiers racine chargé et monté, vous voyez un message tel que : VFS: Mounted root (ext2 filesystem) readonly. init inittab sysinit A ce moment, le système trouve le programme /bin ou /sbin) et l'exécute. /etc/inittab, cherche une ligne nommée /etc/rc ou /etc/init.d/boot. Le script est un ensemble de commandes shell qui mettent en place les services de base du système, tels que : Lancer sur tous les disques ; Charger les Lancer la pagination ; Initialiser le réseau ; Monter les disques indiqués dans . Ce script appelle lui-même souvent nombre d'autres scripts pour réaliser une initialisation modulaire. Par exemple, dans la structure SysVinit habituelle, le répertoire /etc/rc.d/ contient une structure complexe de sous-répertoires dont les fichiers indiquent comment lancer et arrêter la plupart des services du système. Par contre, sur un disque d'amorce, le script sysinit est souvent très simple. Quand le script sysinit se termine, le contrôle revient à , responsable de la gestion des communications par la console ou les pour gérer la validation du login et mettre en place la session de l'utilisateur. Types de disques

Après avoir revu les bases du démarrage, nous pouvons définir les différents types de disques mis en jeu. Ces disques sont classés en quatre catégories. Ça et là dans le document, on emploie le terme "disque" pour désigner une disquette, sauf précision contraire, bien que la majeure partie de la discussion puisse également s'appliquer à des disques durs. Amorce/racine Un disque contenant à la fois un noyau disque d'amorce/racine et un système de fichiers racine. Autrement dit, il contient tout ce qui est nécessaire au démarrage et au fonctionnement d'un système Linux sans disque dur. L'avantage de ce type de disque est sa compacité : tout ce dont on a besoin est sur un seul disque. Néanmoins, la taille toujours plus importante des programmes implique une difficulté croissante pour tout faire tenir sur une seule disquette, même avec de la compression. En général, lorsque l'on parle de "construire un disque d'amorce", c'est de la création des parties amorce (noyau) et racine (fichiers) qu'il est question, soit en un seul morceau (un seul disque amorce/racine), soit séparément (un disque amorce et un racine). L'approche la plus flexible pour des disquettes de secours est d'utiliser des disquettes amorce et racine séparées, et une ou plusieurs disquettes utilitaires pour supporter le trop-plein. Construire un système racine

Un système racine doit contenir tout ce qui est nécessaire au bon fonctionnement d'un système Linux complet. Pour cela, le disque doit contenir un système Linux minimum : La structure de base des fichiers ; Un ensemble minimum de répertoires : /dev, /proc, /bin, /etc, /lib, /usr, /tmp ; Un ensemble d'utilitaires de base : Un ensemble minimum de fichiers de configuration : Des périphériques : /dev/hd*, /dev/tty*, /dev/fd0, etc ; Des bibliothèques d'exécution fournissant les fonctions de base nécessaires aux utilitaires. Bien sûr, n'importe quel système devient utile dès que l'on peut faire tourner quelque chose dessus, et une disquette racine ne devient en général utilisable que lorsque vous pouvez faire quelque chose du genre : Contrôler un système de fichiers sur un autre disque ; par exemple, pour contrôler le système racine de votre disque dur, vous devez pouvoir démarrer Linux depuis un autre disque, telle qu'une disquette racine. Vous pouvez alors lancer sur votre disque racine habituel tant qu'il n'est pas monté ; Récupérer tout ou partie de votre disque racine initial à partir d'une sauvegarde en utilisant des utilitaires d'archivage et de compression tels que Nous décrirons comment construire un système Création du système de fichiers

Si vous n'avez pas de périphérique de boucle (/dev/loop0, /dev/loop1, etc) sur votre système, vous devez en créer un avec "mknod /dev/loop0 b 7 0". Une fois les exécutables /tmp/fsfile). Vous pouvez utiliser une commande du type : dd if=/dev/zero of=/tmp/fsfile bs=1k count=nnn pour créer un fichier de -o loop" pour dire au programme d'utiliser un périphérique de boucle. mount -o loop -t ext2 /tmp/fsfile /mnt va monter /tmp/fsfile (par périphérique de boucle) sur le point de montage /mnt. Un coup de Après avoir choisi une de ces options, préparez le PÉRIPHÉRIQUE avec : dd if=/dev/zero of=PÉRIPHÉRIQUE bs=1k count=3000 Cette commande initialise à zéro le périphérique. Cette étape est importante pour la compression ultérieure du système de fichiers, afin que toutes les portions inutilisées soient remplies de zéro pour une compression maximum. -i afin de créer plus d'i-noeuds que par défaut ; /dev/ inutiles. /dev vous dépasserez facilement les 360. L'utilisation d'un système racine compressé permet de créer un système de fichiers plus grand, contenant donc plus d'i-noeuds par défaut, mais vous pourrez quand même vouloir réduire le nombre de fichiers ou augmenter le nombre d'i-noeuds. Vous allez donc taper une commande du genre : mke2fs -m 0 -i 2000 PÉRIPHÉRIQUE (Si vous utilisez un périphérique de boucle, le fichier que vous utilisez doit être indiqué à la place de ce PÉRIPHÉRIQUE. mount -t ext2 PÉRIPHÉRIQUE /mnt (Vous devez créer un point de montage /mnt s'il n'existe pas encore.) Dans les sections suivantes, tous les répertoires destination sont supposés relatifs à /mnt. Remplissage du système de fichiers

Voici un minimum raisonnable de répertoires à créer sur votre système racine : /dev : Périphériques, nécessaires aux E/S ; /proc : Répertoire de base nécessaire au système de fichiers proc ; /etc : Fichiers de configuration du système ; /sbin : Exécutables systèmes critiques ; /bin : Exécutables de base considérés comme partie intégrante du système ; /lib : Bibliothèques partagées nécessaires à l'exécution des programmes ; /mnt : Un point de montage pour la maintenance des autres disques ; /usr : Utilitaires et applications supplémentaires. (La structure de répertoires présentée ici concerne uniquement les disquettes racines. Les vrais systèmes Linux ont une politique plus complexe et disciplinée, appelée la Hiérarchie Standard de Système de Fichiers (Filesystem Hierarchy Standard), qui détermine où les fichiers doivent se trouver.) /proc n'est qu'une base sous laquelle le système proc est placé. /mnt et /usr ne sont que des points de montage utilisés une fois que le système amorce/racine tourne. Encore une fois, il suffit de créer ces répertoires. Les quatre autre répertoires sont décrits dans les sections suivantes. /dev

/dev contenant un fichier spécial par périphérique accessible au système. Le répertoire en lui-même est normal, et peut être créé avec . Il y a un raccourci par contre : copiez le contenu de votre répertoire /dev existant, puis supprimez ceux dont vous n'avez pas besoin. Il suffit juste de copier les fichiers spéciaux avec l'option Attention à bien utiliser un R en majuscule ! Si vous utilisez l'option en minuscule cp -dpR /dev /mnt en supposant que la disquette est montée sur /mnt. Les options utilise les périphériques de bande, qu'il vous faudra donc tous copier si vous comptez utiliser votre lecteur de bande depuis le disque amorce. A noter qu'un i-noeud est nécessaire pour chaque fichier de périphérique, et que les /dev de la disquette. Bien des périphériques ne sont clairement pas nécessaires sur des systèmes spécifiques. Par exemple, si vous n'avez pas de disques SCSI vous pouvez tranquillement enlever tous les fichiers commençant par N'oubliez pas d'inclure les fichiers suivants dans le répertoire : /etc

Nécessaires à tout moment, par exemple Peut-être nécessaires, mais on n'en est pas sûr ; Du bazar oublié là. Les fichiers non essentiels peuvent être identifiés avec la commande : ls -ltru Les fichiers sont classés dans l'ordre inverse de dernière date d'accès, donc tout fichier qui n'est jamais lu peut être exclu d'une disquette racine. Sur mes disquettes racine, je n'ai que 15 fichiers de configuration. Mon travail se réduit alors à gérer trois groupes de fichiers : Ceux que je dois configurer pour un système d'amorce et racine : rc.d/* : scripts de démarrage du système et de changement de niveau d'exécution ;  : liste des systèmes de fichiers à monter ;  : paramètres pour le processus , le premier à être lancé au démarrage. Ceux que je dois nettoyer pour un système d'amorce et racine :  : liste des utilisateurs, des répertoires utilisateurs, etc ;  : Si la sécurité est importante, contienne au moins Le reste. Ils fonctionnent très bien tels quel, je ne les modifie donc pas. Parmi tout cela, je n'ai en réalité que deux fichiers à configurer, et ils ne doivent contenir qu'étonnamment peu de choses. #!/bin/sh /bin/mount -av /bin/hostname Kangaroo Vérifiez que ce sont les bons répertoires. Il n'est pas réellement nécessaire de lancer , mais cela donne juste meilleure allure. doit au moins contenir : /dev/ram0 / ext2 defaults /dev/fd0 / ext2 defaults /proc /proc proc defaults Vous pouvez copier des lignes de votre Votre doit être modifié pour que la ligne lance minimal contient cela : id:2:initdefault si::sysinit:/etc/rc 1:2345:respawn:/sbin/getty 9600 tty1 2:23:respawn:/sbin/getty 9600 tty2 Le fichier décrit ce que va lancer le système dans divers états, dont le démarrage, le passage en mode multi-utilisateurs, etc. Attention aux noms de fichiers référencés dans /etc/shutdown référence en dur /etc/reboot. Si je déplace /bin/reboot, et que je lance une commande /etc, ainsi que tous les exécutables présents dans /etc dont vous n'êtes pas sûr de pouvoir vous passer. Basez-vous sur l'exemple de la section . Il vous suffira probablement de copier ces fichiers, mais les systèmes pouvant être très différents, il n'est pas certain que le même ensemble de fichiers sur votre système soit équivalent aux fichiers listés. La seule méthode sure est de partir d'/etc/rc.d/ contenant des scripts shell pour les différents niveaux d'exécution. Il faut au minimum avoir un script et le répertoire /etc/rc.d depuis votre système puis de nettoyer les scripts shell dans le répertoire /bin et /sbin

/bin est un endroit pratique pour tous les utilitaires nécessaires aux opérations de base, tels que pour un exemple d'ensemble de fichiers pouvant aller dans les répertoires /bin et /sbin. Il ne contient aucun des utilitaires nécessaires à la récupération d'une sauvegarde, tels que /usr. La création d'une . Il est probablement souhaitable d'y maintenir une copie des mêmes versions d'utilitaires de sauvegarde que ceux utilisés pour écrire les sauvegardes, histoire de ne pas perdre de temps en essayant d'installer des versions qui ne peuvent pas lire vos bandes de sauvegarde. Vérifiez que vous mettez les programmes suivants : /lib

/lib les bibliothèques partagées et chargeurs nécessaires. Si les bibliothèques nécessaires ne sont pas trouvées dans /lib, le système ne pourra pas démarrer. Avec de la chance, un message vous expliquera pourquoi. Pratiquement tous les programmes ont au moins besoin de la bibliothèque libc.so., /lib, % ls -l /lib/libc.so* -rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so* lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so* Dans le cas présent, il vous faut sur tous les exécutables que vous prévoyez de mettre sur la disquette. Par exemple : % ldd /sbin/mke2fs libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000) libuuid.so.1 => /lib/libuuid.so.1 (0x40028000) libc.so.6 => /lib/libc.so.6 (0x4002c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Tous les fichiers à droite sont nécessaires. Le fichier peut en réalité être un lien symbolique. Notez que certaines bibliothèques sont pour plus d'informations. /lib un chargeur pour les bibliothèques. Il s'agira soit de % file/lib/libc.so.4.7.2 /lib/libc.so.5.4.33 /lib/libc-2.1.1.so /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC), stripped /lib/libc.so.5.4.33: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped /lib/libc-2.1.1.so: ELF 32-bit LSB shared object, Intel 80386, version 1, not stripped Le mot Utilisation de PAM et NSS

Si votre système utilise PAM (Pluggable Authentication Modules, soit Modules Externes d'Authentification), tenez-en compte dans la construction de votre disque d'amorce, sans quoi vous ne pourrez pas vous loguer. En quelques mots, PAM est une méthode modulaire sophistiquée pour authentifier les utilisateurs et contrôler leur accès aux services. Pour déterminer simplement si votre système utilise PAM, cherchez dans le répertoire /etc de votre disque dur un fichier pam.conf ou un répertoire pam.d ; si l'un des deux existe, vous devez prévoir un minimum de support pour PAM. (Vous pouvez aussi lancer ldd sur votre exécutable login ; si la sortie contient libpam.so, vous avez besoin de PAM.) Heureusement, la sécurité est rarement un problème avec les disques d'amorce étant donné que quiconque avec un accès physique à la machine peut en général faire tout ce qu'il veut dessus. Vous pouvez donc complètement désactiver PAM en créant un fichier /etc/pam.conf simple sur votre système racine contenant : OTHER auth optional /lib/security/pam_permit.so OTHER account optional /lib/security/pam_permit.so OTHER password optional /lib/security/pam_permit.so OTHER session optional /lib/security/pam_permit.so Copiez également le fichier /lib/security/pam_permit.so sur votre système racine. Cette bibliothèque ne fait qu'environ 8 Ko et ne coûte donc pas grand chose. Notez bien que cette configuration donne à tous un accès complet aux fichiers et services de votre machine. Si vous avez des impératifs de sécurité sur votre disque d'amorce pour une raison ou une autre, vous devrez copier une partie, voire l'ensemble de la configuration PAM de votre disque dur vers le système racine. Lisez bien attentivement la documentation de PAM, et copiez toutes les bibliothèques nécessaires depuis /lib/security vers votre système racine. Vous devez aussi inclure /lib/libpam.so sur le disque racine. Mais vous le saviez déjà puisque vous avez lancé /bin/login qui vous a montré la dépendance. NSS (Name Service Switch)

Si vous utilisez /etc/nsswitch.conf contrôle les recherches dans les bases de données pour divers services. Si vous ne comptez pas accéder à des services du réseau (tels que des recherches DNS ou NIS), un simple fichier nsswitch.conf comme suit suffit : passwd: files shadow: files group: files hosts: files services: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files automount: files aliases: files netgroup: files publickey: files Ce fichier spécifie que tous les services ne sont fournis que par des fichiers locaux à la machine. Vous devez aussi inclure le fichier /lib/libnss_files.so.1 qui est chargé dynamiquement pour gérer les recherches dans les fichiers. Si vous comptez accéder au réseau depuis votre disque d'amorce, vous pouvez créer un fichier nsswitch.conf plus complet. Voir la page de manuel de nsswitch pour plus de détails. N'oubliez pas d'inclure un fichier /lib/libnss_.so.1 pour chaque Modules

/lib/modules. Vous devez aussi inclure /etc/conf.modules. Néanmoins, le principal avantage à utiliser les modules est que vous pouvez déplacer les modules non essentiels sur un disque utilitaire et ne les charger que lorsque nécessaire, ce qui prend alors moins de place sur le disque racine. Si vous devez gérer beaucoup de périphériques, il vaut mieux procéder de cette manière plutôt que de construire un seul gros noyau contenant tous les gestionnaires. Quelques ultimes détails

Certains programmes, tels que /var/run/utmp et le répertoire /var/log n'existent pas. mkdir -p /mnt/var/{log,run} touch /mnt/var/run/utmp Enfin, après avoir installé toutes les bibliothèques dont vous avez besoin, lancez /etc/ld.so.cache sur le système racine. Le cache indique au loader où trouver les bibliothèques. Pour refabriquer ld.so.cache, lancez les commandes suivantes : chdir /mnt; chroot /mnt /sbin/ldconfig La commande C'est dans la poche

, puis essayer de lire vos sauvegardes. Ce que je veux dire, c'est que quelle que soit la méthode d'E/S que vous utilisez au niveau du noyau pour les sauvegardes, elle doit se trouver aussi sur votre noyau d'amorce. /usr/src/linux. Si vous avez des problèmes pour construire un noyau, vous ne devriez probablement pas essayer de faire de disquette d'amorce/racine de toute manière. Pensez à compresser le noyau avec "Assemblage et fabrication de la ou des disquettes

Vous avez maintenant un noyau et un système de fichiers compressé. Si vous construisez un disque d'amorce/racine unique, vérifiez que leur taille ne dépasse pas celle du disque. Si vous avez un découpage sur deux disquettes, vérifiez que la taille du système racine ne dépasse pas celle de la disquette. Il vous faut choisir entre l'utilisation de LILO pour démarrer le noyau du disque d'amorce et la copie du noyau directement sur la disquette d'amorce, sans /etc/lilo.conf sur votre machine. S'il existe et contient une ligne du type ". Transfert du noyau avec LILO

La dernière étape concerne le transfert du système racine. Si le système racine doit être placé sur le même disque que le noyau, transférez-le avec dd if=rootfs.gz of=/dev/fd0 bs=1k seek=BLOCS_NOYAU Si le système racine doit être placé sur un second disque, sortez la première disquette, mettez la seconde dans le disque, puis transférez-y le système racine : dd if=rootfs.gz of=/dev/fd0 bs=1k Bravo, vous avez fini ! Vous devriez toujours tester un disque d'amorce avant de le ranger jusqu'à la prochaine urgence ! S'il n'arrive pas à démarrer, continuez à lire. En cas de problème, ou L'agonie de la défaite

Si Id xxx respawning too fast: disabled for 5 minutes /etc/inittab sont corrects. Si vous obtenez d'étranges messages de /etc/inittab sont faux. Les options des programmes . Le problème peut aussi venir du fait que vous utilisez les /etc/shadow sur votre disque d'amorce. Sujets divers

Réduire la taille du système racine

. Dans ce cas, les binaires doivent être placés dans un répertoire /bin du disque utilitaire, afin d'être référencés si vous mettez /usr/bin dans votre chemin. Les bibliothèques supplémentaires nécessaires aux binaires sont à placer dans /lib sur le disque utilitaire. Il faut penser à plusieurs choses lorsque l'on crée un disque utilitaire : Ne placez pas de binaires ou de bibliothèques essentiels au système sur le disque utilitaire, puisqu'il ne sera montable qu'une fois le système démarré ; Vous ne pouvez pas utiliser de lecteur de disquette et de lecteur de bande sur port disquette en même temps. Ce qui veut dire que si votre lecteur de bande est sur un port disquette, vous ne pourrez pas y accéder tant que votre disque utilitaire sera monté ; L'accès aux fichiers du disque utilitaire sera lent. L'annexe montre ce que peut contenir un tel disque. Voici quelques idées de fichiers qui peuvent vous être utiles : programmes de diagnostic et de manipulation de disques (La méthode des pros

Q. Je démarre depuis mes disques d'amorce/racine et rien ne se passe. Que faire ?

Voir la section précédente . Q. Comment fonctionne le disque d'amorce Slackware/Debian/RedHat ?

Voir la section précédente . Q. Comment faire un disque d'amorce avec un gestionnaire pour XYZ ?

Le plus simple est d'obtenir un noyau Slackware depuis le site miroir de Slackware le plus proche. Les noyaux Slackware sont des noyaux génériques contenant le plus de gestionnaires pour le plus de périphériques différents possibles. Si vous avez un contrôleur SCSI ou IDE, vous avez de bonnes chances de trouver un gestionnaire correspondant dans le noyau Slackware. Allez dans le répertoire xxxxkern.cfg correspondant au noyau choisi qu'il contient bien les gestionnaires que vous voulez. Si c'est le cas, le noyau correspondant devrait pouvoir démarrer votre ordinateur. Récupérez le fichier xxxxkern.tgz et copiez-le sur votre disquette d'amorce comme indiqué dans la section sur la fabrication des disques d'amorce. rdev zImage /dev/sda2, mais ma partition racine SCSI est sur /dev/sda8. Pour utiliser une disquette racine, vous devrez lancer la commande : rdev zImage /dev/fd0 Si vous voulez aussi savoir comment configurer un disque racine Slackware, cela dépasse le cadre de ce HOWTO, et je vous suggère donc de consulter le Guide d'Installation de Linux ou de récupérer la distribution Slackware. Voir la section de ce HOWTO. Q. Comment mettre à jour le noyau de ma disquette d'amorce ?

de ce HOWTO pour les détails de création d'un disque d'amorce. Le processus décrit s'applique aussi bien à la mise à jour d'un noyau sur le disque d'amorce. Q. Comment mettre à jour ma disquette racine avec de nouveaux fichiers ?

). Montez ensuite le système de fichiers et modifiez-le. Vous devez vous souvenir d'où partait votre système racine et du nombre de blocs qu'il occupait : dd if=/dev/fd0 bs=1k skip=DEBUTRACINE count=BLOCS | \ gunzip > PÉRIPHÉRIQUE mount -t ext2 PÉRIPHÉRIQUE /mnt Une fois les modifications effectuées, recommencez comme précédemment (dans la section ) et retransférez le système racine sur le disque. Vous ne devriez pas avoir à retransférer le noyau ou à recalculer le mot disque mémoire si vous ne changez pas la position de départ du nouveau système de fichiers. Q. Comment retirer LILO pour pouvoir redémarrer DOS ?

/sbin/lilo -u Vous pouvez aussi utiliser la commande FDISK /MBR MBR signifie Master Boot Record (Enregistrement d'Amorce Maître), et il remplace le secteur de démarrage avec une version propre du DOS, sans modifier la table de partitions. Certains puristes n'apprécient pas cette méthode, mais même l'auteur de LILO, Werner Almesberger, le suggère. C'est facile et ça marche. Q. Comment puis-je démarrer si j'ai perdu mon noyau

Si vous n'avez pas de disque d'amorce sous la main, le plus simple est d'obtenir un noyau Slackware pour votre type de contrôleur de disque (IDE ou SCSI) comme décrit précédemment dans "Comment faire un disque d'amorce avec un gestionnaire pour XYZ ?". Vous pouvez alors démarrer votre ordinateur avec ce noyau, puis réparer les dommages éventuels. Le noyau que vous récupérerez peut ne pas avoir comme périphérique racine ce que vous souhaitez comme disque et partition. Par exemple, le noyau générique SCSI de Slackware utilise /dev/sda2 comme périphérique racine, alors que ma partition racine Linux se trouve être /dev/sda8. Dans ce cas il faut changer le périphérique racine. Vous pouvez changer les paramètres de périphérique racine et disque mémoire du noyau même si vous n'avez que le noyau, et un autre système d'exploitation tel que DOS. HEX DEC DESCRIPTION 0x01F8 504 Octet de poids faible du mot disque mémoire 0x01F9 505 Octet de poids fort du mot disque mémoire 0x01FC 508 Numéro mineur du périphérique racine : voir ci-dessous 0X01FD 509 Numéro majeur du périphérique racine : voir ci-dessous L'interprétation du mot disque mémoire était décrite dans la précédente section . Les numéros majeurs et mineurs de périphérique doivent correspondre au périphérique à partir duquel le système racine sera monté. Certaines valeurs utiles parmi lesquelles vous pouvez choisir sont : DEVICE MAJEUR MINEUR /dev/fd0 2 0 1er lecteur de disquette /dev/hda1 3 1 partition 1 sur le 1er disque IDE /dev/sda1 8 1 partition 1 sur le 1er disque SCSI /dev/sda8 8 8 partition 8 sur le 1er disque SCSI Une fois ces valeurs mises en place, vous pouvez écrire le fichier sur une disquette en utilisant soit Norton Utilities Disk Editor, soit un programme appelé Q. Comment faire des copies supplémentaires des disquettes d'amorce/racine ?

Les supports magnétiques se détériorant avec le temps, vous devriez conserver plusieurs copies de votre disque de secours, au cas où l'original n'est plus lisible. Le plus simple pour copier une disquette quelle qu'elle soit, y compris une disquette d'amorce ou utilitaire, est d'utiliser la commande dd if=NOMPÉRIPHÉRIQUE of=NOMFICHIER où NOMPÉRIPHÉRIQUE est le nom du périphérique du lecteur de disquette et NOMFICHIER le nom du fichier de sortie (sur le disque dur) Ne pas mettre le paramètre dd if=NOMFICHIER of=NOMPÉRIPHÉRIQUE A noter que la discussion précédente suppose que vous n'avez qu'un seul lecteur de disquette. Si vous en avez deux du même type, vous pouvez copier les disquettes à l'aide d'une commande du type : dd if=/dev/fd0 of=/dev/fd1 Q. Comment puis-je démarrer sans avoir à taper "ahaxxxx=nn,nn,nn" à chaque fois ?

aha152x=0x340,11,3,1 Cette chaîne peut être fournie de différentes manières grâce à LILO : En l'entrant sur la ligne de commande à chaque démarrage du système avec LILO. C'est assez ennuyeux ; En utilisant le mot clé "En utilisant la directive Par exemple, une ligne de commande utilisant la chaîne ci-dessus serait : zImage aha152x=0x340,11,3,1 root=/dev/sda1 lock Cela passerait la chaîne de paramètres pour le périphérique tout en demandant au noyau d'utiliser /dev/sda1 comme périphérique racine et de sauvegarder la ligne de commande pour la réutiliser pour tous les démarrages futurs. Un exemple de directive APPEND peut être : APPEND = "aha152x=0x340,11,3,1" Attention, la chaîne de paramètres ne doit PAS être entourée de guillemets sur la ligne de commande, mais DOIT l'être dans la directive APPEND. Notez aussi que pour que la chaîne de paramètres soit utilisée, le noyau doit contenir le gestionnaire pour ce type de disque. Si ce n'est pas le cas, personne n'écoute la chaîne de paramètres, et vous devrez reconstruire le noyau pour inclure le gestionnaire requis. Pour plus de détails sur la reconstruction du noyau, rendez-vous dans /usr/src/linux et lisez le README, et lisez la FAQ Linux et le HOWTO Installation. Vous pouvez aussi obtenir un noyau générique pour votre type de disque et l'installer. Il est fortement recommandé aux lecteurs de lire la documentation de LILO avant de faire des expériences d'installation de LILO. Une utilisation imprudente de la directive Q. Au démarrage, j'obtiens l'erreur "A: cannot execute B". Pourquoi ?

/etc/reboot en dur, et /etc ; Pour corriger ces problèmes, vous pouvez soit déplacer les programmes vers le répertoire attendu, soit changer les fichiers de configuration (par exemple /etc/rc.d que sur celui-ci. Q. Mon noyau gère les disques mémoires, mais les initialise à 0 Ko

Quand cela arrive, un message du noyau apparaîtra au moment du démarrage, du type : Ramdisk driver initialized : 16 ramdisks of 0K size C'est probablement parce que la taille a été fixée par les paramètres du noyau à 0 au moment du démarrage. Cela peut être dû à un paramètre oublié dans le fichier de configuration de LILO : ramdisk= 0 Certaines vieilles distributions l'incluaient dans des exemples de fichiers de configuration de LILO, et servaient à écraser les paramètres antérieurs du noyau. Si vous trouvez une telle ligne, supprimez-la. Attention, si vous essayez d'utiliser un disque mémoire dont la taille est de 0 Ko, le comportement est imprévisible et peut conduire à une panique (panic) du noyau. Ressources et pointeurs

les images de Paquetages de secours

Plusieurs paquetages de création de disques de secours existent sur metalab.unc.edu. Vous précisez à ces paquetages un ensemble de fichiers à inclure, et le logiciel automatise (à divers degrés) la création d'un disque d'amorce. Voir pour plus d'informations. Scripts shell et Graham Chapman

Graham Chapman a écrit un ensemble de scripts pouvant être utiles comme exemple sur la manière de créer des disques d'amorce. Dans les précédentes versions de ce HOWTO, les scripts apparaissaient en annexe, mais ils ont été supprimés du document et placés sur une page web : Vous pourrez trouver ces scripts utiles, mais si oui, lisez attentivement les instructions : par exemple, si vous précisez le mauvais périphérique de pagination, vous verrez votre système racine se faire complètement et définitivement effacer. Vérifiez que vous l'avez bien configuré avant de le lancer ! LILO : le chargeur Linux

. Il est aussi disponible sur Metalab et ses miroirs. FAQ Linux et HOWTOs

Ils sont disponibles depuis de nombreuses sources. Jetez un coup d'oeil au forum Usenet et les HOWTOs sur (en français, sur ). La plupart des documentations sur Linux peuvent être trouvées sur la page principale du Linux Documentation Project . Si vous êtes désespéré, envoyez un courrier électronique à Utilisation du disque mémoire

/usr/src/linux/Documentation/ramdisk.txt. C'est écrit par Paul Gortmaker, et comprend une section sur la création d'un disque mémoire compressé. Le processus de démarrage de Linux

Le Linux System Administrators' Guide (Guide des Administrateurs Systèmes Linux) contient une section sur le démarrage. Voir  ; La "Technical overview" (Description technique succincte) de LILO décrit d'une manière extrêmement poussée le processus de démarrage, d'un point de vue technique et bas niveau, jusqu'au moment où le noyau est lancé ; Le code source est le guide ultime. Ci-dessous se trouvent quelques fichiers du noyau relatifs au processus de démarrage. Si vous avez le code source du noyau Linux, vous pouvez les trouver sous /usr/src/linux sur votre machine ; sinon, Shigio Yamaguchi (. Voici quelques fichiers correspondants : arch/i386/boot/bootsect.S,setup.S Contient le code assembleur pour le secteur d'amorce. arch/i386/boot/compressed/misc.c Contient le code pour décompresser le noyau. arch/i386/kernel/ Répertoire contenant le code d'initialisation du noyau. setup.c contient le mot disque mémoire. drivers/block/rd.c Contient le gestionnaire de disque mémoire. Les procédures rd_load et rd_load_image chargent des blocs depuis un périphérique vers un disque mémoire. La procédure identify_ramdisk_image détermine quel type de système de fichiers est trouvé, et s'il est compressé. Codes d'erreur du démarrage de LILO

. Quand LILO se charge, il affiche le mot " /boot/boot.b sans lancer l'installateur de carte. /boot/map sans lancer l'installeur. Si le BIOS signale une erreur lorsque LILO essaye de charger une image d'amorce, le code d'erreur correspondant est affiché. Ces codes vont de Exemple de contenu de répertoires sur un disque racine