Il existe un script pour créer automatiquement ce dossier (même s'il est plus adapté à une station sans disque plutôt qu'à un simple terminal X), vous le trouverez dans /usr/share/examples/diskless sur FreeBSD.
Pour ma part, je ne l'ai pas utilisé, car , pour un simple terminal X, c'est plus simple de le faire à la main. La racine se trouve dans /diskless, vous pouvez la déplacer, mais vous devrez alors modifier tous les fichiers de config en fonction du nouveau chemin d'accès.
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.
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
# 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 cd /diskless/etc pwd_mkdb -d /diskless/etc pwd_mkdb -p -d /diskless/etc
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)
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 Pc" cons25 off secure ttyv2 "/usr/libexec/getty Pc" cons25 off secure ttyv3 "/usr/libexec/getty Pc" cons25 off secure ttyv4 "/usr/libexec/getty Pc" cons25 off secure ttyv5 "/usr/libexec/getty Pc" cons25 off secure ttyv6 "/usr/libexec/getty Pc" cons25 off secure ttyv7 "/usr/libexec/getty Pc" 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.
#!/bin/sh
#
PATH=/bin:/:/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
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
# Lancer Xfree en mode -query pour contacter XDMCP sur shiva
# Modifier les noms au besoin
/usr/X11R6/bin/X -query shiva -xf86config /etc/XF86Config.vishnu >/dev/null 2>&1
#
# Rédemarrer lorsque l'on quitte X
/sbin/reboot # Désactivé dans un premier temps , permet de voir les
# erreurs et d'éviter les boots en boucle
# Voila, j'espère que ce script marche , il faudra que je vérifie completement.
Pour que le terminal X puisse acceder à ces fichiers, il faut configurer un serveur NFS.