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.