             Mise en oeuvre d'un terminal X sans disque dur

  Jerry Kendall

       <jerry@kcis.com>
     

   Copyright (c) 1996 Jerry Kendall

   28 Decembre 1996

   Avec l'aide de quelques amis de la liste de diffusion pour les
   discussions techniques sur FreeBSD, j'ai pu mettre en service un
   terminal X sans disque dur. Pour cela, j'ai d'abord du installer
   une station sans disque qui dispose d'un minimum d'utilitaires
   montes par NFS. J'ai repete l'operation pour disposer de deux
   systemes sans disque. Pour les deux, j'ai procede de la meme
   fac,on. Le premier est altair.kcis.com. C'est un terminal X sur
   mon vieux 386DX-40. Il a bien un disque dur de 340 Mo, mais je ne
   voulais pas y toucher. Il demarre donc `a partir de
   antares.kcis.com sur le reseau Ethernet. Le second est un
   486DX2-66. J'ai installe un systeme FreeBSD (complet) qui
   n'utilise pas de disque local. Le serveur de demarrage est un Sun
   670MP sous SunOs 4.1.3. Les deux systemes FreeBSD sont configures
   de la meme fac,on.

   Je suis sur qu'il y a des choses `a ajouter `a ce document.
   Faites-moi s'il vous plait part de vos commentaires.

   La redistribution du code source (SGML), modifie ou non, et
   compile (HTML, PostScript, etc.) est soumise aux conditions
   suivantes :

    1. Le copyright ci-dessus, la presente liste de conditions et
       l'avertissement qui la suit doivent figurer dans le code
       source.

    2. Le code source distribue sous forme compilee doit faire
       apparaitre le copyright ci-dessus, la presente liste de
       conditions et l'avertissement qui la suit.

   CE DOCUMENT EST FOURNI ``TEL QU'EN L'ETAT'' PAR LE PROJET DE
   DOCUMENTATION FRANC,AISE DE FreeBSD ET IL N'EST DONNE AUCUNE
   GARANTIE, IMPLICITE OU EXPLICITE, QUANT A SON UTILISATION
   COMMERCIALE, PROFESSIONNELLE OU AUTRE. LES COLLABORATEURS DU
   PROJET DE DOCUMENTATION FRANC,AISE DE FreeBSD NE PEUVENT EN AUCUN
   CAS ETRE TENUS POUR RESPONSABLES DE QUELQUE DOMMAGE OU PREJUDICE
   DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES
   FINANCIeRES DUES AU MANQUE A GAGNER, A L'INTERRUPTION D'ACTIVITES,
   OU LA PERTE D'INFORMATIONS ET AUTRES) DECOULANT DE L'UTILISATION
   DE LA DOCUMENTATION OU DE L'IMPOSSIBILITE D'UTILISER CELLE-CI, ET
   DONT L'UTILISATEUR ACCEPTE L'ENTIERE RESPONSABILITE.

   Version franc,aise de Frederic Haby
   <frederic.haby@mail.dotcom.fr>.

     --------------------------------------------------------------

1. Preparation de la disquette de demarrage (sur le systeme sans disque)

   Les gestionnaires de demarrage via le reseau ne sont pas
   compatibles avec les TSRs et autres qu'utilise MS-DOS, il est
   preferable de preparer une disquette de demarrage, ou, si vous le
   pouvez, de mettre en place un menu MS-DOS qui (par l'intermediaire
   des fichiers config.sys/autoexec.bat) vous demande au demarrage
   quelle configuration charger. C'est cette derniere methode que
   j'ai utilisee et elle fonctionne `a merveille. Voici mon menu
   MS-DOS :

   Exemple 1. config.sys

 [menu]
 menuitem=normal, normal
 menuitem=unix, unix
 [normal]
 ....
 config.sys habituel
 ...
 [unix]

   Exemple 2. autoexec.bat

 @ECHO OFF
 goto %config%

 :normal
 ...
 autoexec.bat habituel
 ...
 goto end

 :unix
 cd \netboot
 nb8390.com

 :end

     --------------------------------------------------------------

