Les sources et le compilateur

Téléchargement des sources et mise en place du compilateur. Ceci nous permettras de faire de la cross-compilation, ce qui consiste à générer des binaires depuis une machine hôte ver une architecture différente.

I - Installation du compilateur

Modifier le fichier /etc/apt/source.list et ajouter la ligne :

deb http://www.emdebian.org/debian/ unstable main

Installer la clef et le compilateur :

apt-get install emdebian-archive-keyring
apt-get update
apt-get install gcc-4.7-arm-linux-gnueabihf
    

Vous pouvez installer des outils additionnels : 

apt-get install build-essential git debootstrap u-boot-tools qemu qemu-user-static
    

Creer le dossier ~/bin pour stocker les lien symbolique vers les compilateur :

mkdir ~/bin
cd ~/bin
for i in /usr/bin/arm-linux-gnueabihf*-4.7 ; do j=${i##/usr/bin/}; ln -s $i ${j%%-4.7} ; done
    

Généralement le dossier ~/bin est déjà inclus au $PATH, vérifier dans le fichier ~/.profile :


# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

SOURCE : http://linux-sunxi.org/Toolchain 

II - Récupération et compilation des sources

Creer le dossier ~/sunxi puis dedans récuperer les sources : 

git clone https://github.com/linux-sunxi/sunxi-tools.git
git clone https://github.com/linux-sunxi/sunxi-boards.git

git clone https://github.com/linux-sunxi/u-boot-sunxi.git
git clone https://github.com/linux-sunxi/linux-sunxi.git

Le dépot sunxi-tools contiens des outils de génération, sunxi-boards les différentes configurations par type de processeur, u-boot-sunxi contient le bootloader et linux-sunxi contient le kernel.

Aller dans le dossier sunxi-tools et taper : make fex2bin ce qui va générer des fichiers dans le dossier sunxi-board. Aller dans le dossier sunxi-boards/sys_config/a20 et modifier le fichier cubieboard2.fex et ajouter la section :

[dynamic]
MAC = "0123456789AB"

Puis creer le fichier script.bin qui nous sera utile plus tard en tapant : 

../../../sunxi-tools/fex2bin <your-board>.fex script.bin

Ce fichier permet l'initilisation du kernel au démarrage. Nous le copierons dans le dossier /boot de notre futur carte SD.

Aller dans le dossier u-boot-sunxi et trouvé le nom de votre carte : 

grep sunxi boards.cfg | awk '{print $7}'

Configurer u-boot pour la compilation puis compiler :

make -j2 CROSS_COMPILE=arm-linux-gnueabihf- <target>_config
make -j2 CROSS_COMPILE=arm-linux-gnueabihf-
 

Après la compilation vous devriez avoir les fichiers spl/u-boot-spl.bin et u-boot.img de disponible.

Nous pouvons maintenant dans l'ordre: configurer, personnaliser, compiler le kernel et installer les modules en allant dans le dossier linux-sunxi et en tapant (la 1ere ligne est spécifique à l'A20, utilser le bon fichier _defconfig) :


make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun7i_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install

Vous devriez à présent avoir les fichiers linux-sunxi/arch/arm/boot/uImage qui est notre kernel et linux-sunxi/output/lib/modules/3.4.XX/ qui contient les modules.

Nous copierons ces fichiers sur la carte lors de sa génération.

SOURCE : http://linux-sunxi.org/U-Boot