Mini Howto Linux pour syst�mes sans lecteur de disque(ttes) par Robert Nemkin buci@math.klte.hu Traducteur: S�bastien Blondeel ( sebastien.blondeel@lifl.fr) v0.0.3 12 Sep 1996 _________________________________________________________________ _Ce document d�crit la mani�re de configurer un syst�me sous Linux sans disque dur ni lecteur de disquettes. Ses droits appartiennent � Robert Nemkin, et il est plac� sous les termes de la Publique G�n�rale GNU. L'auteur remercie Bela Kis <bkis@cartan.math.klte.hu> pour avoir traduit ce document en anglais. S�bastien Blondeel, <Sebastien.Blondeel@lifl.fr> a traduit ce document en fran�ais._ _________________________________________________________________ 1. Modifications * v0.0.3 12 Sep 1996: Quelques erreurs mineures ont �t� corrig�es 2. Comment configurer un syst�me sous Linux sans lecteur de disque(ttes) Ce document d�crit la mani�re de configurer un syst�me sous Linux sans disque dur ni lecteur de disquette. Il peut parfois s'av�rer n�cessaire de faire tourner Linux sur des ordinateurs personnels ("PC") qui ne poss�dent ni disque dur ni lecteur de disquettes. Si on dispose d'un r�seau, d'un autre syst�me sous Unix avec bootp et tftp, d'un serveur NFS et d'un br�leur d'EPROM, alors il est possible de configurer et de faire tourner un syst�me 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. Mat�riel Tout ce qui est d�crit ici a �t� test� avec la configuration suivante: * Sun-OS 4.1.3 comme serveur d'amor�age * Slackware 2.3 + Linux 1.2.8 + la carte ethernet wd 8013 * Un r�seau ethernet en �tat de fonctionnement 5. Id�es fondamentales L'id�e de base est la suivante: le PC va obtenir son adresse IP du serveur d'amor�age par le protocole bootp, en utilisant 0.0.0.0 comme adresse IP initiale et en obtenant son noyau par le protocole tftp. Un amor�age � travers des segments (via un routeur) n'est pas un probl�me simple, aussi faut-il mettre � la fois le serveur et la machine sans disque sur le m�me segment de r�seau, ou configurer une adresse UDP d'aide dans votre routeur pointant vers l'adresse du serveur. R�f�rez-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 pr�f�r� dans le r�pertoire /pub/Linux/system/Linux-boot). Il contient une image d'amor�age pour l'EPROM de la carte wd8013 qui peut �tre br�l�e telle quelle. Il y a d'autres mani�res de pr�parer 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 m�me paquetage. Si vous choisissez la deuxi�me 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 pr�parer un noyau pour linux, comportant l'option NFS-root (amor�age 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 s�rie linux-1.3.x, il vous faut configurer l'option NFS-root. Vous pouvez ou non choisir de configurer le support pour p�riph�rique en mode bloc (disque dur ou disquette), mais vous devez configurer le support pour tcp/ip, pour la carte ethernet wd, et pour le syst�me de fichiers NFS. Puis recompilez le noyau de mani�re 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 pr�f�r� dans le r�pertoire /pub/Linux/system/Network/boot.net). Chargez le paquetage, compilez-le et installez-le. Si votre autre syst�me sous Linux se trouve �tre une distribution Slackware, vous pouvez passer � l'�tape suivante puisque les distributions standard comportent un bootpd. On peut d�marrer le d�mon, 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 di�se de mise en commentaire au d�but des lignes suivantes: ______________________________________________________________ # tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export # bootps dgram udp wait root /usr/sbin/in.bootpd bootpd ______________________________________________________________ * ins�rer ou �tez le signe de commentaire pour les deux lignes suivantes dans /etc/services: ______________________________________________________________ bootps 67/tcp # serveur BOOTP tftp 69/udp # serveur TFTP ______________________________________________________________ * red�marrez inetd en tapant ______________________________________________________________ kill -HUP <num�ro d'identification du processus de inetd>. ______________________________________________________________ 5.3 Configurer le bootpd sur le serveur. Tout d'abord, bootpd poss�de 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 g�n�ral pour les entr�es d'h�tes, o� * le champ sm contient le masque pour le sous-r�seau * le champ ds contient l'adresse du serveur de nom de domaine (DNS) * le champ gw contient l'adresse de la passerelle par d�faut * le champ ht contient le type de carte r�seau * le champ bf contient le nom du fichier d'amor�age Apr�s cela, chaque machine doit poss�der sa propre entr�e sur une ligne: * le premier champ contient le nom de l'h�te * le champ hd contient le r�pertoire du fichier d'amor�age * on peut inclure le patron global avec le champ tc * le champ ha contient l'adresse mat�rielle de la carte ethernet * le champ ip contient l'adresse IP qui a �t� attribu�e 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 m�moires de type EPROM. On peut utiliser TFTP de deux mani�res: * tftp simple: cela signifie que le client peut acc�der � la totalit� de votre syst�me de fichiers. C'est plus simple, mais cela constitue un gros trou de s�curit� (n'importe qui peut obtenir votre fichier de mots de passe par tftp). * tftp s�curis�: le serveur tftp utilise un appel syst�me chroot.2 pour modifier son propre r�pertoire racine. Tout ce qui n'est pas dans cette racine sera absolument inaccessible. Comme le r�pertoire chroot devient le nouveau r�pertoire racine, le champ hd list� dans le fichier bootptab doit prendre cette situation en compte. Par exemple: lorsqu'on utilise tftp non s�curis�, le champ hd contient le chemin complet menant au r�pertoire d'amor�age: /export/root/machine1. Lorsqu'on utilise tftp s�curis� avec /export comme r�pertoire 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 syst�me 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 r�pertoire export� quelque part (par exemple sur /mnt) sur le syst�me de fichiers du syst�me sous Linux. D�marrez Linux et modifiez l'option de racine dans la configuration; remplacez / par /mnt. Puis configurez les paquetages ci-dessus de mani�re habituelle. Si vous ne souhaitez faire tourner qu'un seul Linux sans disque, il ne vous faut rien modifier d'autre. D'un autre c�t�, si vous pensez utiliser plus d'une machine sans disque, la configuration d�crite ci-dessus ne fonctionnera pas parce que certains fichiers et r�pertoires doivent �tre priv�s pour chaque machine. On peut contourner ce probl�me on d�pla�ant le r�pertoire /usr (il ne contient aucune donn�e personnelle) et ensuite de cr�er un sous-r�pertoire pour chaque machine sans disque. Par exemple, si /export/linux/machine1 est mont� sur /mnt alors la structure des r�pertoires apr�s 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 ______________________________________________________________ Apr�s 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 cr�ez les sous-r�pertoires 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 r�pertoires: ______________________________________________________________ cd /export/linux for x in machine2 machine3; do mkdir $x; cd $x (cd ../machine1; tar cf - *) | tar xvf - done ______________________________________________________________ Puis exportez les r�pertoires 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 syst�me 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 h�te /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 s�curis� alors tout est tr�s simple puisque vos clients peuvent �tre amorc�s depuis le r�pertoire /export. Si vous utilisez un tftp s�curis� vous pouvez soit mettre en place une structure de r�pertoire /export/linux compl�te sous /tftpboot (en n'utilisant qu'un seul v�ritable noyau et des liens symboliques pour les autres machines), ou laisser le r�pertoire /export jouer le r�le du r�pertoire d'amor�age pour le tftpd s�curis�. Ou encore, si vous disposez d'un r�pertoire tftpboot s�par�, de fa�on similaire, vous n'aurez besoin que d'un seul noyau dans la structure de r�pertoires d'origine, et de liens pour les autres. Vous pouvez obtenir ce r�sultat 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 r�glages Enfin, il vous faut ins�rer ______________________________________________________________ /sbin/mount nfs_server:/export/linux/usr /usr ______________________________________________________________ � la premi�re ligne de ______________________________________________________________ /export/linux/<machinex>/etc/rc.d/rc.S ______________________________________________________________ o� <machinex> signifie machine1, machine2, etc. 6. M�moire 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 syst�me de pagination sur m�moire de masse, on peut les mettre en place, je pense -- de fa�on s�par�e pour chacune des machines -- dans /tmp. N'oubliez pas de lancer mkswap. * Vitesse: Je n'ai pas eu de probl�mes sur un 486 DX2/66 avec 8 M�gaoctets. 7. Erreurs possibles * J'ai d�couvert une erreur �trange: dans le sous-r�pertoire /dev, SunOS a corrompu les entr�es de p�riph�riques de telle sorte que j'ai d� relancer MAKEDEV en montant le sous-r�pertoire sur un syst�me sous Linux avec disque. (La raison de cela provient des diff�rences entre le NFS de linux et le NFS de SunOS: tous deux utilisent 32bits pour les num�ros de p�riph�riques Mineur et Majeur, mais linux utilise des champs de 16bits pour ces deux num�ros, alors que SunOS utilise un champ de 14bits pour le num�ro de p�riph�rique Majeur, et un champ de 18bits pour le num�ro de p�riph�rique Mineur.) * Quand on amorce un syst�me 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 possibilit�s: + configurer le rc.S de chacune des machines � la main + utiliser un paquetage de client bootp et r�diger un script de configuration g�n�ralis� 8. Erreurs et d�veloppements possibles de ce document * Citer correctement les documents li�s � tout ceci. * SunOS est fond� sur BSD. Il faut inclure une configuration de serveur fond�e sur SVR4 (c'est-�-dire sur Solaris). * M�me 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 diff�rences 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 pla�t, � buci@math.klte.hu ou � Sebastien.Blondeel@lifl.fr pour la traduction fran�aise. Merci.