Postes en réseau sans disque dur, sans disquette...

Avec cartes mêres, processeurs, de la RAM et cartes réseaux.



Serveur Etherboot sur une Mandrake 10.1



I) Prérequis :

Résumer :
Installer de la MDK 10.1 :


kernel-2.6.8.1.12mdk
kernel-source-2.6-2.6.8.1-12mdk <------ Pour les im nbi
kernel-2.6.11.6mdk (De la MDK 10.2) que j'utilise
kernel-source-2.6-2.6.11-6mdk (De la MDK 10.2) que j'utilise
dhcp-client
dhcp-common
dhcp-server
clusternfs
terminal-server
etherboot
tftp-server
mkinitrd-net <--- devra être mis à jour car la busybox est compilé(e) avec de mauvaises options pour udhcpc.



La mise à jour de mkinitrd-net peut être faite avec le paquetage de la MDV 2006.0, ce qui fait passer la version de 1.10-19mdk à 1.10-24mdk.
La version udhcpc de mkinitrd-net-1.10-24mdk provoque un "warning, m" mais pas un "error, m" du mkinitrd-net-1.10-19mdk ce qui laisse alors votre terminal monter ses racines sur nfs...


  1. Configurations :

    La Config du serveur : /etc/dhcpd.conf :

#dhcpd.conf - generated by drakTermServ

ddns-update-style none;
default-lease-time 172800;
max-lease-time 172800;

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option domain-name "system-linux.net";
range dynamic-bootp 192.168.1.100 192.168.1.130;
option domain-name-servers 192.168.1.1;
}

# Include client machine configurations
include "/etc/dhcpd.conf.etherboot.clients";
# Include Etherboot definitions and defaults
include "/etc/dhcpd.conf.etherboot.include";
# Include Etherboot default kernel version
include "/etc/dhcpd.conf.etherboot.kernel";



dhcpd.conf.etherboot.* Sont générés par terminal-server (drakTermServ)...


Le dhcpd.conf.etherboot.clients est trés important c'est ce fichier qui dira quelle adresse MAC aura quelle IP et sur quelle noyaux réseau elle bootera !


# dhcpd.conf.etherboot.client généré par drakTermServ

host satellite {
hardware ethernet 00:14:2a:3e:ee:cb;
fixed-address 192.168.1.254;
#type thin;
if substring (option vendor-class-identifier, 0, 9) = "PXEClient"
{
filename "via-rhine.zimg.pxe";
}
else if substring (option vendor-class-identifier, 0, 9) = "Etherboot"
{
filename "boot-via-rhine.2.6.11-6mdk.nbi";
}
#hdw_config true;
}



Pour que cela soit téléchargé sur le terminal c'est TFTP1 qui intervient avec xinetd....
Dans /etc/xinetd.d/tftp


# Service TFTP
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}



Aprés ceci le PC boot... jusqu'a ce qu'il plante au montage NFS !
C'est içi que clusternfs intervient ! Il à la paricularité de lire dans /etc/exports les caractères $$...
Pourquoi ? Pour que les clients aient une config particulière à chacun....

Mon /etc/exports :


/ 192.168.1.0/255.255.255.0(ro,no_root_squash)
/home 192.168.1.0/255.255.255.0(rw,root_squash)
/etc/sysconfig/mouse$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/modules.conf$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/modules$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/modprobe.conf$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/modprobe.preload$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/X11/XF86Config$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/X11/XF86Config-4$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/X11/xorg.conf$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/etc/sysconfig/i18n$$IP=192.168.1.254$$ 192.168.1.254(rw,no_root_squash)
/mnt/cdrom$$CLIENT$$ 192.168.1.254(rw,no_root_squash)



Il faut aussi faire des copies de :
/etc/passwd
/etc/shadows
/etc/group
en
/etc/passwd$$IP=192.168.1.254$$
/etc/shadows$$IP=192.168.1.254$$
/etc/group$$IP=192.168.1.254$$

En réalité draTermServ crée des fichier /etc/quelquechose$$CLIENT$$. Lorsque qu'avec drakTermServ vous crée un client lègé avec une IP=192.168.1.XX Tous les fichiers /etc/quelquechose$$CLIENT$$ sont reproduits en /etc/quelquechose$$IP=192.168.1.XX$$

ATTENTION : en console cp /etc/quelquechose$$CLIENT$$ /etc/quelquechose$$IP=*******$$ ne fonctionne pas car il faut mettre cp /etc/quelquechose\$\$CLIENT\$\$ /etc/quelquechose\$\$IP\=*******\$\$

On arrive au login console et/ou KDM, GDM....
Mais là cela plante !!!! (peut-être) Chez moi oui cela plantait !
Sur le serveur etherboot j'ai une carte vidéo GeForce II et pas sur le portable... Donc plantage !

Soluce : Un live CD. Réccupération sur clef USB (ex) de /etc/X11/XF86Config-4 et /etc/X11/XF86Config.
Un :

cp /mnt/removable/XF86Config-4 /etc/X11/XF86Config-4\$\$IP\=192.168.1.254\$\$
cp /mnt/removable/XF86Config /etc/X11/XF86Config\$\$IP\=192.168.1.254\$\$
ln -s /etc/X11/XF86Config-4\$\$IP\=192.168.1.254\$\$ /etc/X11/xorg.conf\$\$IP\=192.168.1.254\$\$



J'ai modifié mon /etc/initab\$\$IP\=192.168.1.254\$\$ pour être en init 3.

# /etc/inittab$$IP=192.168.1.254$$
# created by drakTermServ

id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.
ud::once:/sbin/update

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/reboot -f

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1

# Connect to X server
#x:5:respawn:/usr/X11R6/bin/X -ac -query 192.168.1.1


login:zterminal01 (on peut ainsi voir si le z est à Z ou X, et les chiffres déjà activés)
password:******
login(pam_unix)[2116]: session opened for user zterminal01 by LOGIN(uid=0)
-- zterminal01[2116]: LOGIN ON tty1 BY zterminal01


Içi dans les ~/.bash_login j'ai mis une commande qui lance Xtart (modifié : Xtart-term)

#.bash_login
/usr/bin/Xtart-zterm

Cela donne donc le choix à l'utilisateur de lancer KDE....


Ensuite si une application métier sur l'intranet dans doit être lancée alors la lancer par ~/.kde/Autostart/

J'ai crée une application qui lance un navigateur (firefox) sur la page « application metier ». Firefox ayant l'extension KIOSK, l'utilisateur ne peut accèder à autre chose que l'application metier.


[Desktop Entry]
Comment=
Comment[fr]=
Encoding=UTF-8
Exec=/logical-disk/data/SOURCES/firefox/firefox http://www.system-linux.net/egroupware
GenericName=
GenericName[fr]=
Icon=exec
MimeType=
Name=
Name[fr]=
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Nous sommes logué !!!! image: clin d`oeil



Une petite vidéo de l'etherboot Voir



    III) Conclusion :

    C'est la configuration la plus satisfaisante que j'ai eu à réaliser. Car elle englobe la connaissance du noyaux, des réseaux (dhcpd, ethernet...), de X et de ses multiples (innombrables?) possibilités, NFS....

    Bref à réaliser ne serait-ce que pour le fun !


1A ne pas confondre avec un serveur FTP !!!

Postes en réseau sans disque dur, sans disquette...

Avec cartes mêres, processeurs, de la RAM et cartes réseaux.