Você está na página 1de 5

Prsentation de la cible Quest-ce que Linux ?

Sommaire La cible : Calao USB-A9260

Formation au Noyau Linux


Prsentation gnrale
Compiler
Jrme Pouiller <j.pouiller@sysmic.org>
Les concepts de dveloppement
Debugguer
LAPI
Contribuer

Sysmic - J. Pouiller Formation au Noyau Linux 2 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 3 / 182

Prsentation de la cible Quest-ce que Linux ? Prsentation de la cible Quest-ce que Linux ? Prsentation de la cible Quest-ce que Linux ?

La cible : Calao USB-A9260 Composants de Linux Elements


GNU/Linux est finalement un agglomra :

App App
Architecture trs classique dans le milieu de Linux embarqu :
Il y a trois lments important de GNU/Linux :
Microcontrolleur Atmel AT91SAM9260 App Bash GNU App App
Core ARM926EJ-S 180MHz Le noyau : Linux
64Mo de RAM GNU lib Lib Le projet GNU et plus particulirement la glibc, bash et les
256Mo de flash coreutils
64Ko dEEPROM GNU libc Les normes : SystemV, Posix, etc...

Choisie car compacte et trs bien supporte par Linux


Noyau Linux

Matriel

Sysmic - J. Pouiller Formation au Noyau Linux 4 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 5 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 6 / 182

Prsentation de la cible Quest-ce que Linux ? Prsentation de la cible Quest-ce que Linux ? Prsentation de la cible Quest-ce que Linux ?

La Norme Posix Le Projet GNU Le noyau Linux

Cr en 1991 par Linus Torvalds :


Cr en 1983 par Richard Stallman http://groups.google.com/group/comp.os.minix/
Portable Operating System Interface [for Unix] browse_thread/thread/76536d1fb451ac60
Pose les bases politiques de GNU/Linux
Uniformise les OS Inspir de Minix
GPL publie en 1989 just a hobby, wont be big and professional like gnu
Premire version publie en 1988 GPLv2 en 1991
GPLv3 en 2006
Noyau monolithique
Souvent implment en partie
Dbat TanenbaumTorvalds
... et parfois sen inspire simplement gcc apparait en 1985 http://groups.google.com/group/comp.os.minix/
Posix 9 Linux bash et les Coreutils apparaissent en 1988 (inspirs de sh browse_thread/thread/c25870d7a41696d2
1971/1977) Modulaire depuis la version 2.6
Linux 9 Posix
Nombre darchitectures supportes incalculable Systme communautaire
La licence GPL t choisie par pragmatisme et non par conviction
Eternels dbats dopinions entre Stallman et Torvalds

Sysmic - J. Pouiller Formation au Noyau Linux 7 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 8 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 9 / 182
Prsentation de la cible Quest-ce que Linux ? Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

3 Les BSP
Le noyau Linux 4 Obtenir le noyau
Quelques chiffres
Tlcharger les sources
Comprendre le versionning
15 millions de lignes de code dans 30000 fichiers (+15%/an)
Utiliser Git
Environ 1200 dveloppeurs dans 600 entreprises (+35%/an)
Environ 5000 contributeurs depuis la premire version de Linux
Deuxime partie II 5 Organisation des sources
Les sous-rpertoires de la racine
Environ 650 mainteneurs (cest--dire responsables dune partie
Le rpertoire arch/
du noyau)
Compiler le noyau
26 architecures (= jeux dinstructions) Compiler 6

Le systme de compilation du noyau


Des centaines de plateformes
Grer les configurations
Plus dun millier de drivers
Modifier les configurations
Une centaine de versions publies
Compiler
Environ 10000 contributions sur chaque version
Options de Kbuild
Enormment de forks et de version non-officielles
Rsultats de la compilation
Domaine dapplication trs large, du DSP au super-calculateurs
en passant pas les grille de calcul Compiler les modules
Faire le mnage
Sysmic - J. Pouiller Formation au Noyau Linux 10 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 11 / 182 7 Options principales Sysmic - J. Pouiller Formation au Noyau Linux 12 / 182

Configuration globale
Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP Fonctionnalits du noyau
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Les options de boot


