Page suivante Page précédente Table des matières

6. 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 LILO. L'avantage de LILO est la possibilité de passer des paramètres au noyau, ce qui peut être nécessaire pour initialiser votre matériel (Regardez le fichier /etc/lilo.conf sur votre machine. S'il existe et contient une ligne du type "append=...", vous avez besoin de passer des paramètres). Son inconvénient est une complexité accrue dans la construction du disque d'amorce, ainsi qu'une place occupée sur la disquette légèrement plus importante. Vous devrez configurer un petit système de fichier séparé que nous appellerons le système noyau, où vous transférerez le noyau ainsi que quelques autres fichiers nécessaires à LILO.

Si vous décidez d'utiliser LILO, continuez la lecture ; si par contre vous voulez copier le noyau directement sur la disquette, passez directement à la section Transfert du noyau sans LILO.

6.1 Transfert du noyau avec LILO

La première chose à faire est de créer un petit fichier de configuration pour LILO. Il doit ressembler à :


        boot      =/dev/fd0
        install   =/boot/boot.b
        map       =/boot/map
        read-write
        backup    =/dev/null
        compact
        image     = NOYAU
        label     = Bootdisk
        root      =/dev/fd0

Pour la signification de ces paramètres, voir la documentation utilisateur de LILO. Il vous faudra probablement aussi rajouter une ligne append=... à ce fichier, comme dans le fichier /etc/lilo.conf de votre disque dur.

Sauvez-le en tant que bdlilo.conf.

Vous devez maintenant créer un petit système de fichier, que nous appellerons système noyau, pour le différencier du système racine.

Tout d'abord, calculez la taille que celui-ci doit faire. Prenez la taille de votre noyau en blocs (la taille donnée par "ls -l NOYAU" divisée par 1024 et arrondie au chiffre supérieur), et ajoutez 50. Cinquante blocs sont en gros la taille nécessaire aux i-noeuds ainsi qu'aux autres fichiers. Vous pouvez calculer le nombre exact si vous voulez, ou simplement utiliser 50. Si vous créez un ensemble avec deux disques, vous pouvez carrément surestimer l'espace nécessaire puisque le disque n'est utilisé que par le noyau de toute manière. Appelez ce nombre BLOCS_NOYAU.

Mettez une disquette dans le lecteur (pour simplifier, supposons qu'il s'agit de /dev/fd0) et créez le système noyau ext2 dessus :

        mke2fs -i 8192 -m 0 /dev/fd0 BLOCS_NOYAU

L'option "-i 8192" indique que l'on souhaite un i-noeud pour 8192 octets. Ensuite, montez le système, supprimez le répertoire lost+found et créez des répertoire dev et boot pour LILO :

        mount /dev/fd0 /mnt
        rm -rf /mnt/lost+found
        mkdir /mnt/{boot,dev}

Ensuite, créez les périphériques /dev/null et /dev/fd0. Au lieu de chercher leurs numéros de périphériques, vous pouvez simplement les copier depuis votre disque dur avec l'option -R :

        cp -R /dev/{null,fd0} /mnt/dev

LILO a besoin d'une copie de son chargeur d'amorce, boot.b, que vous pouvez trouver sur votre disque dur. Il est d'habitude dans le répertoire /boot.

        cp /boot/boot.b /mnt/boot

Enfin, copiez le fichier de configuration de LILO que vous avez créé précédemment, avec votre noyau. Les deux peuvent être placés dans le répertoire racine :

        cp bdlilo.conf NOYAU /mnt

Tout ce dont LILO a besoin est maintenant sur le système noyau, vous pouvez donc le lancer. Le paramètre -r de LILO est utilisé pour installer le chargeur sur une autre racine que la courante :

        lilo -v -C bdlilo.conf -r /mnt

LILO doit s'exécuter sans erreur, après quoi le système noyau devrait ressembler à :


total 361
  1 -rw-r--r--   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:22 dev/
