Explication détaillée des fichiers du noyau Linux

Il existe trois principaux fichiers du noyau Linux, vmlinuz, initrd.img et System.map. Pour les personnes qui étudient le noyau, ces trois fichiers sont très importants.

1.vmlinuz

vmlinuz est un noyau compressé et amorçable. «Vm» signifie «mémoire virtuelle». Linux prend en charge la mémoire virtuelle.

Il existe deux façons de créer vmlinuz. L'un est créé par "make zImage" lors de la compilation du noyau. zImage convient aux petits noyaux et existe pour des raisons de compatibilité descendante. La seconde consiste à créer le noyau via la commande make bzImage lors de la compilation. bzImage est une image du noyau compressée. Il convient de noter que bzImage n'est pas compressé avec bzip2. Le bz dans bzImage est trompeur, et bz signifie "big zImage". Le b dans bzImage signifie "grand".

ZImage (vmlinuz) et bzImage (vmlinuz) sont compressés avec gzip. Ce ne sont pas seulement un fichier compressé, mais le code de décompression gzip est intégré au début des deux fichiers. Vous ne pouvez donc pas décompresser vmlinuz avec gunzip ou gzip -dc.

Le fichier du noyau contient un minuscule gzip pour décompresser le noyau et le démarrer. La différence entre les deux est que l'ancienne zImage décompresse le noyau vers la mémoire bas de gamme (les premiers 640 Ko) et la bzImage décompresse le noyau vers la mémoire haut de gamme (au-dessus de 1 Mo). Si le noyau est relativement petit, l'un des zImage ou bzImage peut être utilisé, et la durée de fonctionnement du système démarré par les deux méthodes est la même. Le gros noyau utilise bzImage, mais pas zImage.

De plus, vmlinux est un noyau non compressé et vmlinuz est un fichier compressé de vmlinux.

2.initrd.img

initrd est l'abréviation de "initial ramdisk". Initrd est généralement utilisé pour démarrer temporairement le matériel dans un état où le noyau réel vmlinuz peut prendre le relais et continuer le démarrage. Initrd est principalement utilisé pour charger ext3 et d'autres systèmes de fichiers et pilotes pour les périphériques scsi. Par exemple, si le disque dur scsi est utilisé et que le pilote matériel scsi n'est pas dans le noyau vmlinuz, le noyau ne peut pas charger le système de fichiers racine avant de charger le module scsi, mais le module scsi est stocké sous / lib / modules de la racine système de fichiers. Afin de résoudre ce problème, vous pouvez démarrer un noyau initrd capable de lire le noyau réel et utiliser initrd pour corriger le problème de démarrage scsi. initrd.img est un fichier compressé avec gzip.

Le fichier image initrd est créé à l'aide de mkinitrd. L'utilitaire mkinitrd peut créer un fichier image initrd. Cette commande est la propriété de RedHat. D'autres distributions Linux peuvent avoir des commandes correspondantes. C'est un utilitaire très pratique.

3.System.map

System.map est une table de symboles de noyau d'un noyau spécifique. C'est un lien vers le System.map du noyau que vous exécutez actuellement.
Comment la table des symboles du noyau est-elle créée? System.map est généré par "nm vmlinux" et les symboles non pertinents sont filtrés.

nm /boot/vmlinux-2.6.32-10 > System.map
下面几行来自/usr/src/linux-2.6/Makefile:
nm vmlinux | grep -v ‘compiled\|\.o$$\|
[aUw]\|\.\.ng$$\|LASH[RL]DI’ | sort > System.map

4. La différence entre initrd et initramfs

Tout d'abord, nous allons introduire deux schémas pour que le noyau démarre init.
Le premier est ramdisk, qui utilise un morceau de mémoire (ram) comme disque (disque) à monter, puis trouve l'initialisation dans la ram pour l'exécuter.
Le second est ramfs, qui monte le système de fichiers directement sur la RAM et exécute init dans le système de fichiers.
Initrd (init ramdisk) est la réalisation de ramdisk, et initramfs est la réalisation de ramfs.
tmpfs est une version améliorée de ramfs. rootfs, est une instance spéciale de ramfs / tmpfs. Ainsi, initramfs peut également être une implémentation de tmpfs / rootfs.

Ne soyez pas confus par le nom du fichier, puisque le noyau 2.6 a été initramfs, mais beaucoup utilisent encore le nom traditionnel initrd.

Référence: https://blog.csdn.net/zhongbeida_xue/article/details/106627102

Je suppose que tu aimes

Origine blog.51cto.com/14207158/2659291
conseillé
Classement