2. Generer les programmes de demarrage en reseau (sur le serveur)

   Compilez les programmes de ``demarrage en reseau'' que vous
   trouverez dans /usr/src/sys/i386/boot/netboot. Lisez les
   commentaires au debut du Makefile. Faites les modifications
   necessaires. Faites une sauvegarde de l'original, pour vous
   premunir en cas de problemes. Apres compilation, vous devriez
   obtenir deux executables, nb8390.com et nb3c509.com. C'est l'un de
   ces programmes que vous devrez executer sur la machine sans
   disque. Il chargera le noyau depuis le serveur de demarrage.
   Recopiez alors ces deux programmes sur la disquette de demarrage
   que vous avez creee auparavant.

     --------------------------------------------------------------

3. Determiner le programme `a utiliser (sur la machine sans disque)

   Si vous savez quel composant utilise votre carte Ethernet, c'est
   facile. Si vous avez un circuit NS8390 ou equivalent, servez vous
   de nb8390.com. Si vous avez un circuit de type 3Com 509, utilisez
   le programme de demarrage nb3C509.com. Si vous ne savez pas,
   essayez l'un et si vous avez le message ``"No adapter found"'',
   essayez avec l'autre. Si rien ne marche, vous etes livre `a
   vous-meme.

     --------------------------------------------------------------

4. Demarrer en reseau

   Demarrez la station sans disque sans fichiers
   config.sys/autoexec.bat. Essayez d'executer le programme de
   demarrage qui correspond `a votre carte Ethernet.

   Ma carte Ethernet utilise le mode 16bit WD8013 16bit, j'execute
   donc nb8390.com :

 C:> cd \netboot
 C:> nb8390

 Boot from Network (Y/N) ?  Y

 BOOTP/TFTP/NFS bootstrap loader     ESC for menu

 Searching for adapter..
 WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66

 Searching for server...

   La machine sans disque essaye maintenant de trouver un serveur de
   demarrage. Notez la valeur de addr sur l'avant derniere ligne,
   vous en aurez besoin ensuite. Redemarrez la machine sans disque et
   modifiez vos fichiers config.sys et autoexec.bat pour qu'ils
   fassent automatiquement ce que vous venez de faire `a la main.
   Peut-etre avec un menu. Si vous aviez du utiliser nb3c509.com au
   lieu de nb8390.com, les messages seraient identiques. Si vous
   obtenez le message ``"No adapter found"'' apres ``Searching for
   adapter...'', verifiez que vous avez defini les bonnes valeurs
   dans le Makefile au moment de compiler.

     --------------------------------------------------------------

