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