On cherche à générer un système GNU/Linux complet pour une Raspberry Pi à partir des fichiers sources seulement. Les bénéfices sont multiples:
La Raspberry Pi fonctionnant autour d'un microprocesseur ARM, il va falloir mettre en place une chaine de compilation croisée qui permettra de générer depuis un systeme hôte de type PC, du code exécutable pour le microprocesseur ARM. le wiki cross toolchain détaille davantage le principe de la chaine de compilation croisée.
Buildroot va devenir notre nouvel meilleur amis, il va nous aider toutes les étapes de la mise en service de notre système GNU/Linux. On s'appuiera sur lui pour:
La présentation de l'outil et la procédure de compilation de la cross toolchain est détaillée dans le wiki buildroot.
Maintenant que la chaine de compilation croisée est opérationnelle, on peut s'en servir pour compiler le noyau Linux en l'adaptant parfaitement au matériel.
On récupère les sources du noyau Linux adapté à la Raspberry disponible sur le dépot git officiel.
yoann@hermes:/opt$ cd /tmp/ yoann@hermes:/tmp$ wget https://github.com/raspberrypi/linux/archive/rpi-3.2.27.zip yoann@hermes:/tmp$ unzip rpi-3.2.27.zip yoann@hermes:/tmp$ sudo mv linux-rpi-3.2.27/ /opt/
On recupere le fichier de configuration préparé
yoann@hermes:/tmp$ cd /opt/linux-rpi-3.2.27/ yoann@hermes:/opt/linux-rpi-3.2.27$ wget http://www.blaess.fr/christophe/files/glmf/rpi-scratch-01/config-linux yoann@hermes:/opt/linux-rpi-3.2.27$ mv config-linux .config
Pour voir ou modifier les options de configuration de notre noyau il suffit de lancer la commande make menuconfig
yoann@hermes:/opt/linux-rpi-3.2.27$ make ARCH=arm menuconfig
Ci dessous quelques options de personnalisation:
Une fois les personnalisations apportées, enregistrer les modifications et lancer la compilation avec le commande make.
yoann@hermes:/opt/linux-rpi-3.2.27$ make ARCH=arm CROSS_COMPILE=/opt/cross-rpi/usr/bin/arm-linux-
Le résultat de cette compilation est se trouve dans le répertoire ./arch/arm/boot
yoann@hermes:/opt/linux-rpi-3.2.27$ ls -lh ./arch/arm/boot/ total 6,1M drwxr-xr-x 2 yoann yoann 4,0K 2012-11-26 13:40 bootp drwxr-xr-x 2 yoann yoann 4,0K 2012-12-20 12:40 compressed drwxr-xr-x 2 yoann yoann 4,0K 2012-11-26 13:40 dts -rwxr-xr-x 1 yoann yoann 4,1M 2012-12-20 12:40 Image -rw-r--r-- 1 yoann yoann 1,3K 2012-11-26 13:40 install.sh -rw-r--r-- 1 yoann yoann 3,5K 2012-11-26 13:40 Makefile -rwxr-xr-x 1 yoann yoann 2,0M 2012-12-20 12:40 zImage yoann@hermes:/opt/linux-rpi-3.2.27$
Le fichier zImage est l'image toute chaude de notre noyau. Il va maintenant falloir préparer la carte SD.