  Mini Howto Linux pour systemes sans lecteur de disque(ttes)
  par Robert Nemkin buci@math.klte.hu
  Traducteur:  Sebastien  Blondeel  <http://www.lifl.fr/~blon-
  deel> (sebastien.blondeel@lifl.fr)
  v0.0.3 12 Sep 1996

  Ce document decrit la maniere de configurer un systeme sous Linux sans
  disque dur ni lecteur de disquettes. Ses droits appartiennent a Robert
  Nemkin, et il est place sous les termes de la Publique  Generale  GNU.
  L'auteur  remercie  Bela  Kis  <bkis@cartan.math.klte.hu>  pour  avoir
  traduit ce document en anglais. Sebastien  Blondeel,  <Sebastien.Blon-
  deel@lifl.fr> a traduit ce document en francais.

  11..  MMooddiiffiiccaattiioonnss

  +o  v0.0.3 12 Sep 1996: Quelques erreurs mineures ont ete corrigees

  22..    CCoommmmeenntt  ccoonnffiigguurreerr  uunn  ssyysstteemmee  ssoouuss  LLiinnuuxx  ssaannss  lleecctteeuurr  ddee
  ddiissqquuee((tttteess))

  Ce document decrit la maniere de configurer un systeme sous Linux sans
  disque  dur  ni  lecteur  de  disquette.  Il  peut  parfois   s'averer
  necessaire  de  faire  tourner  Linux  sur  des ordinateurs personnels
  ("PC") qui ne possedent ni disque dur ni lecteur de disquettes.  Si on
  dispose  d'un reseau, d'un autre systeme sous Unix avec bootp et tftp,
  d'un serveur NFS et d'un bruleur d'EPROM, alors  il  est  possible  de
  configurer  et  de faire tourner un systeme sous Linux sans disque dur
  ni disquette.

  33..  CCoonnssuulltteerr eeggaalleemmeenntt lleess ddooccuummeennttss ssuuiivvaannttss::

  +o  NFS-root Mini Howto

  +o  Linux        NET-2/3-HOWTO        par         Terry         Dawson,
     94004531@postoffice.csu.edu.au

  +o  /usr/src/linux/README  pour  la  configuration et la compilation de
     nouveaux noyaux

  44..  MMaatteerriieell

  Tout ce qui est decrit ici a ete teste avec la configuration suivante:

  +o  Sun-OS 4.1.3 comme serveur d'amorcage

  +o  Slackware 2.3 + Linux 1.2.8 + la carte ethernet wd 8013

  +o  Un reseau ethernet en etat de fonctionnement

  55..  IIddeeeess ffoonnddaammeennttaalleess

  L'idee  de  base  est  la suivante: le PC va obtenir son adresse IP du
  serveur d'amorcage par le protocole bootp, en utilisant 0.0.0.0  comme
  adresse  IP  initiale  et en obtenant son noyau par le protocole tftp.
  (-- Un amorcage a travers des segments (via un routeur) n'est  pas  un
  probleme  simple,  aussi  faut-il  mettre  a  la fois le serveur et la
  machine sans disque sur le meme segment de reseau, ou  configurer  une
  adresse  UDP  d'aide  dans  votre  routeur  pointant vers l'adresse du
  serveur.  Referez-vous au manuel de votre routeur pour de plus  amples
  informations sur le sujet.--)
  Pour cela, suivez les etapes ci-dessous.

  55..11..  CCoonnffiigguurreerr llee PPCC

  Obtenez  le  paquetage  nfsboot (ce paquetage est disponible sur votre
  site    miroir    de    Linux    prefere    dans     le     repertoire
  /pub/Linux/system/Linux-boot).  Il  contient une image d'amorcage pour
  l'EPROM de la carte wd8013 qui peut etre brulee telle quelle.

  Il y a d'autres manieres de preparer le PC:

  +o  si votre  machine  contient  un  petit  disque  ou  un  lecteur  de
     disquette, vous pouvez utiliser le petit programme sous DOS, ou

  +o  l'image   binaire  pour  disquette  qui  se  trouve  dans  le  meme
     paquetage.

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

  Ces  images contiennent un client bootp et un client tftp.  Vous devez
  egalement preparer un noyau pour linux, comportant  l'option  NFS-root
  (amorcage par NFS).

  +o  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)--)

  +o  Si  vous  utilisez  le dernier noyau en date, instable, de la serie
     linux-1.3.x, il vous faut configurer l'option NFS-root.

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

  55..22..  CCoonnffiigguurreerr uunn bboooottppdd ssuurr llee sseerrvveeuurr

  On peut le trouver dans le paquetage bootpd-2.4.tar.gz (qui se  trouve
  sur   votre   site   miroir   de  Linux  prefere  dans  le  repertoire
  /pub/Linux/system/Network/boot.net). Chargez le paquetage, compilez-le
  et  installez-le. Si votre autre systeme sous Linux se trouve etre une
  distribution Slackware, vous pouvez passer a l'etape suivante  puisque
  les  distributions  standard comportent un bootpd. On peut demarrer le
  demon, soit en tapant la commande

       ______________________________________________________________________
               bootpd -s
       ______________________________________________________________________

  soit en utilisant inetd. Dans ce dernier cas, il vous faut editer:

  +o  /etc/inetd.conf pour oter le signe diese de mise en commentaire  au
     debut des lignes suivantes:

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

  +o  inserer  ou  otez  le  signe  de  commentaire  pour les deux lignes
     suivantes dans /etc/services:

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

  +o  redemarrez inetd en tapant

       ______________________________________________________________________
               kill -HUP <numero d'identification du processus de inetd>.
       ______________________________________________________________________

  55..33..  CCoonnffiigguurreerr llee bboooottppdd ssuurr llee sseerrvveeuurr..

  Tout d'abord, bootpd possede 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.140:
       machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141:
       machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:
       ______________________________________________________________________

  global.prof est un patron general pour les entrees d'hotes, ou

  +o  le champ sm contient le masque pour le sous-reseau

  +o  le champ ds contient l'adresse du serveur de nom de domaine (DNS)

  +o  le champ gw contient l'adresse de la passerelle par defaut

  +o  le champ ht contient le type de carte reseau

  +o  le champ bf contient le nom du fichier d'amorcage

  Apres cela, chaque machine doit posseder  sa  propre  entree  sur  une
  ligne:

  +o  le premier champ contient le nom de l'hote

  +o  le champ hd contient le repertoire du fichier d'amorcage

  +o  on peut inclure le patron global avec le champ tc

  +o  le champ ha contient l'adresse materielle de la carte ethernet

  +o  le champ ip contient l'adresse IP qui a ete attribuee

  55..44..  CCoommpprreennddrree ttffttpp

  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 a programmer dans des memoires de
  type EPROM. On peut utiliser TFTP de deux manieres:

  +o  tftp simple: cela signifie que le client peut acceder a la totalite
     de  votre  systeme  de  fichiers.  C'est  plus  simple,  mais  cela
     constitue un gros trou de  securite  (n'importe  qui  peut  obtenir
     votre fichier de mots de passe par tftp).

  +o  tftp  securise:  le  serveur tftp utilise un appel systeme chroot.2
     pour modifier son propre repertoire racine. Tout ce qui  n'est  pas
     dans   cette   racine   sera  absolument  inaccessible.   Comme  le
     repertoire chroot devient le nouveau repertoire racine, le champ hd
     liste  dans  le  fichier  bootptab  doit prendre cette situation en
     compte. Par exemple: lorsqu'on utilise tftp non securise, le  champ
     hd  contient  le  chemin  complet  menant au repertoire d'amorcage:
     /export/root/machine1.   Lorsqu'on  utilise  tftp   securise   avec
     /export  comme  repertoire  racine,  alors /export devient /  et le
     champ hd doit etre /root/machine1.

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

  55..55..  CCoonnffiigguurreerr uunn LLiinnuuxx mmiinniimmaall ssuurr llee sseerrvveeuurr ddiissttaanntt..

  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 a l'installation d'un
  terminal X sans disque. Pour l'installation, il vous faut  un  systeme
  sous  Linux  en  etat de marche. Trouvez un peu d'espace disque sur la
  machine distante et exportez-le en lecture et en ecriture.  Montez  le
  repertoire  exporte quelque part (par exemple sur /mnt) sur le systeme
  de fichiers du systeme sous Linux. Demarrez Linux et modifiez l'option
  de racine dans la configuration; remplacez / par /mnt. Puis configurez
  les paquetages ci-dessus de maniere habituelle. Si vous  ne  souhaitez
  faire  tourner  qu'un  seul  Linux  sans  disque, il ne vous faut rien
  modifier d'autre. D'un autre cote, si vous pensez utiliser plus  d'une
  machine   sans   disque,   la   configuration   decrite  ci-dessus  ne
  fonctionnera pas parce que certains fichiers  et  repertoires  doivent
  etre  prives  pour  chaque machine.  On peut contourner ce probleme on
  deplacant  le  repertoire  /usr  (il   ne   contient   aucune   donnee
  personnelle)  et  ensuite  de  creer  un  sous-repertoire  pour chaque
  machine sans disque. Par exemple, si /export/linux/machine1 est  monte
  sur  /mnt  alors  la  structure des repertoires apres la configuration
  initiale ressemblera a:

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

  Apres 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  creez  les  sous-repertoires  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 repertoires:

       ______________________________________________________________________

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

  Puis exportez les repertoires qui suivent:

  +o  /export/linux/usr                        en lecture seule pour tout
     le monde.

  +o  /export/linux/machine1            uniquement   sur   machine1,   en
     lecture/ecriture et avec les droits de root.

  +o  /export/linux/machine2          idem, sur machine2.

  +o  /export/linux/machine3          idem, sur machine3.

     comme  suit  (-- le format de cet exemple est conforme a la syntaxe
     des exportations de fichiers pour SunOS 4.1.3--) :
       ______________________________________________________________________

       # Ce fichier est /etc/export
       # pour des terminaux sous le systeme Linux distants
       # Ecrit par Buci
       # N'ecrivez cette ligne qu'une fois
       /export/root/usr             -access=linuxnet
       # N'ecrivez ces lignes qu'une fois pour chaque hote
       /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5..66..  CCoonnffiigguurreerr llee sseerrvveeuurr ttffttpp

  C'est maintenant le moment de configurer  le  serveur  tftp.  Si  vous
  n'avez  pas besoin de tftp securise alors tout est tres simple puisque
  vos clients peuvent etre amorces depuis le repertoire /export.

  Si vous utilisez un tftp securise vous pouvez soit mettre en place une
  structure  de  repertoire  /export/linux  complete  sous /tftpboot (en
  n'utilisant qu'un seul veritable noyau et des liens  symboliques  pour
  les  autres  machines), ou laisser le repertoire /export jouer le role
  du repertoire d'amorcage pour le tftpd securise.  Ou encore,  si  vous
  disposez  d'un  repertoire  tftpboot  separe, de facon similaire, vous
  n'aurez besoin que d'un seul noyau dans la  structure  de  repertoires
  d'origine,  et  de  liens  pour  les  autres.  Vous  pouvez obtenir ce
  resultat 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5..77..  DDeerrnniieerrss rreeggllaaggeess

  Enfin, il vous faut inserer

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

  a la premiere ligne de

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

  ou <machinex> signifie machine1, machine2, etc.

  66..  MMeemmooiirree eett eessppaaccee ddiissqquuee rreeqquuiiss;; vviitteessssee

  .  Je n'ai teste ceci que pour la  distribution  Slackware  2.3;  pour
  d'autres  distributions  ou  versions  les nombres qui suivent peuvent
  varier:

  +o  Espace disque: 28Mo + 6.5Mo/machine

  +o  RAM: J'utilise X avec 8Mo. Comme il ne faut que 8Mo de  systeme  de
     pagination  sur  memoire  de masse, on peut les mettre en place, je
     pense -- de facon separee pour chacune des machines --  dans  /tmp.
     N'oubliez pas de lancer mkswap.

  +o  Vitesse:  Je  n'ai  pas  eu  de  problemes sur un 486 DX2/66 avec 8
     Megaoctets.

  77..  EErrrreeuurrss ppoossssiibblleess

  +o  J'ai decouvert une erreur etrange: dans  le  sous-repertoire  /dev,
     SunOS  a  corrompu  les entrees de peripheriques de telle sorte que
     j'ai du relancer MAKEDEV  en  montant  le  sous-repertoire  sur  un
     systeme  sous  Linux  avec disque.  (La raison de cela provient des
     differences entre le NFS de linux et le NFS  de  SunOS:  tous  deux
     utilisent  32bits  pour  les  numeros  de  peripheriques  Mineur et
     Majeur, mais linux utilise des  champs  de  16bits  pour  ces  deux
     numeros,  alors que SunOS utilise un champ de 14bits pour le numero
     de peripherique Majeur, et un champ de 18bits  pour  le  numero  de
     peripherique Mineur.)

  +o  Quand  on  amorce  un  systeme  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 possibilites:

  +o  configurer le rc.S de chacune des machines a la main

  +o  utiliser un paquetage de client  bootp  et  rediger  un  script  de
     configuration generalise

  88..  EErrrreeuurrss eett ddeevveellooppppeemmeennttss ppoossssiibblleess ddee ccee ddooccuummeenntt

  +o  Citer correctement les documents lies a tout ceci.

  +o  SunOS  est  fonde  sur  BSD.  Il  faut inclure une configuration de
     serveur fondee sur SVR4 (c'est-a-dire sur Solaris).

  +o  Meme si Linux ressemble  beaucoup  a  SunOS  en  tant  que  serveur
     bootp/tftp,  il  peut  etre  utile de fournir un exemple de serveur
     fonde sur Linux.

  +o  Mettre a jour ce document pour le paquetage etherboot en cours.

  +o  Montrer les differences entre le noyau version 1.2.13 corrige  pour
     la racine NFS et le dernier noyau 1.3.x, qui contient la correction
     de racine par NFS.

  +o  Besoin d'essayer d'autres cartes ethernet que la wd8013

  +o  Inclure des renseignements de configuration pour bootpc, un  client
     bootp  pour  Linux  qui  sert  a  configurer  des tables de routage
     correctes.

  +o  Fautes de frappe  et  autres:  notifiez-les,  s'il  vous  plait,  a
     buci@math.klte.hu   ou   a   Sebastien.Blondeel@lifl.fr   pour   la
     traduction francaise.  Merci.