Quest-ce quun BSP ? Rcupration des sources Versionning
Le rseau
Board Support Package (BSP) AuLes systmes
dbut, de fichiers
le noyau sincrmentait de deux en deux : 2.0, 2.2, 2.4,
Normalement fourni par lintgrateur. 8 Les drivers
etc... Les version impaires indiquait les noyau en dveloppement.
Contient au minimum la toolchain (compilateur, linker, Chaque version du noyau apportait des ruptures importantes
Autres options
Ou rcuprer les sources du originales noyau ?
debuggueur) pour la cible, au minimum les sources, et souvent 9
avec
Le bootla tftp/nfs
version prcdente
des versions pr-compiles Utiliser les sources souvent fournies avec le BSP. Il arrive Avec le noyau 2.5 puis 2.6, le noyau est arriv une certaine
Cette toolchain est souvent compile avec une libc (glibc, clibc, souvent quelles contiennent des drivers particuliers et quelles 10 Options
maturit. deLesdmarrage
gros changements sont devenus rares et les
newlib, bionic, eglibc, dietlibc, klibc, etc...) et une version des soient dj configures 11 Fabrication
dveloppements dun BSP
sont devenus de plus en plus itratifs
binutils. Si ca nest pas le cas, elle pourra compiler le noyau Tlcharger sur kernel.org Finalement dans la version 2.6, toutes les versions mineures
Linux, mais aucune binaire utilisateur. sont stables
Contient souvent le bootloader (sources et/ou binaire) le noyau host$ wget http://www.kernel.org/pub/linux/ Les versions stables de la 2.6 peuvent recevoir des correctifs et
Linux (au minimum les sources, et parfois une version kernel/v3.x/linux-3.3.tar.bz2 sont alors numrots sur 4 chiffres : (exemple : 2.6.32.59)
pr-compile). host$ tar xvjf linux-3.3.tar.bz2 Le dveloppement dune nouvelle version du noyau 2.6 en
Si la cible possde des drivers spcifique externes Linux, ils intgrant les patchs provenant des sous-systmes. Les noyaux
doivent (devraient) tre fournis avec la toolchain. Utiliser git clone produit lors de lintgration de ses patchs est suffixs par rcX
De mme, si la cible doit utiliser certaine bibliothques (release candidate).
spcifiques, elle sont normalement fournies Le dveloppement noyau alterne les fentres de merge pendant
Contient la documentation (parfois incomplte...) lesquels, les mainteneurs des sous-systmes envoient leurs
Assez souvent, un rootfs est fourni dveloppements Linus Torvalds et fentres de stabilisation.
Sysmic - J. Pouiller Formation au Noyau Linux 13 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 14 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 15 / 182

Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Versionning Git Git


git est loutil de gestion de sources du noyau Pour rcuprer un dpt :
Il est fortement recommander de lutiliser dans le cadre du git clone <dept>
La version 3.0 correspond en fait la version 2.6.40 renomme : dveloppement du noyau
Il ny a eu aucune refonte de larchitecture entre les version 2.6 et 3 Il sagit dun systme de gestion dcentralis. Quelques dpts notables :
Pour fter les 20ans du kernel Pour expliquer la dcentralisation, imaginez que : git://git.kernel.org/pub/scm/linux/kernel/git/
Pour marquer lintgration de la branche RT-Preempt dans le torvalds/linux-2.6.git Le dpt de Linus Torvalds. Il
Un utilisateur duplique un dpt svn
mainstream contient les derniers patchs du noyau en dveloppement
Des modifications sont apportes sur les deux dpts
Parce quavec le cycle de dveloppement itratif, la version 2.6 ne On essaye de resynchronisez les deux dpts...
git://git.kernel.org/pub/scm/linux/kernel/git/
sincrmentera jamais. Les version stable quant elles peuvent stable/linux-stable.git Le dpt stable. Contient la
recevoir des correctif et se retrouver sur 4 chiffres. Il y avait par
Considrez git comme un svn capable deffectuer cette opration dernire version stable du noyau, ainsi les mises jours des
consquent un chiffres en trop. Le passage en 3.Y.Z permettait de trs simplement. versions stables
revenir sur un modle classique 3 chiffres. Lorsquun utilisateur rcupre le code dun dpt, il devient git://git.kernel.org/pub/scm/linux/kernel/git/
Le passage en 3.X marque ainssi la stabilisation du cycle de lui-mme dpt next/linux-next.git Les dpt une dizaine de sous-projets
dveloppement du noyau Si lutilisateur laisse un moyen quelconque daccs en lecture importants sont mergs automatiquement dans ce dpt. Utilis
son dpt, dautres personnes pourrons leur tour le cloner ou principalement par des robots afin didentifier les problmes de
Rfrence : Documentation/development-process
merge en amont des phases dintgrations
tirer les modification quil a effectu
git://git.kernel.org/pub/scm/linux/kernel/git/
http://git.kernel.org liste les dpts publiques des tglx/history.git Lhistorique des versions entre 2.5.0 et
principaux dveloppeurs du noyau 2.6.12.
Sysmic - J. Pouiller Formation au Noyau Linux 16 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 17 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 18 / 182
Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Git Organisation des sources Organisation des sources

