Compiler le noyau linux pour Raspberry Pi peut prendre de quelques minutes à plusieurs heures en fonction de la puissance de votre machine de compilation.
Machine utilisée pour cross-compiler :
- Processeur : Xeon E5-2620 v2 2.1GHz 15MB Cache , 6 Coeurs, 12 Threads
- Mémoire : DDR 8GB 1600MHz
Temps de compilation :
real 18m37.066s
user 97m22.264s
sys 5m30.492s
Attention !
Vous pouvez aussi le compiler directement sur votre Raspberry Pi sans passer par un serveur de compilation.
Cette technique est utilisée sur le site officiel de Raspberry Pi.
- L’avantage de la compilation sur Raspberry Pi est de ne pas avoir à installer une chaine de cross-compilation.
- L’inconvénient est que la puissance de calcul du Raspberry même le plus performant (Rasp 2 et Rasp 3) demandera des heures des compilation et utilisera beaucoup d’espace de stockage.
En général, la cible embarquée telle qu’un Raspberry Pi ne doit pas être utilisée à des fins de compilation sauf en de rares occasions.
A partir d’un terminal
Installation des dépendances
# Installation des dépendances de compilation sudo apt-get install git bc # Installation des dépendances de configuration sudo apt-get install libncurses5-dev
Clonages GIT
# Récupération des sources officielles de Linux avec GIT : git clone https://github.com/raspberrypi/tools tools-rpi git clone --depth=1 https://github.com/raspberrypi/linux linux-rpi # Ajout du compilateur croisé dans le PATH : export PATH=${PWD}/tools-rpi/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH} cd linux-rpi
Defconfig pour Raspberry Pi Zero et 1
SOC Broadcom BCM2835 : monocoeur ARM1176JZF-S 32 bits, ARM11
# [Basic kernel configuration for PI 1 and Zero boards] KERNEL=kernel make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig
Defconfig pour Raspberry Pi 2 et 3
SOC Broadcom BCM2836 Quadricoeur Cortex A7, 64 bits, ARMv7 SOC Broadcom BCM2837 Quadricoeur Cortex A53, 64 bits, ARMv8
# [Basic kernel configuration for PI 2 and 3 boards] KERNEL=kernel7 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
Menuconfig
Configurer (manuellement) le kernel Linux avec menuconfig avant la compilation
# Execute menuconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig # Pensez à sauvegarder la configuration avant de quitter !
Compiler le kernel
(cette opération peut prendre environ 1 heure)
# Options de compilation : # -j12 : diviser la charge de calcul sur les threads de votre CPU (Xeon de 12 threads dans l'example) # zImage : compiler le zImage# modules : compiler l'ensemble des modules # dtbs : compiler l'ensemble des dtb make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12 zImage modules dtbs
Installer les éléments compilés sur une carte SD bootable
# Commande MAKE pour déployer uniquement les modules d'une compilation sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/sdb2 modules_install # Sauvegarder l'ancienne image kernel sudo cp /media/sdb1/kernel.img /media/sdb1/kernel-backup.img # Copier la nouvelle image kernel sur la carte SD sudo cp arch/arm/boot/Image /media/sdb1/kernel.img # Demonter les cartes sudo umount /dev/sdb1 sudo umount /dev/sdb2
0 Comments