Red de conocimiento informático - Conocimiento informático - ¿Cómo instalar un nuevo kernel para Linux?

¿Cómo instalar un nuevo kernel para Linux?

1. Obtenga el código fuente del kernel

2. Descomprima el código fuente del kernel

Primero, inicie sesión con la cuenta raíz y luego ingrese /usr. Subdirectorio /src. Si los usuarios instalaron las fuentes del kernel al instalar Linux, encontrarán un subdirectorio linux-x.y.z. Este directorio contiene el código fuente del kernel x.y.z. Elimine el enlace, luego copie los archivos fuente del nuevo kernel al directorio /usr/src y descomprima:

#tarzxvfLinux-2.3.14.tar.gz

Después del archivo Si se descomprime correctamente, aparecerá un subdirectorio de Linux. Contiene el código fuente completo del kernel 2.3.14. Enlace /usr/include/asm, /usr/inlude/linux y /usr/include/scsi a los directorios correspondientes en el directorio /usr/src/linux/include.

#cd/usr/include

#rm-Rfasmlinux

#ln-s/usr/src/linux/include/asm-i386asm

#ln-s/usr/src/linux/include/ linuxlinux

#ln-s/usr/src/linux/include/scsiscsi

Eliminar y conservar los archivos fuente .o y otros archivos dependientes en el directorio de códigos.

#cd/usr/src/linux

#makemrproper

III. Parches incrementales

A veces no es necesaria una reinstalación completa. Simplemente ejecute un parche incremental similar a una actualización en la raíz del árbol de código fuente del kernel:

patch-p1.../patch-x.y.z

Directorio del árbol de código fuente del kernel:

arch: Contiene código relacionado con la arquitectura del hardware, un directorio para cada plataforma. El código relacionado con las PC de 32 bits se almacena en el directorio i386. Los más importantes incluyen kernel (núcleo del kernel), mm (administración de memoria), math-emu (emulación de unidades de punto flotante), lib (funciones de utilidad relacionadas con el hardware), boot (cargador de arranque), pci (bus PCI) y alimentación (estado relacionado con la CPU).

bloque: parte del controlador del dispositivo de bloque.

Cifrado: algoritmos comunes de cifrado y hash (como AES, SHA, etc.), así como algunos algoritmos de compresión y suma de comprobación CRC.

Documentación: Explicaciones comunes y comentarios sobre varias partes del kernel.

Driver: controlador del dispositivo, cada controlador diferente ocupa un subdirectorio.

fs: Varios sistemas de archivos compatibles, como ext, fat, ntfs, etc.

incluye: archivo de encabezado. Los archivos de encabezado relacionados con el sistema se colocan en el subdirectorio de Linux.

init: Código de inicialización del kernel (nota, no código de inicio del sistema).

ipc: código de comunicación entre procesos.

Kernel: la parte central del kernel, incluida la programación de procesos, temporizadores, etc., así como parte del código relacionado con la plataforma, se colocan en el directorio arch/*/kernel.

lib: código de biblioteca.

mm: Código de administración de memoria, algunos códigos relacionados con la plataforma se colocan en el directorio arch/*/mm.

Net: código relacionado con la red, utilizado para implementar varios protocolos de red comunes.

Script: Script utilizado para configurar el archivo del kernel.

seguridad: Principalmente el módulo SELinux.

Sonido: controladores para dispositivos de audio habituales, etc.

usr: implementa un cpio.

Bajo la arquitectura i386, el inicio del sistema comenzará desde arch/i386/kernel/head.s y luego irá a la función main() en init/main.c para inicializar el kernel.

V. Configurar el kernel

#cd/usr/src/linux

Hay tres formas de configurar el kernel:

(1) Línea de comando: makeconfig

(2) Interfaz de configuración del modo menú: makemenuconfig

(3) Xwindow: makexconfig

El programa de configuración del kernel de Linux proporciona una serie de opciones de configuración. Para cada opción de configuración, el usuario puede seleccionar "y", "m" o "n". Entre ellos, "y" significa compilar el soporte de función o controlador de dispositivo correspondiente en el kernel; "m" significa compilar el soporte de función o controlador de dispositivo correspondiente en un módulo cargable, que el sistema o el usuario puede agregar al kernel cuando sea necesario. ; "n" indica que el kernel no proporciona soporte para la característica o controlador correspondiente. Dado que existen muchas opciones de configuración para el kernel, este artículo sólo presentará algunas de las más importantes.

1.Opciones de nivel de madurez del código

Solicitud de desarrollo y/o código/controladores incompletos (CONFIG_EXPERIMENTAL) Si los usuarios desean utilizar código o controladores que aún están en versión beta, pueden hacerlo. Los usuarios pueden seleccionar "y" si desean utilizar código o controladores que aún están en versión beta. Si desea compilar un kernel estable, seleccione "n".

