Relecture et corrections pour cette partie :)
*
Citation:
Après que le module soit construit, la prochaine étape est de le charger dans le noyau. Comme nous l'avons précisé, <i>insmod</i> fait le travail pour vous. Le programme charge le code du module et les données dans le noyau, qui, en fait, exécute une fonction similaire à celle du <i>ld</i>, car il lie tous les symboles non définis du module à la table des symboles du noyau. À la différence de l'éditeur de lien, cependant, le noyau ne modifie pas le fichier du module sur le disque dur, mais plutôt une copie dans la mémoire interne.
deviendrait :
Citation:
L'étape suivant la construction du module construit est son chargement dans le noyau. Comme nous l'avons précisé, <i>insmod</i> fait le travail pour vous. Le programme charge le code du module et les données dans le noyau. Ce dernier exécute une fonction similaire à celle du <i>ld</i> : il lie tous les symboles non définis du module à la table des symboles du noyau. Cependant, à la différence de l'éditeur de lien, le noyau ne modifie pas le fichier du module sur le disque dur, mais plutôt une copie dans la mémoire interne.
*
Citation:
Si en réalité vous regardez dans les sources du noyau, vous allez trouver que le nom des appels systèmes sont préfixés par <i>sys_</i>. Ceci est vrai pour les appels systèmes et pour rien d'autre. C'est utile pour garder ça en mémoire quand vous reverrez les appels systèmes dans les sources.
deviendrait :
Citation:
Vous pouvez remarquer que dans les sources du noyau, les noms des appels système sont préfixés par <i>sys_</i>. Ceci est vrai pour les appels système et pour rien d'autre. C'est utile de garder cette notation en mémoire quand vous recherchez les appels système dans les sources.
On fait un appel système et des appels système (y en a qu'un, de système :P ).
Sinon, je pense que "grepping" peut être traduit par "rechercher" ici. Splus proche de ce qu'on fait quand on lance un grep.
*
Citation:
L'utilité de <i>modprobe</i> vaut la peine d'un rapide détour. <i>modprobe</i>, comme <i>insmod</i>, charge un module dans le noyau. Il diffère dans le fait qu'il va regarder si le module fait référence à des symboles qui ne sont pas définis actuellement dans le noyau. Si de telles références sont trouvées, <i>modprobe</i> va cherche d'autres modules qui définissent les symboles appropriés dans le chemin de recherche des modules. Quand <i>modprobe</i> trouve ces modules (qui sont nécessaires au module qui vient d'être chargé), il les charge dans le noyau. Si vous utilisez <i>insmod</i> à la place dans cette situation, la commande va échouer avec le message « symbole non défini » laissé dans le système de log.
deviendrait :
Citation:
L'utilité de <i>modprobe</i> vaut la peine d'un rapide détour. <i>modprobe</i>, comme <i>insmod</i>, charge un module dans le noyau. Il y a une différence importante entre les deux : <i>modprobe</i> regardera si le module fait référence à des symboles qui ne sont pas définis actuellement dans le noyau. Si de telles références sont trouvées, <i>modprobe</i> cherchera d'autres modules qui définissent les symboles appropriés dans le chemin de recherche des modules. Quand <i>modprobe</i> trouve ces modules (nécessaires au module qui vient d'être chargé), il les charge dans le noyau. Si vous utilisez <i>insmod</i> à la place dans cette situation, la commande va échouer avec le message « symbole non défini » laissé dans le système de log.
*
Citation:
Le programme <i>lsmod</i> produit une liste de modules actuellement chargés dans le noyau. Quelques autres informations sont fournies aussi, comme les autres modules qui ont besoin d'un module spécifique pour être actif. <i>lsmod</i> fonctionne en lisant le fichier virtuel <i>/proc/modules</i>. Les informations sur les modules actuellement chargés peuvent ainsi être trouvées dans le système de fichiers virtuel <i>sysfs</i> sous <i>/sys/module</i>.
deviendrait :
Citation:
Le programme <i>lsmod</i> produit une liste de modules actuellement chargés dans le noyau. Quelques autres informations sont également fournies, notamment la liste des autres modules nécessitant un module spécifique pour être actifs. Vu que <i>lsmod</i> fonctionne en lisant le fichier virtuel <i>/proc/modules</i>, les informations sur les modules actuellement chargés peuvent ainsi être trouvées dans le système de fichiers virtuel <i>sysfs</i> sous <i>/sys/module</i>.
*
Citation:
Tenez compte que le code de votre module doit être recompilé pour chaque version du noyau auquel il est lié, du moins, dans le cas d'absences de modversions, non couvert ici comme ils sont plus réservés pour les créateurs de distributions que les développeurs.
:aie:
Citation:
Tenez compte du fait que le code de votre module doit être recompilé pour chaque version du noyau auquel il est lié. Ceci est vrai du moins dans le cas d'absence de <i>modversions</i>. Cette situation n'est pas abordée ici : elles sont plutôt réservées aux créateurs de distributions qu'aux développeurs.
J'ai mis le mot "modversions" en italique (on peut le faire en gras ou whatever) pour distinguer un mot de jargon laissé tel quel. Vu que c'est précisément le cas ici et qu'il s'agit d'une remarque "en passant", je ne pense pas que ça vaille la peine de chercher une traduction appropriée.
Qu'en pensez-vous?
*
Citation:
Le noyau ne suppose pas juste qu'un module donné a été conçu avec une version appropriée du noyau. Un des grand pas dans le processus de conception est de lier le module avec un fichier nommé <i>vermagic.o</i> de l'arborescence actuelle du noyau. Cet objet contient une quantité exacte d'informations à propos du noyau pour lequel le module a été conçu, incluant la version du noyau, la version du compilateur et l'instauration d'un nombre important de variables de configurations. Quand une tentative de chargement de module est réalisée, cette information peut être testée pour la compatibilité avec le noyau actuel. Si les choses ne correspondent pas, le module n'est pas chargé.
deviendrait :
Citation:
Le noyau ne suppose pas uniquement qu'un module donné a été conçu avec une version appropriée du noyau. Un des grand pas dans le processus de conception est de lier le module à un fichier nommé <i>vermagic.o</i> de l'arborescence actuelle du noyau. Cet objet contient une quantité exacte d'informations à propos du noyau pour lequel le module a été conçu dont la version du noyau, la version du compilateur et l'instauration d'un nombre important de variables de configurations. Quand une tentative de chargement de module est réalisée, cette information peut être testée pour la compatibilité avec le noyau actuel. Si les choses ne correspondent pas, le module n'est pas chargé.
*
Citation:
Cette édition du livre s'intéresse seulement a une version majeure du noyau, ainsi vous ne verrez pas souvent de tests de version dans nos exemples de code. Mais les besoins pour ces derniers surgissent de temps à autres.
serait mieux ainsi :
Citation:
Cette édition du livre s'intéresse seulement à une version majeure du noyau, ainsi vous ne verrez pas souvent de tests de version dans nos exemples de code. Mais les besoins pour ces derniers surgissent de temps à autre.
*
Citation:
cette macro s'étend à la représentation binaire de la version du noyau, un octet pour chaque partie de la version de sortie du noyau.
serait plus propre ainsi :
Citation:
cette macro s'étend à la représentation binaire de la version du noyau; un octet est réservé pour chaque partie de la version de sortie du noyau.
*
Citation:
La meilleure manière pour traiter les incompatibilités est de les confiner dans un fichier d'entête particulier. En règle générale, le code qui est explicitement dépendant d'une version (ou plate-forme) devrait être caché derrière une macro bas-niveau ou une fonction. Du code de haut niveau peut alors juste appelé ces fonctions sans se soucier des détails de bas niveau. Le code écrit dans ce sens tend à être plus simple à lire et à être plus robuste.
deviendrait :
Citation:
La meilleure manière de traiter les incompatibilités est de les confiner dans un fichier d'entête particulier. En règle générale, le code qui est explicitement dépendant d'une version (ou plate-forme) devrait être caché derrière une macro bas niveau ou une fonction. Du code de haut niveau peut alors juste appeler ces fonctions sans se soucier des détails de bas niveau. Le code écrit dans ce sens tend à être plus simple à lire et plus robuste.
*
Citation:
Contrairement aux développeurs d'applications qui doivent lier leur code avec des bibliothèques précompilées et s'accrocher aux conventions de passages de paramètres, les développeurs du noyau peuvent dédier certains registres du processeur à des rôles spécifiques et ils ont fait ainsi.
deviendrait :
Citation:
Contrairement aux développeurs d'applications qui doivent lier leur code à des bibliothèques précompilées et respecter les conventions de passages de paramètres, les développeurs du noyau peuvent dédier certains registres du processeur à des rôles spécifiques. C'est ce qu'ils ont fait.
*
Citation:
Par exemple, l'architecture IA32 (x86) a été sous-divisée entre différents types de processeur. L'ancien processeur 80386 est encore supporté (pour l'instant), bien que son jeu d'instructions soit, par des normes modernes, tout à fait limité. Les processeurs plus modernes dans cette architecture ont introduit un nombre de nouvelles capacités, y compris des instructions plus rapides pour accéder au noyau, le verrouillage d'interprocesseur, la copie de données, etc.
deviendrait :
Citation:
Par exemple, l'architecture IA32 (x86) a été sous-divisée en différents types de processeurs. L'ancien processeur 80386 est pour l'instant supporté, bien que son jeu d'instructions soit tout à fait limité selon les normes modernes. Les processeurs plus modernes dans cette architecture ont introduit un nombre de nouvelles capacités, parmi lesquelles des instructions plus rapides pour accéder au noyau, le verrouillage d'interprocesseur, la copie de données.
*
Citation:
Clairement, si un module doit fonctionner avec un noyau donné, il doit être construit avec les mêmes compréhensions du processeur cible que le noyau le fait. Une fois encore, l'objet <i>vermagic.o</i> vient jouer. Quand un module est chargé, le noyau contrôle les options de configuration du processeur pour le module et s'assure qu'ils correspondent avec le noyau actuel. Si le module était compilé avec des options différentes, il n'est pas chargé.
deviendrait :
Citation:
Il est évident que, si un module doit fonctionner avec un noyau donné, il doit être construit avec les mêmes compréhensions du processeur cible que le noyau le fait. Une fois encore, l'objet <i>vermagic.o</i> a un rôle essentiel. Quand un module est chargé, le noyau contrôle les options de configuration du processeur pour le module et s'assure qu'ils sont congruents avec le noyau actuel. Si le module était compilé avec des options différentes, il n'est pas chargé.
Je ne trouve pas de mot autre pour remplacer "compréhensions", mais ça viendra :)
Le dernier paragraphe de ce chapitre contient quelques parties qui ne me plaisent pas vraiment, mais j'ai des trucs à faire là, donc j'y reviendrai plus tard :)