Développer pour le noyau Linux

publicité
Développer pour le noyau Linux
Pourquoi ? Comment ?
Une grande école pour réussir
Plan
Linux et l’industrie
Méthodologie de développement
Procédure d’envoi
Validation et intégration
Et après ?
Développer pour le noyau Linux — 2/17
Linux et l’industrie
Pourquoi contribuer ?
I
Élargissement de la clientèle
I
Contributions indépendantes
I
Distribution aisée
I
Publicité
Développer pour le noyau Linux — 3/17
Linux et l’industrie
Sous quelles conditions ?
I
I
GPLv2
Sauf exceptions :
I
I
I
Firmwares
Modules adaptés
Modules indépendants ?
Développer pour le noyau Linux — 4/17
Développement
Par où commencer ?
1. Déterminer la section du noyau concernée
2. Trouver qui s’en occupe
I
I
I
http://vger.kernel.org/vger-lists.html
Sites des développeurs
./scripts/get_maintainer.pl
3. S’inscrire
4. Se présenter
Développer pour le noyau Linux — 5/17
Développement
Méthodologie
I
I
Se baser sur l’existant
Lire la documentation
I
I
I
Respecter les règles
I
I
I
./MAINTAINERS
./Documentation/
./Documentation/CodingStyle
./scripts/checkpatch.pl
Utiliser les ressources du noyau
Développer pour le noyau Linux — 6/17
Développement
Structure
Espace utilisateur
Interface noyau
Sous-système Bluetooth
Pilote du contrôleur Bluetooth
Sous-système USB
Pilote du contrôleur USB
Matériel
Développer pour le noyau Linux — 7/17
Développement
Assemblage
static struct e1000_nvm_operations e1000_nvm_ops_82575 = {
.acquire
= igb_acquire_nvm_82575 ,
.read
= igb_read_nvm_eerd ,
.release
= igb_release_nvm_82575 ,
.write
= igb_write_nvm_spi ,
};
Développer pour le noyau Linux — 8/17
Développement
Git
mmc-next-3f329f5
mydriver-dev-36ab6a3
mydriver-topic2-0b82f4f
mydriver-topic1-0819729
mydriver-dev-1e9867c
mydriver-topic2-df5f938
mydriver-dev-ff2f24d
mmc-next-c952ae6
Développer pour le noyau Linux — 9/17
Développement
À ne pas oublier
1.
Makefile
2.
Kconfig
3. Documentation
4. Tests
Développer pour le noyau Linux — 10/17
Développement
En résumé
1. Ne jamais partir de zéro
2. Lire la documentation
3. Maîtriser ses outils
4. Être consciencieux
5. Ne pas hésiter à demander de l’aide
Développer pour le noyau Linux — 11/17
Envoi
Git propre
0b82f4f
Patch 5/5 (topic2)
df5f938
Patch 4/5 (topic2)
1e9867c
Patch 3/5 (dev)
0819729
Patch 2/5 (topic1)
ff2f24d
Patch 1/5 (dev)
c952ae6
mmc-next
Développer pour le noyau Linux — 12/17
Envoi
Patches
$
$
$
$
git format -patch -o ../ patches mmc -next .. mydriver -dev
./ scripts/checkpatch.pl ../ patches /*
./ scripts/get_maintainer.pl ../ patches /*
git send -email ../ patches
Développer pour le noyau Linux — 13/17
Envoi
À qui ?
1. La newsletter concernée
2. Les autres gens travaillant sur ce driver
3. Les collègues
4. Les responsables sécurité, device-tree, etc… (si applicable)
5. Tous les gens désignés par
./scripts/get_maintainer.pl
Développer pour le noyau Linux — 14/17
Intégration
Fusion
v3.14.5-rc2
net-next-fccd6eb
nfc-next-5a3f1f3
nfc-next-76e7f47
nfc-next-34660a1
net-next-dbf932a
v3.14.5-rc1
Développer pour le noyau Linux — 15/17
Et après ?
I
Maintenance
I
Développer... pour qui ?
I
Rétroportage
I
Packaging
Développer pour le noyau Linux — 16/17
Et après ?
Liens utiles
I
http://www.kernel.org/
I
http://vger.kernel.org/vger-lists.html
I
http://git-scm.com/book/
I
http://www.effinnov.com/
Développer pour le noyau Linux — 17/17
Téléchargement