For silicium ideas

Linux kernel (for Raspberry pi)

Linux kernel (for Raspberry pi)

Compiler le noyau linux pour Raspberry Pi peut prendre de quelques minutes à plusieurs heures en fonction de la puissance de votre machine de compilation.

J’ai utilisé le matériel suivant 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 de compilation :
sudo apt-get install git bc

# Installation des dépendances de configuration :
sudo apt-get install libncurses5-dev
# Récupération des sources officielles 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

Raspberry Pi Zero et 1

 SOC Broadcom BCM2835 : monocoeur ARM1176JZF-S 32 bits, ARM11
KERNEL=kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig # [FOR PI 1 and Zero]

Raspberry Pi 2 et 3

SOC Broadcom BCM2836 Quadricoeur Cortex A7, 64 bits, ARMv7
SOC Broadcom BCM2837 Quadricoeur Cortex A53, 64 bits, ARMv8
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig # [FOR PI 2 and 3]

Configurer le kernel avant la compilation avec menuconfig:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
# sauvegarder la configuration avant de quitter !

 

Compiler le kernel (cette opération peut prendre plusieurs heures) :

# 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 la cible :

sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/sdb2 modules_install
sudo cp /media/sdb1/kernel.img /media/sdb1/kernel-backup.img
sudo cp arch/arm/boot/Image /media/sdb1/kernel.img
sudo umount /dev/sdb1
sudo umount /dev/sdb2

 

Références :

https://3mdeb.com/firmware/linux-rpi-and-usb-over-ip/#.WkJQojd76Uk
https://www.blaess.fr/christophe/2014/03/06/compilation-native-de-modules-kernel-sur-raspberry-pi/
https://www.raspberrypi.org/documentation/linux/kernel/building.md



Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.