5. Permettre aux systemes de demarrer via le reseau (sur le serveur)

   Verifiez qu'il y a bien des entrees pour tftp et bootps dans le
   fichier /etc/inetd.conf. Voici le mien :

 tftp    dgram   udp     wait    nobody  /usr/libexec/tftpd      tftpd
 #
 # Ajout de qui que vous soyez
 bootps  dgram  udp  wait  root  /usr/libexec/bootpd bootpd /etc/bootptab

   Si vous devez modifier le fichier /etc/inetd.conf, envoyez ensuite
   un signal HUP `a inetd. Pour cela, utilisez la commande ps -ax |
   grep inetd | grep -v grep pour connaitre le numero de processus
   d'inetd. Une fois que vous l'avez, envoyez lui le signal HUP. Cela
   se fait avec kill -HUP <pid>. Cela obligera inetd `a relire ses
   fichiers de configuration.

   Vous avez bien note la valeur de addr dans les messages du
   programme de demarrage sur la machine sans disque ? C'est
   maintenant que vous allez en avoir besoin.

   Ajoutez une entree `a /etc/bootptab (vous devrez peut-etre creer
   ce fichier). Voici `a quoi elle doit ressembler :

 altair:\
         :ht=ether:\
         :ha=004001432666:\
         :sm=255.255.255.0:\
         :hn:\
         :ds=199.246.76.1:\
         :ip=199.246.76.2:\
         :gw=199.246.76.1:\
         :vm=rfc1048:

   Ce qui, ligne par ligne, signifie :

   altair           nom du systeme sans disque, sans nom de domaine   
   ht=ether         type materiel ``ethernet''                        
   ha=004001432666  adresse materielle (le nombre que vous avez note  
                    auparavant)                                       
   sm=255.255.255.0 masque de sous-reseau                             
   hn               dit au serveur de donner au client son nom de     
                    machine                                           
   ds=199.246.76.1  dit au client quel est son serveur de noms de     
                    domaine                                           
   ip=199.246.76.2  dit au client quelle est son adresse IP           
   gw=199.246.76.1  dit au client quelle est sa passerelle par defaut 
   vm=...           laissez cela tel que                              

     Note : Veillez `a bien definir les adresses IP, j'ai invente
     celles de l'exemple.

   Creez le repertoire /tftpboot sur le serveur. Il contiendra les
   fichiers de configuration pour les systemes sans disque dont ce
   sera le serveur de demarrage. Ces fichiers s'appelleront cfg.<ip>,
   ou <ip> est l'adresse IP de la machine sans disque. Le fichier de
   configuration pour ``altair'' est /tftpboot/cfg.199.246.76.2.
   Voici son contenu :

 rootfs 199.246.76.1:/DiskLess/rootfs/altair
 hostname altair.kcis.com

   La ligne hostname altair.kcis.com indique seulement au systeme
   sans disque quel est son nom qualifie.

   La ligne rootfs 199.246.76.1:/DiskLess/rootfs/altair lui dit ou
   est son systeme de fichiers racine qui sera monte par NFS.

     Note : Ce systeme de fichiers racine sera monte en lecture seule
     par NFS.

   L'arborescence de la machine sans disque peut ensuite etre
   remontee pour autoriser les operations de lecture/ecriture.

   J'utilise mon 386DX-40 comme terminal X dedie.

   Voici l'arborescence d'``altair'' :

   /
   /bin
   /etc
   /tmp
   /sbin
   /dev
   /dev/fd
   /usr
   /var
   /var/run

   Et la liste des fichiers qu'elle contient :

 -r-xr-xr-x  1 root  wheel  779984 Dec 11 23:44 ./kernel
 -r-xr-xr-x  1 root    bin  299008 Dec 12 00:22 ./bin/sh
 -rw-r--r--  1 root  wheel     499 Dec 15 15:54 ./etc/rc
 -rw-r--r--  1 root  wheel    1411 Dec 11 23:19 ./etc/ttys
 -rw-r--r--  1 root  wheel     157 Dec 15 15:42 ./etc/hosts
 -rw-r--r--  1 root    bin    1569 Dec 15 15:26 ./etc/XF86Config.altair
 -r-x------  1 bin     bin  151552 Jun 10  1995 ./sbin/init
 -r-xr-xr-x  1 bin     bin  176128 Jun 10  1995 ./sbin/ifconfig
 -r-xr-xr-x  1 bin     bin  110592 Jun 10  1995 ./sbin/mount_nfs
 -r-xr-xr-x  1 bin     bin  135168 Jun 10  1995 ./sbin/reboot
 -r-xr-xr-x  1 root    bin   73728 Dec 13 22:38 ./sbin/mount
 -r-xr-xr-x  1 root  wheel    1992 Jun 10  1995 ./dev/MAKEDEV.local
 -r-xr-xr-x  1 root  wheel   24419 Jun 10  1995 ./dev/MAKEDEV

   N'oubliez pas d'executer MAKEDEV all dans le repertoire dev.

   Voici enfin mon /etc/rc pour altair :

 #!/bin/sh
 #
 PATH=/bin:/
 export PATH
 #
 # configurer l'interface ``en boucle''
 /sbin/ifconfig lo0 127.0.0.1
 #
 # configurer la carte Ethernet
 /sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
 #
 # monter le systeme de fichiers racine via NFS
 /sbin/mount antares:/DiskLess/rootfs/altair /
 #
 # monter le systeme de fichiers /usr via NFS
 /sbin/mount antares:/DiskLess/usr /usr
 #
 /usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1
 #
 # Redemarrer lorsque l'on quitte X
 /sbin/reboot
 #
 # Nous avons plante ...
 exit 1

   Vos commentaires et questions sont bienvenus.

     --------------------------------------------------------------

        Ce document, ainsi que d'autres peut etre telecharge sur
                   ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions `a propos de FreeBSD, lisez la documentation avant
                 de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.
