Introducción a varios archivos importantes del kernel del sistema Linux

  

En la red, muchos servidores usan Linux. Para mejorar aún más el rendimiento del servidor, puede ser necesario recompilar el kernel de Linux de acuerdo con el hardware y los requisitos específicos. Para compilar el kernel de Linux, debe seguir los pasos prescritos. Varios archivos importantes participan en la compilación del kernel. Por ejemplo, para RedHat Linux, hay algunos archivos relacionados con el kernel de Linux en el directorio /boot, y escriba /boot para ejecutar: ls – l. Aquellos que han compilado el kernel de RedHat Linux pueden tener una profunda impresión en System.map, vmlinuz, initrd-2.4.7-10.img, porque el proceso de compilación del kernel implica el establecimiento de estos archivos. Entonces, ¿cómo surgieron estos archivos? ¿Cuál es el papel? Este artículo introducirá algo de esto.

1. vmlinuz

vmlinuz es un kernel comprimido y de arranque. " vm " significa " Memoria virtual ". Linux admite la memoria virtual, a diferencia de los sistemas operativos más antiguos, como DOS, que tienen un límite de memoria de 640 KB. Linux puede usar el espacio del disco duro como memoria virtual, de ahí el nombre "vm". Vmlinuz es un kernel de Linux ejecutable ubicado en /boot /vmlinuz, que suele ser un enlace flexible.

Hay dos formas de construir vmlinuz. Primero, al compilar el kernel, créalo con " make zImage ", luego pase:

" cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot /vmlinuz " zImage funciona para kernels pequeños y existe para compatibilidad con versiones anteriores. La segunda es que el kernel se compila con el comando make bzImage y luego se genera por: <; cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot /vmlinuz " bzImage es una imagen del kernel comprimida. Tenga en cuenta que bzImage no está comprimido con bzip2. bz en bzImage es fácil de malinterpretar, bz significa "big zImage". b en bzImage es el significado "grande".

zImage (vmlinuz) y bzImage (vmlinuz) están comprimidos con gzip. No solo son un archivo comprimido, sino que el código descomprimido de gzip está integrado al principio de los dos archivos. Por lo tanto, no puede descomprimir vmlinuz con gunzip o gzip – dc.

El archivo del kernel contiene un pequeño gzip para descomprimir el kernel y arrancarlo. La diferencia entre los dos es que la antigua zImage descomprime el kernel a la memoria de gama baja (los primeros 640K), y bzImage descomprime el kernel a la memoria de gama alta (1M o más). Si el kernel es pequeño, puede utilizar una de las imágenes zImage o bzImage. El sistema que se ejecuta de dos maneras es el mismo. Los núcleos grandes usan bzImage y no pueden usar zImage.

vmlinux es un kernel sin comprimir, vmlinuz es un archivo comprimido de vmlinux.

Segundo, initrd-x.x.x.img

initrd es la abreviatura de " initial ramdisk ". Initrd se usa generalmente para arrancar temporalmente el hardware al estado donde el kernel real vmlinuz puede tomar el control y continuar el arranque. Por ejemplo, si usa un disco duro scsi y el kernel vmlinuz no tiene este controlador de hardware scsi, el kernel no puede cargar el sistema de archivos raíz antes de cargar el módulo scsi, pero el módulo scsi se almacena en /lib /modules del sistema de archivos raíz. Para resolver este problema, puede iniciar un kernel initrd que lee el kernel real y usar initrd para solucionar el problema de arranque de scsi. Initrd-2.4.7-10.img es un archivo comprimido con gzip. Echemos un vistazo al contenido de este archivo.

La implementación de initrd carga algunos módulos e instala sistemas de archivos, etc.

El archivo de imagen initrd se crea utilizando mkinitrd. La utilidad mkinitrd es capaz de crear archivos de imagen initrd. Este comando es propiedad de RedHat. Otras distribuciones de Linux pueden tener comandos correspondientes. Esta es una utilidad práctica Para obtener más información, consulte la ayuda: man mkinitrd

El siguiente comando crea un archivo de imagen initrd:

3. System.map System.map es una tabla de símbolos del kernel para un kernel específico. Es un enlace a System.map del kernel que está ejecutando actualmente.

¿Cómo se crea la tabla de símbolos del kernel? System.map es generado por " nm vmlinux " y los símbolos irrelevantes se eliminan. Para los ejemplos en este artículo, System.map se crea en /usr/src/linux-2.4/System.map cuando se compila el kernel. Así:

nm /boot/vmlinux-2.4.7-10 > System.map

Las siguientes líneas son de /usr/src/linux-2.4/Makefile:

nm vmlinux

Copyright © Conocimiento de Windows All Rights Reserved