Maintenant que nous avons un (voir serveur de boot PXE) nous pouvons l'utiliser pour pouvoir démarrer des Xbmc sur différentes machines en passant par le réseau, ainsi ces machines n'ont pas besoin d'avoir un disque dur qui tourne et qui fait du bruit.
Cette configuration n'est pas triviale, voir ce qui suit.
Idée générale : image ISO exportée en NFS, boot réseau PXE qui se base sur cet export NFS. On utilise un autre acces NFS (en écriture aussi cette fois) permettant d'enregistrer les changements de fichiers effectués
Vous devez disposer d'une image ISO de Xbmc exportée en NFS, par exemple en utilisant les commandes suivantes :
# mkdir -p /mnt/iso/xbmcbuntu-12.00-live
# echo "/mnt/data/ISOs/xbmcbuntu-12.00.Intel-NVIDIA.iso /mnt/iso/xbmcbuntu-12.00-live udf,iso9660 user,noauto,loop,ro 0 0" >> /etc/fstab
$ mount /mnt/iso/xbmcbuntu-12.00-live
# echo "/mnt/iso/xbmcbuntu-12.00-live/ 192.168.0.0/255.255.255.0(ro,mountpoint,no_subtree_check)" >> /etc/exports
Vous devez disposer d'un accès lecture/écriture sur le serveur NFS. (ici on utilise l'adresse MAC du mediacenter, adaptez “01-02-03-04-0A-0B” à l'adresse MAC de votre machine en majuscule )
Les chemins sont a adapter, mais par exemple :
# mkdir -p /mnt/data/xbmc-nfs-root/01-02-03-04-0A-0B
# echo "/mnt/data/xbmc-nfs-root/01-02-03-04-0A-0B 192.168.0.40/255.255.255.255(rw,sync,nohide,no_subtree_check,no_root_squash)" >> /etc/exports
Il ne reste plus qu'a dire au serveur NFS de prendre en compte ces nouveaux changements :
# /etc/init.d/nfs-kernel-server reload
Il faut rendre accessible en PXE le noyau et l'initrd pour permettre le démarrage :
# mkdir /tftpboot/xbmc-12.0-live
# cp /mnt/iso/xbmcbuntu-12.00-live/casper/initrd.lz /tftpboot/xbmc-12.0-live
# cp /mnt/iso/xbmcbuntu-12.00-live/casper/vmlinuz /tftpboot/xbmc-12.0-live
Ajouter ensuite a votre fichier pxelinux.cfg/default (ou celui spécifique a l'adresse mac correspondante, cf la page qui va bien (remplacer “192.168.0.1” par l'adresse IP de votre serveur NFS, et les chemins NFS correspondants au besoin) :
label xbmclivecow menu label XBMCLive NFS, NFS Copy On Write xbmcbuntu-12.00.Intel-NVIDIA kernel xbmc-12.0-live/vmlinuz append initrd=xbmc-12.0-live/initrd.lz netboot=nfs nfsroot=192.168.0.1:/mnt/iso/xbmcbuntu-12.00-live ip=dhcp root=/dev/nfs usbcore.autosuspend=-1 video=nvidia boot=casper xbmc=autostart,noredir debug quickusbmodules nopreseed showmounts nfscow=192.168.0.1:/mnt/data/xbmc-nfs-root/client_mac_address
Vous avez vraiment cru que cela serait si simple ? :p
Ca pourrait mais en fait pas du tout : l'initrd fournit ne gère absolument pas le copy-on-write (cow pour les intimes), il va donc falloir remédier a cela
Accrochez vous a vos bretelles : au menu de la suite, dépaquetage de l'initrd, patch pour supporter le cow, puis repaquetage (quelques commandes utiles ici)
on va travailler dans le /tmp de la machine :
# apt-get install lzma cpio patch
cp /tftpboot/xbmc-12.0-live/initrd.lz /tmp/ cd /tmp unlzma < initrd.lz > initrd mkdir /tmp/content cd /tmp/content cpio -id < ../initrd
patch -p0 < ../casper.patch
patch -p0 < ../casper-helpers.patch
find ./ | cpio -H newc -o > ../new-initrd.cpio lzma < ../new-initrd.cpio > ../initrd.lz
# mv /tmp/initrd.lz /tftpboot/xbmc-12.0-live/initrd.lz
Il ne reste plus qu'a démarrer votre, vous devriez voir l'entrée XBMC dans le menu de boot réseau.
Pour verifier le fonctionnement du copy on write, tentez d'ecrire un fichier disons dans /root : ce fichier devrait etre présent apres le redémarrage
Depuis que cette page a été écrite, la version 12.2 est sortie. Les étapes décrites précédemment fonctionnent encore, le patch/regénération de l'initrd aussi (avec les mêmes patchs) : il suffit d'adapter les numéros de version dans les différents chemins
Voici la configuration PXE à ajouter pour avoir d'une part un liveCD simple (sans persistance des données) et d'autre part la version avec persistance qui nécessite donc par contre l'initrd patché :
[...] label xbmc122live menu label XBMCLive 12.2 Intel NVIDIA kernel xbmc-12.2-live-intel/vmlinuz append initrd=xbmc-12.2-live-intel/initrd.lz netboot=/dev/nfs nfsroot=192.168.0.1:/mnt/iso/xbmcbuntu-12.2-live debug boot=casper label xbmc122cow menu label XBMCLive - NFS Copy On Write 12.2 Intel NVIDIA kernel xbmc-12.2-live-intel/vmlinuz append initrd=xbmc-12.2-live-intel/initrd_cow.lz netboot=/dev/nfs nfsroot=192.168.0.1:/mnt/iso/xbmcbuntu-12.2-live debug boot=casper nfscow=192.168.0.1:/mnt/data/xbmc-nfs-root/client_mac_address [...]