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

4. Composants

4.1 Systèmes de fichiers

Le noyau Linux supporte maintenant deux types de systèmes de fichiers pour les disques racines à copier automatiquement sur disque mémoire. Ce sont minix et ext2, ext2 étant le système de fichier préféré. Ce support ext2 a été rajouté quelque part entre les versions 1.1.17 et 1.1.57, je ne sais pas exactement quand. Si vous avez un noyau parmi ces versions, éditez /usr/src/linux/drivers/block/ramdisk.c et cherchez le mot ``ext2''. Si vous ne le trouvez pas, vous aurez à utiliser un système de fichiers minix, créé au moyen de la commande mkfs. Si vous utilisez ext2, vous pourrez trouver pratique d'utiliser l'option -i pour allouer plus d'i-noeuds que par défaut ; on recommande -i 2000 pour ne pas manquer d'i-noeuds. Sinon, vous pouvez économiser des i-noeuds en supprimant les nombreux fichiers inutiles de /dev. Mke2fs créera par défaut 360 i-noeuds sur une disquette 1.44 Mo. Pour ma part, 120 i-noeuds sont suffisants sur mon actuelle disquette de secours racine, mais si vous incluez tous les périphériques dans le répertoire /dev, vous dépasserez allègrement 360. Utiliser un système de fichiers compressé pour la racine permet un système plus grand, et donc plus d'i-noeuds par défaut, mais vous pourriez cependant devoir réduire le nombre de fichiers ou bien augmenter le nombre d'i-noeuds.

Pour créer un système de fichiers ext2 sur une disquette, sur ma machine, je lance la commande suivante :

        mke2fs -m 0 /dev/fd0

La commande mke2fs va automatiquement détecter l'espace disponible et se configurer en fonction. Eventuellement, la taille de la disquette en blocs de 1Ko peut être spécifiée pour accélérer l'opération de mke2fs. Le paramètre -m 0 évite à mke2fs de réserver de la place pour root, ce qui laisse plus de place disponible sur le disque.

Une manière simple de tester le résultat est de créer un système en utilisant la commande ci-dessus ou une commande approchant, et d'essayer ensuite de monter la disquette. S'il s'agit d'un système ext2, alors la commande :

        mount -t ext2 /dev/fd0 /<point d'entrée>
devrait fonctionner.

4.2 Noyau

Construire un noyau personnalisé

Dans la plupart des cas, il serait possible de copier votre noyau actuel et d'amorcer la disquette avec ça. Cependant, il peut y avoir des cas où vous souhaitez construire un noyau différent.

Une raison peut être la taille. Le noyau est un des plus gros fichiers, sur un système de taille minimale, et si vous souhaitez créer une disquette amorce/racine, vous aurez à réduire la taille du noyau autant que possible. Le noyau supporte désormais le changement de disquette après amorçage et avant de monter la racine, et comme il n'est donc plus nécessaire d'entasser le noyau sur le même disque que tout le reste, ces commentaires ne s'appliquent que si vous décidez de construire une disquette amorce/racine.

Il y a deux manières de réduire la taille du noyau :

  • Le construire avec le minimum d'options nécessaires pour faire fonctionner le système désiré. Cela impose de ne conserver que ce dont vous avez besoin. Le support réseau est un candidat à l'élimination, tout comme le support pour tous disques et autres périphériques que vous n'utilisez pas avec votre système amorce/racine.
  • Le compresser, en utilisant l'option standard de compression du noyau incluse dans le makefile :
            make zImage
    
    Reportez vous à la documentation incluse avec les sources du noyau pour une information à jour sur la construction de noyaux compressés. Notez que les sources du noyau sont généralement dans /usr/src/linux.

Une fois choisi le minimum d'options à inclure dans un noyau, vous devez choisir quoi remettre dedans. L'utilisation la plus commune d'une disquette amorce/racine est probablement d'examiner et restaurer un système de fichiers racine corrompu, et cela nécessite éventuellement du support dans le noyau.

Par exemple, si vos sauvegardes sont stockées sur bandes en utilisant Ftape pour accéder au lecteur et que vous perdez votre disque racine ainsi que les disques contenant Ftape, vous ne pourrez alors pas restaurer votre système à partir des bandes de sauvegarde. Vous devrez réinstaller Linux, récupérer et réinstaller Ftape, et seulement alors essayer de relire vos sauvegardes.

