
          Mini Howto Linux pour systmes sans lecteur de disque(ttes)

par Robert Nemkin buci@math.klte.hu
Traducteur: Sbastien Blondeel ( sebastien.blondeel@lifl.fr)

   v0.0.3 12 Sep 1996
     _________________________________________________________________

   _Ce document dcrit la manire de configurer un systme sous Linux
   sans disque dur ni lecteur de disquettes. Ses droits appartiennent 
   Robert Nemkin, et il est plac sous les termes de la Publique Gnrale
   GNU. L'auteur remercie Bela Kis <bkis@cartan.math.klte.hu> pour avoir
   traduit ce document en anglais. Sbastien Blondeel,
   <Sebastien.Blondeel@lifl.fr> a traduit ce document en franais._
     _________________________________________________________________

1. Modifications

     * v0.0.3 12 Sep 1996: Quelques erreurs mineures ont t corriges

2. Comment configurer un systme sous Linux sans lecteur de disque(ttes)

   Ce document dcrit la manire de configurer un systme sous Linux sans
   disque dur ni lecteur de disquette. Il peut parfois s'avrer
   ncessaire de faire tourner Linux sur des ordinateurs personnels
   ("PC") qui ne possdent ni disque dur ni lecteur de disquettes. Si on
   dispose d'un rseau, d'un autre systme sous Unix avec bootp et tftp,
   d'un serveur NFS et d'un brleur d'EPROM, alors il est possible de
   configurer et de faire tourner un systme sous Linux sans disque dur
   ni disquette.

3. Consulter galement les documents suivants:

     * NFS-root Mini Howto
     * Linux NET-2/3-HOWTO par Terry Dawson,
       94004531@postoffice.csu.edu.au
     * /usr/src/linux/README pour la configuration et la compilation de
       nouveaux noyaux

4. Matriel

   Tout ce qui est dcrit ici a t test avec la configuration suivante:
     * Sun-OS 4.1.3 comme serveur d'amorage
     * Slackware 2.3 + Linux 1.2.8 + la carte ethernet wd 8013
     * Un rseau ethernet en tat de fonctionnement

5. Ides fondamentales

   L'ide de base est la suivante: le PC va obtenir son adresse IP du
   serveur d'amorage par le protocole bootp, en utilisant 0.0.0.0 comme
   adresse IP initiale et en obtenant son noyau par le protocole tftp.

     Un amorage  travers des segments (via un routeur) n'est pas un
     problme simple, aussi faut-il mettre  la fois le serveur et la
     machine sans disque sur le mme segment de rseau, ou configurer
     une adresse UDP d'aide dans votre routeur pointant vers l'adresse
     du serveur. Rfrez-vous au manuel de votre routeur pour de plus
     amples informations sur le sujet.

   Pour cela, suivez les tapes ci-dessous.

5.1 Configurer le PC

   Obtenez le paquetage nfsboot (ce paquetage est disponible sur votre
   site miroir de Linux prfr dans le rpertoire
   /pub/Linux/system/Linux-boot). Il contient une image d'amorage pour
   l'EPROM de la carte wd8013 qui peut tre brle telle quelle.

   Il y a d'autres manires de prparer le PC:
     * si votre machine contient un petit disque ou un lecteur de
       disquette, vous pouvez utiliser le petit programme sous DOS, ou
     * l'image binaire pour disquette qui se trouve dans le mme
       paquetage.

   Si vous choisissez la deuxime option, il faut utiliser la commande dd
   pour crire l'image sur la disquette.

   Ces images contiennent un client bootp et un client tftp. Vous devez
   galement prparer un noyau pour linux, comportant l'option NFS-root
   (amorage par NFS).
     * Si vous utilisez le dernier noyau stable, linux-1.2.13, alors il
       faut corriger le noyau avec le fichier de correction contenu dans
       le paquetage nfsboot

     Consulter patch(1)
     * Si vous utilisez le dernier noyau en date, instable, de la srie
       linux-1.3.x, il vous faut configurer l'option NFS-root.

   Vous pouvez ou non choisir de configurer le support pour priphrique
   en mode bloc (disque dur ou disquette), mais vous devez configurer le
   support pour tcp/ip, pour la carte ethernet wd, et pour le systme de
   fichiers NFS. Puis recompilez le noyau de manire habituelle.

