Professional Documents
Culture Documents
Sysmic - J. Pouiller
Prsentation de la cible
Prsentation de la cible
2 / 182
Sysmic - J. Pouiller
3 / 182
Sysmic - J. Pouiller
4 / 182
Prsentation de la cible
Composants de Linux
Prsentation de la cible
Elements
App
GNU App
Bash
App
Le noyau : Linux
GNU lib
Lib
GNU libc
Noyau Linux
Matriel
Sysmic - J. Pouiller
Prsentation de la cible
5 / 182
La Norme Posix
Sysmic - J. Pouiller
Prsentation de la cible
6 / 182
Le Projet GNU
Posix 9 Linux
Linux 9 Posix
Sysmic - J. Pouiller
7 / 182
Sysmic - J. Pouiller
8 / 182
Prsentation de la cible
Prsentation de la cible
Le noyau Linux
Le noyau Linux
Quelques chiffres
http://groups.google.com/group/comp.os.minix/
browse_thread/thread/76536d1fb451ac60
Inspir de Minix
just a hobby, wont be big and professional like gnu
Noyau monolithique
Dbat TanenbaumTorvalds
http://groups.google.com/group/comp.os.minix/
browse_thread/thread/c25870d7a41696d2
Modulaire depuis la version 2.6
Systme communautaire
Sysmic - J. Pouiller
Sysmic - J. Pouiller
10 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
3
4
Les BSP
Obtenir le noyau
Tlcharger les sources
Comprendre le versionning
Deuxime partie II
Utiliser Git
Organisation des sources
Les sous-rpertoires de la racine
Compiler
Le rpertoire arch/
Compiler le noyau
Le systme de compilation du noyau
Grer les configurations
Modifier les configurations
Compiler
Options de Kbuild
Rsultats de la compilation
Compiler les modules
Sysmic - J. Pouiller
11 / 182
Faire le mnage
Options principales Sysmic - J. Pouiller
Configuration globale
12 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
13 / 182
Sysmic - J. Pouiller
14 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Versionning
Versionning
Rfrence : Documentation/development-process
15 / 182
Sysmic - J. Pouiller
16 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Git
Git
Pour rcuprer un dpt :
17 / 182
Sysmic - J. Pouiller
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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Git
Votre dpt est alors non-modifiable. Vous devez crer une branche
de travail :
host$ git checkout -b mybranch v3.3
Sysmic - J. Pouiller
19 / 182
$ du -s */ | sort -n | column
40
usr
4092 scripts
156
samples
5248 kernel
160
init
6436 firmware
180
virt
19524 Documentation
232
ipc
21332 net
884
block
22728 include
1904 crypto
24016 sound
1932 lib
32436 fs
2076 security
121584 arch
2400 mm
252688 drivers
3536 tools
Sysmic - J. Pouiller
20 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Sysmic - J. Pouiller
21 / 182
Sysmic - J. Pouiller
22 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Les drivers
Sysmic - J. Pouiller
Le code annexe :
include Les headers exposs du noyau.
scripts Les scripts ou les programmes utilitaires ncessaires
la compilation ou lexploitation du noyau
usr Script ncessaire la gnration des initramfs
tools Les outils permettant la communication de certains
frameworks avec le noyau (particulirement perf)
La documentation
Documentation La documentation
sample Des exemples de code pour certains frameworks
23 / 182
Sysmic - J. Pouiller
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
BSPBSP 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
Les PC : x86
Les workstations et les serveurs : alpha, sparc (Sun), ia64
(Intel), powerpc, s390 (Mainframes dIBM) parisc
(Workstation HP)
Lembarqu : arm, mips, sh (STMicroelectronics), avr32, m68k,
score, mn10300, m32r h8300
Les architectures ddies : cris (Embedded Network), frv
(Futjisu, Traitement dimage)
Les DSP : c6x (Texas Instrument), heaxgon (Qualcomm),
blackfin
Les softcores : microbaze, xtensa
Les exprimentaux tile (Architecture distribue), unicore32
(Universit de Pekin), openrisc
User Mode Linux : um
25 / 182
Sysmic - J. Pouiller
26 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Fonctionnement de Kconfig
Le systme de compilation
Pour obtenir de laide sur les diffrentes cibles :
Sysmic - J. Pouiller
27 / 182
Sysmic - J. Pouiller
28 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Sysmic - J. Pouiller
Sysmic - J. Pouiller
30 / 182
Rfrence : Documentation/kbuild/kconfig.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
BSPBSP 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
En Qt4
En Gtk
En ncurses
Sysmic - J. Pouiller
31 / 182
Sysmic - J. Pouiller
32 / 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
BSPBSP 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
Certaines options peuvent tre passes sur la ligne de commande
afin de modifier le comportement gnral du systme.
host$ make
Le systme choisi les cible approprie en fonction de votre
architecture (principalement, une image et les modules)
Il est souvent prfrable (ncessaire ?) de spcifier le type
dimage voulue avec
host$ make XXImage
XX fait rfrence au format de la binaire produite :
Le code commence=t=il au premier octet ?
Respecte-t-il le format ELF ?
Y a-t-il un format particulier dentte respecter ?
33 / 182
Sysmic - J. Pouiller
34 / 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
BSPBSP 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 Kmake
Rsultats de la compilation
Fichiers produits (ou productibles) par la compilation :
Rfrence : Documentation/kbuild/kbuild.txt
Sysmic - J. Pouiller
35 / 182
Sysmic - J. Pouiller
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
BSPBSP 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
Une grosse partie du noyau peut tre compil directement dans le
noyau ou sous forme de modules.
Ils sont marqus par < > (non-compil), <*> (link en statique)
ou <M> (compil en module).
Les modules peuvent tre apparents des plugins pour le
noyau. Il peuvent tre charg et dchargs dynamiquement.
Les modules doivent tre prsent sur la cible
Les modules permettent dallger la taille (et amliorer les
performances) du noyau et vitent de redmarrer la cible lors du
dveloppement
Les modules ne peuvent tre charg quaprs le dmarrage du
noyau. Par consquent, certaines fonctionnalits ne peuvent pas
tre sous forme de modules
Les drivers ncessaire au chargements des modules ne peuvent
pas tre des modules. Ainsi, si vos modules sont sur une flash,
tous les drivers ncessaires laccs cette flash doivent tre
statiques
Il est possible de dvelopper des modules en dehors de
Sysmic - J. Pouiller
Formation au Noyau Linux
larborescence du noyau.
Sysmic - J. Pouiller
37 / 182
38 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Clean
make clean Supprime les fichier objets (qui ne sont plus utiles
une fois le noyau compil)
make mrproper Supprime tous les rsultats de la compilation
ainsi que les fichiers de configuration
make distclean Supprime les rsultats de compilation, les
configurations et fichiers originaires de lintgration de patchs ou
de ldition de fichiers (*~, *.orig, *.rej, etc...)
39 / 182
Sysmic - J. Pouiller
40 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
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...)
Cross-compiler tool prefix : Affecte la variable CROSS_COMPILE
Local version : Ajoute un identifiant la version. Indispensable
dans les phases dintgration. La version peut tre lue dans
/proc/version. Il est aussi possible de faire
make kernelrelease dans un rpertoire de compilation du
noyau.
Automatically append version information : Ajoute lidentifiant git
la version. Indispensable dans les phases de dveloppement
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
41 / 182
Sysmic - J. Pouiller
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
BSPBSP 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 lhorloges
Kernel features
System type :
Permet de choisir le type darchitecture et de chipset
Sysmic - J. Pouiller
43 / 182
Sysmic - J. Pouiller
44 / 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
BSPBSP 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 lordonnanceur
Sysmic - J. Pouiller
45 / 182
Sysmic - J. Pouiller
46 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Configuration rseau
Boot options :
Networking :
Sysmic - J. Pouiller
47 / 182
Sysmic - J. Pouiller
48 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
File systems :
Second extended, Ext3 journalling file, The Extended 4
filesystem : Le file system standard de Linux
49 / 182
Sysmic - J. Pouiller
50 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Configuration du noyau
Mais aussi :
Sysmic - J. Pouiller
51 / 182
Sysmic - J. Pouiller
52 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Notre cas
Dans notre cas, nous utilisons U-Boot (standard)
Compilation
Sysmic - J. Pouiller
Sysmic - J. Pouiller
54 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Le rootfs
55 / 182
Sysmic - J. Pouiller
56 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
La configuration rseau
La configuration rseau
Il est alors possible de spcifier le nfsroot dans la
configuration du serveur DHCP :
host target {
option root-path "192.168.1.10:/srv/nfs";
next-server 192.168.1.10;
hardware ethernet 00:26:24:3a:14:5c;
fixed-address 192.168.1.72;
}
Syntaxe : ip=<client-ip>:<server-ip>:<gw-ip>:<
netmask>:<hostname>:<device>:<autoconf>
Exemple : ip=192.168.1.72:::::eth0:
Pour le dmarrage par nfs, il est aussi ncessaire de spcifier le
rpertoire partag par le serveur :
nfsroot=192.168.1.10:/srv/nfs
Sysmic - J. Pouiller
Rfrence :
Documentation/filesystems/nfs/nfsroot.txt
57 / 182
Sysmic - J. Pouiller
58 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Dmarrage du noyau
La console
init=/hello-arm-static
init=/hello-arm
init=/bin/sh
init=/sbin/init
59 / 182
Sysmic - J. Pouiller
60 / 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
BSPBSP Obtenir le noyau Organisation des sources Compiler le noyau Options principales Les drivers Le boot tftp/nfs Options de dmarrage Fabrication dun BSP
Panic
La mmoire
Il est parfois ncessaire de donner des instructions au kernel sur
lutilisation quil peut faire des espaces mmoires
Sysmic - J. Pouiller
61 / 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 BSP
63 / 182
Sysmic - J. Pouiller
62 / 182