Apprendre le piratage du noyau et le développement embarqué à la maison ?[fermé]

StackOverflow https://stackoverflow.com/questions/60763

  •  09-06-2019
  •  | 
  •  

Question

J'ai toujours été attiré par le monde du piratage du noyau et des systèmes embarqués.
Quelqu'un a-t-il de bons tutoriels (+ matériel facilement disponible) pour commencer à jouer avec de telles choses ?
Quelque chose comme des kits pour écrire des pilotes, etc., livrés avec une bonne documentation et abordables ?

Merci!

Était-ce utile?

La solution

Si vous êtes complètement nouveau dans le développement du noyau, je vous suggère de ne pas commencer par le développement matériel et d'aller vers certains modules de noyau "logiciels uniquement" comme proc file / sysfs ou pour des exemples plus complexes de développement de système de fichiers/réseau, en développement sur un uml/vmware/ boîte virtuelle/...machine donc planter votre machine ne fera pas trop de mal :) Pour le développement embarqué, vous pouvez opter pour un petit kit de développement ARM ou une petite machine Via C3/C4, ou n'importe quel vieux PC que vous pouvez graver avec votre homebrew USB / PCI / peu importe appareil.

Un bon point de départ est probablement Kernelnewbies.org - qui contient de nombreux liens et informations utiles pour les développeurs du noyau, ainsi qu'une liste de tâches faciles à mettre en œuvre pour les débutants.

Quelques livres à lire :

Comprendre le noyau Linux - une très bonne référence détaillant la conception des sous-systèmes du noyau

Pilotes de périphériques Linux - est écrit plutôt comme un tutoriel avec de nombreux exemples de code, se concentrant sur la mise en route et expliquant les aspects clés du noyau Linux.Il présente le processus de construction et les bases des modules du noyau.

Guide de programmation du module du noyau Linux - Quelques documents supplémentaires d'introduction

Comme suggéré précédemment, examiner le code Linux est toujours une bonne idée, d'autant plus que les API du noyau Linux ont tendance à changer assez souvent...LXR aide beaucoup avec une interface de navigation très agréable - lxr.linux.no

Pour comprendre le processus de construction du noyau, ce lien peut être utile :

Makefiles du noyau Linux (kbuild)

Enfin, parcourez le répertoire Documentation de la distribution Kernel Source !

Voici quelques exercices intéressants insolemment volés à une classe de développement du noyau :

  • Écrivez un module de noyau qui crée le fichier /proc/jiffies rapportant l'heure actuelle en jiffies à chaque accès en lecture.
  • Écrivez un module de noyau fournissant le fichier proc /proc/sleep.Lorsqu'une application écrit un certain nombre de secondes sous forme de texte ASCII dans ce fichier ("echo 3 > /proc/sleep"), elle doit bloquer pendant le nombre de secondes spécifié.Les accès en écriture ne doivent avoir aucun effet secondaire sur le contenu du fichier, c'est-à-dire que lors des accès en lecture, le fichier doit apparaître vide (voir LDD3, ch.6/7)
  • Écrivez un fichier proc dans lequel vous pouvez stocker temporairement du texte (en utilisant echo "blah" > /proc/pipe) et récupérez-le (cat /proc/pipe), en effaçant le fichier.Attention aux problèmes de synchronisation.
  • Modifiez le module d'exemple de canal pour vous enregistrer en tant que périphérique de caractères /dev/pipe, ajoutez une allocation de mémoire dynamique pour les demandes d'écriture.
  • Écrivez un système de fichiers très simple.

Autres conseils

Un absolu doit est ce livre de Rubini.(disponible en version papier ou en version électronique gratuite)

Il donne des implémentations de plusieurs pilotes factices qui ne nécessitent pas de matériel autre que votre PC.Donc, pour débuter dans le développement du noyau, c’est la manière la plus simple de procéder.

