Existe-t-il un kernel Linux différent pour différentes architectures?

Si je veux build un kernel personnalisé pour une architecture ARM, dois-je:

a) Téléchargez le kernel de kernel.org, apportez des changements au kernel, construisez-le en utilisant un compilateur croisé (comme le code source ou quelque chose)

b) Trouver un kernel spécifique ARM à partir de quelque part, find des patches, le comstackr en utilisant un outil spécifique ARM?

Un kernel personnalisé peut-il être construit pour l'architecture ARM?

J'ai peu de connaissances sur les kernelx en général.

Le référentiel tarball et git du kernel Linux inclut le code pour toutes les architectures sockets en charge, telles que ARM.

Le sous-directory Documentation/arm/ contient des documents liés à ARM que vous devriez probablement consulter avant d'aller plus loin.

Le code spécifique ARM est situé dans le sous arch/arm/ directory arch/arm/ (certains pilotes spécifiques ARM peuvent être dans les sous drivers/*/ directorys drivers/*/ ).

Alors allez-y et téléchargez l'archive normale du kernel de kernel.org et commencez par lire Documentation/arm/README qui commence comme suit:

Compilation de kernel

Afin de comstackr ARM Linux, vous aurez besoin d'un compilateur capable de générer du code ARM ELF avec des extensions GNU. GCC 3.3 est connu pour être …

Il semble qu'après avoir lu ce file vous aurez beaucoup de réponses (et peut-être aussi plus de questions mais n'hésitez pas à leur requestr :).

La source du kernel est la même pour toutes les architectures. Il est surtout écrit en C avec un peu d'assemblage spécifique.

Le moyen le plus simple de build pour ARM serait de fonctionner déjà sur ARM. Vous pouvez alors simplement suivre la documentation de compilation régulière.

Si vous voulez build à partir d'une architecture différente, cela s'appelle la compilation croisée. Je ne l'ai jamais fait moi-même, mais je sais que vous devez mettre en place une string d'outils de compilation croisée pour le faire.

Ce HOWTO devrait vous aider à démarrer.