5.2 Configurer un bootpd sur le serveur

   On peut le trouver dans le paquetage bootpd-2.4.tar.gz (qui se trouve
   sur votre site miroir de Linux prfr dans le rpertoire
   /pub/Linux/system/Network/boot.net). Chargez le paquetage, compilez-le
   et installez-le. Si votre autre systme sous Linux se trouve tre une
   distribution Slackware, vous pouvez passer  l'tape suivante puisque
   les distributions standard comportent un bootpd. On peut dmarrer le
   dmon, soit en tapant la commande
       ______________________________________________________________

        bootpd -s
       ______________________________________________________________

   soit en utilisant inetd. Dans ce dernier cas, il vous faut diter:
     * /etc/inetd.conf pour ter le signe dise de mise en commentaire au
       dbut des lignes suivantes:
       ______________________________________________________________

# tftp   dgram   udp     wait    root    /usr/sbin/in.tftpd     tftpd /export
# bootps dgram   udp     wait    root    /usr/sbin/in.bootpd    bootpd
       ______________________________________________________________

     * insrer ou tez le signe de commentaire pour les deux lignes
       suivantes dans /etc/services:
       ______________________________________________________________

bootps          67/tcp          # serveur BOOTP
tftp            69/udp          # serveur TFTP
       ______________________________________________________________

     * redmarrez inetd en tapant
       ______________________________________________________________

        kill -HUP <numro d'identification du processus de inetd>.
       ______________________________________________________________

5.3 Configurer le bootpd sur le serveur.

   Tout d'abord, bootpd possde un fichier de configuration qui s'appelle
   bootptab et qui se trouve habituellement dans /etc. Vous devez le
   modifier en indiquant les adresses IP de votre passerelle, de votre
   serveur dns, et les adresses ethernet de votre ou vos machines sans
   disques. Voici un fichier /etc/bootptab d'exemple:
       ______________________________________________________________


global.prof:\
:sm=255.255.255.0:\
:ds=192.168.1.5:\
:gw=192.168.1.19:\
:ht=ethernet:\
:bf=linux:
machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.1
40:
machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.1
41:
machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.1
42:
       ______________________________________________________________

   global.prof est un patron gnral pour les entres d'htes, o
     * le champ sm contient le masque pour le sous-rseau
     * le champ ds contient l'adresse du serveur de nom de domaine (DNS)
     * le champ gw contient l'adresse de la passerelle par dfaut
     * le champ ht contient le type de carte rseau
     * le champ bf contient le nom du fichier d'amorage

   Aprs cela, chaque machine doit possder sa propre entre sur une
   ligne:
     * le premier champ contient le nom de l'hte
     * le champ hd contient le rpertoire du fichier d'amorage
     * on peut inclure le patron global avec le champ tc
     * le champ ha contient l'adresse matrielle de la carte ethernet
     * le champ ip contient l'adresse IP qui a t attribue

5.4 Comprendre tftp

   TFTP (Trivial File Transfer Protocol, ou protocole de transfert de
   fichiers banal) est un protocole de transfert de fichiers, comme ftp,
   mais il est beaucoup plus facile  programmer dans des mmoires de
   type EPROM. On peut utiliser TFTP de deux manires:
     * tftp simple: cela signifie que le client peut accder  la
       totalit de votre systme de fichiers. C'est plus simple, mais
       cela constitue un gros trou de scurit (n'importe qui peut
       obtenir votre fichier de mots de passe par tftp).
     * tftp scuris: le serveur tftp utilise un appel systme chroot.2
       pour modifier son propre rpertoire racine. Tout ce qui n'est pas
       dans cette racine sera absolument inaccessible. Comme le
       rpertoire chroot devient le nouveau rpertoire racine, le champ
       hd list dans le fichier bootptab doit prendre cette situation en
       compte. Par exemple: lorsqu'on utilise tftp non scuris, le champ
       hd contient le chemin complet menant au rpertoire d'amorage:
       /export/root/machine1. Lorsqu'on utilise tftp scuris avec
       /export comme rpertoire racine, alors /export devient / et le
       champ hd doit tre /root/machine1.

   Comme pratiquement toute installation Unix comporte un serveur tftp,
   vous n'aurez probablement pas besoin d'installer la votre.