Rcuprons la version stable


On remarque quil existent dnorme diffrences de tailles entre les
host$ git clone git://git.kernel.org/pub/scm/linux/ rpertoires : Les services indispensables un OS :
kernel/git/stable/linux-stable.git kernel Le scheduler de tches, les frameworks de gestion des
$ du -s */ | sort -n | column
40 usr 4092 scripts IRQ, le loader de binaires, diverses autre fonctionnalits ne
Chaque version du noyau est marque avec un tag 156 samples 5248 kernel rentrant dans aucune autre catgories.
160 init 6436 firmware mm Le gestionnaire de mmoire. Considr comme la partie la plus
host$ git tag complexe du noyau
180 virt 19524 Documentation
init La fonction de dmarrage du noyau (start_kernel).
Puis il est possible de rcuprer une version avec 232 ipc 21332 net arch Le code spcifique chaque architecture. En particulier, le
884 block 22728 include code ncessaire au boot, la gnration des images, les routine
host$ git checkout v3.3 1904 crypto 24016 sound assembleur pour la gestion des interruptions, etc...
9 1932 lib 32436 fs On peut estimer que lintelligence rside principalement dans
Votre dpt est alors non-modifiable. Vous devez crer une branche 2076 security 121584 arch kernel et mm. On remarque cette partie est finalement
de travail : 2400 mm 252688 drivers relativement petite dans le noyau.
3536 tools
host$ git checkout -b mybranch v3.3

Sysmic - J. Pouiller Formation au Noyau Linux 19 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 20 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 21 / 182

Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Organisation des sources Organisation des sources Organisation des sources

Des bibliothques utilitaires :


