Le système Fedora compile le noyau Linux

FedoraLinuxNoyau de compilation du système

résumer

Vérifier la mémoire

Lors de la compilation du noyau, la mémoire est requise au moins 4G, ou mémoire d'échange 2Gde mémoire + 2G( Swap/ Swapfile).

Augmenter la mémoire d'échange (Swap)

Cet article Swapfileutilise un exemple pour illustrer l'opération comme suit :

  • ① (Cette étape peut également être omise) Entrez un répertoire spécifique, prenez le varrépertoire comme exemple et créez un Swapfiledossier de fichier d'échange ( ). L'opération est la suivante :

    cd /var
    
    sudo mkdir swap
    
  • ② Utilisez ddla commande pour créer un fichier d'échange ( Swapfile).

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

    illustrer:

    Utilisez ddla commande pour créer un fichier vide ;

    ifReprésente la lecture d'un fichier ;

    /dev/zeroC'est linuxun générateur unique 0;

    ofIndique la sortie vers un fichier ;

    /mountpointReprésente le point de montage d'une certaine partition ;

    /path/to/Représente un répertoire ;

    swapfileIndique le nom du fichier à créer, qui peut être arbitraire ;

    ofVous pouvez également le remplir directement swapfile, c'est - à - dire le sortir dans le fichier du dossier actuel swapfile;

    Si vous suivez cette étape, cela signifie qu'un fichier /var/swapreprésentant la mémoire d'échange a été créé dans le répertoire ;swapfile

    bs=1MCela signifie block size1 mégaoctet, c'est-à-dire que la taille du bloc est de 1 mégaoctet ;

    L'unité peut également être B( Bytes), K( KB), M( MB);

    En cas d'omission, l' 512unité par défaut est l'octet ; si l'unité est omise, l'unité par défaut est l'octet ;

    count=2000Indique 8000l'écriture block;

    Autrement dit, 2GBla taille du fichier est d'environ.

  • ③ Initialiser swapl'espace d'échange

    Accordez Swapfileles autorisations correspondantes et procédez comme suit :

    sudo chmod 600 /mountpoint/path/to/swapfile
    

    Convertissez le fichier en swapfichier et exécutez-le dans le répertoire correspondant. L'opération est la suivante :

    sudo mkswap /mountpoint/path/to/swapfile
    

    S'il est exécuté dans ce répertoire, vous pouvez également saisir directement le nom du fichier. L'opération est la suivante :

    sudo mkswap swapfile
    

    Pour activer l'espace d'échange, procédez comme suit :

    sudo swapon /mountpoint/path/to/swapfile 
    

    Si vous devez le monter automatiquement après le démarrage, vous pouvez l'ajouter au /etc/fstabfichier.
    Montez automatiquement SWAPla partition lors du démarrage, modifiez /etc/fstabet ajoutez le contenu suivant dans la dernière ligne :

    /path/to/swapfile    swap    swap    defaults    0    0
    

    Vous pouvez également ajouter le contenu suivant :

    /path/to/swapfile    none    swap    sw      0    0
    

    illustrer:

    Le premier élément : /path/to/swapfile, spécifiez swaple chemin du fichier ;

    Le deuxième élément : none, indiquant que swapl'espace n'a pas de points de montage ;

    Le troisième élément : swap, représente un type d'espace d'échange ;

    Le quatrième élément : sw, indiquant que l'espace d'échange est activé, et qu'il existe également une option peu courante noauto;

    Éléments 5 et 6 : 0et 0signifie qu'aucune inspection à la mise sous tension n'est requise.

Supprimer la mémoire d'échange (Swap)

Si vous souhaitez le supprimer swapfile, vous devez d'abord exécuter la commande suivante :

sudo swapoff swapfile

Effectuez ensuite l'opération de suppression du fichier, la commande est la suivante :

sudo rm swapfile

Remarque :

Si l'opération n'est pas effectuée swapoffet que l'opération de suppression du fichier est exécutée, le système signalera une erreur et l'instruction de suppression ne pourra pas être exécutée.

swapoffLa commande équivaut à démonter swapla partition.

Installer les dépendances nécessaires

Pour utiliser yumou dnfinstaller le logiciel requis pour compiler le noyau, procédez comme suit :

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"

ou

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"

Ajoutez un groupe d'utilisateurs et ajoutez un utilisateur pour compiler le noyau, comme suit :

groupadd mockbuild

useradd -g mockbuild mockbuild

Récupérer le code source du noyau

  • ① Téléchargement du site officiel :

Le site officiel télécharge directement la version spécifiée du linuxpackage de compression du code source du noyau qui doit être compilé. L'URL du site officiel est la suivante :

Site officiel : Les archives du noyau Linux

Décompressez le package compressé du noyau que vous venez de télécharger, comme suit :

tar -zxf linux-<version>.tar.xz
  • ②Acquisition de commandesgit :

gitObtenez le code source du noyau en utilisant la commande linux, le fonctionnement est le suivant :

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

Configurer le noyau

Entrez dans linuxle dossier du code source du noyau et procédez comme suit :

cd linux-<version>

