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
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 (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 ici et 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

mediacenter/xbmc_pxe.txt · Dernière modification: 2013/11/20 17:44 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0