Cómo compilar el kernel de Linux
con el apoyo de los fans, la versión del kernel se actualiza constantemente. El nuevo kernel corrige los errores del kernel anterior y agrega muchas características nuevas. Si los usuarios desean aprovechar estas nuevas funciones o desean personalizarlas para sus propios sistemas.
Para crear un kernel más eficiente y estable, es necesario recompilar el kernel. Este artículo utilizará RedHat Linux 6.0 (kernel
2.2.5) como plataforma del sistema operativo y presenta el método de compilación del kernel en Linux.
Primero, descargue el código fuente del nuevo kernel
Hay muchos sitios en Internet que proporcionan código fuente de Linux. Los lectores pueden elegir un sitio más rápido para descargar. El autor descargó el código fuente del último kernel de desarrollo de Linux 2.3.14 de www.kernelnotes.org. Todos los códigos están comprimidos en un archivo llamado Linux-2.3.14.tar.gz.
En segundo lugar, libere el. código fuente del kernel
Debido a que el código fuente se coloca en un archivo comprimido, debe publicarse en el directorio especificado antes de configurar el kernel. Primero inicie sesión como root y luego ingrese al subdirectorio /usr/src. Si los usuarios instalan el código fuente del kernel al instalar Linux, encontrarán el subdirectorio linux-2.2.5. El código fuente del kernel 2.2.5 se almacena en este directorio. Además, encontrará un enlace a este directorio Linux. Elimine la conexión y copie los archivos fuente del nuevo kernel al directorio /usr/src.
(1) Utilice el comando tar para liberar el código fuente del kernel
# cd /usr/src
# tar zxvf Linux-2 3. tar . Después de que el archivo gz
se publique correctamente, se generará un subdirectorio de Linux en el directorio /usr/src. Contiene todo el código fuente del kernel 2.3.14.
(2) Vincule /usr/include/asm, /usr/usr/inlude/linux y /usr/include/scsi a los directorios correspondientes bajo el directorio /usr/src/linux/include.
# cd /usr/include
# rm -Rf asm linux
# ln-s/usr/src/Linux/include/ASM-i386 ASM
# ln-s/usr/src/Linux/include/Linux Linux
# ln-s/usr/src/Linux/include/SCSI SCSI
(3) Eliminar la parte restante. o archivos y otros archivos dependientes en el directorio del código fuente.
# cd /usr/src/linux
#Make mrproper
Tercero, configurar el kernel
(1) Iniciar el kernel programa de configuración.
# cd /usr/src/linux
#Configure
Además de los comandos anteriores, los usuarios también pueden usar el comando make menuconfig para iniciar el menú interfaz de configuración de modo. Si el usuario ha instalado el sistema X window, también puede ejecutar el comando make xconfig para iniciar el programa de configuración del kernel en la ventana X.
(2) Configurar el kernel
Sistema operativo Linux
El configurador del kernel proporciona una serie de opciones de configuración. Para cada opción de configuración, el usuario puede responder "y", "m" o "n".
Donde "y" significa que se compila el soporte o controlador de dispositivo para la función correspondiente.
Energía nuclear; "M" significa que el soporte o los controladores de dispositivos con las características correspondientes se compilan en módulos cargables, que el sistema o los propios usuarios pueden agregar al núcleo cuando sea necesario. "n" significa que la energía nuclear; El kernel no proporciona la característica o el controlador correspondiente.
Soportado. Debido a que existen muchas opciones de configuración del kernel, este artículo solo presenta algunas de las más importantes.
1, Opción de nivel de madurez del código (Opción de madurez del código)
Solicitud de desarrollo y/o código/controlador incompleto
(CONFIG_EXPERIMENTAL) [ N/y/ ? ]
Puedes seleccionar "Y" si deseas utilizar código o controladores que aún están en versión beta. Si desea compilar un kernel estable, seleccione "n".
1, Tipo de procesador y características (Tipo de procesador y características)
(1), Familia de procesador (386486/CX 486586/K5/5x 86, Pentium/K6/TSC, PPRO /6x8MX) [PPRO/6x8MX] Seleccione el tipo de procesador, el valor predeterminado es PPRO/6x8MX.
(2) Memoria física máxima (1GB, 2GB) [1GB] La memoria máxima admitida por el kernel es 1G de forma predeterminada.
(3), Simulación matemática (CONFIG_MATH_EMULATION) [N/y/? ]Simulación de coprocesador, no simulada por defecto.
(4), soporte MTRR (registro de rango de tipo de memoria) (CONFIG_MTRR) [N/y/? ]
Seleccione esta opción y el sistema generará un archivo /proc/MTRR para administrar el MTRR del servidor X.
(5), Compatibilidad con multiprocesamiento simétrico (CONFIG_SMP) [S/n/? ] Seleccione "y" y el kernel admitirá multiprocesadores simétricos.
2. Compatibilidad con módulos cargables (soporte de módulos cargables)
(1), habilite la compatibilidad con módulos cargables (CONFIG_MODULES) [Y/n/? ] Seleccione "y" y el kernel admitirá la carga de módulos.
(2), Cargador de módulo kernel (CONFIG_KMOD) [N/y/? ] Seleccione "Y", el kernel cargará automáticamente esos módulos cargables; de lo contrario, el usuario deberá cargarlos manualmente.
3. Configuración general (Configuración general)
(1), Soporte de red (CONFIG_NET) [Y/n/? ] Esta opción establece si se proporciona soporte de red en el kernel.
(2), compatibilidad con PCI (CONFIG_PCI) [S/n/? ] Esta opción establece si se proporciona soporte PCI en el kernel.
(3) Modo de acceso PCI (BIOS, directo, cualquiera) [cualquiera] Esta opción establece la forma en que Linux detecta los dispositivos PCI. Seleccione "BIOS", Linux usará el BIOS, seleccione "Directo", Linux no pasará el BIOS, seleccione "y Linux detectará directamente el dispositivo PCI. Si falla, use el BIOS.
(4) Soporte de puerto paralelo (CONFIG_PARPORT) [N/y/m/? ] Seleccione "Y", el kernel admitirá el puerto paralelo
4.
(1), compatibilidad con Plug and Play (CONFIG_PNP) [Y/m/n/?] Seleccione "Y", el kernel configurará automáticamente el dispositivo plug and play.
(2), compatibilidad con ISA Plug and Play (CONFIG_ISAPNP) [Y/m/n/?] Seleccione "Y", el kernel configurará automáticamente el dispositivo plug and play según el bus ISA
5. Dispositivo de bloque (dispositivo de bloque).
(1) Compatibilidad con disquetes de PC ordinarios (CONFIG_BLK_DEV_FD) [Y/m/n/?] Seleccione "Y", el kernel proporcionará soporte para disquetes.
(2), Compatibilidad mejorada con disco/cdrom/cinta/disquete IDE/MFM/RLL (CONFIG_BLK_DEV_IDE) [Y/m/n/? ] Seleccione "Y", el kernel brindará soporte para discos duros, CDROM y unidades de cinta ide mejorados.
6. Opciones de red (opciones de red)
(1), Socket de paquete de datos (CONFIG_PACKET) [Y/m/n/? ] Seleccione "y", algunas aplicaciones utilizarán directamente protocolos de paquetes para comunicarse con dispositivos de red y no hay otros protocolos intermedios en el kernel.
(2), Firewall de red (CONFIG_FIREWALL) [N/y/? ] Seleccione "y" y el kernel admitirá firewalls.
(3), redes TCP/IP (CONFIG_INET) [S/n/? ] Seleccione "Y", el kernel admitirá el protocolo TCP/IP.
⑷Protocolo IPX (CONFIG_IPX) [N/y/m/? ] Seleccione "Y", el kernel admitirá el protocolo IPX.
(5), Apple Talk DDP(CONFIG_ATALK)[N/y/m/? ] Seleccione "y" y el kernel admitirá el protocolo Appletalk DDP.
8.Soporte SCSI (soporte SCSI)
Si los usuarios desean utilizar dispositivos SCSI, pueden configurar las opciones correspondientes.
9. Compatibilidad con dispositivos de red (soporte de dispositivos de red)
Compatibilidad con dispositivos de red (CONFIG_NETDEVICES) [Y/n/? ] Seleccione "Y" y el kernel proporcionará soporte para controladores de red.
10, Ethernet (10 o 100 Mbit) (Ethernet de 10 metros o 100 metros)
En esta configuración, el sistema proporciona muchos controladores de tarjeta de red, el usuario solo necesita seleccionar Solo Utilice su propio controlador de tarjeta de red. Además, los usuarios pueden agregar soporte para FDDI, PPP y SLIP LAN (red de área local inalámbrica) en el kernel según sea necesario.
11. Dispositivo de caracteres (dispositivo de caracteres)
(1), terminal virtual (CONFIG_VT) [Y/n/? ] Seleccione "Y" y el kernel admitirá terminales virtuales.
(2). Consola de soporte en terminal virtual (CONFIG_VT_CONSOLE) [S/n/? ]
Seleccione "Y" y el kernel podrá usar una terminal virtual como consola del sistema.
(3), Soporte serie estándar/universal (tonto) (CONFIG_SERIAL) [Y/m/n/? ]
Seleccione "Y", el kernel admitirá el puerto serie.
(4). Soporte para consola serie (CONFIG_SERIAL_CONSOLE) [N/y/? ]
Seleccione "Y", el kernel puede usar el puerto serie como consola del sistema.
12. Ratón (ratón)
El ratón PS/2 (también conocido como "dispositivo auxiliar") admite (CONFIG_PSMOUSE) [Y/n/? ] Si el usuario usa un mouse PS/2, esta opción debe seleccionar "Y".
13. Sistema de archivos (sistema de archivos)
(1), soporte de cuotas (CONFIG_QUOTA) [N/y/? ] Seleccione "y" y el kernel admitirá cuotas de disco.
(2), soporte de montaje automático del kernel (CONFIG_AUTOFS_FS) [Y/m/n/? ] Seleccione "Y", el kernel proporcionará soporte para el montaje automático, lo que permitirá que el sistema monte automáticamente el sistema de archivos remoto al inicio.
(3), compatibilidad con DOS FAT fs (CONFIG_FAT_FS) [N/y/m/? ] Seleccione "y" y el kernel admitirá el sistema de archivos DOS FAT.
(4), compatibilidad con el sistema de archivos CDROM ISO 9660 (CONFIG_ISO9660_FS) [Y/m/n/? ]
Seleccione "Y" y el kernel admitirá el sistema de archivos CDROM ISO 9660.
(5), compatibilidad con el sistema de archivos NTFS (solo lectura) (CONFIG_NTFS_FS) [N/y/m/? ]
Seleccione "y", los usuarios pueden acceder al sistema de archivos NTFS en modo de solo lectura.
(6), soporte del sistema de archivos /proc (CONFIG_PROC_FS) [S/n/? ] /proc es un sistema de archivos virtual que almacena el estado de ejecución del sistema Linux. Se debe seleccionar "y" para este elemento.
(7), El segundo soporte fs extendido (CONFIG_EXT2_FS) [Y/m/n/? ] EXT2 es el sistema de archivos estándar de Linux y también se debe seleccionar "y" para este elemento.
14. Sistema de archivos de red (sistema de archivos de red)
(1), soporte del sistema de archivos NFS (configuration_NFS_file system) [Y/m/n/? ] Seleccione "y" y el kernel admitirá los sistemas de archivos NFS.
(2), compatibilidad con el sistema de archivos SMB (montaje de recursos compartidos WfW, etc.). )(Sistema de archivos de configuración)
Seleccione "Y", el kernel admitirá el sistema de archivos SMB.
(3), compatibilidad con el sistema de archivos NCP (instalación de volúmenes NetWare) (CONFIG_NCP_FS)
Seleccione "Y", el kernel admitirá el sistema de archivos NCP.
15, Tipo de partición (Tipo de partición)
Esta opción admite algunos tipos de partición poco comunes. Si es necesario, el usuario puede seleccionar "Y" en la opción correspondiente.
16, Controlador de consola (Controlador de consola)
Consola de texto VGA (CONFIG_VGA_CONSOLE) [Y/n/? ] Seleccione "Y", los usuarios pueden usar Linux en el modo de visualización VGA estándar.
17, Sonido (sonido)
Soporte de tarjeta de sonido (CONFIG_SOUND) [N/y/m/? ] Seleccione "y", el kernel puede proporcionar soporte para la tarjeta de sonido.
18, Hackeo del kernel (monitoreo del kernel)
Clave Magic SysRq (CONFIG_MAGIC_SYSRQ) [N/y/? ] Seleccione "Y", el usuario puede controlar parcialmente el sistema. Normalmente, seleccione "n".
Cuarto, compilar el kernel
(1. Crear los archivos de dependencia necesarios para la compilación
# cd /usr/src/linux
<). p>#Departamento de fabricación(2) Borre los archivos de destino compilados por el kernel.
#Become clean
(3)Compilar el kernel
#Make zImage
Después de que el kernel se haya compilado correctamente, será en /usr/ Genere un nuevo archivo de imagen del kernel zImage en el directorio src/linux/arch/i386/boot. Si el kernel compilado es grande, se le pedirá que utilice el comando make bzImage para compilarlo. En este punto, el compilador generará un archivo de imagen del kernel llamado bzImage.
(4) Compilar módulos cargables
Si el usuario configura módulos cargables al configurar el kernel, debe usar el comando insmod para compilarlos y cargarlos en el futuro.
#Make module
# make modelus_install
Después de una compilación exitosa, el sistema generará un subdirectorio 2.3.14 en el directorio /lib/modules, que Almacena todos los módulos cargables para el nuevo kernel.
5. Inicie el nuevo kernel
(1) Copie el nuevo kernel y el archivo System.map al directorio /boot.
# CP/usr/src/Linux/arch/i386/boot/bzi mage/boot/vmlinuz-2 3
# CP/usr/src/Linux/. sistema .mapa/arranque/sistema .mapa-2 3 .
# cd /boot
# rm -f System.map
# ln- s sistema. map-2. 3. 14 sistema.
(2) Configure el archivo /etc/lilo.conf. Agregue las siguientes líneas al archivo:
Default=linux-2.3.14
image =/boot/vmlinuz-2 3
label=. linux-2.3.14
root=/dev/hda1
Solo lectura
(3), haz que la nueva configuración surta efecto
# /sbin/lilo
(4), Reiniciar el sistema
# /sbin/reboot
Si el nuevo kernel no puede iniciarse normalmente, el usuario Puede reiniciar el sistema en LILO: mensaje para iniciar el kernel antiguo. Luego descubra la causa del fallo y vuelva a compilar el nuevo kernel.
Para obtener más información sobre el código abierto, visite la comunidad LUPA.