El kernel de Linux es la fuerza vital de toda la familia de sistemas operativos Linux, incluidos Ubuntu, CentOS y Fedora.
En su mayor parte, no necesita compilar el kernel, ya que se instala de forma predeterminada cuando instala el sistema operativo. Además, cuando se realiza una actualización crítica del kernel, puede usar yum o apt-get para actualizar el kernel en su sistema Linux.
Sin embargo, puede encontrar ciertas situaciones en las que puede tener para compilar kernel desde la fuente. Las siguientes son algunas situaciones en las que puede tener que compilar Kernel en su sistema Linux.
- Para habilitar funciones experimentales que no forman parte del núcleo predeterminado.
- Para habilitar la compatibilidad con un nuevo hardware que actualmente no es compatible con el kernel predeterminado.
- Para depurar el kernel
- O, solo para aprender cómo funciona el kernel, es posible que desee explorar el código fuente del kernel y compilarlo por su cuenta.
En este tutorial, explicaremos cómo compilar el kernel de Linux desde el código fuente.
Además, tenga en cuenta que si solo desea compilar un controlador, no necesita compilar el kernel. Solo necesita el paquete linux-headers del kernel.
1. Descargue el kernel estable más reciente
El primer paso es descargar el kernel estable más reciente de kernel.org.
# cd /usr/src/ # wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.xz
2. Descomprime el código fuente del kernel
El segundo paso es descomprimir el archivo fuente del núcleo para su compilación.
# tar -xvJf linux-3.9.3.tar.xz
3. Configurar el Núcleo
El kernel contiene casi 3000 opciones de configuración. Para hacer que el kernel sea utilizado por la mayoría de las personas en la mayoría del hardware, la distribución de Linux como Ubuntu, Fedora, Debian, RedHat, CentOS, etc., generalmente incluirá soporte para la mayoría del hardware común. Puede tomar cualquiera de las configuraciones de la distribución y, además, puede agregar su propia configuración, o puede configurar el kernel desde cero, o puede usar la configuración predeterminada proporcionada por el kernel.
# cd linux-3.9.3 # make menuconfig
Make menuconfig lanzará una interfaz de usuario basada en texto con opciones de configuración predeterminadas, como se muestra en la figura. Debería haber instalado los paquetes "libncurses y libncurses-devel" para que este comando funcione.
Usaremos la configuración predeterminada proporcionada por el kernel. Así que seleccione "Guardar" y guarde la configuración con el nombre de archivo ".config".
El siguiente es un ejemplo del archivo “.config”:
CONFIG_MMU=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y
4. Compile el kernel de Linux
Compile el kernel principal:
# make
Compile los módulos del kernel:
# make modules
Instale los módulos del kernel:
# make modules_install
En este punto, debería ver un directorio llamado /lib/modules/3.9.3/ en su sistema.
5. Instale el nuevo núcleo
Instale el nuevo kernel en el sistema:
# make install
El comando make install creará los siguientes archivos en el directorio /boot.
- vmlinuz-3.9.3 – El núcleo real
- System.map-3.9.3 – Los símbolos exportados por el kernel
- initrd.img-3.9.3:la imagen initrd es un sistema de archivos raíz temporal que se utiliza durante el proceso de arranque
- config-3.9.3:el archivo de configuración del kernel
El comando "make install" también actualizará grub.cfg de forma predeterminada. Así que no necesitamos editar manualmente el archivo grub.cfg.
6. Inicie Linux en el nuevo Kernel
Para usar el nuevo núcleo que acaba de compilar, reinicie el sistema.
# reboot
Dado que, en grub.cfg, el nuevo kernel se agrega como arranque predeterminado, el sistema arrancará desde el nuevo kernel. En caso de que tenga problemas con el nuevo kernel, puede seleccionar el antiguo kernel desde el menú de grub durante el arranque y puede usar su sistema como de costumbre.
Una vez que el sistema esté activo, use el comando uname para verificar que la nueva versión del kernel de Linux esté instalada.
$ uname -r 3.9.3