Cómo compilar el núcleo de Vanilla Linux de la fuente en Fedora
- 4124
- 1159
- Mateo Pantoja
El kernel es el componente más importante de un sistema operativo: entre las otras cosas, proporciona soporte para diferentes tipos de hardware y administra las asignaciones de recursos.
Linux es un núcleo monolítico: aunque sus funcionalidades se pueden incluir estáticamente o construirse y cargarse como separados módulos
, siempre se ejecuta como una "pieza única" en el mismo espacio de dirección. En este tutorial veremos cómo descargar, compilar e instalar un kernel de vainilla Linux. Las instrucciones proporcionadas deben funcionar en todas las distribuciones de Linux, sin embargo, esta guía se centra en compilar el núcleo en un sistema Fedora.
En este tutorial aprenderás:
- Cómo configurar, compilar e instalar un kernel de vainilla Linux
- Cómo empaquetar el núcleo compilado y sus módulos
El menú de configuración basado en NCurses para el kernel de Linux
Requisitos y convenciones de software utilizados
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Fedora |
Software |
|
Otro | Los permisos de raíz para instalar las dependencias necesarias y el kernel compilado |
Convenciones | # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominiops - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Instalación de las dependencias
Para poder compilar el kernel de Linux de la fuente, necesitamos instalar algunos paquetes en nuestro sistema:
$ sudo dnf instalación gcc flex make bison openssl-devel elfutils-libelf-devel
Los anteriores son solo los paquetes 'centrales' que necesitamos. Para invocar objetivos de configuración específicos se deben instalar algunos paquetes adicionales: el ncurses-devel
y QT-devel
Los paquetes, por ejemplo, son necesarios para configurar el uso del núcleo, respectivamente, de la interfaz gráfica basada en NCurses y QT, mientras que la construcción de rpm
Se necesita un paquete para construir una RPM que contenga el núcleo compilado.
Descargar el Tarball de origen
Como lo primero, necesitamos obtener el tarball que contiene las últimas fuentes estables de núcleos Linux. Podemos descargar y extraer el tarball con solo un comando:
$ curl https: // cdn.núcleo.org/pub/linux/kernel/v5.X/Linux-5.1.5.alquitrán.xz | tar -xj
Al final del proceso de descarga, dentro de nuestro directorio de trabajo actual, debemos encontrar una nueva carpeta que contenga el código fuente del núcleo. Necesitamos ingresarlo, en este caso:
$ CD Linux-5.1.5
En este punto podemos configurar el núcleo. En el próximo párrafo, echaremos un vistazo a los objetivos de configuración más comunes utilizados para realizar la tarea.
Configuración del núcleo
Hay varias formas en que podemos configurar el núcleo, y corresponden a diferentes objetivos de configuración
. Cuando se invoca un objetivo de configuración, si se llama un archivo .configuración
Contiene una configuración de núcleo válida en el directorio de fuentes, se utiliza como punto de partida para la configuración. Esto hace que sea posible actualizar o modificar una configuración ya existente, tal vez la que viene con el núcleo instalado de forma predeterminada en nuestra distribución (se puede encontrar dentro del /bota
directorio, llamado así por el núcleo en uso).
Si no se encuentra el archivo, la configuración comenzará desde cero y el .configuración
El archivo se generará una vez que guardemos nuestra configuración. Veamos algunos de los objetivos de configuración
nosotros podemos usar:
configuración
Si se invoca este objetivo, se le solicita al usuario que configure el núcleo respondiendo una serie de preguntas, de la siguiente manera:
* * Linux/x86 5.1.5 Configuración del núcleo * * * Compilador: GCC (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1) * * * * Configuración general * Compilar también controladores que no se cargarán (compile_test) [n/y/?]
menuconfig
Este objetivo utiliza un agradable y fácil de usar ncurses
interfaz para permitirnos generar o actualizar la configuración del kernel. Como se dijo antes, para poder usar esta interfaz de la ncurses-devel
El paquete debe instalarse en el sistema.
La configuración basada en NCurses Inteface
Usando esta interfaz, podemos presionar el H
Clave Al resaltar una opción específica para obtener información y sugerencias al respecto:
Obtener información sobre una opción es solo una cuestión de seleccionarla y presione la tecla H presionando
Y
en una opción lo incluirá en el kernel estáticamente (la opción se marcará con un *
), presionando norte
lo excluirá y presionará el METRO
La clave lo incluirá como un módulo (la opción se marcará con un METRO
). Para buscar una opción específica, podemos usar el /
clave y proporcionar la cadena o regex para buscar: La interfaz NCurses para buscar una opción específica
xconfig
Al invocar este objetivo, es posible configurar el núcleo a través de una interfaz gráfica basada en el QT
kit de herramientas si el QT-devel
El paquete está instalado en el sistema.
La interfaz de configuración basada en QT
OldConfig
Este objetivo es útil cuando queremos usar una configuración de kernel ya existente como punto de partida. Cuando invocamos este objetivo, se nos solicita que configuremos solo las características disponibles en el kernel que estamos configurando pero no incluidas en el archivo de configuración original.
localmodconfig
Invocar este objetivo generará o actualizará un nuevo archivo de configuración del kernel en la base de los módulos que actualmente se cargan en el sistema. Solo ellos se incluirán en la configuración, los otros estarán deshabilitados. Esto se puede usar como una forma rápida de obtener un núcleo a medida basado en el estado actual de una máquina.
localyesconfig
Este objetivo funciona de manera similar a localmodconfig
Con una gran diferencia: las funcionalidades proporcionadas por los módulos cargados actualmente en el sistema se incluirán estáticamente en el núcleo.
Compilación e instalación del núcleo
Una vez que terminamos de configurar el kernel, podemos compilar el código fuente. Todo lo que tenemos que hacer es ejecutar:
$ make
La operación puede tomar un tiempo, dependiendo de las características que decidimos incluir en el núcleo. Para acelerar el proceso que podemos ejecutar hacer
con el -j
opción y especifique el número de trabajos para ejecutarse simultáneamente: un valor que se usa a menudo para esta opción es el número de núcleos de CPU lógicos + 1. En una máquina con 4 núcleos lógicos, por lo tanto, ejecutaríamos:
$ make -j5
Una vez compilado, para instalar el núcleo simplemente podemos ejecutar:
$ sudo make install
Los archivos de núcleo de kernel se copiarán dentro del /bota
directorio. Para compilar e instalar los módulos del núcleo, en su lugar, podemos ejecutar:
$ sudo hacer módulos_install
Los módulos del núcleo se instalarán en un directorio en /lib/módulos
llamado así por la versión del núcleo. Finalmente, para que el nuevo kernel esté disponible y seleccionable en el arranque, debemos regenerar la configuración de grub:
$ sudo grub2 -mkconfig -o/boot/grub2/grub.CFG
Embaquear el núcleo
En lugar de instalar el núcleo compilado directamente como lo hicimos anteriormente, para poder administrar su instalación y eliminación a través del administrador del paquete del sistema, podemos crear un paquete de rpm
. Para realizar la tarea debemos usar una entre el rpm-pkg
y binrpm-pkg
objetivos. El primero construirá los paquetes de rpm de origen y binario, el segundo solo el binario. Para que este objetivo se ejecute correctamente, el construcción de rpm
Se debe instalar el paquete. Para construir solo el paquete Binario RPM, ejecutaríamos:
$ make binrpm-pkg
Si las operaciones se realizan sin errores, el rpmbuild
Directory Tree se creará en nuestro directorio de inicio. El paquete RPM construido estará disponible en un subdirectorio de ~/rpmbuild/rpms
llamado por la arquitectura del sistema.
Otra opción es empaquetar el núcleo y sus módulos dentro de un tarball comprimido, utilizando uno entre el Targz-PKG
, tarbz2-pkg
y tarxz-pkg
objetivos, dependiendo de la compresión que queramos usar. El tarball se creará dentro del directorio fuente del kernel.
Conclusiones
En este tutorial aprendimos a saber por qué Linux se llama núcleo monolítico, y cómo sus componentes se pueden configurar estáticamente o como módulos. Vimos cómo descargar un núcleo de vainilla y los diversos métodos que podemos usar para configurarlo. Finalmente, vimos cómo compilarlo, empaquetarlo e instalarlo en nuestro sistema. Un último consejo: si decides volver a compilar el núcleo, siempre es una buena idea invocar a uno de los objetivos de limpieza
antes de continuar:
- limpio: Elimina la mayoría de los archivos generados, pero mantenga la configuración y suficiente soporte de compilación para crear módulos externos
- mrproper: Elimina todos los archivos generados + config + varios archivos de copia de seguridad
- rico: Ejecuta MRProper y también elimina los archivos de copia de seguridad y parche del editor
Tutoriales de Linux relacionados:
- Cosas para instalar en Ubuntu 20.04
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Una introducción a la automatización, herramientas y técnicas de Linux
- Descarga de Linux
- Archivos de configuración de Linux: los 30 principales más importantes
- Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
- Mint 20: Mejor que Ubuntu y Microsoft Windows?
- ¿Puede Linux obtener virus?? Explorando la vulnerabilidad de Linux ..
- Cosas para instalar en Ubuntu 22.04
- Cómo arrancar dual Kali Linux y Windows 10