Il est souhaitable de maintenir une copie des mêmes versions des utilitaires servant à écrire les sauvegardes, afin de ne pas perdre de temps à essayer d'installer des versions ne pouvant pas lire vos bandes de sauvegarde.

Ce qu'il faut comprendre, c'est que tout support d'entrées/sorties que vous avez ajouté à votre noyau pour réaliser des sauvegardes doit aussi être ajouté à votre noyau d'amorce/racine.

La procédure pour reconstruire le noyau est decrite dans la documentation accompagnant le noyau. C'est assez simple à suivre, donc commencez par regarder dans /usr/src/linux. Si vous avez des problèmes pour construire un noyau, vous ne devriez probablement pas essayer de construire des disques amorce/racine de toute manière.

4.3 Périphériques

Tout système Linux nécessite un répertoire /dev contenant un fichier spécial pour tous les périphériques utilisées par le système. Le répertoire lui-même est un répertoire normal, et peut être créé avec la commande mkdir de la manière habituelle. Les fichiers spéciaux de périphériques doivent par contre être créés d'une certaine manière, avec la commande mknod.

Il y a un raccourci cela dit - copiez votre répertoire /dev existant, et supprimez ceux dont vous n'avez pas besoin. La seule chose à faire est de copier les fichiers spéciaux de périphériques en utilisant l'option -R.

Attention : la commande cp fournie avec la plus récente version des fileutils (3.13) semble ne pas respecter l'option -R.

Cela copie le répertoire sans essayer de copier le contenu des fichiers. Si vous utilisez un r minuscule, à savoir ``-r'', le comportement sera très différent, puisque vous essaierez de copier tout le contenu de tous vos disques - ou tout au moins ce qui tiendra sur une disquette ! Faites donc attention, et utilisez la commande :

        cp -dpR /dev /mnt
en supposant que la disquette est montée sur /mnt. Les options dp conservent les liens symboliques en tant que tels lors de la copie (au lieu de copier le fichier pointé) ainsi que les attributs des fichiers originaux, préservant donc les informations de propriété.

Vous pouvez aussi utiliser l'option -p de cpio, car cpio traitera les fichiers spéciaux de périphériques correctement et n'essaiera pas d'en copier le contenu. Par exemple :

        cd /dev
        find . -print | cpio -pmd /mnt/dev
copiera tous les fichiers spéciaux de /dev sur /mnt/dev. En fait, cela copiera tous les fichiers dans l'arborescence de répertoires commençant à /dev, et créera tous les sous-répertoires nécessaires dans l'arborescence cible.

Si vous cherchez la complexité, utilisez ls -l pour connaître les numéros de périphériques majeurs et mineurs de ceux que vous voulez, et créez les sur la disquette en utilisant mknod.

De nombreuses distributions incluent un script shell appelé MAKEDEV dans le répertoire /dev. Ce script shell pourrait être utilisé les périphériques, mais il est sans doute plus facile de copier ceux existant, surtout pour un disque de secours.

Quelle que soit la manière dont le répertoire de périphériques est copié, cela vaut la peine de vérifier que tous les fichiers spéciaux dont vous avez besoin sont présents sur la disquette de secours. Par exemple, Ftape utilise des périphériques de bande, et vous devrez donc copier tous ceux-là.

Notez qu'un i-noeud est requis pour chaque fichier spécial et que les i-noeuds peuvent parfois être rares, surtout pour des systèmes de fichiers sur disquette. Il est donc utile de supprimer tous les fichiers spéciaux dont vous n'avez pas besoin dans le répertoire /dev de la disquette. De nombreux périphériques sont clairement inutiles sur des systèmes spécifiques. Par exemple, si vous n'avez pas de disques SCSI, vous pouvez supprimer sans problèmes tous les fichiers de périphériques commençant par ``sd''. De même, si vous n'avez pas l'intention d'utiliser le port série, tous les fichiers commençant par ``cua'' peuvent disparaître.

4.4 Répertoires