En ce qui concerne le travail intégré, je recommanderais d'acheter l'un des nombreux SBC (ordinateurs monocarte) disponibles.Il en existe un certain nombre qui sont basés sur des processeurs x86, généralement avec des interfaces PC/104 (électriquement, PC/104 est identique à la norme de bus ISA, mais basé sur des connecteurs empilables plutôt que sur des connecteurs de bord - il est très facile d'interfacer du matériel personnalisé avec)

Ils ont généralement des connecteurs VGA qui facilitent le débogage.

Pour le piratage Linux embarqué, un simple routeur Linksys WRT54G que vous pouvez acheter partout est une plateforme de développement à part entière http://en.wikipedia.org/wiki/Linksys_WRT54G_series:

Le WRT54G se distingue par le fait qu'il est le premier périphérique réseau grand public dont le code source du micrologiciel a été publié pour satisfaire aux obligations de la GNU GPL.Cela permet aux programmeurs de modifier le micrologiciel pour modifier ou ajouter des fonctionnalités à l'appareil.Plusieurs projets de micrologiciels tiers fournissent au public un micrologiciel amélioré pour le WRT54G.

J'ai essayé d'installer OuvrirWrt et DD-WRT firmware dessus.Vous pouvez les consulter comme point de départ pour le piratage sur une plateforme à faible coût.

Pour commencer, la meilleure façon est de lire beaucoup de code.Puisque Linux est Open Source, vous trouverez des dizaines de pilotes.Trouvez-en un qui fonctionne à certains égards comme ce que vous voulez écrire.Vous trouverez du code décent et relativement facile à comprendre (le périphérique de bouclage, ROM fs, etc.)

Vous pouvez également utiliser le lxr.linux.no, qui est le code Linux référencé.Si vous devez découvrir comment quelque chose fonctionne et examiner le code, c'est un moyen simple et efficace.

Il existe également un livre O'Reilly (Understanding the Linux Kernel, la 3ème édition concerne les noyaux 2.6) ou si vous voulez quelque chose de gratuit, vous pouvez utiliser le livre Advanced Linux Programing (http://www.advancedlinuxprogramming.com/).Il existe également de nombreuses documentations spécifiques sur les systèmes de fichiers, les réseaux, etc.

Certaines choses à préparer :

  • vous effectuerez une compilation croisée.Le périphérique intégré utilisera un processeur MIPS, PowerPC ou ARM mais ne disposera pas de suffisamment de puissance CPU, de mémoire ou de stockage pour compiler son propre noyau dans un laps de temps raisonnable.
  • Un système embarqué utilise souvent un port série comme console et, pour réduire les coûts, aucun connecteur n'est généralement soudé sur les cartes de production.Le débogage des paniques du noyau est très difficile, à moins que vous puissiez souder un connecteur de port série, vous n'aurez pas beaucoup d'informations sur ce qui n'a pas fonctionné.

Le Linksys NSLU2 est un moyen peu coûteux de faire fonctionner un véritable système embarqué et dispose d'un port USB pour ajouter des périphériques.N'importe lequel des nombreux points d'accès sans fil peut également être utilisé, voir le Page de compatibilité OpenWrt. Sachez que les modèles actuels du Linksys WRT54G que vous trouverez en magasin ne peuvent plus être utilisés avec Linux :ils ont moins de RAM et de Flash afin de réduire le coût.Cisco/Linksys utilise désormais vxWorks sur le WRT54G, avec une empreinte mémoire réduite.

Si vous voulez vraiment vous y lancer, les kits d'évaluation pour processeurs embarqués commencent à quelques centaines de dollars américains.Je vous recommande de ne pas dépenser d'argent pour ces produits, sauf si vous en avez besoin professionnellement pour un travail ou un contrat de conseil.

Je suis complètement débutant en piratage de noyau :) J'ai décidé d'acheter deux livres "Linux Program Development :un guide avec des exercices » et « Écriture de pilotes de périphériques Linux :un guide avec des exercices" Ils sont rédigés très clairement et constituent une bonne base pour un apprentissage ultérieur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top