5.5 Configurer un Linux minimal sur le serveur distant.

   Il vous faut pour cela, par exemple, les paquetages a, ap, n et x de
   la distribution Slackware. Il est possible d'installer plus de choses;
   ce pendant les paquetages ci-dessus suffiront  l'installation d'un
   terminal X sans disque. Pour l'installation, il vous faut un systme
   sous Linux en tat de marche. Trouvez un peu d'espace disque sur la
   machine distante et exportez-le en lecture et en criture. Montez le
   rpertoire export quelque part (par exemple sur /mnt) sur le systme
   de fichiers du systme sous Linux. Dmarrez Linux et modifiez l'option
   de racine dans la configuration; remplacez / par /mnt. Puis configurez
   les paquetages ci-dessus de manire habituelle. Si vous ne souhaitez
   faire tourner qu'un seul Linux sans disque, il ne vous faut rien
   modifier d'autre. D'un autre ct, si vous pensez utiliser plus d'une
   machine sans disque, la configuration dcrite ci-dessus ne
   fonctionnera pas parce que certains fichiers et rpertoires doivent
   tre privs pour chaque machine. On peut contourner ce problme on
   dplaant le rpertoire /usr (il ne contient aucune donne
   personnelle) et ensuite de crer un sous-rpertoire pour chaque
   machine sans disque. Par exemple, si /export/linux/machine1 est mont
   sur /mnt alors la structure des rpertoires aprs la configuration
   initiale ressemblera :
       ______________________________________________________________

/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/machine1/usr
       ______________________________________________________________

   Aprs les modifications vous obtiendrez
       ______________________________________________________________

/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/usr
       ______________________________________________________________

   Maintenant crez les sous-rpertoires pour les autres machines.
   Supposons pour l'instant que vos machines sans disque s'appellent
   machine1, machine2, machine3, etc.; vous pouvez alors utiliser le
   script bash qui suit pour configurer les autres rpertoires:
       ______________________________________________________________


        cd /export/linux
        for x in machine2 machine3; do
                mkdir $x; cd $x
                (cd ../machine1; tar cf - *) | tar xvf -
        done
       ______________________________________________________________

   Puis exportez les rpertoires qui suivent:
     * /export/linux/usr en lecture seule pour tout le monde.
     * /export/linux/machine1 uniquement sur machine1, en
       lecture/criture et avec les droits de root.
     * /export/linux/machine2 idem, sur machine2.
     * /export/linux/machine3 idem, sur machine3.

   comme suit

     le format de cet exemple est conforme  la syntaxe des exportations
     de fichiers pour SunOS 4.1.3

   :
       ______________________________________________________________


# Ce fichier est /etc/export
# pour des terminaux sous le systme Linux distants
# crit par Buci
# N'crivez cette ligne qu'une fois
/export/root/usr             -access=linuxnet
# N'crivez ces lignes qu'une fois pour chaque hte
/export/root/machine1       rw=machine1,root=machine1
/export/root/machine2       rw=machine2,root=machine2
/export/root/machine3       rw=machine3,root=machine3
       ______________________________________________________________

   N'oubliez pas de lancer exportfs -a.

