3. Les sources du noyau
Linux
Dans cette partie, on s'appuie pas sur le gestionnaire de
paquets de la distribution et on télécharge directement les sources
du noyau Linux à partir du dépôt défini dans la liste des sources
(fichier /etc/apt/sources.list).
Il faut bien reconnaître que s'attaquer à toutes les options de
configuration du noyau Linux en partant de zéro est une tâche
particulièrement ardue. Pour rendre la démarche plus aisée, on se
propose de partir de la configuration fournie avec le paquet de la
distribution. En procédant par modifications élémentaires à partir
de cette configuration réputée sûre puisque permettant le
fonctionnement du système actuel, on limite ainsi les possibilités
d'erreurs.
Les versions stables du noyau évoluent fréquemment. Les
questions ci-dessous sont basées sur la version courante de la
série 2.6.xx.
|
1.
|
Quels sont les principaux canaux de diffusion des sources
du noyau Linux ?
Rechercher un site web, un dépôt de code en ligne et le nom du
paquet de la distribution.
|
|
-
Le site principal de publication des sources du noyau Linux est
à l'adresse http://www.kernel.org/.
-
Le développement du système de contrôle de version git a été initié par les développeurs du noyau
Linux. Depuis, des services en lignes ont été bâtis à partir de
git. Les branches de développement
du noyau sont disponibles sur le site GitHub à l'adresse https://github.com/torvalds/linux.
-
La distribution Debian GNU/Linux propose des paquets contenant
les sources qui on servi à construire les paquets de noyau. Pour
identifier ces paquets, on effectue une recherche dans le catalogue
de la distribution.
$ aptitude search linux-source
p linux-source - Linux kernel source (meta-package)
p linux-source-2.6 - Linux kernel source (dummy package)
p linux-source-2.6.32 - Linux kernel source for version 2.6.32 with Debian patches
p linux-source-3.0.0 - Linux kernel source for version 3.0.0 with Debian patches
|
|
2.
|
Quels sont les modes de téléchargement des sources qui
permettent de s'affranchir d'une interface graphique ?
La grande majorité des téléchargements se font via le protocole
HTTP. Pour trouver l'outil
permettant de lancer un téléchargement HTTP, on peut faire une requête par mot clé
dans les pages de manuels des outils installés sur le système :
apropos "network
download".
|
|
Lorsque l'on utilise des serveurs rack, ceux-ci ne possèdent ni écran ni clavier.
Il est donc nécessaire d'effectuer les opérations à distance sans
recours à une interface graphique. On dispose de deux protocoles
pour les transferts : FTP et
HTTP. Les outils correspondant
sont ncftp et wget.
Compte tenu des réponses à la question précédente, on peut
utiliser les trois ressources suivantes.
-
Téléchargement à partir du site principal de publication
kernel.org.
$ wget http://www.eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2
-- http://www.eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2
Résolution de www.eu.kernel.org... 130.239.17.4, 199.6.1.164
Connexion vers www.eu.kernel.org|130.239.17.4|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 50355835 (48M) [application/x-bzip2]
Saving to: `linux-2.6.32.tar.bz2'
18% [===================> ] 9 500 807 217K/s eta 6m 46s
-
Téléchargement à partir du dépôt GitHub.
$ wget https://github.com/torvalds/linux/tarball/v3.1-rc8
--2011-10-04 00:43:19-- https://github.com/torvalds/linux/tarball/v3.1-rc8
Résolution de github.com (github.com)... 207.97.227.239
Connexion vers github.com (github.com)|207.97.227.239|:443...connecté.
requête HTTP transmise, en attente de la réponse...302 Found
Emplacement: https://nodeload.github.com/torvalds/linux/tarball/v3.1-rc8 [suivant]
--2011-10-04 00:43:20-- https://nodeload.github.com/torvalds/linux/tarball/v3.1-rc8
Résolution de nodeload.github.com (nodeload.github.com)... 207.97.227.252
Connexion vers nodeload.github.com (nodeload.github.com)|207.97.227.252|:443...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 98197772 (94M) [application/octet-stream]
Sauvegarde en : «v3.1-rc8»
100%[======================================>] 98 197 772 6,64M/s ds 18s
2011-10-04 00:43:39 (5,14 MB/s) - «v3.1-rc8» sauvegardé [98197772/98197772]
$ mv v3.1-rc8 linux-3.1-rc8.tar.bz2
$ tar tvf linux-3.1-rc8.tar.bz2
-
Téléchargement à partir du gestionnaire de paquets de la
distribution.
$ # aptitude install linux-source-3.0.0
Les NOUVEAUX paquets suivants vont être installés :
binutils{a} bzip2{a} cpp{a} cpp-4.6{a} gcc{a} gcc-4.6{a} libc-dev-bin{a}
libc6-dev{a} libcloog-ppl0{a} libgmp10{a} libgmpxx4ldbl{a} libgomp1{a}
libmpc2{a} libmpfr4{a} libppl-c4{a} libppl9{a} libpwl5{a} libquadmath0{a}
linux-libc-dev{a} linux-source-3.0.0 make{a} manpages-dev{a}
0 paquets mis à jour, 22 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 102 Mo d'archives. Après dépaquetage, 148 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?]
|
|
3.
|
À quel groupe doit appartenir l'utilisateur normal pour
pouvoir effectuer les opérations de compilation de modules ou du
noyau ?
Rechercher dans la liste des groupes système, celui consacré à
la manipulation des sources.
|
|
On cherche la chaîne src dans le
fichier /etc/group et on ajoute
l'utilisateur normal dans ce groupe.
# grep src /etc/group
src:x:40:
# adduser etu src
Ajout de l'utilisateur « etu » au groupe « src »...
Ajout de l'utilisateur etu au groupe src
Fait.
# id etu
uid=1000(etu) gid=1000(etu) groupes=1000(etu),24(cdrom),25(floppy),
29(audio),30(dip),40(src),44(video),46(plugdev)
|
|
4.
|
Quel est le répertoire de l'arborescence système dédié au
stockage des sources du noyau Linux ?
Faire une recherche dans le document Linux Filesystem Hierarchy.
|
|
C'est le répertoire /usr/src qui
doit accueillir les sources du noyau.
On vérifie que les membres du groupe système src on bien accès à ce répertoire.
# chgrp -R src /usr/src
# chmod 2775 /usr/src
|
|
5.
|
Quelles sont les commandes «rituelles» d'installation des
sources du noyau Linux ?
Pour chaque commande, expliquer les opérations réalisées et
justifier le choix des options.
Il faut consulter les ressources suivantes : Debian Linux Kernel Handbook et
Manuel de référence Debian -
Chapitre 9.
|
|
Pour traiter cette question, on utilise les fichiers sources
obtenus à l'aide du gestionnaire de paquets. D'après les documents
de référence on doit utiliser la séquence de commandes
suivante.
$ cd /usr/src/
$ tar xf linux-source-3.0.0.tar.bz2
$ ln -s linux-source-3.0.0 linux
$ cd linux
$ cp /boot/config-3.0.0-1-amd64 .config
$ make menuconfig
|

|
Extraction de l'arborescence des sources du noyau.
|
|

|
Création d'un lien symbolique sur l'arborescence de travail.
L'utilisation de ce lien permet de conserver plusieurs
arborescences de sources. De cette façon, on peut travailler sur
plusieurs versions de noyau.
|
|

|
Copie du fichier de configuration fourni avec le paquet de
noyau. Ce fichier est réputé fiable puisqu'il correspond au noyau
en cours d'exécution et que le système est opérationnel.
|
|

|
Lancement de l'interface des menus de configuration des options
du noyau Linux. C'est à ce niveau que les «choses sérieuses»
commencent.
|
La dernière commande n'est utilisable que si le paquet de
bibliothèques de développement ncurses est installé. aptitude install
libncurses-dev.
|