Environnement de piratage du noyau

22

Je travaille dans un système d'exploitation intégré comme uCOS, ThreadX. Alors que j'ai codé des applications sous Linux, je prévois maintenant de commencer à apprendre le noyau Linux. J'ai quelques questions concernant l'environnement.

  1. Quelle est la meilleure distribution, qui dispose d'outils faciles à utiliser pour le développement du noyau? (jusqu'à présent, j'avais utilisé RHEL et Fedora. Bien que je sois à l'aise avec ceux-ci, il semble également qu'Ubuntu ait des scripts intégrés pour une compilation facile du noyau make_kpkg, etc.)

  2. Pouvez-vous décrire la meilleure configuration pour le débogage du noyau? Lors du débogage d'autres systèmes d'exploitation intégrés, j'ai utilisé le port série pour vider la progression, JTAG, etc. Quel type de configuration les développeurs du noyau Linux utilisent-ils? (Mon PC de test avec port série suffira-t-il à mes besoins? Si oui, comment configurer le noyau pour vider sur le port série?) Je prévois de rediriger les messages du noyau vers la console série qui sera lue sur mon ordinateur portable.

  3. Quel outil est le meilleur pour déboguer et tracer le code du noyau? Comme mentionné précédemment, la console série est-elle le seul moyen? Ou existe-t-il une interface IDE / JTAG pour PC?

rajaganesh87
la source
3
Pour # 1, Linus lui-même utilise Fedora, ce qui peut éventuellement dire quelque chose. Je ne sais pas assez sur ce sujet pour vraiment donner une réponse, mais je serais intéressé par ce que les autres disent.
jonescb
1
make_kpkg vient de Debian, sur lequel Ubuntu est basé et ma distribution préférée;)
Compte supprimé

Réponses:

14

Ma saveur personnelle pour le développement du noyau Linux est Debian. Maintenant pour vos points:

  1. Comme vous l'avez probablement deviné, Ubuntu n'apporte rien de nouveau au noyau pour faciliter le développement afaik, à part ce qui est déjà disponible dans Debian. Par exemple, make_kpkg est une fonctionnalité Debian et non Ubuntu. Voici quelques liens pour vous aider à démarrer sur les tâches courantes de développement du noyau Linux dans Debian:

  2. La façon la plus simple de déboguer le noyau est d'utiliser QEMU et GDB. Quelques liens pour vous aider à démarrer:

    Cependant, vous devez savoir que cette méthode n'est pas viable pour certains scénarios comme le débogage de problèmes matériels spécifiques et autres, pour lesquels vous feriez mieux d'utiliser le débogage série physique et le matériel réel. Pour cela, vous pouvez utiliser KGDB (cela fonctionne aussi en utilisant Ethernet). KDB est également un bon choix. Oh, et au fait, KGDB et KDB ont été fusionnés dans le noyau Linux. Plus sur ces deux ici . Une autre méthode intéressante, qui fonctionne à merveille pour les problèmes non liés au matériel, utilise le noyau Linux en mode utilisateur . L'exécution du noyau en mode utilisateur comme tout autre processus vous permet de le déboguer comme n'importe quel autre programme ( exemples ). Plus sur Linux en mode utilisateurici . UML fait partie du noyau Linux depuis 2.6.0, vous pouvez donc créer n'importe quelle version officielle du noyau au-dessus de celle-ci en mode UML en suivant ces étapes .

  3. Voir le point 2. Malheureusement, il n'y a pas de meilleure méthode ultime ici, car chaque outil / méthode a ses avantages et ses inconvénients.

Shinnok
la source
Merci! pour la réponse détaillée. BTW je suis intéressé par les sous-systèmes fs et bio dans le noyau. quel type de configuration me conviendrait le mieux?
rajaganesh87
UML et QEMU sont probablement la voie à suivre, car vous pouvez facilement jouer avec des systèmes de fichiers sans frais.
Shinnok
Très bons liens, juste une chose. Mon préféré est Debian aussi, mais le développement du noyau peut être fait avec n'importe quelle distribution. Peut-être que le mou est le meilleur moyen si vous êtes puriste car il utilise un noyau vanille, mais les configurations ne sont pas mauvaises, vous trouverez votre meilleur.
D4RIO
6

Si vous développez pour une plate-forme intégrée qui n'est pas basée sur le matériel i386, vous devrez effectuer une compilation croisée. Le projet Emdebian fournit des chaînes d'outils à développer pour de nombreuses architectures (ARM, m68k, MIPS et plus) sur PC (i386 ou amd64). Cela signifie que sous Debian, vous pouvez simplement ajouter les référentiels et apt-get installer la chaîne d'outils pour la ou les cibles de votre choix.

Gilles 'SO- arrête d'être méchant'
la source
3

Les sondes JTAG existent, mais elles sont assez chères (et les entreprises qui les construisent ont des contrats exclusifs). La meilleure façon de déboguer le code du noyau est de le démarrer dans kvm ou qemu avec gdbserver à l'intérieur de l'émulation.

Simon Richter
la source
Encore mieux, utilisez le mode utilisateur Linux. Linux en tant que processus utilisateur normal.
vonbrand
0

Essentiellement, toute distribution principale devrait fonctionner correctement pour cela (ils utilisent leur propre distribution pour la pirater). Utilisez ce qui vous semble plus confortable.

vonbrand
la source