Table des matières
Pourquoi compiler le noyau Linux ?
Compiler un noyau Linux‍
Maison Opération et maintenance exploitation et maintenance Linux Pourquoi Linux compile-t-il le noyau ?

Pourquoi Linux compile-t-il le noyau ?

Mar 30, 2023 pm 02:03 PM
linux

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

Pourquoi Linux compile-t-il le noyau ?

L'environnement d'exploitation de ce tutoriel : système Ubuntu 18.04, ordinateur Dell G3.

Pourquoi compiler le noyau Linux ?

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/
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

Où VERSION est la version du noyau d'origine.

Compiler un noyau Linux‍

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.

Pourquoi Linux compile-t-il le noyau ?

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 链接(由于链接会被认为是广告,本文省略链接,请自行复制)
Copier après la connexion

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.

Pourquoi Linux compile-t-il le noyau ?

É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
Copier après la connexion

在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。

Pourquoi Linux compile-t-il le noyau ?

Step 3: 安装需要的软件包

安装编译工具以及其它一下依赖的软件包,在Ubuntu 18.04环境下执行如下命令。

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
Copier après la connexion

如果一切顺利,大概安装输出信息如下所示。

Pourquoi Linux compile-t-il le noyau ?

Step 4: 配置内核代码

在编译内核之前,我们可以对内核源代码进行配置。配置的目的主要是确定哪些模块会编译到内核当中。

1. 进入源代码目录

cd linux-5.9.6
Copier après la connexion

2. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。

cp -v /boot/config-$(uname -r) .config
Copier après la connexion
Pourquoi Linux compile-t-il le noyau ?

3. 可以通过如下命令启动配置界面

make menuconfig
Copier après la connexion

该命令会运行一些脚本,然后打开一个配置界面

Pourquoi Linux compile-t-il le noyau ?

4. 下面是打开的配置界面。可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改。

Pourquoi Linux compile-t-il le noyau ?

Step 5: 编译内核

1. 通过如下命令就可以编译内核了

make -j 10
Copier après la connexion

上面参数是并发数量,通常可以是CPU的2倍。

Pourquoi Linux compile-t-il le noyau ?

2. 安装模块

sudo make modules_install
Copier après la connexion
Pourquoi Linux compile-t-il le noyau ?

3. 安装内核

sudo make install
Copier après la connexion

安装完成后会有如下提示信息。

Pourquoi Linux compile-t-il le noyau ?

Step 6: 重启,验证版本

当上述步骤都没有出错的情况下,我们重启一下计算机,然后运行如下命令。

uname -mrs
Copier après la connexion

此时就可以看到内核版本已经是我们编译的版本了。

1Pourquoi Linux compile-t-il le noyau ?

结论‍

通过上面几步,我们可以很简单的编译一个内核。如果后面开发内核模块,也是要基于内核代码树的,因此这个是内核开发的基础。

可能遇到的问题‍

编译内核的时候可能会遇到这个问题:

没有规则可制作目标
debian/certs/debian-uefi-certs.pem,由certs/x509_certificate_list需求停止

在要编译的内核目录下编辑一下配置文件即可。简单的方式是执行如下命令

vim .config
Copier après la connexion

然后找到
CONFIG_SYSTEM_TRUSTED_KEYS,将其设置为空,也就是下面这个样子。

CONFIG_SYSTEM_TRUSTED_KEYS=”
Copier après la connexion

相关推荐:《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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quatre façons d'implémenter le multithreading dans le langage C Quatre façons d'implémenter le multithreading dans le langage C Apr 03, 2025 pm 03:00 PM

Le multithreading dans la langue peut considérablement améliorer l'efficacité du programme. Il existe quatre façons principales d'implémenter le multithreading dans le langage C: créer des processus indépendants: créer plusieurs processus en cours d'exécution indépendante, chaque processus a son propre espace mémoire. Pseudo-Multithreading: Créez plusieurs flux d'exécution dans un processus qui partagent le même espace mémoire et exécutent alternativement. Bibliothèque multi-thread: Utilisez des bibliothèques multi-threades telles que PTHEADS pour créer et gérer des threads, en fournissant des fonctions de fonctionnement de thread riches. Coroutine: une implémentation multi-thread légère qui divise les tâches en petites sous-tâches et les exécute tour à tour.

Comment ouvrir web.xml Comment ouvrir web.xml Apr 03, 2025 am 06:51 AM

