{{tag>xbmc mediacenter nfsroot pxe netboot liveCD}} ====== Utiliser Xbmc en boot PXE ====== Maintenant que nous avons un (voir [[sysadmin:boot_pxe|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 [[sysadmin:boot_pxe| 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 Laissez "client_mac_address" sans le remplacer, cela sera effectué par la machine elle-même lors du démarrage Ne surtout pas utiliser ici de noms DNS 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 ([[sysadmin:tips:initrd|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 * Récupérer les patchs {{:mediacenter:casper.patch|ici}} et {{:mediacenter:casper-helpers.patch|la}} et poser les fichiers dans /tmp * 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 [...] La encore ne **pas** remplacer "client_mac_address" par la valeur de l'adresse MAC ===== Références ===== * http://forum.xbmc.org/showthread.php?tid=122676&pid=1023861#pid1023861 * http://blog.mybox.ro/2010/05/12/how-to-change-files-in-a-initrd-image/