2. Tipo y características del procesador (tipo de procesador y características)

(1), Familia de procesadores (386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC,PPro/ 6x86MX ) Seleccione el tipo de procesador, el valor predeterminado es Ppro/6x86MX.

(2), MaximumPhysicalMemory(1GB,2GB) La cantidad máxima de memoria admitida por el kernel, el valor predeterminado es 1G.

(3), Matemática(CONFIG_MATH_EMULATION) Simulación de coprocesador, el valor predeterminado es sin simulación.

(4), soporte MTRR (MemoryTypeRangeRegister) (CONFIG_MTRR)

Seleccione esta opción, el sistema generará el archivo /proc/mtrr para administrar MTRR para su uso por Xserver.

(5), soporte de multiprocesamiento simétrico (CONFIG_SMP) Seleccione "y", el kernel admitirá multiprocesadores simétricos.

3. Loadablemodulesupport (soporte de módulo cargable)

(1), Enableloadablemodulesupport(CONFIG_MODULES) Seleccione "y", el kernel admitirá módulos cargables.

(2), Kernelmoduleloader(CONFIG_KMOD) Seleccione "y", el kernel cargará automáticamente estos módulos cargables; de lo contrario, el usuario deberá cargarlos manualmente.

4. Configuración general (Configuración general)

(1). Networkingsupport(CONFIG_NET) Esta opción establece si se debe proporcionar soporte de red en el kernel.

(2) PCIsupport(CONFIG_PCI) Esta opción establece si el kernel proporciona soporte PCI.

(3)PCIaccessmode(BIOS,Direct,Any) Esta opción establece la forma en que Linux detecta dispositivos PCI.

Seleccione "BIOS" y Linux usará el BIOS; seleccione "Directo" y Linux no pasará por el BIOS. Seleccione "Cualquiera" y Linux detectará el dispositivo PCI directamente;

(4)Parallelportsupport(CONFIG_PARPORT) Seleccione "y", el kernel admitirá puertos paralelos.

5. Configuración PlugandPlay (soporte para dispositivos Plug and Play)

(1), PlugandPlayupport(CONFIG_PNP) Seleccione "y", el kernel configurará automáticamente el dispositivo Plug and Play.

(2), ISAPlugandPlaysupport(CONFIG_ISAPNP) Seleccione "y", el kernel configurará automáticamente el dispositivo plug-and-play basado en el bus ISA.

6. Blockdevices

(1), NormalPCfloppydisksupport(CONFIG_BLK_DEV_FD) Seleccione "y", el kernel proporcionará soporte para disquetes.

(2), EnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupport(CONFIG_BLK_DEV_IDE) Seleccione "y", el kernel proporcionará soporte para discos duros, unidades ópticas y unidades de cinta IDE mejorados.

7. Opciones de red

(1), Packetsocket (CONFIG_PACKET) Seleccione "y", algunas aplicaciones utilizarán el protocolo Packet para comunicarse directamente con el dispositivo de red en lugar de a través del kernel. otros acuerdos intermediarios.

(2) Networkfirewalls(CONFIG_FIREWALL) Seleccione "y", el kernel admitirá firewalls.

(3), redes TCP/IP (CONFIG_INET) Seleccione "y", el kernel admitirá el protocolo TCP/IP.

(4), IPXprotocol(CONFIG_IPX) Seleccione "y", el kernel admitirá el protocolo IPX.

(5)TheAppletalkDDP(CONFIG_ATALK) Seleccione "y", el kernel admitirá el protocolo AppletalkDDP.

8. SCSIsupport (soporte SCSI)

Si los usuarios desean utilizar dispositivos SCSI, pueden configurar las opciones correspondientes.

9. Networkdevicesupport (soporte de dispositivo de red)

Seleccione "y" para Networkdevicesupport (CONFIG_NETDEVICES) y el kernel proporcionará soporte de controlador de red.

10. Ethernet (10 o 100 Mbit) (10 M o 100 M Ethernet)

En esta configuración, el sistema proporcionará múltiples controladores de tarjeta de red y los usuarios solo tendrán que elegir su propia red. El controlador de la tarjeta es suficiente. Además, los usuarios pueden agregar soporte para FDDI, PPP, SLIP y WirelessLAN en el kernel según sea necesario.

11. Dispositivo de caracteres

(1) Si se selecciona "y" para el terminal virtual (CONFIG_VT), el kernel admitirá terminales virtuales.

(2)Soporte para consola en terminal virtual (CONFIG_VT_CONSOLE)

Seleccione "y" para permitir que el kernel use una terminal virtual como consola del sistema.

(3) Soporte de serie estándar/genérico (tonto) (CONFIG_SERIAL)

Seleccione "y" para permitir que el kernel admita puertos serie.

(4), Supportforconsoleonserialport(CONFIG_SERIAL_CONNSOLE)

Seleccione "y" para permitir que el kernel use el puerto serie como consola del sistema.

