buci@math.klte.hu
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.
94004531@postoffice.csu.edu.au
/usr/src/linux/README
pour la configuration et la
compilation de nouveaux noyauxTout ce qui est décrit ici a été testé avec la configuration suivante:
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.
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:
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).
Consulter patch(1)
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:
# tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export
# bootps dgram udp wait root /usr/sbin/in.bootpd bootpd
bootps 67/tcp # serveur BOOTP
tftp 69/udp # serveur TFTP
kill -HUP <numéro d'identification du processus de inetd>.
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.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 général pour les entrées d'hôtes, où
Après cela, chaque machine doit posséder sa propre entrée sur une ligne:
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:
/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
.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:
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.
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>
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.
. Je n'ai testé ceci que pour la distribution Slackware 2.3; pour d'autres distributions ou versions les nombres qui suivent peuvent varier:
buci@math.klte.hu
ou à Sebastien.Blondeel@lifl.fr
pour
la traduction française.
Merci.