On placera la racine dans un dossier (/diskless par exemple, et on l'exportera via NFS)
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
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
cp /usr/src/sys/compile/DISKLESS/kernel /diskless
Sous linux, récuperez le noyau que vous avez crée plus haut.
services
présent dans le /etc
de votre système.
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
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)
Le fichier resolv.conf contient l'adresse des DNS (si vous en avez):
domain india.ath.cx nameserver 192.168.0.1
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
.
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: # [...]
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
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.