Pourquoi modifier le kernel Linux au lieu de créer un module kernel?

J'ai une carte de développement sur laquelle une version plus ancienne de Linux est installée. Le fournisseur fournit une image pour le périphérique avec un kernel linux fortement modifié, certains modules de kernel chargeables et quelques exemples de logiciels.

Je voudrais installer une version plus récente du kernel linux sur le périphérique, mais le fournisseur n'a pas de support pour cela, puisque leur kernel linux modifié est basé sur une ancienne version du kernel.

Ce que je ne comprends pas, c'est pourquoi commencer à pirater le kernel Linux, quand vous pouvez rendre le kernel compatible avec le périphérique en cours d'écriture en écrivant des pilotes en tant que modules du kernel. Il pourrait être facilement recompilé pour n'importe quelle version du kernel sans problèmes. De cette façon, si le fournisseur ne supporte qu'une certaine version du kernel, vous êtes "bloqué" 🙁

Mais il doit y avoir une raison pour laquelle il me manque, car je vois de nombreux projets utiliser cette approche consistant à saisir une version du kernel et la modifier fortement pour l'adapter à son tableau. Ce qui m'intéresserait, c'est:

  1. Pourquoi modifier le kernel Linux au lieu de créer un module kernel?
  2. Ce qui peut être fait si j'ai besoin d'exécuter un nouveau kernel, mais je ne reçois pas de support du vendeur (les pilotes de périphériques devraient fonctionner sur les nouvelles versions du kernel …)

Cette question a beaucoup d'hypothèses en elle.

Voici quelques raisons.

L'interface du kernel n'est pas stable, donc un module pour une version peut ne pas comstackr pour une version différente.

Le kernel peut ne pas exposer une installation requirejse.

Le kernel peut exposer une installation requirejse mais pas d'une manière acceptable, par exemple en exigeant que le module possède une licence particulière.

Les personnes qui écrivent le code ont trouvé plus rapide d'écrire le code de cette façon.

Quant à vos options si vous avez besoin d'un nouveau kernel.

  1. find quelqu'un d'autre qui a déjà porté le code
  2. portez le vous-même
  3. payer quelqu'un d'autre pour le porter (peut-être pas besoin d'argent, de bière, de flatterie et de curiosité peut fonctionner).