Avant d'attaquer la compilation d'un nouveau noyau à partir de ses sources, on doit identifier et localiser les différents composants du noyau en cours d'exécution sur le système.
Le jeu de questions ci-dessous suppose que la configuration système est directement issue de l'installation de la distribution Debian GNU/Linux. Le noyau courant exécuté est fourni via un paquet de la distribution.
|
1. |
Quelle est la commande |
|
C'est la commande uname qui identifie le noyau courant. Pour interroger les pages de manuels à l'aide de la commande apropos, il faut que les paquets correspondant soient installés et que l'index de recherche soit construit. Pour interroger les pages de manuels, on contrôle la liste des paquets correspondants installés et on lance manuellement la construction de l'index de recherche : $ dpkg -l manpages* |grep ^ii ii manpages 3.05-1 Manual pages about using a GNU/Linux system ii manpages-dev 3.05-1 Manual pages about using GNU/Linux for devel ii manpages-fr 3.03.1-1 French version of the manual pages about usi ii manpages-fr-dev 3.03.1-1 French version of the development manual pag ii manpages-fr-extra 20080719 French version of the manual pages <snip/> # /etc/cron.daily/man-db <snip/> $ apropos "current kernel" oldolduname (2) - get name and information about current kernel olduname (2) - get name and information about current kernel uname (2) - get name and information about current kernel Pour obtenir la version courante du noyau exécuté : $ uname -a Linux vm0 2.6.26-1-amd64 #1 SMP Wed Sep 10 15:31:12 UTC 2008 x86_64 GNU/Linux |
|
|
2. |
Où est placée l'image de la partie monolithique du noyau courant ? |
|
Une fois la version courante du noyau identifiée à l'aide de la commande uname, on peut faire la correspondance avec les paquets de noyau installés. $ dpkg -l linux-image* |grep ^ii ii linux-image-2.6-amd64 2.6.26+16 Linux 2.6 image on AMD64 ii linux-image-2.6.26-1-amd64 2.6.26-5 Linux 2.6.26 image on AMD64 Connaissant le nom du paquet de noyau installé on peut lister les fichiers qu'il contient. À partir de cette liste on peut localiser la partie monolithique du noyau ainsi que ses modules dans l'arborescence du système de fichiers. C'est dans le répertoire $ ls -lAh /boot total 17M -rw-r--r-- 1 root root 84K sep 10 19:33 config-2.6.26-1-amd64 |
|
|
3. |
Où sont placés les fichiers des modules correspondant au noyau courant ? Où est placé l'image du disque RAM utilisé lors de l'initialisation du système ? Dans quels cas de figure utilise-t-on l'arborescence ou le disque RAM ? |
|
Dans la question précédente, on a identifié le noyau en cours d'exécution, sa version et le paquet qui le contient. On utilise ces mêmes informations pour répondre aux questions sur les modules. On peut parcourir la liste des fichiers contenus dans le paquet de noyau et effectuer des recherches par mots clés en utilisant la commande suivante : $ dpkg -L linux-image-2.6.26-1-amd64 | less <snip/> /lib /lib/modules /lib/modules/2.6.26-1-amd64 /lib/modules/2.6.26-1-amd64/kernel /lib/modules/2.6.26-1-amd64/kernel/sound /lib/modules/2.6.26-1-amd64/kernel/sound/usb <snip/> La liste ci-dessus montre que les modules du noyau sont placés dans
le répertoire Le fichier image du disque RAM d'initialisation a déjà été identifié ci-dessus. Ce fichier est utilisé lors du lancement du système d'exploitation.
Il est reconnu par le gestionnaire de démarrage de la même façon que la
partie monolithique du noyau. Une fois le système complètement initialisé,
les opérations de (chargement|déchargement) des modules utilisent
l'arborescence du dique dur : |
|
|
4. |
Que contiennent les arborescences |
|
Consulter le document ressource The Wonderful World of Linux 2.6. L'arborescence L'arborescence |
|
|
5. |
Quelle est la commande qui permet de lister les modules chargés en mémoire ? À quel paquet appartient elle ? |
|
La commande lsmod : $ lsmod | less Module Size Used by ipv6 288328 40 video 24084 0 output 7808 1 video ac 9352 0 battery 16904 0 loop 19468 0 snd_pcm 81800 0 snd_timer 25744 1 snd_pcm snd 63688 2 snd_pcm,snd_timer soundcore 12064 1 snd snd_page_alloc 13072 1 snd_pcm <snip/> Cette commande appartient au paquet
$ dpkg -S `which lsmod` module-init-tools: /sbin/lsmod $ dpkg -L module-init-tools | less /. /etc /etc/init.d /etc/init.d/module-init-tools /etc/modprobe.d /etc/modprobe.d/aliases /etc/modprobe.d/arch /etc/modprobe.d/arch/x86_64 /sbin /sbin/modprobe /sbin/insmod /sbin/rmmod /sbin/depmod /sbin/update-modules /sbin/modinfo <snip/> |
|
|
6. |
Quelles sont les commandes qui permettent de charger un module en mémoire «manuellement» ? Identifier celle qui traite automatiquement les dépendances entre modules. |
|
On dispose de deux commandes : insmod et modprobe. Seule la commande modprobe traite les dépendances au (chargement|déchargement) d'un module. Illustration avec un pilote d'interface RNIS : # modprobe -v hisax_st5481 insmod /lib/modules/2.6.26-1-amd64/kernel/lib/crc-ccitt.ko insmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/hisax/isdnhdlc.ko insmod /lib/modules/2.6.26-1-amd64/kernel/drivers/net/slhc.ko insmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/i4l/isdn.ko insmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/hisax/hisax.ko insmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/hisax/hisax_st5481.ko |
|
|
7. |
Quelles sont les commandes qui permettent de retirer un module de la mémoire «manuellement» ? Identifier les options de la commande qui traite automatiquement les dépendances entre modules. |
|
Comme dans le cas précédent, c'est la commande modprobe qui retire de la mémoire les modules associés au déchargement. Toujours avec le pilote d'interface RNIS : # modprobe -rv hisax_st5481 rmmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/hisax/hisax_st5481.ko rmmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/hisax/hisax.ko rmmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/i4l/isdn.ko rmmod /lib/modules/2.6.26-1-amd64/kernel/drivers/net/slhc.ko rmmod /lib/modules/2.6.26-1-amd64/kernel/drivers/isdn/hisax/isdnhdlc.ko rmmod /lib/modules/2.6.26-1-amd64/kernel/lib/crc-ccitt.ko |
Vous êtes ici :