Table des matières
Utiliser Xbmc en boot PXE
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
Prérequis
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
Configuration du PXE
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)
Patch initrd
on va travailler dans le /tmp de la machine :
- Prérequis : installer lzma , cpio et patch au besoin :
# apt-get install lzma cpio patch
- copier et dépaqueter l'initrd (plus besoin d'etre root) :
cp /tftpboot/xbmc-12.0-live/initrd.lz /tmp/ cd /tmp unlzma < initrd.lz > initrd mkdir /tmp/content cd /tmp/content cpio -id < ../initrd
- patcher ce qui doit l'être :
patch -p0 < ../casper.patch
patch -p0 < ../casper-helpers.patch
- Repaqueter l'initrd :
find ./ | cpio -H newc -o > ../new-initrd.cpio lzma < ../new-initrd.cpio > ../initrd.lz
- Déposer l'initrd la ou il sera disponible en PXE :
# 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
Mise a jour XBMC 12.2
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
[...]