====== Construction d'une distribution Linux minimale ====== Nous cherchons ici a construire une distribution GNU/Linux minimale pour une platerforme ARM9 (Versatile). Ce type de plateforme est bien connue, cela nous permettra de l'émuler facilement. Une distribution GNU/Linux minimale s'articule autour: * d'un noyau, * d'un système de fichier racine. Pour construire une distribution minimale s'exécutant sur une plateforme ARM il faudra mettre en place une chaine de compilation croisée x86->ARM9. C'est cette chaine qui va nous permettre de compiler le noyau et les programmes contenus dans le système de fichier racine. Ici la chaine pré-compilée [[:dev:outils:eldk|ELDK]] sera utilisée. [[:dev:outils:qemu|Qemu]] nous permettra de tester la distribution par émulation de la plateforme matérielle. ===== Installer ELDK ===== L'installation de la cross-toolchain est détaillée dans le document [[:dev:outils:eldk]]. Ici pour une architecture ARM9 la chaine à installer est la chaine ''armv5te''. ===== Définition des variables d'environnement ===== La compilation croisée du noyau nécessite que certaines variables soient positionnées. Pour ne pas avoir à les répéter lors de chaque appel des commandes de compilation, elles peuvent être définies au niveau de l'environnement de l'utilisateur. Pour cela on peut modifier le script de définition de l'environnement fournit par ELDK: yoann@hermes:~/dev/tools/eldk-5.3/armv5te$ cp environment-setup-armv5te-linux-gnueabi environment-setup-armv5te-linux-gnueabi.backup yoann@hermes:~/dev/tools/eldk-5.3/armv5te$ echo 'export ARCH=arm' >> environment-setup-armv5te-linux-gnueabi yoann@hermes:~/dev/tools/eldk-5.3/armv5te$ echo 'export CROSS_COMPILE=arm-linux-gnueabi-' >> environment-setup-armv5te-linux-gnueabi Exécuter le fichier précédemment modifié dans le shell courant: yoann@hermes:~/dev/tools/eldk-5.3/armv5te$ source ./environment-setup-armv5te-linux-gnueabi Vérifier que les variables sont bien définies dans l'environnement courant yoann@hermes:~/dev/tools/eldk-5.3/armv5te$ printenv AS=arm-linux-gnueabi-as OECORE_TARGET_SYSROOT=/home/yoann/dev/tools/eldk-5.3/armv5te/sysroots/armv5te-linux-gnueabi LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed AR=arm-linux-gnueabi-ar ORBIT_SOCKETDIR=/tmp/orbit-yoann TARGET_PREFIX=arm-linux-gnueabi- ... ===== Compiler le noyau ===== Les étapes de compilation du noyau sont disponible ici [[:linux:compilation:noyau|compiler-noyau]]. La spécificité dans le cas présent est que le noyau est compilé sur la machine hôte (x86) mais est destiné à s'exécuter sur une machine ARM9. Les options de compilations importantes pour le noyau ont été placées dans l'environnement. Ce sont les option ''**$ARCH**'' et ''**$CROSS_COMPILE**''. Télécharger et décompresser les sources. Les plateformes supportées par le noyau bénéficient de fichiers de configuration par défaut. C'est le cas de la Versatile basée sur le processeur ARM9. Nous allons utiliser ce fichier de configuration présent sous le répertoire ''**./arch/arm/configs**'' des sources. Une petite modification doit être apportée toutefois pour permettre au noyau d'exécuter du code EABI. Initialiser le fichier de configuration du noyau à partir du fichier de configuration /arch/arm/versatile_defconfig: yoann@hermes:/usr/local/src/kernels/linux-2.6.36.4$ make versatile_defconfig Lancer l'assistant de configuration du noyau pour activer le support EABI. yoann@hermes:/usr/local/src/kernels/linux-2.6.36.4$ make menuconfig Dans le menu principal selectionner ''Kernel features %%-->%%'' et activer l'option ''Use the ARM EABI to compile the kernel''. Lancer la compilation make V=1