358 -rw-r--r--   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 -rw-r--r--   1 root     root         3708 Jan 10 07:22 boot.b
  4 -rw-------   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw-r-----   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw-r--r--   1 root     root       1,   3 Jan 10 07:22 null

Ne vous inquiétez pas si la taille des fichiers n'est pas exactement la même que la votre.

Laissez maintenant le disque dans le lecteur et allez à la section Mise en place du mot disque mémoire.

6.2 Transfert du noyau sans LILO

Si vous n'utilisez pas LILO, transférez le noyau sur le disque d'amorce avec la commande dd :

        % dd if=NOYAU of=/dev/fd0 bs=1k
        353+1 records in
        353+1 records out

Dans ce exemple, dd a écrit 353 enregistrements complets, plus 1 partiel, ce qui signifie que le noyau occupe les 354 premiers blocs de la disquette. Appelez ce nombre BLOCS_NOYAU et pensez à l'utiliser dans la section suivante.

Enfin, indiquez que le périphérique racine doit être la disquette elle-même, et que le noyau doit être chargé en lecture/écriture.

        rdev /dev/fd0 /dev/fd0
        rdev -R /dev/fd0 0

Attention à bien utiliser un -R majuscule dans la seconde commande rdev.

6.3 Mise en place du mot disque mémoire

Le mot disque mémoire situé dans l'image du noyau permet de spécifier où se trouve le système racine, ainsi que d'autres options. Le mot peut être lu et modifié avec la commande rdev, et sa valeur s'interprète de la manière suivante :

        bits  0-10 :    Décalage jusqu'au début du disque mémoire, en blocs
                        de 1024 octets
        bits 11-13 :    Inutilisé
        bit     14 :    Drapeau indiquant s'il faut charger un disque mémoire
        bit     15 :    Drapeau pour faire une pause avant de charger le
                        système racine

Si le bit 15 est mis à 1, le noyau vous demandera au moment du démarrage de changer la disquette dans le lecteur. C'est nécessaire si vous utilisez un ensemble de deux disques.

Il y a deux cas, suivant que vous créez une disquette d'amorce/racine unique ou un ensemble "amorce+racine" séparé.

  1. Si vous créez un disque unique, le système racine compressé sera placé juste après le noyau, et donc le décalage sera le premier bloc libre (qui doit être au même endroit que BLOCS_NOYAU). Le bit 14 sera mis à 1, et le bit 15 à 0. Supposons par exemple que vous construisez un disque unique dont le système racine doit commencer au bloc 253 (valeur décimale). Le mot disque mémoire devrait valoir 253 (toujours en décimal) avec le bit 14 à 1 et le bit 15 à 0. Pour calculer sa valeur vous pouvez simplement additionner les valeurs décimales. 253 + (2^14) = 253 + 16384 = 16637. Si vous ne comprenez pas d'où sort ce nombre, entrez-le dans une calculatrice scientifique et convertissez-le en binaire.
  2. Si vous créez par contre un ensemble de deux disques, le système racine sera au bloc zéro du second disque, et le décalage sera donc zéro. Le bit 14 sera mis à 1 tout comme le bit 15. La valeur décimale sera donc de 2^14 + 2^15 = 49152 dans ce cas.

Après avoir bien calculé la valeur du mot disque mémoire, écrivez-le avec rdev -r. Attention à utiliser la valeur décimale. Si vous utilisez LILO, l'argument de rdev doit être le chemin d'accès au noyau monté, c'est à dire /mnt/vmlinuz ; si vous avez copié le noyau avec dd, utilisez à la place le nom du périphérique du lecteur de disquette (c'est à dire /dev/fd0).

        rdev -r NOYAU_OU_LECTEUR_DE_DISQUETTE VALEUR

Si vous avez utilisé LILO, démontez maintenant la disquette.

6.4 Transfert du système racine

La dernière étape concerne le transfert du système racine.

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.


Page suivante Page précédente Table des matières