El sistema Fedora compila el kernel de Linux

FedoraLinuxNúcleo de compilación del sistema

Resumen

comprobar la memoria

Al compilar el kernel, se requiere al menos memoria 4Go 2Gmemoria + 2Gde intercambio ( Swap/ Swapfile).

Aumentar la memoria de intercambio (Swap)

Este artículo Swapfileutiliza un ejemplo para ilustrar la operación de la siguiente manera:

  • ① (Este paso también se puede omitir) Ingrese a un directorio específico, tome el vardirectorio como ejemplo y cree una Swapfilecarpeta de archivo de intercambio () La operación es la siguiente:

    cd /var
    
    sudo mkdir swap
    
  • ② Utilice ddel comando para crear un archivo de intercambio ( Swapfile).

    sudo dd if=/dev/zero of=/mountpoint/path/to/swapfile bs=1M count=2000
    

    ilustrar:

    Utilice ddel comando para crear un archivo vacío;

    ifRepresenta la lectura de un archivo;

    /dev/zeroEs linuxun generador único 0;

    ofIndica salida a un archivo;

    /mountpointRepresenta el punto de montaje de una determinada partición;

    /path/to/Representa un directorio;

    swapfileIndica el nombre del archivo a crear, el cual puede ser arbitrario;

    ofTambién puede completarlo directamente swapfile, es decir, enviarlo al archivo en la carpeta actual swapfile;

    Si sigue este paso, significa que /var/swapse ha creado un swapfilearchivo que representa la memoria de intercambio en el directorio;

    bs=1MSignifica block size1 megabyte, es decir, el tamaño del bloque es 1 megabyte;

    La unidad también puede ser B( Bytes), K( KB), M( MB);

    Si se omite, la 512unidad predeterminada son bytes; si se omite la unidad, la unidad predeterminada son bytes;

    count=2000Indica 8000escritura block;

    Es decir, 2GBel tamaño del archivo es aproximado.

  • ③ Inicializar swapel espacio de intercambio

    Concede Swapfilelos permisos correspondientes y haz lo siguiente:

    sudo chmod 600 /mountpoint/path/to/swapfile
    

    Convierta el archivo a swapun archivo y ejecútelo en el directorio correspondiente, la operación es la siguiente:

    sudo mkswap /mountpoint/path/to/swapfile
    

    Si se ejecuta en este directorio, también puede ingresar el nombre del archivo directamente, la operación es la siguiente:

    sudo mkswap swapfile
    

    Para habilitar el espacio de intercambio, haga lo siguiente:

    sudo swapon /mountpoint/path/to/swapfile 
    

    Si necesita montarlo automáticamente después del inicio, puede agregarlo al /etc/fstabarchivo.
    Monte automáticamente SWAPla partición al iniciar, edite /etc/fstaby agregue el siguiente contenido en la última línea:

    /path/to/swapfile    swap    swap    defaults    0    0
    

    También puedes agregar el siguiente contenido:

    /path/to/swapfile    none    swap    sw      0    0
    

    ilustrar:

    El primer elemento: /path/to/swapfileespecifique swapla ruta del archivo;

    El segundo elemento: none, indica que swapel espacio no tiene puntos de montaje;

    El tercer elemento: swaprepresenta un tipo de espacio de intercambio;

    El cuarto elemento:, swindica que el espacio de intercambio está habilitado y también hay una opción poco común noauto;

    Elementos 5 y 6: 0y 0significa que no se requiere inspección de encendido.

Eliminar memoria de intercambio (Swap)

Si deseas eliminarlo swapfile, primero debes ejecutar el siguiente comando:

sudo swapoff swapfile

Luego realice la operación de eliminar el archivo, el comando es el siguiente:

sudo rm swapfile

Nota :

Si no se realiza la operación swapoffy se ejecuta la operación de eliminar el archivo, el sistema informará un error y la instrucción de eliminación no se podrá ejecutar.

swapoffEl comando equivale a desmontar swapla partición.

Instalar las dependencias necesarias

Para usar yumo dnfinstalar el software necesario para compilar el kernel, haga lo siguiente:

sudo yum install git fakeroot ncurses-devel xz zstd dracut openssl-devel bc flex bison elfutils-devel audit-libs-devel slang-devel binutils-devel zlib-static libbabeltrace-devel java-1.8.0-openjdk-devel dwarves
sudo yum groupinstall "Development Tools"

o

sudo dnf install git fakeroot ncurses-devel xz zstd dracut openssl-devel bc flex bison elfutils-devel audit-libs-devel slang-devel binutils-devel zlib-static libbabeltrace-devel java-1.8.0-openjdk-devel dwarves## 添加用户组
sudo dnf groupinstall "Development Tools"

Agregue un grupo de usuarios y agregue un usuario para compilar el kernel, de la siguiente manera:

groupadd mockbuild

useradd -g mockbuild mockbuild

Obtener el código fuente del kernel

  • ① Descarga del sitio web oficial:

El sitio web oficial descarga directamente la versión especificada del linuxpaquete de compresión del código fuente del kernel que debe compilarse. La URL del sitio web oficial es la siguiente:

Sitio web oficial: Los archivos del kernel de Linux

Descomprima el paquete comprimido del kernel que acaba de descargar, de la siguiente manera:

tar -zxf linux-<version>.tar.xz
  • ②Adquisición de comandos git:

gitObtenga el código fuente del kernel usando el comando linux, la operación es la siguiente:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Configurar el kernel

Ingrese linuxa la carpeta del código fuente del kernel y haga lo siguiente:

cd linux-<version>