Avant de compiler officiellement le noyau, vous devez d'abord configurer les modules qui doivent être inclus. Si vous ne connaissez pas la configuration du noyau, vous pouvez également copier le fichier de configuration actuel du noyau. L'opération est la suivante :

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

Si le fichier de configuration actuel du noyau ne se trouve pas dans /bootle dossier ou /bootsi le fichier de configuration du noyau n'est pas trouvé dans le dossier, vous pouvez utiliser la commande suivante :

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

illustrer:

Parmi eux se trouve /path/to/le dossier où se trouve le code source du noyau téléchargé ;

Si vous avez entré le dossier où se trouve le code source du noyau téléchargé, entrez simplement .config, c'est-à-dire :

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

Utilisez makeconfigles paramètres du noyau de configuration comme suit :

sudo make menuconfig

illustrer:

Les commandes ci-dessus sont des configurations de menu basées sur du texte avec une forte applicabilité et peuvent également être utilisées pour compiler le noyau à distance ;

Bien entendu, si le système dispose d'un bureau, vous pouvez choisir le menu d'interface graphique suivant pour configurer le noyau ;

① Si le système est basé sur KDEle bureau ou sur la dernière QTbibliothèque , vous pouvez utiliser la commande suivante :

sudo make xconfig

② Si le système est basé sur gtkune bibliothèque , telle que Gnomeou xfcede bureau, vous pouvez utiliser la commande suivante :

sudo make gconfig

Vous pouvez également effectuer make allyesconfigou make allnoconfigsimplement activer ou désactiver toutes les configurations configurables du noyau.

Remarque :

  • Sous la machine virtuelle, un message peut s'afficher indiquant que menuconfigl'exécution échoue car l'écran est trop petit pour être affiché.

    Par conséquent, assurez-vous que la zone d'affichage sous la machine virtuelle est suffisante.

  • Lors de la configuration des paramètres du noyau, vous pouvez choisir d'activer ou de désactiver certains modules.

    Si vous ne savez pas comment choisir, quittez simplement par défaut.

Si vous devez recompiler en raison d'erreurs ou pour d'autres raisons lors de la compilation du code source du noyau, vous devez nettoyer les résultats de la compilation précédente. L'opération est la suivante :

sudo make mrproper

Remarque :

  • Si vous utilisez LLVM/ clangtools pour construire le noyau, vous pouvez obtenir l'erreur suivante :
  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 solution est la suivante :

    • pahole① Installez les packages logiciels inclus

    • ② Désactivez CONFIG_DEBUG_INFO_BTFla fonction qui se make menuconfigtrouve dans le menu. Appuyez sur la barre d'espace pour annuler :

Main menu

        -> Kernel hacking

                ->Compile-time checks and compiler options

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

Après avoir quitté menuconfig, entrez la commande suivante sur la ligne de commande pour démarrer la compilation :

sudo make -jX

Si vous utilisez LLVMla chaîne d'outils pour compiler, vous devez saisir la commande suivante :

sudo make LLVM=1 -jX

Si vous utilisez la chaîne d'outils clang pour compiler, vous devez entrer la commande suivante :

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

Remarque : Vous pouvez faire d'autres choses à ce moment-là. Ce processus est relativement lent. Les machines ordinaires fonctionnent généralement au niveau de l'heure.

-jXC'est-à-dire une exécution simultanée ;

XCPUC'est-à-dire que le nombre de cœurs définis CPUest déterminé par le nombre approprié de cœurs. N'oubliez pas de ne pas dépasser CPUle nombre de cœurs ;

Cette commande augmente la vitesse et peut prendre beaucoup de temps à s'exécuter.

Normalement, si aucune erreur n'est signalée lors de la compilation, le nouveau noyau peut être installé.

Mais il faut aussi vérifier arch/x86/boot/bzImagesi le fichier a été généré. Le fonctionnement est le suivant :

ls arch/x86/boot/bzImage -lh

S'il n'est pas généré, vous devez exécuter la commande suivante pour générer le fichier image compressé du noyau :

sudo make bzImage

Remarque :

Si ce fichier n'est pas généré, une erreur make installsera signalée.

Pour installer le module noyau, procédez comme suit :

sudo make modules_install

Pour installer le noyau, procédez comme suit :

sudo make install

Générer initramfsun système de fichiers

Pour utiliser dracutle système de fichiers généré initramfs, procédez comme suit :

sudo dracut --force

Mettre à jour grubla configuration

Utilisez grub2la commande pour mettre à jour grubla configuration comme suit :

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

Vérifiez si la modification a réussi :

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

Redémarrez le système pour prendre effet

Exécutez la commande suivante pour redémarrer le système afin de prendre en compte le noyau compilé :

sudo reboot

Ou utilisez la commande suivante pour redémarrer le système :

sudo init 6

Lors du redémarrage du système, si vous voyez l'interface de démarrage, le noyau nouvellement compilé peut être vu dans l'élément de démarrage du noyau.

Après le démarrage, utilisez la commande suivante pour afficher la version actuelle du noyau :

uname -a

Ce n'est pas original, veuillez ne pas réimprimer

Je suppose que tu aimes

Origine blog.csdn.net/GaaraZ/article/details/127219550
conseillé
Classement