Pour ouvrir un fichier web.xml, vous pouvez utiliser les méthodes suivantes: Utilisez un éditeur de texte (tel que le bloc-notes ou TextEdit) pour modifier les commandes à l'aide d'un environnement de développement intégré (tel qu'Eclipse ou NetBeans) (Windows: Notepad web.xml; Mac / Linux: Open -A TextEdit web.xml)

À quoi sert le mieux le Linux? À quoi sert le mieux le Linux? Apr 03, 2025 am 12:11 AM

Linux est mieux utilisé comme gestion de serveurs, systèmes intégrés et environnements de bureau. 1) Dans la gestion des serveurs, Linux est utilisé pour héberger des sites Web, des bases de données et des applications, assurant la stabilité et la fiabilité. 2) Dans les systèmes intégrés, Linux est largement utilisé dans les systèmes électroniques intelligents et automobiles en raison de sa flexibilité et de sa stabilité. 3) Dans l'environnement de bureau, Linux fournit des applications riches et des performances efficaces.

Comment est la compatibilité Debian Hadoop Comment est la compatibilité Debian Hadoop Apr 02, 2025 am 08:42 AM

Debianlinux est connu pour sa stabilité et sa sécurité et est largement utilisé dans les environnements de serveur, de développement et de bureau. Bien qu'il y ait actuellement un manque d'instructions officielles sur la compatibilité directe avec Debian et Hadoop, cet article vous guidera sur la façon de déployer Hadoop sur votre système Debian. Exigences du système Debian: Avant de commencer la configuration de Hadoop, assurez-vous que votre système Debian répond aux exigences de fonctionnement minimales de Hadoop, qui comprend l'installation de l'environnement d'exécution Java (JRE) nécessaire et des packages Hadoop. Étapes de déploiement de Hadoop: Télécharger et unzip Hadoop: Téléchargez la version Hadoop dont vous avez besoin sur le site officiel d'Apachehadoop et résolvez-le

Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Apr 02, 2025 pm 03:48 PM

Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Lorsque vous développez GO, la connexion aux bases de données Oracle est une exigence commune ...

Debian Strings est-il compatible avec plusieurs navigateurs Debian Strings est-il compatible avec plusieurs navigateurs Apr 02, 2025 am 08:30 AM

"Debianstrings" n'est pas un terme standard, et sa signification spécifique n'est pas encore claire. Cet article ne peut pas commenter directement la compatibilité de son navigateur. Cependant, si "DebianStrings" fait référence à une application Web exécutée sur un système Debian, sa compatibilité du navigateur dépend de l'architecture technique de l'application elle-même. La plupart des applications Web modernes se sont engagées à compatibilité entre les navigateurs. Cela repose sur les normes Web suivantes et l'utilisation de technologies frontales bien compatibles (telles que HTML, CSS, JavaScript) et les technologies back-end (telles que PHP, Python, Node.js, etc.). Pour s'assurer que l'application est compatible avec plusieurs navigateurs, les développeurs doivent souvent effectuer des tests croisés et utiliser la réactivité

Impossible de se connecter à MySQL en tant que racine Impossible de se connecter à MySQL en tant que racine Apr 08, 2025 pm 04:54 PM

Les principales raisons pour lesquelles vous ne pouvez pas vous connecter à MySQL en tant que racines sont des problèmes d'autorisation, des erreurs de fichier de configuration, des problèmes de mot de passe incohérents, des problèmes de fichiers de socket ou une interception de pare-feu. La solution comprend: vérifiez si le paramètre Bind-Address dans le fichier de configuration est configuré correctement. Vérifiez si les autorisations de l'utilisateur racine ont été modifiées ou supprimées et réinitialisées. Vérifiez que le mot de passe est précis, y compris les cas et les caractères spéciaux. Vérifiez les paramètres et les chemins d'autorisation du fichier de socket. Vérifiez que le pare-feu bloque les connexions au serveur MySQL.

libv est deux libv est deux Apr 03, 2025 pm 08:03 PM

J'ai développé un projet appelé Lua-Libuv et je suis heureux de partager mon expérience. L'intention initiale du projet est d'explorer comment utiliser Libuv (une bibliothèque d'E / S asynchrone écrite en c) pour créer un serveur HTTP simple sans avoir à apprendre le langage C en profondeur. Avec l'aide de Chatgpt, j'ai terminé le code de base de HTTP.C. Lorsque je traite des connexions persistantes, j'ai réussi à mettre en œuvre la clôture de la connexion et à libérer les ressources au bon moment. Au début, j'ai essayé de créer un serveur simple qui a mis fin au programme principal en fermant la connexion, mais j'ai eu quelques problèmes. J'ai essayé d'envoyer des blocs de données à l'aide de streaming, et pendant que cela fonctionne, cela bloque le thread principal. En fin de compte, j'ai décidé d'abandonner cette approche parce que mon objectif n'était pas d'apprendre la langue C en profondeur. Enfin, je

See all articles