Mini Howto Linux pour systemes sans lecteur de disque(ttes)
 par Robert Nemkin [email protected]
 Traducteur:  Sebastien  Blondeel  <http://www.lifl.fr/~blon-
 deel> ([email protected])
 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  <[email protected]>  pour  avoir
 traduit ce document en anglais. Sebastien  Blondeel,  <Sebastien.Blon-
 [email protected]> a traduit ce document en francais.

 11..  MMooddiiffiiccaattiioonnss

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

 22..    CCoommmmeenntt  ccoonnffiigguurreerr  uunn  ssyysstteemmee  ssoouuss  LLiinnuuxx  ssaannss  lleecctteeuurr  ddee
 ddiissqquuee((tttteess))

 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.

 33..  CCoonnssuulltteerr eeggaalleemmeenntt lleess ddooccuummeennttss ssuuiivvaannttss::

 +o  NFS-root Mini Howto

 +o  Linux        NET-2/3-HOWTO        par         Terry         Dawson,
    [email protected]

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

 44..  MMaatteerriieell

 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

 55..  IIddeeeess ffoonnddaammeennttaalleess

 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.

 55..11..  CCoonnffiigguurreerr llee PPCC

 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.

 55..22..  CCoonnffiigguurreerr uunn bboooottppdd ssuurr llee sseerrvveeuurr

 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>.
      ______________________________________________________________________

 55..33..  CCoonnffiigguurreerr llee bboooottppdd ssuurr llee sseerrvveeuurr..

 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

 55..44..  CCoommpprreennddrree ttffttpp

 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.

 55..55..  CCoonnffiigguurreerr uunn LLiinnuuxx mmiinniimmaall ssuurr llee sseerrvveeuurr ddiissttaanntt..

 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.

 55..66..  CCoonnffiigguurreerr llee sseerrvveeuurr ttffttpp

 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>
      ______________________________________________________________________

 55..77..  DDeerrnniieerrss rreeggllaaggeess

 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.

 66..  MMeemmooiirree eett eessppaaccee ddiissqquuee rreeqquuiiss;; vviitteessssee

 .  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.

 77..  EErrrreeuurrss ppoossssiibblleess

 +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

 88..  EErrrreeuurrss eett ddeevveellooppppeemmeennttss ppoossssiibblleess ddee ccee ddooccuummeenntt

 +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
    [email protected]   ou   a   [email protected]   pour   la
    traduction francaise.  Merci.