Je suis intéressé par la modification des composants internes du noyau, l'application de correctifs, la gestion des pilotes de périphériques et des modules, pour mon plaisir personnel.
Existe-t-il une ressource complète pour le piratage du noyau, destinée aux programmeurs expérimentés?
linux
kernel
linux-kernel
Adam Matan
la source
la source
Réponses:
Un voyage de mille codes-milles doit commencer par un seul pas. Si vous ne savez pas lequel des livres suivants commencer, ne vous inquiétez pas, choisissez l'un de vos choix. Tous ceux qui errent ne sont pas perdus. Au fur et à mesure que toutes les routes se connectent à l’autoroute , vous explorerez de nouvelles choses dans votre parcours du noyau au fur et à mesure que les pages avancent sans rencontrer d’impasse, et vous vous connecterez au final à
code-set
. Lisez avec l'esprit alerte et souvenez-vous: le code n'est pas de la littérature .Ce qui reste n'est pas une chose ou une émotion, ni une image, ni une image mentale, ni un souvenir, ni même une idée. C'est une fonction. Un processus de quelque sorte. Un aspect de la vie qui pourrait être décrit en fonction de quelque chose de "plus grand". Et donc, il semble que ce n’est pas vraiment "séparé" de cet autre chose. La fonction d'un couteau - couper quelque chose - n'est en réalité pas séparée du couteau lui-même. La fonction peut ou peut ne pas être utilisée pour le moment, mais elle n'est potentiellement JAMAIS séparée.
Algorithme de Solovay Strassen Derandomized pour le test de primalité :
Lire pour ne pas contredire et confondre; ni croire et prendre pour acquis; ni pour trouver la parole et le discours; mais peser et considérer. Certains livres doivent être goûtés, d'autres doivent être avalés et certains doivent être croqués et digérés: certains livres ne doivent être lus que partiellement, d'autres ne doivent pas être lus avec curiosité et certains doivent être lus intégralement. et avec diligence et attention.
Reader doit bien connaître les concepts du système d’exploitation ; une compréhension juste des processus de longue durée et de leurs différences avec les processus à exécution rapide; tolérance aux pannes tout en respectant les contraintes temps réel et temporel. Lors de la lecture, il est important de comprendre
n/ack
les choix de conception effectués par la source du noyau Linux dans les sous-systèmes centraux.Les fils [et] les signaux [constituent] une traînée de misère, de désespoir, d’horreur et de folie qui dépend de la plate-forme (~ Anthony Baxte). Cela étant dit, vous devriez être un expert en auto-évaluation avant de plonger dans le noyau. Vous devez également avoir une bonne expérience des listes chaînées, des piles, des files d’attente, des arbres Noirs Rouges, des fonctions de hachage, et al.
La beauté et l’art de la source du noyau Linux résident dans l’obscurcissement délibéré du code utilisé. Cela est souvent nécessaire pour transmettre la signification informatique impliquant deux opérations ou plus de manière propre et élégante. Cela est particulièrement vrai lors de l'écriture de code pour une architecture multi-core.
Conférences vidéo sur les systèmes en temps réel , Planification des tâches , la mémoire de compression , barrières de mémoire , SMP
Votre tâche consiste essentiellement à établir une interface de communication à haut débit entre le périphérique matériel et le noyau du logiciel. Vous devez lire la fiche technique / le manuel de référence du matériel pour comprendre le comportement du périphérique, de ses états de contrôle et de données et des canaux physiques fournis. La connaissance d'Assembly pour votre architecture particulière et une connaissance approfondie de la description matérielle VLSI Des langages comme VHDL ou Verilog vous aideront à long terme.
Q : Mais pourquoi dois-je lire les spécifications du matériel?
R : Parce qu'il y a "un gouffre de carbone et de silicium, le logiciel ne peut pas combler" - Rahul Sonnad
Cependant, ce qui précède ne pose pas de problème pour les algorithmes de calcul ( code de pilote - traitement dans la moitié inférieure ), car il peut être totalement simulé sur une machine de turing universelle . Si le résultat calculé est vrai dans le domaine mathématique , il est certain qu'il l'est également dans le domaine physique .
Conférences vidéo sur les pilotes de périphériques Linux (Lec. 17 et 18), anatomie d'un pilote KMS intégré , mise à jour du contrôle des broches et des GPIO , cadre d'horloge commune , écriture d'un pilote réel pour Linux - Greg KH
Comprendre le parcours d'un paquet dans le noyau est une clé pour comprendre les réseaux du noyau. Comprendre cela est indispensable si nous voulons comprendre les éléments internes de Netfilter ou IPSec, et plus encore. Les deux structures les plus importantes de la couche réseau du noyau Linux sont:
struct sk_buff
etstruct net_device
Brian W. Kernighan, dans l'article d'Unix pour les débutants (1979), a déclaré: "L'outil de débogage le plus efficace reste un outil de réflexion avancé, associé à des instructions d'impression judicieusement placées". Savoir quoi collecter vous aidera à obtenir rapidement les bonnes données pour un diagnostic rapide. Edsger Dijkstra, grand informaticien, a déclaré un jour que les tests pouvaient démontrer la présence de bugs, mais pas leur absence. De bonnes pratiques d’enquête doivent concilier le besoin de résoudre rapidement les problèmes, le besoin de développer vos compétences et l’utilisation efficace d’experts en la matière.
Il y a des moments où vous touchez le fond, rien ne semble fonctionner et vous manquez de toutes vos options. C'est alors que le vrai débogage commence. Un bug peut fournir la pause dont vous avez besoin pour vous dégager d'une fixation sur la solution inefficace.
Conférences vidéo sur le débogage et le profilage du noyau , l' analyse du vidage de la mémoire , le débogage multicore avec GDB , le contrôle des conditions de course multicœurs , le débogage de l'électronique
Sur un système UNIX, tout est un fichier. si quelque chose n'est pas un fichier, c'est un processus, à l'exception des canaux nommés et des sockets. Dans un système de fichiers, un fichier est représenté par un
inode
, un type de numéro de série contenant des informations sur les données qui composent le fichier. Le système de fichiers virtuel LinuxVFS
met en cache les informations en mémoire de chaque système de fichiers lors de son montage et de son utilisation. Il faut prendre soin de mettre à jour correctement le système de fichiers car les données contenues dans ces caches sont modifiées lors de la création, de la création et de la suppression de fichiers et de répertoires. Le plus important de ces caches est le cache de tampons, intégré à la manière dont les systèmes de fichiers individuels accèdent à leurs périphériques de stockage de blocs sous-jacents.Conférences vidéo sur les systèmes de stockage , système de fichiers Flash Friendly
La cryptographie constitue la base de la confiance en ligne. Le piratage consiste à exploiter les contrôles de sécurité dans un élément technique, physique ou humain. La protection du noyau contre d’autres programmes en cours d’exécution est un premier pas vers un système sécurisé et stable, mais cela n’est évidemment pas suffisant: un certain degré de protection doit également exister entre différentes applications utilisateurs. Les exploits peuvent cibler des services locaux ou distants.
Conférences vidéo sur la cryptographie et la sécurité des réseaux , espaces de noms pour la sécurité , protection contre les attaques à distance , Linux embarqué sécurisé
Vous ne pensez peut-être pas que les programmeurs sont des artistes, mais la programmation est une profession extrêmement créative. C'est une créativité basée sur la logique. La formation en informatique ne peut faire de tout un programmeur expert, pas plus qu'étudier les pinceaux et les pigments peut faire de quelqu'un un peintre expert. Comme vous le savez déjà, il y a une différence entre connaître le chemin et le parcourir; il est de la plus haute importance de se retrousser les manches et de se salir les mains avec le code source du noyau. Enfin, avec votre connaissance du noyau ainsi acquise , où que vous alliez, vous brillerez .
Les codeurs immatures imitent; les codeurs matures volent; les mauvais codeurs dégradent ce qu'ils prennent et de bons codeurs en font quelque chose de mieux, ou du moins de différent. Le bon codeur soude son vol en un sentiment unique, totalement différent de celui dont il a été déchiré.
Conférences vidéo sur les recettes du noyau
Linux_source_dir/Documentation/*
la source
Les débutants dans le noyau Linux sont une excellente ressource.
la source
Je vous suggère de lire " Le noyau Linux en quelques mots " de Greg Kroah-Hartman et " Comprendre le noyau Linux " de Robert Love. Doit lire :)
la source
Les pilotes de périphériques Linux sont une autre bonne ressource. Cela vous donnerait un autre moyen d'entrer dans le fonctionnement interne. De la préface:
la source
Voir le projet de documentation Linux . En particulier le "Guide du module du noyau Linux".
la source
Linux Kernel 2.4 Internals est une autre ressource en ligne à consulter. Il semble adopter une approche plutôt novatrice, à commencer par le démarrage. Voici la table des matières:
Et, pour le rendre encore plus doux, il y a une nouvelle version de Linux Kernel Development Third Edition de Robert Love et Slashdot a fait l'objet d'une étude.
la source
Commencez par Linux Kernel Primer de Claudia Salzberg et al. Bon pour commencer pour les débutants. Le livre de Robert Love n’est certainement pas le livre par lequel les débutants devraient commencer. Ce dernier livre est au-dessus du niveau intermédiaire.
la source