issue88:labo_linux_2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue88:labo_linux_2 [2015/01/29 12:18] – auntiee | issue88:labo_linux_2 [2015/01/29 14:27] (Version actuelle) – andre_domenech | ||
---|---|---|---|
Ligne 17: | Ligne 17: | ||
**Finally, a third step happened with the Ubuntu distribution, | **Finally, a third step happened with the Ubuntu distribution, | ||
- | Enfin, une troisième étape fut franchie avec la distribution Ubuntu, quand elle a changé les règles du jeu et s'est focalisée plus étroitement sur ce qui est appelé dans le jargon Apple « l' | + | Enfin, une troisième étape fut franchie avec la distribution Ubuntu, quand elle a changé les règles du jeu et s'est focalisée plus étroitement sur ce qui est appelé dans le jargon Apple « l' |
**At this point where we stand today, each and every GNU/Linux distribution offers at least one Linux kernel, or a main default kernel plus different optional kernels for those who need them. It has been years since most of us have actually needed to compile a kernel in anger, just to make a system work. So the question can be posed: is there really any more a valid reason for a user of a modern distribution to know how to do so? | **At this point where we stand today, each and every GNU/Linux distribution offers at least one Linux kernel, or a main default kernel plus different optional kernels for those who need them. It has been years since most of us have actually needed to compile a kernel in anger, just to make a system work. So the question can be posed: is there really any more a valid reason for a user of a modern distribution to know how to do so? | ||
Ligne 23: | Ligne 23: | ||
This is the point I will try to reply to in this first part of the series. We will give some insight into what a kernel is, what it does and why it may in some cases be necessary to change it. In a second installment, | This is the point I will try to reply to in this first part of the series. We will give some insight into what a kernel is, what it does and why it may in some cases be necessary to change it. In a second installment, | ||
- | Au point où nous en sommes de nos jours, toute distribution GNU/Linux offre au moins un noyau Linux, ou un noyau principal par défaut complété de différents noyaux optionnels pour ceux qui en ont besoin. De nombreuses années se sont écoulées depuis que la plupart d' | + | Au point où nous en sommes de nos jours, toute distribution GNU/Linux offre au moins un noyau Linux, ou un noyau principal par défaut, complété de différents noyaux optionnels pour ceux qui en ont besoin. De nombreuses années se sont écoulées depuis que la plupart d' |
C'est à cette question que je vais essayer de répondre dans la première partie de cette série. Nous allons donner un aperçu de ce qu'est un noyau, de ce qu'il fait et des raisons pour lesquelles il peut être nécessaire de le changer dans certains cas. Dans un second épisode, nous verrons ce que nous devons obtenir pour être en mesure de compiler un noyau et jeter un premier coup d’œil au code source lui-même. Ensuite, nous configurerons et compilerons le noyau, puis nous verrons comment le résultat peut être installé et utilisé dans notre système. Nous serons alors en mesure de faire quelques ajustements simples au noyau, parmi lesquels les différentes options du processeur (par ex. PAE) seront étudiées. Ceci nous amènera à faire quelques changements simples dans le code source existant et en voir le résultat. Enfin, nous créerons un peu de code personnalisé, | C'est à cette question que je vais essayer de répondre dans la première partie de cette série. Nous allons donner un aperçu de ce qu'est un noyau, de ce qu'il fait et des raisons pour lesquelles il peut être nécessaire de le changer dans certains cas. Dans un second épisode, nous verrons ce que nous devons obtenir pour être en mesure de compiler un noyau et jeter un premier coup d’œil au code source lui-même. Ensuite, nous configurerons et compilerons le noyau, puis nous verrons comment le résultat peut être installé et utilisé dans notre système. Nous serons alors en mesure de faire quelques ajustements simples au noyau, parmi lesquels les différentes options du processeur (par ex. PAE) seront étudiées. Ceci nous amènera à faire quelques changements simples dans le code source existant et en voir le résultat. Enfin, nous créerons un peu de code personnalisé, | ||
Ligne 41: | Ligne 41: | ||
Un de premiers diagrammes que nos étudiants en système d' | Un de premiers diagrammes que nos étudiants en système d' | ||
- | C'est important de comprendre le but de chaque couche : le noyau lui-même est un morceau de logiciel de très bas niveau ; autrement dit, c'est lui qui assure la liaison directe avec le matériel et gère les fonctionnalités les plus basiques de l'OS. Parmi lesquelles : | + | Il est important de comprendre le but de chaque couche : le noyau lui-même est un morceau de logiciel de très bas niveau ; autrement dit, c'est lui qui assure la liaison directe avec le matériel et gère les fonctionnalités les plus basiques de l'OS. Parmi lesquelles : |
1. La gestion des traitements et leur accès au CPU | 1. La gestion des traitements et leur accès au CPU | ||
- | Dans un environnement multi-traitements, | + | Dans un environnement multi-traitements, |
**2. Managing memory. | **2. Managing memory. | ||
Ligne 53: | Ligne 53: | ||
2. Gérer la mémoire | 2. Gérer la mémoire | ||
- | Une fois encore, dans un environnement multi-traitements, | + | Une fois encore, dans un environnement multi-traitements, |
**3. Managing access to Input/ | **3. Managing access to Input/ | ||
Ligne 67: | Ligne 67: | ||
D'une façon assez voisine qu' | D'une façon assez voisine qu' | ||
- | Tout ceci peut devenir relativement compliqué puisque, au fur et à mesure, les ordinateurs modernes incorporent de nouveaux types de matériel. Ainsi, affirmer que le noyau d'un système d' | + | Tout ceci peut devenir relativement compliqué puisque, au fur et à mesure, les ordinateurs modernes incorporent de nouveaux types de matériels. Ainsi, affirmer que le noyau d'un système d' |
- | D' | + | D' |
**Going back to the “onion” diagram, each successive layer can request the services of layers situated inwards of themselves. System libraries and programs are respectively formed of libraries that contain much-used routines on one hand, and simple programs that any operating system would need on the other. An example of the first is the glibc library, that most if not all programs in a GNU/Linux will require. This contains many often-used routines such as writing a character string on screen, accessing a file, or writing to a network port. An example of a system program could be the mkfs.ext4 utility to format an ext4 partition. These libraries and programs will at some point need to access physical system resources, be it memory or a hardware device. At that point they will request this service from the inner kernel layer, using what is called a “system call”. ** | **Going back to the “onion” diagram, each successive layer can request the services of layers situated inwards of themselves. System libraries and programs are respectively formed of libraries that contain much-used routines on one hand, and simple programs that any operating system would need on the other. An example of the first is the glibc library, that most if not all programs in a GNU/Linux will require. This contains many often-used routines such as writing a character string on screen, accessing a file, or writing to a network port. An example of a system program could be the mkfs.ext4 utility to format an ext4 partition. These libraries and programs will at some point need to access physical system resources, be it memory or a hardware device. At that point they will request this service from the inner kernel layer, using what is called a “system call”. ** | ||
- | Pour revenir au diagramme de l'« oignon », chaque couche successive peut demander les services des couches | + | Pour revenir au diagramme de l'« oignon », chaque couche successive peut demander les services des couches |
**This request may or may not succeed, depending on whether the requested resource is at that time available to the kernel. Certain security policies may also be in place, restricting access to resources depending on the type of program on the identity of the user on behalf of whom it is executing. In any case, the program making the request cannot directly access the resource without checking whether the kernel has granted access, although some programs have been seen to do so. The ‘not taking access for granted’ is one of the differences between well-written | **This request may or may not succeed, depending on whether the requested resource is at that time available to the kernel. Certain security policies may also be in place, restricting access to resources depending on the type of program on the identity of the user on behalf of whom it is executing. In any case, the program making the request cannot directly access the resource without checking whether the kernel has granted access, although some programs have been seen to do so. The ‘not taking access for granted’ is one of the differences between well-written | ||
Ligne 85: | Ligne 85: | ||
Beaucoup de bibliothèques et de programmes système seront nécessaires sur tous les ordinateurs utilisant une version donnée du système d’exploitation. | Beaucoup de bibliothèques et de programmes système seront nécessaires sur tous les ordinateurs utilisant une version donnée du système d’exploitation. | ||
- | En poursuivant la découverte du diagramme vers l’extérieur, | + | En poursuivant la découverte du diagramme vers l’extérieur, |
**This explains many of the package dependencies that arise when installing new software: the maintainers of the web browser will have introduced a dependency on the openssl package, to make sure that the openssl is installed and with an appropriate version number when the browser fires up a HTTPS connection. | **This explains many of the package dependencies that arise when installing new software: the maintainers of the web browser will have introduced a dependency on the openssl package, to make sure that the openssl is installed and with an appropriate version number when the browser fires up a HTTPS connection. | ||
Ligne 91: | Ligne 91: | ||
Some readers may have noticed that purists - such as myself - tend to refer to our operating system as the “GNU/ | Some readers may have noticed that purists - such as myself - tend to refer to our operating system as the “GNU/ | ||
- | Ceci explique les nombreuses dépendances qui apparaissent quand un nouveau logiciel est installé : | + | Ceci explique les nombreuses dépendances qui apparaissent quand un nouveau logiciel est installé : |
- | Certains lecteurs auront peut-être remarqué que les puristes – dont je suis – ont tendance à faire référence au système d’exploitation comme le système « GNU/ | + | Certains lecteurs auront peut-être remarqué que les puristes – dont je suis – ont tendance à faire référence au système d’exploitation comme le système « GNU/ |
**On the other hand, some of the most important bits of the operating system software have been developed in conjunction with the GNU Project at www.gnu.org, | **On the other hand, some of the most important bits of the operating system software have been developed in conjunction with the GNU Project at www.gnu.org, | ||
Ligne 99: | Ligne 99: | ||
D’un autre côté, une partie des éléments les plus importants du système d’exploitation ont été développés en collaboration avec le projet GNU (www.gnu.org), | D’un autre côté, une partie des éléments les plus importants du système d’exploitation ont été développés en collaboration avec le projet GNU (www.gnu.org), | ||
- | Ce qui n'aide pas à simplifier la situation est que, depuis pas mal de temps, le noyau Linux est publié sous la même licence GNU General Public License (GPL) [Licence publique générale - Wikipedia] que le logiciel du projet GNU. Alors contentons-nous de nous rappeler que le noyau et le logiciel conjoint de GNU/Linux sont publiés par des équipes différentes et restons-en là. Cela va sans dire que beaucoup de programmes utilisateur ont été développés dans des projets ultérieurs, | + | |
+ | Ce qui n'aide pas à simplifier la situation est que, depuis pas mal de temps, le noyau Linux est publié sous la même licence GNU General Public License (GPL) [Licence publique générale - Wikipedia] que le logiciel du projet GNU. Alors contentons-nous de nous rappeler que le noyau et le logiciel conjoint de GNU/Linux sont publiés par des équipes différentes et restons-en là. Il va sans dire que beaucoup de programmes utilisateur ont été développés dans des projets ultérieurs, | ||
Ligne 120: | Ligne 121: | ||
GNU/Linux distributions contain kernels that are compiled for a certain model of processor. Nowadays, most 32-bit kernels are compiled using the “i686” instruction set of the Pentium Pro CPU model. ** | GNU/Linux distributions contain kernels that are compiled for a certain model of processor. Nowadays, most 32-bit kernels are compiled using the “i686” instruction set of the Pentium Pro CPU model. ** | ||
- | Au fil des années, des dérivés successifs du i386 (les i486, Pentium, Pentium Pro, Pentium II et III, Pentium IV, et enfin Atom) ont incorporés | + | Au fil des années, des dérivés successifs du i386 (les i486, Pentium, Pentium Pro, Pentium II et III, Pentium IV, et enfin Atom) ont incorporé |
- | La compatibilité ascendante a été aussi maintenue par AMD quand il a développé l’architecture 64-bit qui est maintenant utilisée dans les ordinateurs individuels 64-bit. Ces processeurs comprennent la propre ligne des processeurs AMD mais aussi la gamme Intel Core Duo, Core i3, i5 et i7. Ils peuvent fonctionner sur 32 bits, comme un processeur 32-bit – ce qui explique pourquoi, par exemple, Windows XP 32-bit pouvait être utilisé encore récemment sur les machines modernes. Cependant, pour profiter de l’avantage du jeu d’instructions sur 64 bits, nous avons besoin de compiler expressément les programmes et le noyau pour cette architecture. Ils seront alors capables d’exécuter des calculs avec des opérandes de 64 bits de long et utiliser des adresses mémoires plus étendues dans un espace mémoire plus vaste. | + | |
+ | La compatibilité ascendante a été aussi maintenue par AMD quand il a développé l’architecture 64-bit qui est maintenant utilisée dans les ordinateurs individuels 64-bit. Ces processeurs comprennent la propre ligne des processeurs AMD, mais aussi la gamme Intel Core Duo, Core i3, i5 et i7. Ils peuvent fonctionner sur 32 bits, comme un processeur 32-bit – ce qui explique pourquoi, par exemple, Windows XP 32-bit pouvait être utilisé encore récemment sur les machines modernes. Cependant, pour profiter de l’avantage du jeu d’instructions sur 64 bits, nous avons besoin de compiler expressément les programmes et le noyau pour cette architecture. Ils seront alors capables d’exécuter des calculs avec des opérandes de 64 bits de long et utiliser des adresses mémoires plus étendues dans un espace mémoire plus vaste. | ||
Les distributions Gnu/Linux contiennent des noyaux qui sont compilés pour un certain modèle de processeur. De nos jours, la plupart des noyaux 32-bits sont compilés avec le jeu d’instructions « i686 » du modèle de CPU Pentium Pro. | Les distributions Gnu/Linux contiennent des noyaux qui sont compilés pour un certain modèle de processeur. De nos jours, la plupart des noyaux 32-bits sont compilés avec le jeu d’instructions « i686 » du modèle de CPU Pentium Pro. | ||
Ligne 140: | Ligne 142: | ||
http:// | http:// | ||
- | Cela signifie | + | Cela signifie |
• un noyau i686 ne fonctionnera pas du tout, ou fera planter la machine, sur des modèles anciens, parce qu’un i386, i486 ou Pentium ne comprendra pas certaines instructions utilisées ; | • un noyau i686 ne fonctionnera pas du tout, ou fera planter la machine, sur des modèles anciens, parce qu’un i386, i486 ou Pentium ne comprendra pas certaines instructions utilisées ; | ||
• un noyau i686 fonctionnera sur les modèles récents, mais il ne sera pas optimisé car certaines instructions récentes disponibles sur un processeur Atom (commercialisé en 2008) ne seront pas utilisées par le noyau. | • un noyau i686 fonctionnera sur les modèles récents, mais il ne sera pas optimisé car certaines instructions récentes disponibles sur un processeur Atom (commercialisé en 2008) ne seront pas utilisées par le noyau. | ||
Ligne 150: | Ligne 152: | ||
Even if we exclude users of really old hardware, a certain class of laptop that is still current in terms of usability suffers from the lack of PAE. Laptops built on Intel’s Pentium M (“M” for “Mobile”) processors present several advantages on later Pentium IV, M or Core CPUs. This processor class is based on the Pentium III, which is known to be internally less complex that later Pentium IVs. In practice, they compute faster when run at the same clock speed, and so are more energy efficient and manage laptop battery life better. ** | Even if we exclude users of really old hardware, a certain class of laptop that is still current in terms of usability suffers from the lack of PAE. Laptops built on Intel’s Pentium M (“M” for “Mobile”) processors present several advantages on later Pentium IV, M or Core CPUs. This processor class is based on the Pentium III, which is known to be internally less complex that later Pentium IVs. In practice, they compute faster when run at the same clock speed, and so are more energy efficient and manage laptop battery life better. ** | ||
- | Proposé à l’origine dans la génération Pentium Pro des processeurs Intel, PAE devint un standard dans beaucoup de PC Pentium-III | + | Proposé à l’origine dans la génération Pentium Pro des processeurs Intel, PAE devint un standard dans beaucoup de PC Pentium-III, dans tous les Pentium-IV et dans la série Core. Ceci devrait concerner de très nombreux ordinateurs personnels qui ont été vendus au cours des dix dernières années. Aussi, la plupart des gens n’ont pas besoin de se demander si leur distribution favorite (Ubuntu) active PAE par défaut dans son noyau depuis la version 12.10 et ainsi rend obligatoire l’activation du PAE sur le processeur. Ubuntu 14.04 ne fonctionnera plus sur des processeurs où il est absent, alors que d’autres distributions (plus anciennes) pourraient tourner. |
- | Même si nous excluons les utilisateurs de très vieux matériels, une certaine partie des portables qui sont encore d’usage courant souffre de cette absence du PAE. Les portables construits sur les processeurs Intel Pentium M (« M » pour « Mobile ») présentent plusieurs avantages sur des processeurs plus récents Pentium IV, M ou série Core. Cette classe de processeurs est basée sur le Pentium III, qui est connue pour son architecture interne moins complexe que celle du Pentium IV plus récent. En pratique, elle calcule plus vite pour une même vitesse d’horloge, | + | Même si nous excluons les utilisateurs de très vieux matériels, une certaine partie des portables qui sont encore d’usage courant souffre de cette absence du PAE. Les portables construits sur les processeurs Intel Pentium M (« M » pour « Mobile ») présentent plusieurs avantages sur des processeurs plus récents Pentium IV, M ou série Core. Cette classe de processeurs est basée sur le Pentium III, qui est connue pour son architecture interne moins complexe que celle du Pentium IV plus récent. En pratique, elle calcule plus vite pour une même vitesse d’horloge, |
**So it makes sense for owners of computers, such as the original eeePC or some of the first 17” laptops, to try and keep them going - especially since, with a lightweight distribution such as Lubuntu or Xubuntu, they are still well up to most normal web browsing or office tasks. | **So it makes sense for owners of computers, such as the original eeePC or some of the first 17” laptops, to try and keep them going - especially since, with a lightweight distribution such as Lubuntu or Xubuntu, they are still well up to most normal web browsing or office tasks. | ||
Ligne 162: | Ligne 164: | ||
On comprend mieux pourquoi certains propriétaires de PC, comme les eeePC originaux ou certains des premiers portables 17", essaient de les garder en état de marche – en particulier parce que, avec des distributions légères comme Lubuntu ou Xubuntu, ils sont toujours bien taillés pour la navigation internet ou les tâches bureautiques. | On comprend mieux pourquoi certains propriétaires de PC, comme les eeePC originaux ou certains des premiers portables 17", essaient de les garder en état de marche – en particulier parce que, avec des distributions légères comme Lubuntu ou Xubuntu, ils sont toujours bien taillés pour la navigation internet ou les tâches bureautiques. | ||
- | Plusieurs solutions peuvent être trouvées sur le Web, notamment celles | + | Plusieurs solutions peuvent être trouvées sur le Web, notamment celles |
- | On pourrait dire la même chose des processeurs plus anciens. Le projet Debian supportait le noyau i386 jusqu’à récemment, alors que la nouvelle référence est le jeu d’instructions i486 (voir http:// | + | On pourrait dire la même chose des processeurs plus anciens. Le projet Debian supportait le noyau i386 jusqu’à récemment, alors que la nouvelle référence est le jeu d’instructions i486 (voir http:// |
**As for more recent machines, there are also arguments in favor of compiling your own kernel. The standard i686 kernel will work quite well on modern hardware, but will not be able to use the more recent architecture developments. This is the point of view of the Gentoo distribution, | **As for more recent machines, there are also arguments in favor of compiling your own kernel. The standard i686 kernel will work quite well on modern hardware, but will not be able to use the more recent architecture developments. This is the point of view of the Gentoo distribution, | ||
Ligne 174: | Ligne 176: | ||
Quant aux machines récentes, il y a aussi des arguments en faveur de la compilation de votre propre noyau. Le noyau standard i686 fonctionnera très bien sur du matériel récent, mais ne sera pas capable d’utiliser les développements récents de l’architecture. C’est le point de vue de la distribution Gentoo, qui permet à l’utilisateur de compiler chaque paquet logiciel installé (http:// | Quant aux machines récentes, il y a aussi des arguments en faveur de la compilation de votre propre noyau. Le noyau standard i686 fonctionnera très bien sur du matériel récent, mais ne sera pas capable d’utiliser les développements récents de l’architecture. C’est le point de vue de la distribution Gentoo, qui permet à l’utilisateur de compiler chaque paquet logiciel installé (http:// | ||
- | Même si nous n’avons pas besoin d’un nouveau noyau complet, dans certains cas, quand l’utilisateur veut utiliser un matériel assez nouveau, il devient nécessaire de compiler au moins le pilote concerné. Les contrôleurs graphiques et les dispositifs de communication sans fil sont parmi les candidats potentiels. Le nouveau pilote est un partie modulaire du noyau qui se branche au noyau existant pour lui donner les capacités de gérer le matériel. | + | Même si nous n’avons pas besoin d’un nouveau noyau complet, dans certains cas, quand l’utilisateur veut utiliser un matériel assez nouveau, il devient nécessaire de compiler au moins le pilote concerné. Les contrôleurs graphiques et les dispositifs de communication sans fil sont parmi les candidats potentiels. Le nouveau pilote est une partie modulaire du noyau qui se branche au noyau existant pour lui donner les capacités de gérer le matériel. |
Et au final, peut-être la meilleure raison de compiler un noyau est simplement parce qu’on peut le faire. Peu d’utilisateurs des systèmes d’exploitation dominants peuvent dire qu’ils ont compilé une partie importante de leur système, mais nous, on peut le dire. Pendant toute la série, nous allons aussi apprendre beaucoup sur le fonctionnement réel de notre ordinateur et de ses logiciels. | Et au final, peut-être la meilleure raison de compiler un noyau est simplement parce qu’on peut le faire. Peu d’utilisateurs des systèmes d’exploitation dominants peuvent dire qu’ils ont compilé une partie importante de leur système, mais nous, on peut le dire. Pendant toute la série, nous allons aussi apprendre beaucoup sur le fonctionnement réel de notre ordinateur et de ses logiciels. | ||
Ligne 189: | Ligne 191: | ||
LE MATERIEL NECESSAIRE | LE MATERIEL NECESSAIRE | ||
- | Dans les tout prochains épisodes, nous allons parcourir les étapes pour d’abord | + | Dans les tout prochains épisodes, nous allons parcourir les étapes pour obtenir |
D’autre part, la compilation du noyau va consommer une grosse puissance CPU. Bien que ce soit toujours possible sur un système faible consommation (genre petit portable), vous y gagnerez en utilisant le CPU d’un gros portable ou d’un PC de bureau. Un Intel Core Duo, Core i3 ou équivalent est probablement le processeur le plus lent recommandable pour cette activité. Vous devez aussi savoir que le code source lui-même et les fichiers du noyau occuperont jusqu’à 20 Go d’espace disque (principalement dans le répertoire /usr) ; préparez-vous en conséquence. | D’autre part, la compilation du noyau va consommer une grosse puissance CPU. Bien que ce soit toujours possible sur un système faible consommation (genre petit portable), vous y gagnerez en utilisant le CPU d’un gros portable ou d’un PC de bureau. Un Intel Core Duo, Core i3 ou équivalent est probablement le processeur le plus lent recommandable pour cette activité. Vous devez aussi savoir que le code source lui-même et les fichiers du noyau occuperont jusqu’à 20 Go d’espace disque (principalement dans le répertoire /usr) ; préparez-vous en conséquence. |
issue88/labo_linux_2.1422530311.txt.gz · Dernière modification : 2015/01/29 12:18 de auntiee