Il est peut-être possible de faire fonctionner un système Linux uniquement avec /dev, /proc et /etc. Je ne sais pas - je n'ai jamais essayé. Toutefois, cela risque de s'avérer difficile, car sans bibliothèques partagées tous vos exécutables devraient être compilés statiquement. Il est raisonnable d'avoir au minimum les répertoires :

/dev

Nécessaire pour les entrées/sorties avec les périphériques

/proc

Nécessaire pour la commande ps

/etc

Fichiers de configuration du système

/bin

Exécutables des utilitaires considérés comme faisant partie du système

/lib

Bibliothèques partagées nécessaires au fonctionnement

/mnt

Un point de montage pour effectuer des opérations de maintenance sur d'autres disques

/usr

Utilitaires et applications supplémentaires

L'arborescence présentée ici n'est à utiliser que sur une disquette racine. Consultez le Standard de Système de Fichiers Linux (Linux File System Standart) pour de plus amples informations sur la structure des systèmes de fichiers sur des systèmes Linux ``standards''.

Quatre de ces répertoires peuvent être créés facilement :

  • /dev est décrit ci-dessus dans la section intitulée Périphériques.
  • /proc doit juste être présent. Il n'y a juste qu'à créer le répertoire avec mkdir.
  • /mnt et /usr sont uniquement inclus dans cette liste comme points de montage à utiliser une fois que le système amorce/racine fonctionne. Ici aussi, ces répertoires n'ont qu'à être créés.

Les 3 répertoires restants sont décrits dans les sections suivantes.

/etc

Ce répertoire doit contenir un certain nombre de fichiers de configuration. Sur la plupart des systèmes, on peut les répartir en 3 groupes :

  • Nécessaire en permanence, par exemple rc, fstab, passwd.
  • Eventuellement nécessaire, mais personne n'est sûr.
  • Le bazar qui s'est accumulé

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

        ls -ltru
On obtient la liste des fichiers dans l'ordre inverse de leur date de dernier lecture, et si des fichiers ne sont jamais lus, ils peuvent être omis de la disquette racine.

