next up previous contents

Sous-sections


3.3 Créer la racine pour le client

On placera la racine dans un dossier (/diskless par exemple, et on l'exportera via NFS)

3.3.1 Copie des fichiers

Ici, bin est relatif à /diskless et désigne donc /diskless/bin. Vous avez besoin d'une racine minimale. bin, dev, sbin et modules étant identiques à ceux sur le serveur, un cp -R devrait donc suffire.

Sous linux, il faut bien sur copier aussi les mêmes dossier, en y ajoutant lib

# mkdir /diskless
# cd /
# cp -R /bin /sbin /modules /dev /diskless

3.3.2 Dossiers spécifiques a la racine du terminal telnet

Créez un dossier root vide et des dossiers: var/log, var/db et var/tmp; le dossier tmp est un lien symboliquevers var/tmp. Créez ensuite les points de montage nécessaire (juste usr par un simple mkdir). Tous ces fichiers doivent appartenir a root.

# cd /diskless
# mkdir var var/log var/tmp var/db usr root etc
# chmod 1777 var/tmp     # Défini les droits rwxrwxrwt

3.3.3 Copie du noyau

Enfin, pour permettre au Terminal X de booter, vous devez copier le noyau que vous venez de compiler dans /diskless, la commande pour le faire est: cp /usr/src/sys/compile/DISKLESS/kernel /diskless

Sous linux, récuperez le noyau que vous avez crée plus haut.

3.3.4 Création du dossier /etc

Ce dossier est extrèmement simple, la config du terminal étant réduite au minimum, il contient une dizaine fichiers: hosts, rc, resolv.conf, ttys, gettytab, master.passwd et les fichiers qui en découlent. Copiez aussi le fichier services présent dans le /etc de votre système.

3.3.4.1 master.passwd

Il doit aussi contenir les mots de passes (passwd et shadow sous linux, laissez juste les comptes de base). Sous FreeBSD, c'est le fichier master.passwd qui a ce rôle, copiez le dans le nouveau dossier etc, et générez les fichier spwd.db et passwd grâce a la commande pwd_mkdb. On doit ajouter un compte telnet au fichier master.passwd . La ligne correspondant à ce compte est telnet:*:666:65534::0:0:Telnet autologin:/:/bin/telnet-shiva .

# Les commandes à exécuter sont les suivantes
cp /etc/master.passwd /diskless/etc; emacs /diskless/etc/master.passwd
# Supprimez alors les comptes utilisateurs qui ne sont pas lié au système
# Et ajouter la ligne:  telnet:*:666:65534::0:0:Telnet autologin:/:/bin/telnet-shiva

cd /diskless/etc
pwd_mkdb -d /diskless/etc
pwd_mkdb -p -d /diskless/etc

3.3.4.2 hosts

Voila donc le contenu de ses fichiers, le fichier hosts contient:

127.0.0.1       localhost
192.168.0.1     shiva        # Si vous n'avez pas de DNS qui se charge de la
192.168.0.2     vishnu       # résolution (seulement pour shiva et vishnu)

3.3.4.3 resolv.conf

Le fichier resolv.conf contient l'adresse des DNS (si vous en avez):

domain india.ath.cx
nameserver 192.168.0.1

3.3.4.4 ttys

Le fichier ttys est réduit a son strict minimum:
console none                            unknown off secure
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty telnet"         cons25  on  secure
ttyv2   "/usr/libexec/getty telnet"         cons25  on  secure
ttyv3   "/usr/libexec/getty telnet"         cons25  on  secure
# Vous pouvez en activer plus grace au on/off
ttyv4   "/usr/libexec/getty telnet"         cons25  off  secure
ttyv5   "/usr/libexec/getty telnet"         cons25  off  secure
ttyv6   "/usr/libexec/getty telnet"         cons25  off  secure
ttyv7   "/usr/libexec/getty telnet"         cons25  off  secure
# Pseudo terminals
ttyp0   none                    network
ttyp1   none                    network
ttyp2   none                    network
[...]
ttySv   none                    network

Le fichier ttys est remplacé par inittab sous linux, vous devrez aussi le réduire a un minimum (voir la page de man correspondante) et faire en sorte qu'il finisse par exemple sur le niveau 3 et lance le script rc ci-dessous. Il affichera ensuite, sur les consoles, des telnet redirigés en entrée et en sortie: telnet shiva </dev/tty2 >/dev/tty2 .

3.3.4.5 gettytab

Le programme getty fait appel au fichier etc/gettytab, que vous allez créer en recopiant le fichier présent dans /etc , et en y ajoutant une entrée telnet, qui lancera automatiquement un login sous le compte telnet:

[...]
P|Pc|Pc console:\
        :ht:np:sp#115200:

telnet|tto:\
        :al=telnet:ht:np:sp#115200:

#
[...]

3.3.4.6 Le script telnet-shiva

Le compte telnet dispose d'un script shell en tant que shell, il faut donc créer le script bin/telnet-shiva, et rendre se dernier éxécutable avec chmod x bin/telnet-shiva+ .

#!/bin/sh
# bin/telnet-shiva
clear
# Lance telnet sur shiva en mode 8bit (pour les accents)
exec /usr/bin/telnet -8 shiva

3.3.4.7 rc

Le fichier qui s'occupe de la procédure de boot est le script rc (qui doit etre executable), il contient:

 
#!/bin/sh
#
PATH=/bin:/:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin
export PATH

# configurer les interfaces reseaux # Corriger l'IP si besoin
# Ces commandes peuvent varier sous linux, voir les HOWTO
/sbin/ifconfig lo0 127.0.0.1
/sbin/ifconfig ed0 192.168.0.2 netmask 0xffffff00

# monter les système de fichiers via NFS # Modifier les noms au besoin
/sbin/mount shiva:/diskless /
/sbin/mount shiva:/usr /usr

# Chargement de la map fr pour le clavier
/usr/sbin/kbdcontrol -l /usr/share/syscons/keymaps/fr.iso.acc.kbd
#loadkeys french   #pour linux

# On met en place le Swap over NFS 
# On a créer un fichier vide de 16 Mo avec dd dans /diskless/swap/swap1:
#  #dd if=/dev/zero of=swap/swap1 bs=1024k count=16
/usr/sbin/vnconfig -e /dev/vn0b /swap/swap1 swap


# Il faut charger les polices pour les consoles:

for i in 0 1 2 3 4 5 6 7 8 9 a b 
do
vidcontrol < /dev/ttyv$i -f 8x14 iso-8x14
vidcontrol < /dev/ttyv$i -f 8x8  iso-8x8 
vidcontrol < /dev/ttyv$i -f 8x16 iso-8x16
done


# On passe le relai a init et au fichier ttys
exit 0

Voila, normalement, il ne vous reste plus qu'a booter votre terminal telnet et tout devrait bien se passer.


next up previous contents
Nicolas LS
2002-03-27