5.6 Configurer le serveur tftp

   C'est maintenant le moment de configurer le serveur tftp. Si vous
   n'avez pas besoin de tftp scuris alors tout est trs simple puisque
   vos clients peuvent tre amorcs depuis le rpertoire /export.

   Si vous utilisez un tftp scuris vous pouvez soit mettre en place une
   structure de rpertoire /export/linux complte sous /tftpboot (en
   n'utilisant qu'un seul vritable noyau et des liens symboliques pour
   les autres machines), ou laisser le rpertoire /export jouer le rle
   du rpertoire d'amorage pour le tftpd scuris. Ou encore, si vous
   disposez d'un rpertoire tftpboot spar, de faon similaire, vous
   n'aurez besoin que d'un seul noyau dans la structure de rpertoires
   d'origine, et de liens pour les autres. Vous pouvez obtenir ce
   rsultat en tapant ce qui suit:
       ______________________________________________________________

      mkdir -p /tftpboot/export/linux/machine1
      cd /tftpboot/export/linux/machine1
      cp /export/linux/machine1/<nom du noyau>.
       ______________________________________________________________

   Puis tapez ce qui suit:
       ______________________________________________________________

      mkdir -p /tftpboot/export/linux/machine2
      cd ../machine2
      ln -s ../machine2/<nom du noyau>
       ______________________________________________________________

5.7 Derniers rglages

   Enfin, il vous faut insrer
       ______________________________________________________________

   /sbin/mount nfs_server:/export/linux/usr /usr
       ______________________________________________________________

    la premire ligne de
       ______________________________________________________________

   /export/linux/<machinex>/etc/rc.d/rc.S
       ______________________________________________________________

   o <machinex> signifie machine1, machine2, etc.

6. Mmoire et espace disque requis; vitesse

   . Je n'ai test ceci que pour la distribution Slackware 2.3; pour
   d'autres distributions ou versions les nombres qui suivent peuvent
   varier:
     * Espace disque: 28Mo + 6.5Mo/machine
     * RAM: J'utilise X avec 8Mo. Comme il ne faut que 8Mo de systme de
       pagination sur mmoire de masse, on peut les mettre en place, je
       pense -- de faon spare pour chacune des machines -- dans /tmp.
       N'oubliez pas de lancer mkswap.
     * Vitesse: Je n'ai pas eu de problmes sur un 486 DX2/66 avec 8
       Mgaoctets.

7. Erreurs possibles

     * J'ai dcouvert une erreur trange: dans le sous-rpertoire /dev,
       SunOS a corrompu les entres de priphriques de telle sorte que
       j'ai d relancer MAKEDEV en montant le sous-rpertoire sur un
       systme sous Linux avec disque. (La raison de cela provient des
       diffrences entre le NFS de linux et le NFS de SunOS: tous deux
       utilisent 32bits pour les numros de priphriques Mineur et
       Majeur, mais linux utilise des champs de 16bits pour ces deux
       numros, alors que SunOS utilise un champ de 14bits pour le numro
       de priphrique Majeur, et un champ de 18bits pour le numro de
       priphrique Mineur.)
     * Quand on amorce un systme sous Linux sans disque, la table de
       routage au serveur tftp ne contient qu'un seul routage, et vous
       devez configurer des tables de routage correctes. Vous avez pour
       cela deux possibilits:
          + configurer le rc.S de chacune des machines  la main
          + utiliser un paquetage de client bootp et rdiger un script de
            configuration gnralis

8. Erreurs et dveloppements possibles de ce document

     * Citer correctement les documents lis  tout ceci.
     * SunOS est fond sur BSD. Il faut inclure une configuration de
       serveur fonde sur SVR4 (c'est--dire sur Solaris).
     * Mme si Linux ressemble beaucoup  SunOS en tant que serveur
       bootp/tftp, il peut tre utile de fournir un exemple de serveur
       fond sur Linux.
     * Mettre  jour ce document pour le paquetage etherboot en cours.
     * Montrer les diffrences entre le noyau version 1.2.13 corrig pour
       la racine NFS et le dernier noyau 1.3.x, qui contient la
       correction de racine par NFS.
     * Besoin d'essayer d'autres cartes ethernet que la wd8013
     * Inclure des renseignements de configuration pour bootpc, un client
       bootp pour Linux qui sert  configurer des tables de routage
       correctes.
     * Fautes de frappe et autres: notifiez-les, s'il vous plat, 
       buci@math.klte.hu ou  Sebastien.Blondeel@lifl.fr pour la
       traduction franaise. Merci.
