Terminez la mise à niveau (4.18.0 → 5.8.8) du noyau installé dans AWS EC2 (Red Hat Enterprise Linux 8 (HVM), SSD Volume Type).
Un serveur AWS EC2 (Red Hat Enterprise Linux 8 (HVM), SSD Volume Type) a été créé. La reconstruction du noyau sera plus fluide si vous préparez des ressources système élevées (CPU, mémoire, etc.) au moment de la compilation et de l'installation. En outre, si vous ne disposez pas d'une certaine quantité d'espace disque, vous pouvez obtenir une erreur au moment de la compilation. Dans cet article, le type d'instance est «m5a.xlarge» (0,344 USD / heure) et la capacité du disque est «50 Go». De plus, gardez à l'esprit que la compilation et l'installation peuvent prendre ** une heure ou plus **, selon les spécifications.
La compilation et l'installation du noyau selon les besoins s'appelle «reconstruction du noyau». Il semble que vous devriez envisager de reconstruire le noyau dans les modèles suivants.
-Le pilote de périphérique requis (module du noyau) n'est pas inclus dans le noyau. -Je souhaite utiliser un noyau optimisé pour le matériel que j'utilise. -Je veux utiliser les dernières fonctionnalités du noyau.
Vous aurez besoin du compilateur gcc, de l'utilitaire make, de la source du noyau et des en-têtes du noyau pour reconstruire le noyau. De plus, lors de la reconstruction du noyau, il est également nécessaire de recompiler le module du noyau.
Numéro d'article | Titre |
---|---|
1 | Préparez la source du noyau |
2 | Paramètres du noyau |
3 | Compilation de noyaux et de modules de noyau |
4 | Module de noyau et installation du noyau |
5 | Confirmé |
Compatible avec le manuel Linux LPIC niveau 2 version 4.5 Comment reconstruire le noyau et activer le module noyau dans CentOS J'ai essayé de compiler et d'installer le noyau (Linux-4.8.6)
** ① Installation d'outils de développement ** Commutateur racine après la connexion au système d'exploitation
sudo su -
Vérifiez la version actuelle du noyau avec ʻuname -r`
#La version actuelle du noyau est 4.18.0
[root@ip-172-31-42-117 ~]# uname -r
4.18.0-193.el8.x86_64
Installez les outils nécessaires pour reconstruire le noyau (*). Il y avait un nombre inhabituellement élevé d'outils qui n'étaient pas installés, mais je m'en fiche. ..
#Installer en fonction du site de référence
yum groupinstall "Development Tools"
yum install kernel-devel
yum install rpm-build redhat-rpm-config unifdef
yum install ncurses ncurses-devel
#Après cela, une installation supplémentaire est effectuée en fonction de l'erreur qui s'est réellement produite lors de make.
yum install elfutils-libelf-devel
yum install openssl-devel
yum install bc
** ② Télécharger la source du noyau ** Installez la commande wget (téléchargez le fichier en spécifiant l'URL).
yum install wget
Sélectionnez la source du noyau sur https://www.kernel.org/ et téléchargez-la.
Cette fois, nous obtiendrons la version du noyau 5.8.8
(09-Sep-2020).
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.8.8.tar.xz
Décompressez et décompressez.
tar Jxvf linux-5.8.8.tar.xz
Déplacer vers le répertoire de la source du noyau extraite
cd linux-5.8.8
** ① Mettez à jour le fichier de paramètres existant avec make old config **
Copiez le fichier de configuration utilisé par le noyau actuel dans .config
(le fichier de configuration du noyau) pour éviter de créer un fichier de configuration du noyau à partir de zéro.
cp -p /boot/config-4.18.0-193.el8.x86_64 .config
Mettez à jour la configuration du noyau.
En utilisant make oldconfig
, vous ne pouvez vous renseigner que sur les fonctions ajoutées dans le nouveau noyau.
Il est possible d'utiliser les paramètres existants tels qu'ils sont pour les paramètres existants.
Dans cet article, tous les nouveaux éléments sont définis sur les paramètres par défaut (appuyez simplement sur Entrée sans taper y ou n). Pour le "mode de compression du noyau" qui doit être défini, cette fois, il a été défini sur "1. Gzip (KERNEL_GZIP)".
make oldconfig
#Exemple de sortie de make old config
[root@ip-172-31-42-117 linux-5.8.8]# make oldconfig
scripts/kconfig/conf --oldconfig Kconfig
.config:1089:warning: symbol value 'm' invalid for NF_CT_PROTO_GRE
.config:2949:warning: symbol value 'm' invalid for ISDN_CAPI
*
* Restart config...
*
*
* General setup
*
#Les éléments qui ont existé dans le passé sont automatiquement détournés car
Compile also drivers which will not load (COMPILE_TEST) [N/y/?] n
Local version - append to kernel release (LOCALVERSION) []
Automatically append version information to the version string (LOCALVERSION_AUTO) [N/y/?] n
# (NEW)Renseignez-vous ici uniquement pour les nouveaux articles décrits comme
Build ID Salt (BUILD_SALT) [](NEW)
Kernel compression mode
> 1. Gzip (KERNEL_GZIP)
2. Bzip2 (KERNEL_BZIP2)
3. LZMA (KERNEL_LZMA)
4. XZ (KERNEL_XZ)
5. LZO (KERNEL_LZO)
6. LZ4 (KERNEL_LZ4)
choice[1-6?]: 1
(réduction)
** ② Affinez les paramètres du noyau en utilisant make menu config **
De plus, en utilisant make menuconfig
, il est possible de faire des ajustements avec la formule de sélection de chaque élément de réglage du noyau.
Cette fois, utilisez make menu config pour corriger (*) les paramètres du noyau qui ont causé l'erreur de compilation lors de l'étape de vérification.
Selon le site de référence, le paramètre du noyau qui provoque l'erreur est l'élément CONFIG_SYSTEM_TRUSTED_KEYS (Si vous copiez le fichier de paramètres du noyau existant sous / boot, cet élément semble provoquer une erreur de compilation à moins que vous ne le corrigiez en une chaîne de caractères vide)
[root@ip-172-31-42-117 linux-5.8.8]# cat .config | grep "CONFIG_SYSTEM_TRUSTED_KEYS"
CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"
Commencez à modifier les paramètres du noyau.
make menuconfig
Lorsque la console suivante apparaît, vous pouvez utiliser le curseur pour définir la configuration du noyau. Déplacez le curseur sur la partie à cadre rouge de l'image ci-dessous et appuyez sur Entrée pour la sélectionner. Effacez la chaîne listée par défaut, videz-la et entrez Enfin enregistrer dans .config
Vérifiez le contenu de .config pour voir si les modifications sont reflétées
[root@ip-172-31-42-117 linux-5.8.8]# cat .config | grep "CONFIG_SYSTEM_TRUSTED_KEYS"
CONFIG_SYSTEM_TRUSTED_KEYS=""
Compilez les modules du noyau et du noyau avec make
.
Il peut être exécuté sans aucun argument, mais comme ce processus de compilation prend un temps considérable, utilisez l'option -j pour changer le nombre de processus parallèles afin de raccourcir le temps de compilation (*).
Avec la configuration de cet article, la compilation a pris moins d'une heure.
#Démarrez le nombre optimal de processus en fonction du nombre de cœurs CPU
JOBS=$[$(grep cpu.cores /proc/cpuinfo | sort -u | sed 's/[^0-9]//g') + 1]
make -j${JOBS}
#L'erreur suivante se produit lors de la création
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
#Comme indiqué, CONFIG_DEBUG_INFO_Désactiver BTF
[root@ip-172-31-42-117 linux-5.8.8]# cat .config | grep CONFIG_DEBUG_INFO_BTF
CONFIG_DEBUG_INFO_BTF=n
** ① Installation du module noyau **
#Terminer sans aucune erreur
make modules_install
C'est OK si le répertoire / lib / modules / kernel version
est configuré comme indiqué ci-dessous.
[root@ip-172-31-42-117 linux-5.8.8]# ls -l /lib/modules/5.8.8/
total 3440
lrwxrwxrwx. 1 root root 17 Sep 10 09:46 build -> /root/linux-5.8.8
drwxr-xr-x. 13 root root 141 Sep 10 09:47 kernel
-rw-r--r--. 1 root root 873761 Sep 10 09:47 modules.alias
-rw-r--r--. 1 root root 837562 Sep 10 09:47 modules.alias.bin
-rw-r--r--. 1 root root 8171 Sep 10 09:46 modules.builtin
-rw-r--r--. 1 root root 10467 Sep 10 09:47 modules.builtin.bin
-rw-r--r--. 1 root root 62064 Sep 10 09:46 modules.builtin.modinfo
-rw-r--r--. 1 root root 278819 Sep 10 09:47 modules.dep
-rw-r--r--. 1 root root 389096 Sep 10 09:47 modules.dep.bin
-rw-r--r--. 1 root root 405 Sep 10 09:47 modules.devname
-rw-r--r--. 1 root root 99497 Sep 10 09:46 modules.order
-rw-r--r--. 1 root root 521 Sep 10 09:47 modules.softdep
-rw-r--r--. 1 root root 422378 Sep 10 09:47 modules.symbols
-rw-r--r--. 1 root root 510059 Sep 10 09:47 modules.symbols.bin
lrwxrwxrwx. 1 root root 17 Sep 10 09:46 source -> /root/linux-5.8.8
** ② Installation du noyau **
#Terminé sans aucune erreur (assurez-vous de vérifier qu'il se termine sans erreur. J'ai redémarré avec une erreur et le serveur n'a pas démarré.)
make install -j${JOBS}
C'est OK si l'image du noyau / boot / vmlinuz-kernel version
existe dans / boot comme indiqué ci-dessous.
[root@ip-172-31-42-117 ~]# ls -l /boot/vmlinuz*
lrwxrwxrwx. 1 root root 19 Sep 10 09:47 /boot/vmlinuz -> /boot/vmlinuz-5.8.8
-rwxr-xr-x. 1 root root 8913760 Apr 23 05:16 /boot/vmlinuz-0-rescue-bb64a14c7512444f9744c3076505b65f
-rwxr-xr-x. 1 root root 8920432 Sep 10 08:05 /boot/vmlinuz-0-rescue-ec211058807a3398326019a9b3f9e8bf
-rwxr-xr-x. 1 root root 8920432 Aug 26 19:47 /boot/vmlinuz-4.18.0-193.19.1.el8_2.x86_64
-rwxr-xr-x. 1 root root 8913760 Mar 27 14:48 /boot/vmlinuz-4.18.0-193.el8.x86_64
-rw-r--r--. 1 root root 8613632 Sep 10 09:47 /boot/vmlinuz-5.8.8
Après le redémarrage, c'est OK si la version du noyau a été modifiée comme indiqué ci-dessous.
[root@ip-172-31-42-117 ~]# uname -r
5.8.8
Recommended Posts