[Reconstruction du noyau LINUX] Mise à jour (4.18.0 → 5.8.8)

Cible

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).

supposition

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». tempsnip.png De plus, gardez à l'esprit que la compilation et l'installation peuvent prendre ** une heure ou plus **, selon les spécifications.

Qu'est-ce que la reconstruction du noyau (à partir du texte LPIC)

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.

Flux de travail

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é

Ouvrages de référence et sites de référence

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)

procédure

1. Préparez la source du noyau

** ① 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

2. Paramètres du noyau

** ① 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. tempsnip.png tempsnip.png tempsnip.png Effacez la chaîne listée par défaut, videz-la et entrez tempsnip.png Enfin enregistrer dans .config tempsnip.png キャプチャ.PNG

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=""

3. Compilation des modules du noyau et du noyau

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

4. Module de noyau et installation du noyau

** ① 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

5. Confirmation d'achèvement

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

[Reconstruction du noyau LINUX] Mise à jour (4.18.0 → 5.8.8)
Vérifiez la version du noyau Linux
Obtenez la dernière version du noyau Linux avec ArchLinux
Problème de mise à niveau de Solus Linux
À propos des paramètres du noyau Linux
Version du noyau Linux 5.x (2/4)
Version du noyau Linux 5.x (3/4)
Version du noyau Linux 5.x (4/4)
Version du noyau Linux 5.x (1/4)
Compilation du noyau Linux pour DE10nano
Noyau Linux auto-construit avec clang
Reconstruction du noyau sur Ubuntu 20.04 (sur Azure)
Mise à niveau de python Anaconda
Documentation relative au modèle de mémoire du noyau Linux
Noyau Linux, son rapport d'histoire de 29 ans
Essayez le mécanisme de verrouillage du noyau Linux
Procédure de récupération de Bitnami Redmine (version Linux)
[Linux] [module du noyau] Créer kthread dans le module du noyau
analyse de la source linux (noyau): appel système
Comment vérifier la version du système d'exploitation Linux