Fedora
Linux
Noyau de compilation du système
Table des matières
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 2G
de mémoire +
2G
( Swap
/ Swapfile
).
Augmenter la mémoire d'échange (Swap)
Cet article Swapfile
utilise un exemple pour illustrer l'opération comme suit :
-
① (Cette étape peut également être omise) Entrez un répertoire spécifique, prenez le
var
répertoire comme exemple et créez unSwapfile
dossier de fichier d'échange ( ). L'opération est la suivante :cd /var sudo mkdir swap
-
② Utilisez
dd
la 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
dd
la commande pour créer un fichier vide ;if
Représente la lecture d'un fichier ;/dev/zero
C'estlinux
un générateur unique0
;of
Indique la sortie vers un fichier ;/mountpoint
Représente le point de montage d'une certaine partition ;/path/to/
Représente un répertoire ;swapfile
Indique le nom du fichier à créer, qui peut être arbitraire ;of
Vous pouvez également le remplir directementswapfile
, c'est - à - dire le sortir dans le fichier du dossier actuelswapfile
;Si vous suivez cette étape, cela signifie qu'un fichier
/var/swap
représentant la mémoire d'échange a été créé dans le répertoire ;swapfile
bs=1M
Cela signifieblock size
1 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'
512
unité par défaut est l'octet ; si l'unité est omise, l'unité par défaut est l'octet ;count=2000
Indique8000
l'écritureblock
;Autrement dit,
2GB
la taille du fichier est d'environ. -
③ Initialiser
swap
l'espace d'échangeAccordez
Swapfile
les autorisations correspondantes et procédez comme suit :sudo chmod 600 /mountpoint/path/to/swapfile
Convertissez le fichier en
swap
fichier 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/fstab
fichier.
Montez automatiquementSWAP
la partition lors du démarrage, modifiez/etc/fstab
et 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écifiezswap
le chemin du fichier ;Le deuxième élément :
none
, indiquant queswap
l'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 courantenoauto
;Éléments 5 et 6 :
0
et0
signifie 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
swapoff
et 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.
swapoff
La commande équivaut à démonterswap
la partition.
Installer les dépendances nécessaires
Pour utiliser yum
ou dnf
installer 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 linux
package 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 commandes
git
:
git
Obtenez 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 linux
le 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 /boot
le dossier ou /boot
si 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 makeconfig
les 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
KDE
le bureau ou sur la dernièreQT
bibliothèque , vous pouvez utiliser la commande suivante :sudo make xconfig
② Si le système est basé sur
gtk
une bibliothèque , telle queGnome
ouxfce
de bureau, vous pouvez utiliser la commande suivante :sudo make gconfig
Vous pouvez également effectuer
make allyesconfig
oumake allnoconfig
simplement activer ou désactiver toutes les configurations configurables du noyau.Remarque :
Sous la machine virtuelle, un message peut s'afficher indiquant que
menuconfig
l'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
/clang
tools 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_BTF
la fonction qui semake menuconfig
trouve 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 LLVM
la 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.
-jX
C'est-à-dire une exécution simultanée ;
X
CPU
C'est-à-dire que le nombre de cœurs définisCPU
est déterminé par le nombre approprié de cœurs. N'oubliez pas de ne pas dépasserCPU
le 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/bzImage
si 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 install
sera 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 initramfs
un système de fichiers
Pour utiliser dracut
le système de fichiers généré initramfs
, procédez comme suit :
sudo dracut --force
Mettre à jour grub
la configuration
Utilisez grub2
la commande pour mettre à jour grub
la 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