Les drivers lib Divers utilitaires
drivers/* Tous les autres drivers et frameworks de crypto Fonctions utilitaires relatives la cryptographie
Les services supplmentaires du noyau : dveloppements. De loin la plus grosse partie du code du noyau.
Le code annexe :
fs Les systmes de fichiers : ext3, NTFS, NFS, etc... sound Les drivers de cartes son.
net La gestion du rseau et plus particulirement la stack IP firmware Certains priphriques ncessitent lupload dun include Les headers exposs du noyau.
ipc La gestion des communication inter-processus (shmem, mq, firmware pour sinitialiser. firmware contient les binaires de ces scripts Les scripts ou les programmes utilitaires ncessaires
etc..) firmwares (sans les sources !). La politique de Linux au sujet du la compilation ou lexploitation du noyau
security Les frameworks de gestion de la scurit (selinux, code de ces firmwares est quil sagit de donnes dinitialisation de usr Script ncessaire la gnration des initramfs
apparmor, etc..) ces priphriques et que par consquent, ils ont leurs place dans tools Les outils permettant la communication de certains
larborescence du noyau. frameworks avec le noyau (particulirement perf)
block Le framework des priphriques de block. La documentation
virt/kvm Le framework de virtualisation kvm. Documentation La documentation
sample Des exemples de code pour certains frameworks

Sysmic - J. Pouiller Formation au Noyau Linux 22 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 23 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 24 / 182

Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Les architectures Le code spcifiques aux architectures Fonctionnement de Kconfig


Regardons arch/ de plus prs :
On retrouve dans les sous-rpertoire de arch/ certains
Les PC : x86 rpertoires de la racine.
Les workstations et les serveurs : alpha, sparc (Sun), ia64 Systme de compilation du noyau
mach-, plat-, plateforms contiennent du code spcifique
(Intel), powerpc, s390 (Mainframes dIBM) parisc un type de plateformes : Ti Omap, Atmel AT91, PowerPC 85xx Application de la rgle : Pas gnrique mais simple hacker
(Workstation HP) Dpend principalement de gmake
On pourra trouver des fichiers spcifique aux board.
Lembarqu : arm, mips, sh (STMicroelectronics), avr32, m68k, Particulirement vrai pour les architectures non plug-and-play qui Pas un systme de compilation rel. Compos de :
score, mn10300, m32r h8300 ncessite que les priphriques soient dclars manuellement Kconfig : Systme de gestion de configuration
Les architectures ddies : cris (Embedded Network), frv Kbuild : Ensemble de rgles de Makefile bien penses
include/ contient des headers spcifiques larchitecture.
(Futjisu, Traitement dimage) Adapt aux environnements proposant beaucoup doptions de
Lors de la compilation, un lien symbolique sera cr entre
Les DSP : c6x (Texas Instrument), heaxgon (Qualcomm), arch/<ARCH>/include/asm et include/asm. Ce lien configuration
blackfin permet au noyau de sabstraire de la plateforme Trs bien adapt la cross-compilation
Les softcores : microbaze, xtensa boot/ contient le code ncessaire au dmarrage de la cible : Utilis dans dautre projets : clibc, busybox, buildroot (tous
Les exprimentaux tile (Architecture distribue), unicore32 Le code du bootloader et les scripts associs permettant la dans le milieu de lembarqu)
(Universit de Pekin), openrisc dcompression du noyau en mmoire
User Mode Linux : um Les scripts ncessaire la gnration dune image au format du
bootloader, du flasher ou de la sonde JTAG
On retrouve nos 26 (+1) architectures supportes
Sysmic - J. Pouiller Formation au Noyau Linux 25 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 26 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 27 / 182
Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Le systme de compilation Travailler avec les configurations Travailler avec les configurations
Lorsque votre fichier .config nest parfaitement compatible
Pour obtenir de laide sur les diffrentes cibles : avec vos sources (import, mise jours des sources, dition
make help propose des configurations prtablies. Il est manuelle, ...), il recommand (ncessaire ?) de lancer
host$ make help possible dimporter une de ces configuration :
host$ make oldconfig
La variable ARCH= spcifie larchitecture cible utiliser. Elle host$ make ARCH=arm usb-a9260_defconfig
oldconfig vous indique dventuelles incompatibilit entre
impacte les options du noyau. Comparez make help avec votre configuration et vos sources et vous demande votre avis
make ARCH=arm help. Kconfig sauvegarde la configuration dans .config.
sur les nouvelles options
Si ARCH nest pas spcifie, Kconfig utilise larchitecture host. Le fichier .config sera ensuite : Pour rpondre systmatiquement avec la rponse par dfaut :
Sourc dans les systmes de Makefile
Lorsque vous avez commenc spcifier ARCH, vous devez Transform en include/generated/autoconf.h et inclut host$ yes "" | make oldconfig
toujours la spcifier. dans les headers de compilations
Obtenir la liste des nouvelles options par rapport votre
Il est toutefois possible de placer cette variable dans le Makefile Certains constructeur vous fournirons un patch ajoutant une configuration :
racine ou dans lenvironnement pour viter de loublier. cible _defconfig
host$ make listnewconfig
host$ export ARCH=arm ... dautres vous fournirons un .config
Vous pouvez normalement trouver la configuration du noyau de
votre host dans /boot/config-uname -r
Sauver votre configuration en effectuant un sanity check
Sysmic - J. Pouiller Formation au Noyau Linux 28 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 29 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 30 / 182
host$ make savedefconfig

Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
Rfrence : Documentation/kbuild/kconfig.txt
BSP Obtenir le noyau Organisation des sources Compiler le noyau
Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Configurer le noyau Configurer le noyau Les cibles de compilation


En Qt4 La compilation du noyau se lance juste avec
Pour configurer les options :
host% apt-get install libqt4-dev
host$ make
En ligne de commande (inutilisable pour un humain) host$ make xconfig

host$ make config En Gtk Le systme choisi les cible approprie en fonction de votre
architecture (principalement, une image et les modules)
En ncurses host% apt-get install libglade2-dev Il est souvent prfrable (ncessaire ?) de spcifier le type
host$ make gconfig dimage voulue avec
host% apt-get install libncurses5-dev
host$ make menuconfig Dans toutes les interfaces, il est possible dobtenir de la host$ make XXImage
description sur llment slectionn (<h> ou <?>)
Avec la nouvelle version de ncurses Il est possible de rechercher dans les descriptions des lments XX fait rfrence au format de la binaire produite :
(</>) Le code commence=t=il au premier octet ?
host% apt-get install libncurses5-dev Respecte-t-il le format ELF ?
host$ make nconfig Dans la recherche et dans laide, vous trouverez des
Y a-t-il un format particulier dentte respecter ?
informations sur les dpendances entre les options
Les script scripts/config permet de changer les Dans le doute, il faut consulter la documentation de votre
configuration la main bootloader

Sysmic - J. Pouiller Formation au Noyau Linux 31 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 32 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 33 / 182

Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Options de Kbuild Options de Kmake Rsultats de la compilation


Certaines options peuvent tre passes sur la ligne de commande Fichiers produits (ou productibles) par la compilation :
C={1,2} lance loutil sparse sur les sources. Nous y
afin de modifier le comportement gnral du systme.
reviendrons.
ARCH= spcifie larchitecture utiliser. (Nous lavons dj vu) vmlinux : Limage ELF du noyau. Lisible par les debugueurs,
-jX est une option de make qui permet de lancer X compilation certains flasheurs, certain bootloaders
CROSS_COMPILE= spcifie le prfixe de la toolchain. Ainsi, si
simultanes. Grosso modo, X devrait tre plus ou moins votre
vous compilez avec vmlinuz : parfois quivalent du bzImage, mais normalement, il
nombre de coeurs CPU.
/opt/arm/usr/bin/arm-linux-ulibc-gcc, vous devez sagit devmlinux compress et stripp des informations inutiles
spcifier : O= permet de compiler out-of-source : au dmarrage. Inutilisable dans ltat, il est ncessaire de lui
CROSS_COMPILE=/opt/arm/usr/bin/arm-linux-ulibc-. host$ mkdir build adjoindre un bootloader pour le dcompresser et lexcuter.
Par commodit, on prfrera ajouter /opt/arm/usr/bin la host$ make ARCH=arm CROSS_COMPILE=arm-linux- O= Image : vmlinux stripp et prfix par un mini-bootloader
variable denvironnement PATH. Il est aussi possible de build menuconfig permettant de sauter sur la fonction start_kernel de
configurer CROSS_COMPILE par Kconfig vmlinux.
V=1 permet dafficher les commandes lances par le systme de Tous les fichier issus de la gnration seront placs dans build. bzImage et zImage : vmlinuz avec le bootloader bz2 ou gz.
compilation plutt que la version abrge. Pas trs lisible lors Une fois que votre configuration est cre, vous pouvez lancer
des compilations parallles mais indispensable pour comprendre make directement partir de build. La compilation xipImage : Idem Image mais destin tre excut
certaines erreurs de compilation out-of-source permet une grande souplesse de dveloppement directement sur un eeprom sans tre copier en mmoire au
De base, le noyau nactive que les warnings utiles (ainsi, les et est fortement recommande. pralable.
warnings produits sont rarement ignorer). W=[123] permet Rfrence : Documentation/kbuild/kbuild.txt uImage : Image avec une entte spciale pour u-boot.
dactiver des warnings supplmentaires
Sysmic - J. Pouiller Formation au Noyau Linux 34 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 35 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 36 / 182
Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Le format S3 Les modules Les modules et linstallation


Une grosse partie du noyau peut tre compil directement dans le make modules permet de compiler les modules
noyau ou sous forme de modules. make INSTALL_MOD_PATH=$(pwd)/../target
Ils sont marqus par < > (non-compil), <*> (link en statique) modules_install copie les modules dans
ou <M> (compil en module). $INSTALL_MOD_PATH (= dans le rootfs de la cible)
Les modules peuvent tre apparents des plugins pour le make modules_prepare prepare les sources pour que les
Il est possible de gnrer des image au format SRecord en utilisant noyau. Il peuvent tre charg et dchargs dynamiquement. modules extrieur puissent compiler
objcopy Les modules doivent tre prsent sur la cible make INSTALL_PATH=$(pwd)/../target install appelle
Les modules permettent dallger la taille (et amliorer les arch/$ARCH/boot/install.sh qui appelle
host$ objcopy -O srec vmlinux vmlinux.srec performances) du noyau et vitent de redmarrer la cible lors du ~/bin/installkernel ou copie le noyau dans
dveloppement $INSTALL_PATH
Les modules ne peuvent tre charg quaprs le dmarrage du make *-pkg cre des packages (nafs) pour diverses
noyau. Par consquent, certaines fonctionnalits ne peuvent pas distributions. Ces packages contiennent le noyau et les modules.
tre sous forme de modules make INSTALL_HDR_PATH=$(pwd)/../BSP/include
Les drivers ncessaire au chargements des modules ne peuvent headers_install copie les headers dans
pas tre des modules. Ainsi, si vos modules sont sur une flash, $INSTALL_HDR_PATH. Ces headers sont suffisants pour
tous les drivers ncessaires laccs cette flash doivent tre compiler les programmes de lespace utilisateur. Si votre
statiques toolchain est correctement compile, vous ne devriez pas en
Il est possible de dvelopper des modules en dehors de avoir besoin.
Sysmic - J. Pouiller Formation au Noyau Linux 37 / 182
larborescence du noyau.
Sysmic - J. Pouiller Formation au Noyau Linux 38 / 182 Rfrence : Documentation/kbuild/kbuild.txt,
Sysmic - J. Pouiller Formation au Noyau Linux 39 / 182

Documentation/make/headers_install.txt
Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Clean Configuration globale Configuration globale


General setup :
Prompt for development and/or incomplete code/drivers :
Dbloque les options de compilation pour les drivers/option
instables (staging, etc...) SYSVIPC et MQUEUE : Communication inter-processus dfinis
make clean Supprime les fichier objets (qui ne sont plus utiles par Posix
Cross-compiler tool prefix : Affecte la variable CROSS_COMPILE
une fois le noyau compil) IKCONFIG : Embarque le .config dans le noyau
Local version : Ajoute un identifiant la version. Indispensable
make mrproper Supprime tous les rsultats de la compilation EXPERT et EMBEDDED Dbloque les options permettant
dans les phases dintgration. La version peut tre lue dans
ainsi que les fichiers de configuration principalement de rduire la taille du noyau en supprimant des
/proc/version. Il est aussi possible de faire
make distclean Supprime les rsultats de compilation, les make kernelrelease dans un rpertoire de compilation du modules importants
configurations et fichiers originaires de lintgration de patchs ou noyau. CC_OPTIMIZE_FOR_SIZE : Compile avec -Os
de ldition de fichiers (*~, *.orig, *.rej, etc...)
Automatically append version information : Ajoute lidentifiant git KPROBES, PERF_EVENTS, PROFILING, GCOV_KERNEL : Active
la version. Indispensable dans les phases de dveloppement les diffrentes instrumentations du noyau
Kernel compression mode : Permet de choisir le type de
compression. Chaque algorithme a ces inconvnients et ses
intrts.
SWAP : Permet de grer un espace dchange dur un disque
Sysmic - J. Pouiller Formation au Noyau Linux 40 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 41 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 42 / 182

Les BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun
Les
BSP
BSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP

Les priphriques de block Options de lhorloges Options de lordonnanceur

MODULES : Active la gestion des modules Kernel features


Preemption Model : Permet dactiver la premption du noyau. Le
HZ (pas sur ARM) : Dfinit lintervalle de rordonnancement de pire temps rponse sont amliors, mais le temps moyen est
BLOCK : Il est possible de dsactiver la gestion des priphrique de lordonnanceur. Plus cette valeur est forte, plus loverhead
block si votre systme nutilise que de la mmoire flash. gnralement moins bon. Un noyau premptif stresse beaucoup
introduit par le changement de contexte est important et plus les plus de code. Ne pas activer si vous utilisez des drivers extrieur
IO Schedulers : Permet de choisir un ordonnanceur dE/S temps de rponses des tches sont courts non garanti pour cette option.
diffrent de celui propos en standard NO_HZ : Permet de rendre la priode de rordonnancement des RT_PREEMPT (sur certaines architectures seulement) : Permet
tches dynamique. Devrait permettre un lger gain de CPU de threader les IRQ et ainsi de remplacer les spinlock par des
System type : (finalement ngligeable avec lordonnanceur en o(1)). Permet mutex. Ajoute un protocole dhritage de priorit aux mutex. Le
Permet de choisir le type darchitecture et de chipset surtout de gagner en consommation lectrique. kernel devient alors totalement premptif. A nutilisez que lors
Il est possible de dsactiver certains cache lors des phases de HIGH_RES_TIMER : Gre les timers avec une horloge diffrente dapplication temps relle. Etudiez des solutions base
dveloppement de lordonnanceur (lhorloge est alors gr comme un dhyperviseurs.
priphrique part). Permet dobtenir une bien meilleure Ne confondez pas la premption du noyau avec la premption
Vous trouverez aussi dans ce menu les options relative au jeu
prcision sur les mesure de temps, condition que votre des tches utilisateur.
dinstructions accept
matriel possde une horloge HighRes.

Sysmic - J. Pouiller Formation au Noyau Linux 43 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 44 / 182 Sysmic - J. Pouiller Formation au Noyau Linux 45 / 182

Você também pode gostar