Les pré-requis pour la compilation
Pour récuperer les sources il faut un client git:
yum install git
Il faut ensuite les paquets classiques pour compiler:
yum install gcc-c++ flex bison gawk gperf autoconf automake m4 \ cvs libtool texinfo gettext libxslt expat zlib-devel ncurses-devel zip
La commande pour récupérer les sources est la suivante:
git clone git://github.com/OpenELEC/OpenELEC.tv.git
Avant de compiler il faut se placer dans la repertoire des sources:
cd OpenELEC.tv
Pour mettre à jour de temps en temps les sources, il suffira de faire un git pull.
La compilation
Les sources d’OpenElec peuvent couvrir plusieurs projets, celui qui nous interesse ici est le projet « RPi ». L’architecture pour la compilation sera « arm ». La commande pour la compilation (spécifique à OpenElec) est la suivante:
PROJECT=RPi ARCH=arm make
La compilation peut être assez longue. Si tout ce passe bien, la compilation se termine par la création de l’image système au format SquashFS. Ce qui nous intéresse maintenant se découpe en 3 parties:
- Une partie qui gère le boot
- le kernel
- le système incluant xbmc
Ces 3 parties vont être copiées dans la partition « System » qui peut être vu comme une partition /boot en gros.
Préparation de la carte SD
Pour fonctionner, il faut une carte SD partitionnée (avec fdisk par exemple) comme suit:
- une partition vfat de 128Mo, flaguée bootable
- une partition ext4 utilisant le reste de la carte SD
La partition en vfat de 128Mo devra être labelisée en tant que « System », l’autre partition en ext4 en tant que « Storage ».
Pour formater en vfat avec le label « System »:
mkfs.vfat -n System /dev/<carte SD partition 1>
Pour formater en ext4 avec le label « Storage »:
mkfs.ext4 -L Storage /dev/<carte SD partition 2>
L’installation sur la carte SD
Le bootloader
La première partie à copier sur la carte SD gère le boot, elle se décompose en 3 fichiers:
- arm128_start.elf
- bootcode.bin
- loader.bin
Ces 3 fichiers sont à copiés sur la carte SD dans la partition System, par exemple montée dans /media/System. Le arm128_start.elf est à renommer en start.elf. Les commandes de copies sont les suivantes:
cp build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-*/arm128_start.elf /media/System/start.elf cp build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-*/bootcode.bin /media/System/ cp build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-*/loader.bin /media/System/
Le répertoire bcm2835-bootloader-* contient dans son nom un numero de release qui varie en fonction des sources récupérées, d’où le « * ». Si un « make clean » est exécuté avant chaque compilation, il n’y aura qu’un seul répertoire bcm2835-bootloader-<release>, dans le cas contraire, et si les sources concernant le bootloader ont été mises à jours, il pourrait y en avoir plusieurs.
Le kernel
Le kernel sous format de fichier image, se trouve dans le répertoire target. Son nom de fichier contient un numero de release et peut donc varier en fonction des sources utilisées. Il est à copier sur la carte SD dans la partition System, en le renommant en kernel.img. La commande est la suivante:
cp target/OpenELEC-RPi.arm-devel-*.kernel /media/System/kernel.img
Le système
Le système est dans un fichier image au format SquashFS. Cette image est créée en fin de compilation et se trouve dans le repertoire target. Son nom de fichier contient lui aussi un numéro de release, qui peut donc varier en fonction des sources utilisées. Cette image du système est à copier sur la carte SD, toujours dans la partition System, renommée en SYSTEM. La commande est donc la suivante:
cp target/OpenELEC-RPi.arm-devel-*.system /media/System/SYSTEM
Conclusion
Rien de bien compliqué en soit, grâce au fichier configurant le projet « RPi » et à l’excellent travail de l’équipe OpenElec. Il ne reste plus qu’à démonter la carte SD et l’insérer dans le Raspberry Pi.
Ce billet est en gros une traduction allegée de la documentation issue du wiki officiel consultable ici.