12. Ratones (mouse)

Soporte de mouse PS/2 (también conocido como "dispositivo auxiliar") (CONFIG_PSMOUSE) Si el usuario usa un mouse PS/2, se debe seleccionar esta opción. como "y".

13. Sistemas de archivos (sistema de archivos)

(1), Quotasupport(CONFIG_QUOTA) Seleccione "y", el kernel admitirá cuotas de disco.

(2), Kernelautomsupport(CONFIG_AUTOFS_FS) Seleccione "y", el kernel admitirá un contador automático para que el sistema monte automáticamente el sistema de archivos remoto al inicio.

(3), DOSFATfssupport(CONFIG_FAT_FS) Seleccione "y", el kernel admitirá el sistema de archivos DOSFAT.

(4), ISO9660CDROMfilesystemsupport(CONFIG_ISO9660_FS)

Seleccione "y", el kernel admitirá el sistema de archivos ISO9660CDROM.

(5), NTFSfilesystemsupport(readonly)(CONFIG_NTFS_FS)

Seleccione "y" para permitir que los usuarios accedan al sistema de archivos NTFS en modo de solo lectura.

(6), /procfilesystemsupport(CONFIG_PROC_FS)/proc es un sistema de archivos virtual utilizado para almacenar el estado de ejecución del sistema Linux. Se debe seleccionar "y" para este elemento.

(7), Secondextendedfssupport(CONFIG_EXT2_FS) EXT2 es el sistema de archivos estándar de Linux y también se debe seleccionar "y" para este elemento.

14. NetworkFileSystems

(1), NFSfilesystemsupport(CONFIG_NFS_FS) Seleccione "y", el kernel admitirá el sistema de archivos NFS.

(2), SMBfilesystemsupport(tomountWfWsharesetc.)(CONFIG_SMB_FS)

Seleccione "y", el kernel admitirá el sistema de archivos SMB.

(3), NCPfilesystemsupport(tomountNetWarevolumes)(CONFIG_NCP_FS)

Seleccione "y", el kernel admitirá el sistema de archivos NCP.

15. PartitionTypes (Tipo de partición)

Esta opción admite algunos tipos de partición menos utilizados. Si el usuario lo necesita, simplemente seleccione "y" en la opción correspondiente.

16. Consoledrivers (controlador de consola)

Seleccione "y" para VGAtextconsole (CONFIG_VGA_CONSOLE) y los usuarios podrán usar la pantalla VGA estándar en Linux.

17. Sonido (sonido)

Soporte de tarjeta de sonido (CONFIG_SOUND) Seleccione "y", el kernel puede proporcionar soporte para tarjeta de sonido.

18. Kernelhacking (monitoreo del kernel)

MagicSysRqkey (CONFIG_MAGIC_SYSRQ) selecciona "y", y el usuario puede convertirse en parte del control del sistema. Normalmente se selecciona "n".

VI. Compilar kernel

(a) Crear archivos dependientes necesarios para la compilación

#cd/usr/src/linux

# makedep

(b) Borrar los archivos de destino compilados por el kernel

#makeclean

(c) Compile el kernel

#makezImage

Después de que el kernel se compila exitosamente, el archivo de imagen zImage del nuevo kernel se genera en el directorio /usr/src/linux/arch/i386/boot. Si el kernel a compilar es muy grande, se le pedirá que utilice el comando makebzImage para compilarlo. En este momento, el compilador generará un archivo de imagen del kernel llamado bzImage.

(iv) Compilar módulos cargables

Si el usuario configura módulos cargables al configurar el kernel, estos módulos deben compilarse para que puedan cargarse usando el comando insmod en el futuro .

#makemodules

#makemodelus_install

Después de una compilación exitosa, el sistema generará un subdirectorio 2.3.14 en el directorio /lib/modules, que contiene el nuevo kernel Todos los módulos cargables.

VII. Inicie el nuevo kernel

(1) Copie el nuevo kernel y el archivo System.map al directorio /boot

#cp /usr/src. /linux /arch/i386/boot/bzImage/boot/vmlinuz-2.3.14

#cp /usr/src/linux/System.map/boot/System.map-2.3.14

#cd/boot

#rm-fSystem.map

#ln-sSystem.map-2.3.14System.map

(ii) Archivo de configuración/etc/lilo.conf. Agregue las siguientes líneas al archivo:

default=linux-2.3.14

image=/boot/vmlinuz-2.3.14

label=linux - 2.3.1414

root=/dev/hda1

solo lectura

(c) Hacer que la nueva configuración surta efecto

# / sbin/lilo

(d) Reiniciar el sistema

#/sbin/reboot

Si el nuevo kernel no puede iniciarse normalmente, el usuario puede iniciarlo en LILO: mensaje Núcleo antiguo. Luego descubra la causa del fallo y vuelva a compilar el nuevo kernel.