Maison > Article > Opération et maintenance > Pourquoi Linux compile-t-il le noyau ?
Raison : Le nouveau noyau a révisé les bugs de l'ancien noyau et a ajouté de nombreuses nouvelles fonctionnalités ; si les utilisateurs souhaitent utiliser ces nouvelles fonctionnalités, ou souhaitent personnaliser un noyau plus efficace et plus stable en fonction de leur propre système, il suffit de utiliser le noyau Linux. doit être recompilé. Habituellement, les noyaux les plus récents prendront en charge plus de matériel, auront de meilleures capacités de gestion des processus, fonctionneront plus rapidement et de manière plus stable, et corrigeront généralement de nombreuses vulnérabilités trouvées dans les anciennes versions. Il s'agit fréquemment d'une mise à niveau vers des noyaux système plus récents. Il s'agit d'un contenu opérationnel nécessaire pour les utilisateurs Linux. .
L'environnement d'exploitation de ce tutoriel : système Ubuntu 18.04, ordinateur Dell G3.
Le nouveau noyau corrige les bugs de l'ancien noyau et ajoute de nombreuses nouvelles fonctionnalités. Si les utilisateurs souhaitent utiliser ces nouvelles fonctionnalités ou adapter un noyau plus efficace et plus stable à leur propre système, ils doivent recompiler le noyau Linux.
Habituellement, les noyaux mis à jour prendront en charge plus de matériel, auront de meilleures capacités de gestion des processus, fonctionneront plus rapidement et de manière plus stable, et corrigeront généralement de nombreuses vulnérabilités trouvées dans les anciennes versions, etc., alors choisissez de mettre à niveau fréquemment vers des versions plus récentes. contenu d'exploitation nécessaire pour les utilisateurs Linux.
Afin de définir correctement et raisonnablement les options de configuration de la compilation du noyau, afin de compiler uniquement le code des fonctions requises par le système, il y a généralement les quatre considérations suivantes :
(1) Le noyau compilé personnalisé s'exécute plus rapide (a moins de code)
(2) Le système aura plus de mémoire (la partie du noyau ne sera pas échangée dans la mémoire virtuelle)
(3) Les fonctions inutiles compilées dans le noyau peuvent augmenter le risque de dysfonctionnement du système attaques Vulnérabilités exploitées par les attaquants
(4) La compilation d'une certaine fonction dans un module sera plus lente que sa compilation dans le noyau
Le but de ce type de compilation est principalement de comprendre la compilation du noyau Linux à travers le processus de compilation , familiarisez-vous avec le fonctionnement du noyau et essayez même d'apporter quelques modifications.
La compilation compile uniquement le code source dans un programme. Elle ne remplacera pas le système actuel et n'affectera pas le fonctionnement du système actuel.
La compilation du noyau peut être due à certains besoins, tels que les exigences de taille du noyau et la suppression de certaines parties inutilisées du noyau. Ce scénario concerne souvent les systèmes embarqués.
Ou vous avez modifié vous-même une partie du code du noyau et devez vérifier la fonction après la compilation.
Lors de la compilation du module, certains modules fonctionnels sont compilés en .ko Vous pouvez insmod xxx.ko pour utiliser les fonctions de code écrites dans le système sans recompiler le noyau.
La compilation du noyau ne remplacera pas le noyau actuel. Le nouveau noyau compilé se trouve souvent dans un répertoire similaire à celui ci-dessous, et son nom est principalement bzImage
/usr/src/kernels/3.xx.x-.x86_64/arch/x86/boot/
Vous pouvez ensuite modifier la liste grub du système pour ajouter le dernier noyau à utiliser. it
Le nouveau noyau est intégré Nouveaux pilotes, tels que les graphiques Intel Core : /lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko
Un système peut installer plusieurs noyaux, tels que les fichiers de démarrage, le nouveau noyau n'écrasera pas l'ancien noyau :
/boot/vmlinuz-VERSION /boot/initrd.img-VERSION
Lors de l'installation du nouveau noyau, certains modules du noyau doivent être recompilés, comme VirtualBox :
/lib/modules/`uname -r`/updates/dkms/vboxdrv.ko
Si le nouveau noyau ne fonctionne pas correctement, vous pouvez sélectionner l'ancien noyau à démarrer lors du démarrage GRUB.
Vous pouvez également revenir au noyau d'origine comme ceci :
ln -sf /boot/vmlinuz-VERSION /vmlinuz ln -sf /boot/initrd.img-VERSION /initrd.img
Où VERSION est la version du noyau d'origine.
L'ensemble du processus de compilation du noyau est très simple, mais la compilation du noyau prend beaucoup de temps. C'est principalement parce que le noyau contient beaucoup de code. Bien entendu, si votre ordinateur est puissant, le temps sera bien plus court. Une autre chose à noter est qu'il est recommandé de compiler dans un environnement de machine virtuelle pour éviter les erreurs pouvant entraîner des problèmes système. Lors d'un test sur une machine virtuelle, il est recommandé que la taille de la partition système et de la partition de code source du noyau soit supérieure à 20 Go.
Étape 1 : Téléchargez le code source
1 Accédez au site officiel du noyau Linux et téléchargez la dernière version ou d'autres versions du code du noyau. Voici une archive compressée du code source. 2. Supposons que nous soyons maintenant dans un système d'exploitation Linux. Entrez la commande suivante sur la ligne de commande pour télécharger le noyau.wget 链接(由于链接会被认为是广告,本文省略链接,请自行复制)Vous pouvez voir la progression du téléchargement pendant le processus de téléchargement. Une fois le téléchargement terminé, les informations sont à peu près telles qu'indiquées ci-dessous.
Étape 2 : Décompresser le code source
Une fois le package compressé téléchargé, vous pouvez le décompresser via la commande tar.tar xvf linux-5.9.6.tar.xz
在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。
Step 3: 安装需要的软件包
安装编译工具以及其它一下依赖的软件包,在Ubuntu 18.04环境下执行如下命令。
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
如果一切顺利,大概安装输出信息如下所示。
Step 4: 配置内核代码
在编译内核之前,我们可以对内核源代码进行配置。配置的目的主要是确定哪些模块会编译到内核当中。
1. 进入源代码目录
cd linux-5.9.6
2. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。
cp -v /boot/config-$(uname -r) .config
3. 可以通过如下命令启动配置界面
make menuconfig
该命令会运行一些脚本,然后打开一个配置界面
4. 下面是打开的配置界面。可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改。
Step 5: 编译内核
1. 通过如下命令就可以编译内核了
make -j 10
上面参数是并发数量,通常可以是CPU的2倍。
2. 安装模块
sudo make modules_install
3. 安装内核
sudo make install
安装完成后会有如下提示信息。
Step 6: 重启,验证版本
当上述步骤都没有出错的情况下,我们重启一下计算机,然后运行如下命令。
uname -mrs
此时就可以看到内核版本已经是我们编译的版本了。
结论
通过上面几步,我们可以很简单的编译一个内核。如果后面开发内核模块,也是要基于内核代码树的,因此这个是内核开发的基础。
可能遇到的问题
编译内核的时候可能会遇到这个问题:
没有规则可制作目标
debian/certs/debian-uefi-certs.pem,由certs/x509_certificate_list需求停止
在要编译的内核目录下编辑一下配置文件即可。简单的方式是执行如下命令
vim .config
然后找到
CONFIG_SYSTEM_TRUSTED_KEYS,将其设置为空,也就是下面这个样子。
CONFIG_SYSTEM_TRUSTED_KEYS=”
相关推荐:《Linux视频教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!