Sur mes disquettes racine, je n'ai conservé que 15 fichiers de configuration. Mon travail se trouve réduit à trois groupes de fichiers :

  • Ceux que je dois configurer pour un système amorce/racine :
            rc.d/*  scripts de démarrage et de changement de niveau de
                    fonctionnement (run level)
            fstab   liste de systèmes de fichiers à monter
            inittab paramètres pour le processus init - le premier
                    processus lancé au démarrage.
    
  • Ceux que je dois nettoyer pour un système amorce/racine :
            passwd  liste des utilisateurs
            shadow  qui contient les mots de passe
    
    Ces fichiers doivent être nettoyés sur des systèmes sécurisés afin de ne pas copier les mots de passe des utilisateurs ailleurs que sur le système, et pour que lorsque vous démarrez depuis une disquette, les logins invalides soient rejetés.
    Notez qu'il y a une raison pour ne pas nettoyer passwd et shadow. Tar (et probablement d'autres programmes d'archives) stocke les noms d'utilisateurs et de groupes avec les fichiers. Si vous restaurez des fichiers sur votre disque dur depuis une bande, les fichiers seront restaurés avec leurs noms originaux, Si ces noms n'existent pas dans passwd/group quand ils sont restaurés, les IUD/GID ne seront pas corrects.
  • Le reste. Ils fonctionnent pour l'instant, je n'y touche donc pas.

Parmi tout ça, je n'ai réellement que deux fichiers à configurer, et leur contenu est étonnamment petit.

  • rc doit contenir :
            #!/bin/sh       
            /etc/mount -av
            /bin/hostname boot_root
    
    où je n'ai pas vraiment besoin de lancer hostname - ça a juste meilleure allure si je le fais. Même mount est uniquement nécessaire pour monter /proc pour que ps fonctionne - Linux fonctionne sans ça, bien que les opérations de secours soient assez limitées sans mount !
  • fstab doit contenir :
            /dev/ram        /               ext2    defaults
            /dev/fd0        /               ext2    defaults
            /proc           /proc           proc    defaults
    
    Je ne crois pas que la première ligne soit vraiment nécessaire, mais j'ai remarqué que si je ne la mets pas, mount ne monte pas /proc.

Inittab devrait convenir tel quel, sauf si vous voulez vous assurer que les utilisateurs par port série ne peuvent pas se connecter. Pour éviter cela, commentez toutes les lignes avec /etc/getty contenant un périphérique tty ou ttyS au bout de la ligne. Laissez les ports tty pour pouvoir vous connecter sur la console.

Inittab définit ce que le système lance ou relance à différents moments, comme le démarrage, le passage en mode multi-utilisateurs, les pertes d'alimentation, etc. Il faut faire s'assurer que les commandes présentes dans inittab correspondent à des programmes présents, ainsi qu'au bon répertoire. Si vous placez vos fichiers de commandes sur le disque de secours en utilisant l'exemple de contenu de répertoires fourni dans ce HOWTO comme guide, puis copiez votre inittab sur le disque de secours sans le vérifier, il y a de fortes chances que cela ne fonctionne pas, car la moitié des lignes de l'inittab feront référence à des programmes inexistants ou placés dans le mauvais répertoire.

Il faut aussi noter que certains programmes ne peuvent être déplacés d'un répertoire vers un autre sans mal fonctionner au démarrage car ils référencent directement dans leur code le nom d'un autre programme qu'ils essayent de lancer. Par exemple sur mon système, /etc/shutdown contient directement le chemin /etc/reboot. Si je déplace reboot vers /bin/reboot puis que je lance une commande shutdown, elle ne va pas marcher puisqu'elle ne pourra pas trouver le fichier reboot.

Pour le reste, copiez simplement tous les fichiers texte dans votre répertoire /etc, ainsi que tous les exécutables dans votre répertoire /etc dont vous n'êtes pas sûr de pouvoir vous débarrasser. Pour vous guider, consultez la sortie exemple de ls dans ``Contenu des répertoires du disque racine (ls -lR)'' - c'est ce que j'ai, et ça devrait donc vous suffire si vous copiez ces fichiers - mais notez que les systèmes peuvent être très différents, et on ne peut donc pas être certain qu'un ensemble de fichiers sur votre système est équivalent au même sur le mien. La seule méthode sure est de démarrer avec inittab et déterminer ce qui est nécessaire.

La plupart des systèmes utilisent maintenant un répertoire /etc/rc.d contenant des scripts shell pour les différents niveaux de fonctionnement (run levels). Le minimum absolu est un fichier rc unique, mais il sera sans doute beaucoup plus simple en pratique de copier le fichier inittab et le répertoire /etc/rc.d de votre système, et nettoyer les scripts shell dans rc.d pour supprimer tous les traitements inutiles à un environnement système sur disquette.

/bin

C'est le bon endroit pour placer les autres utilitaires dont vous avez besoin pour les opérations de base, tels que ls, mv, cat, dd, etc.

Voir la section intitulée ``Exemple de ls -lR pour amorce/racine'' pour une liste des fichiers que je place dans le répertoire /bin de ma disquette amorce/racine. Vous pourrez remarquer qu'aucun des utilitaires nécessaires à la restauration d'une sauvegarde, tels que cpio, tar, gzip, etc, ne s'y trouvent. C'est parce que je les place sur une disquette utilitaire séparée, pour garder de la place sur la disquette amorce/racine. Après avoir démarré sur ma disquette amorce/racine, son contenu est copié dans le disque mémoire, laissant le lecteur de disquette libre pour monter une autre disquette, la disquette utilitaire. Je la monte en général sur /usr.

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

/lib

Dans /lib vous placez certaines bibliothèques partagées ainsi que les chargeurs. Si les bibliothèques nécessaires ne sont pas trouvées dans votre répertoire /lib, le système ne pourra pas démarrer. Si vous avez de la chance, vous verrez un message d'erreur vous expliquant pourquoi.

Pratiquement tous les programmes nécessitent au moins la bibliothèque libc :

        libc.so.X
où X représente le numéro de version courante. Vérifiez dans votre répertoire /lib. Notez que libc.so.4 peut être un lien symbolique vers une bibliothèque libc avec un numéro de version dans le nom. Si vous lancez la commande :
        ls -l /lib
vous obtiendrez quelque chose du genre :
        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. Ce n'est qu'un exemple - la bibliothèque libc ELF est actuellement libc.so.5.xxxx.

Pour trouver d'autres bibliothèques, vous devrez tester les dépendances de tous les binaires que vous souhaitez utiliser. La commande ldd sert à ça. Par exemple, sur mon système la commande :

        ldd /bin/mount
renvoie comme résultat :
        /bin/mount:
                libc.so.5 => /lib/libc.so.5.2.18
indiquant que /bin/mount a besoin de la bibliothèque libc.so.5, qui est un lien symbolique sur libc.so.5.2.18.

Vous devez aussi placer dans /lib un ou plusieurs chargeurs pour charger les bibliothèques. Le fichier du chargeur est soit ld.so (pour les bibliothèques au format a.out), soit ld-linux.so (pour les bibliothèques ELF). Si vous n'êtes pas sûr duquel vous avez besoin, lancez la commande ``file'' sur la bibliothèque. Par exemple, sur mon système :

        file /lib/libc.so.5.2.18
me répond :
        /lib/libc.so.5.2.18: ELF 32-bit LSB shared object ...
et par conséquent elle a besoin d'un chargeur ELF. Si vous avez une bibliothèque a.out, vous obtiendrez un résultat du genre :
        /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC) ...

Copiez le(s) chargeur(s) spécifique(s) dont vous avez besoin.

Il faut vérifier que les bibliothèques et chargeurs correspondent bien aux binaires utilisés. Si le noyau ne peut pas charger une bibliothèque indispensable, il plantera en général sans message d'erreur.

4.5 LILO

Aperçu

Pour que l'amorce/racine soit utilisable, elle doit être amorçable. Pour ce faire, le plus simple est d'installer un chargeur, qui est un morceau de code executable stocké sur le secteur 0 du cylindre 0 de la disquette. Voir la section ci-dessus intitulée ``Disquettes de boot'' pour une description du processus.

LILO est un chargeur longuement testé et éprouvé disponible sur tout site miroir Linux. Il vous permet de configurer le chargeur, en particulier :

  • Quel périphérique doit être utilisé comme disque racine
  • S'il faut utiliser un disque mémoire

Exemple de configuration de LILO

Cela permet de spécifier au noyau comment il doit démarrer. Mon fichier de configuration de LILO pour l'amorce/racine, 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/zImage 
        ramdisk = 1440
        root = /dev/fd0

Notez que je ne l'ai pas testé récemment, car je n'utilise plus de disquettes amorce/racine utilisant LILO. Il n'y a aucune raison de supposer que cela ne fonctionne plus, mais si vous essayez et que cela ne marche pas, vous devez lire la documentation de LILO pour savoir pourquoi.

Notez aussi que les systèmes amorce/racine n'ont plus besoin de LILO, car depuis la version 1.3.48, le noyau supporte le chargement d'un système de fichiers compressé depuis la même disquette que le noyau. Voire la section Création de disquette de démarrage élaborée pour les détails.

Si vous avez un noyau postérieur à la version 1.3.48, la ligne ``ramdisk = 1440'' est inutile et doit être retirée.

Notez que boot.b, lilo.msg et le noyau doivent préalablement avoir été copiés sur la disquette en utilisant une commande du genre :


cp /boot/boot.b ./mnt

Si cela n'est pas fait, LILO ne fonctionnera pas correctement au démarrage si le disque dur n'est pas disponible, et un disque de secours qui nécessite la présence du disque dur pour démarrer est d'une utilité douteuse.

Je lance lilo avec la commande :

        /sbin/lilo -C <fichier de configuration>

Je le lance depuis le répertoire contenant le répertoire mnt où la disquette est montée. Cela signifie que je demande à LILO d'installer un chargeur sur le périphérique de démarrage (/dev/fd0 dans ce cas), pour démarrer un noyau situé dans le répertoire racine de la disquette.

J'ai aussi spécifié que je veux utiliser la disquette comme périphérique racine, et que je veux qu'un disque mémoire de 1440 blocs de 1 Ko soit créé, à savoir la taille de la disquette. Puisque j'ai créé un système de fichiers ext2 sur la disquette, toutes les conditions sont remplies pour que Linux utilise automatiquement le disque mémoire comme périphérique racine, et y copie le contenu de la disquette.

Les possibilités de Linux concernant les disques mémoires sont décrites de manière plus poussées dans la section ci-dessus intitulée ``Disques mémoires et systèmes amorce/racine''.

On peut aussi envisager d'utiliser le paramètre ``single'' pour démarrer Linux en mode mono-utilisateur. Cela permet d'empêcher les utilisateurs de se connecter par les ports série.

J'utilise aussi les instructions ``DELAY'', ``MESSAGE'' et ``TIMEOUT'' pour que lorsque je démarre le disque, LILO me laisse la possibilité d'entrer des options en ligne de commande si je le souhaite. Je n'en ai pas besoin actuellement, mais on ne sait jamais si l'on ne souhaitera pas changer de périphérique racine ou monter un système de fichiers en lecture seule.

Le fichier de messages que j'utilise contient le message :

Disquette amorce/racine Linux
=============================

Entrez une ligne de commandes de la forme :

        zImage [ options en ligne ]

Si rien n'est entré, Linux sera chargé avec les paramètres
par défaut dans 15 secondes.

Il ne s'agit que d'un aide-mémoire pour me rappeler mes options.

Les lecteurs sont invités à lire la documentation de LILO de manière attentive avant d'essayer 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 avant d'être sûr que vous le comprenez et d'avoir vérifié de nombreuses fois vos paramètres.

Notez que vous devez relancer LILO à chaque fois que vous changez le noyau, pour que LILO puisse mettre à jour sa cartographie en fonction du nouveau noyau. Il est en fait possible de remplacer le noyau par un autre quasiment identique sans relancer LILO, mais mieux vaut ne pas parier la dessus - si vous changez de noyau, relancez LILO.

Retirer LILO

Je peux aussi ajouter ceci tant que j'en suis à parler de LILO : si vous installez par erreur LILO sur un disque contenant DOS, vous pouvez toujours remplacer le secteur d'amorce par le chargeur du DOS en tapant la commande DOS :

        FDISK /MBR

où MBR signifie ``Master Boot Record''. Notez que quelques puristes ne sont pas d'accord, éventuellement avec raison, mais cela marche.

Options utiles de LILO

LILO a plusieurs options utiles qu'il est bon de se rappeler lorsque l'on crée des disques de démarrage :

  • Options en ligne de commande - vous pouvez entrer des options en ligne de commande pour changer le périphérique racine, la taille du disque mémoire (pour les noyaux antérieurs à 1.3.48), des paramètres spéciaux pour certains périphériques, ou d'autres choses encore. Si vous incluez l'instruction ``DELAY = nn'' dans votre fichier de configuration LILO, LILO fera alors une pause pour vous permettre de sélectionner une image noyau à amorcer, et d'entrer sur la même ligne, des options. Par exemple :
            zImage aha152x=0x340,11,3,1 ro 
    
    passera les paramètres aha152x jusqu'au gestionnaire de disque SCSI aha152x (à condition que ce gestionnaire ait été inclus à la construction du noyau) et demandera à ce que le système de fichiers racine soit monté en lecture seule.
  • Option en ligne de commande ``lock'' - cette option demande à LILO de stocker la ligne de commande entrée comme ligne de commande par défaut pour tous les démarrages futurs. C'est particulièrement utile lorsque vous utilisez un périphérique qui ne peut pas être auto-sélectionné. En utilisant ``lock'' vous évitez d'avoir à taper la chaîne de paramètre du gestionnaire à chaque démarrage. Par exemple :
            zImage aha152x=0x340,11,3,1 root=/dev/sda8 ro lock
    
  • instruction de configuration APPEND - cela permet de stocker des chaînes de paramètres pour gestionnaires dans la configuration, comme alternative à l'utilisation de l'option ``lock''. Notez que tous les mots clés de la forme mot=valeur DOIVENT être entourés par des guillemets. Par exemple :
            APPEND = "aha152x=0x340,11,3,1"
    
  • instruction de configuration DELAY - cela provoque une pause de DELAY dixièmes de secondes et permet à l'utilisateur d'interrompre le démarrage automatique de la ligne de commande par défaut, afin qu'il puisse en entrer une autre.


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