Thin-clients server

De Wiki de Nelly & Richard
Sauter à la navigation Sauter à la recherche

Introduction

Il peut-être utile pour un environnement où l'utilisation des postes clients est publique, de mettre en place un serveur de terminaux légers. Que ce soit en termes de maintenance, d'administrations ou simplement pour utiliser des postes de travail obsolètes.
Je vais montrer ici comment construire votre serveur de terminaux légers, si vous préféré utiliser LTSP vous trouverez des informations ici.

Considérations

  • Réseau : 192.168.0.0/16
  • Serveur DHCP : 192.168.0.1
  • Serveur TFTP : 192.168.0.1
  • Serveur HTTP : 192.168.0.1
  • Serveur NBD : 192.168.0.1
  • Packages installés : syslinux-common (ou les sources de syslinux) / tftpd-hpa / apache2 / isc-dhcp-server / nbd-server (uniquement pour sysrcd)
  • client-léger 1 : SystemRescueCD
  • client-léger 2 : Installation ArchLinux x86_64

Arborescence de /var/www/pxe

.
|- arch
|  |- initrd64.img		# livecd Arch
|  `- vm64			# livecd Arch
|- pxelinux.cfg
|  |- default
|  `- vesamenu.c32		# syslinux-common
`- sysrcd
       |- initram.igz		# livecd sysrcd
       |- rescue32		# livecd sysrcd
       |- sysrcd.dat		# livecd sysrcd
       `- sysrcd.md5		# livecd sysrcd

TFTP + syslinux

  • Pour ceux qui ne souhaitent pas utiliser HTTP mais tout en TFTP le fichier pxelinux.0 fournit avec syslinux-common suffira. L'arborescence se trouvera du coup dans /var/lib/tftpboot bien sûr.

file /var/lib/tftpboot/gpxe_custom.txt

#!gpxe
dhcp net0
set 209:string pxelinux.cfg/default
set 210:string http://192.168.0.1/pxe/
chain ${210:string}pxelinux.0

build gpxe_custom.0

Compilation

root@serveur:source# make EMBEDDED_IMAGE=/var/lib/tftpboot/gpxe_custom.txt,/usr/lib/syslinux/pxelinux.0

etherboot ROM-o-matic

  • ROM-o-matic
  • Selectionnez Customize
  • Choisissez PXE bootstrap loader image [Unload PXE stack] (.pxe)
  • Insérez le script gpxe

file /var/www/pxe/pxelinux.cfg/default

# default options

KBDMAP pxelinux.cfg/fr.ktl
PROMPT 0
NOESCAPE 1

DEFAULT pxelinux.cfg/vesamenu.c32
TIMEOUT 30

# menu definition

MENU TITLE Make your choice...

LABEL rescuecd
 MENU DEFAULT
 MENU LABEL ^Sytem Rescue CD over the LAN
   KERNEL /sysrcd/rescue32 setkmap=fr netboot=nbd://192.168.0.1:2000 dostartx
   APPEND initrd=/sysrcd/initram.igz

LABEL arch64
 MENU LABEL Install archlinux over the LAN (64bits)
   KERNEL /arch/vm64
   APPEND initrd=/arch/initrd64.img

DHCP

  • L'option next-server indique le serveur TFTP à contacter.
  • L'option filename indique le fichier à récupérer TFTP (Trivial FTP est un protocole qui ne peut lister comme ftp)

file /etc/dhcp/dhcpd.conf

authoritative;

subnet 192.168.0.0 netmask 255.255.0.0 {
 # deny unknown-clients;
 option domain-name-servers 192.168.0.1;
 option domain-name "network.local";
 option subnet-mask 255.255.255.0;
 option routers 192.168.0.1;
 option broadcast-address 192.168.0.255;
 authoritative;
 range 192.168.0.2 192.168.254.254;
 next-server 192.168.0.1;
 filename "/gpxe_custom.0";
}

NBD

  • NBD (Network Block Device est un module permettant de présenter une partition à la manière du protocole AoE (ATA over Ethernet).
  • Il est utilisé ici pour présenter le fichier squashfs de SystemRescueCD.

file /etc/nbd-server/config

[generic]
       user = nbd
       group = www-data
       listenaddr = 192.168.0.1
       # authfile = /etc/nbd-server/allow

[export]
   exportname = /var/www/pxe/sysrcd/sysrcd.dat
   port = 2000

Client

  • F12 ou autre bricole pour booter sur le réseau devrait suffir ;)

Liens