Booter sur le serveur LTSP depuis le disque dur avec Grub

Un client léger LTSP boote normalement en PXE sur une image i386.img (par exemple) accessible par NBD ou NFS …
Mais avec la version 5 de ltsp-server, cette image peut contenir un système complet quasiment autonome, on parle alors de fat-client
Du coup, il peut être intéressant d’installer cette image sur un disque dur

Quel intérêt puisqu’on a un serveur LTSP ?
J’en vois plusieurs :
– L’accès au disque dur est tout de même plus rapide que NBD ou NFS
– Une seule image pour tout le parc de machines
– Avec nativement le home centralisé sur le serveur et la possibilité d’utiliser les applications du serveur (remoteapps)

Quels inconvénients ?
– Quand on veut changer quelque chose dans l’image, il faut la reconstruire sur le serveur et la déployer sur tous les postes…

Toute la suite de cet article est basé sur celui-ci : http://labs.opinsys.com/blog/2014/01/31/how-to-boot-ltsp-client-from-harddrive-using-grub/

Maquette
La machine sur laquelle j’ai testé cela est déjà une machine en dual boot. Son partitionnement est le suivant :
sda1 Partition primaire supportant Windows XP
sda2 Partition étendue contenant
sda5 racine d’une ubuntu trusty de test
sda6 swap

Notre serveur LTSP principal a pour ip 10.145.15.147.

Depuis la Ubuntu Trusty (sda5) en root

Je copie l’image i386.img pour la mettre à la racine de sda5
cd / && scp administrateur@10.145.15.147:/opt/ltsp/images/i386.img .

Comme il ne s’agit pas du seul système, je modifie le grub en ajoutant des entrées custom

nano /etc/grub.d/40_custom

Les modifications par rapport à l’article de opinsys.com sont en gras

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}

if loadfont unicode ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=fr_FR
insmod gettext
fi
terminal_output gfxterm

insmod gzio
insmod part_msdos
insmod ext2
insmod squash4
insmod biosdisk
insmod regexp
insmod loopback
insmod usb_keyboard
insmod lvm

menuentry « LTSP i386 – img sur dd » {
loopback loop « (hd0,5)/i386.img »
set root='(loop)’

linux /boot/vmlinuz ro init=/sbin/init-ltsp root=/dev/sda5 loop= »i386.img » server=10.145.15.147
initrd /boot/initrd.img

loopback -d loop
}

Quelques commentaires :
– On passe en fr_FR … je ne comprends pas le finlandais
– Le disque dans lequel il y a le i386.img est (hd0,5)
– J’ai du ajouté la variable server=ip_du_ltsp … sinon, le serveur n’était pas le bon. D’après ce que je comprends, c’est parce que ltsp utilise comme server le serveur nbd et/ou le serveur pxe… Or dans notre cas, il n’y a pas de nbd (puisque l’image est sur le disque dur) et le serveur pxe n’est pas notre serveur ltsp …

Ensuite toujours en root,
update-grub
reboot

Et normalement, vous avez un nouveau choix dans votre grub, celui de booter sur votre serveur LTSP !!!

Laisser un commentaire