Antes de compilar oficialmente el kernel, primero debe configurar los módulos que deben incluirse. Si no conoce la configuración del kernel, también puede copiar el archivo de configuración actual del kernel. La operación es la siguiente:

sudo cp -v /boot/config-$(uname -r) /path/to/.config

Si el archivo de configuración del kernel actual no está en /bootla carpeta o /bootel archivo de configuración del kernel no se encuentra en la carpeta, puede usar el siguiente comando:

sudo zcat /proc/config.gz > /path/to/.config

ilustrar:

Entre ellos se encuentra /path/to/la carpeta donde se encuentra el código fuente del kernel descargado;

Si ha ingresado a la carpeta donde se encuentra el código fuente del kernel descargado, simplemente ingrese .config, es decir:

sudo cp /boot/config-$(uname -r) .config
sudo zcat /proc/config.gz > .config

Utilice makeconfiglos parámetros del kernel de configuración de la siguiente manera:

sudo make menuconfig

ilustrar:

Los comandos anteriores son configuraciones de menú basadas en texto con gran aplicabilidad y también se pueden usar para compilar el kernel de forma remota;

Por supuesto, si el sistema tiene escritorio, puedes elegir el siguiente menú de interfaz gráfica para configurar el kernel;

① Si el sistema se basa en KDEel escritorio o en la QTbiblioteca más reciente , puede utilizar el siguiente comando:

sudo make xconfig

② Si el sistema se basa en gtkuna biblioteca , como Gnomeun xfceescritorio, puede usar el siguiente comando:

sudo make gconfig

También puede realizar make allyesconfigo make allnoconfigsimplemente habilitar o deshabilitar todas las configuraciones configurables del kernel.

Nota :

  • Debajo de la máquina virtual, puede aparecer un mensaje de que menuconfigla ejecución falla porque la pantalla es demasiado pequeña para mostrarla.

    Por lo tanto, asegúrese de que el área de visualización debajo de la máquina virtual sea suficiente.

  • Al configurar los parámetros del kernel, puede optar por habilitar o deshabilitar algunos módulos.

    Si no sabe cómo elegir, simplemente salga de forma predeterminada.

Si necesita volver a compilar debido a errores u otras razones al compilar el código fuente del kernel, debe limpiar los resultados de la compilación anterior, la operación es la siguiente:

sudo make mrproper

Nota :

  • Si utiliza LLVM/ clangherramientas para compilar el kernel, es posible que obtenga el siguiente error:
  BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
   Failed to generate BTF for vmlinux
   Try to disable CONFIG_DEBUG_INFO_BTF
   make: *** [Makefile:1170: vmlinux] Error 1
  • La solución es la siguiente:

    • pahole① Instale los paquetes de software incluidos

    • ② Desactive CONFIG_DEBUG_INFO_BTFla función, que se puede make menuconfigencontrar en el menú. Presione la barra espaciadora para cancelar:

Main menu

        -> Kernel hacking

                ->Compile-time checks and compiler options

                        -> Compile the kernel with debug info(DEBUG_INFO [=y])

Después de salir menuconfig, ingrese el siguiente comando en la línea de comando para comenzar la compilación:

sudo make -jX

Si utiliza LLVMla cadena de herramientas para compilar, debe ingresar el siguiente comando:

sudo make LLVM=1 -jX

Si utiliza la cadena de herramientas clang para compilar, debe ingresar el siguiente comando:

sudo make CC=clang LD=ld.bfd -jX

Nota: Puede hacer otras cosas en este momento. Este proceso es relativamente lento. Las máquinas comunes generalmente funcionan a nivel de horas.

-jXEs decir, ejecución concurrente;

XCPUEs decir, la cantidad de núcleos configurada CPUestá determinada por la cantidad adecuada de núcleos, recuerde no exceder CPUla cantidad de núcleos;

Este comando aumenta la velocidad y puede tardar mucho en ejecutarse.

Normalmente, si no se informan errores durante la compilación, se puede instalar el nuevo kernel.

Pero también es necesario comprobar arch/x86/boot/bzImagesi el archivo se ha generado, la operación es la siguiente:

ls arch/x86/boot/bzImage -lh

Si no se genera, debe ejecutar el siguiente comando para generar el archivo de imagen comprimido del kernel:

sudo make bzImage

Nota :

Si este archivo no se genera, make installse .

Para instalar el módulo del kernel, proceda de la siguiente manera:

sudo make modules_install

Para instalar el kernel, proceda de la siguiente manera:

sudo make install

Generar initramfssistema de archivos

Para utilizar dracutel sistema de archivos generado initramfs, haga lo siguiente:

sudo dracut --force

Actualizar grubconfiguración

Utilice grub2el comando para actualizar grubla configuración de la siguiente manera:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grubby --set-default /boot/vmlinuz-5.6.9

Compruebe si la modificación fue exitosa:

sudo grubby --default-kernel
sudo grubby --default-index
sudo grubby --info=ALL

Reinicie el sistema para que surta efecto.

Ejecute el siguiente comando para reiniciar el sistema y que el kernel compilado entre en vigor:

sudo reboot

O utilice el siguiente comando para reiniciar el sistema:

sudo init 6

Al reiniciar el sistema, si ve la interfaz de inicio, el kernel recién compilado se puede ver en el elemento de inicio del kernel.

Después del inicio, use el siguiente comando para ver la versión actual del kernel:

uname -a

No original, por favor no reimprimir.

Supongo que te gusta

Origin blog.csdn.net/GaaraZ/article/details/127219550
Recomendado
Clasificación