Inhaltsverzeichnis
Warum den Linux-Kernel kompilieren?
Kompilieren Sie einen Linux-Kernel‍

Warum kompiliert Linux den Kernel?

Mar 30, 2023 pm 02:03 PM
linux

Grund: Der neue Kernel hat die Fehler des alten Kernels überarbeitet und viele neue Funktionen hinzugefügt. Wenn Benutzer diese neuen Funktionen nutzen oder einen effizienteren und stabileren Kernel an ihr eigenes System anpassen möchten, reicht es aus: Der Linux-Kernel muss neu kompiliert werden. Normalerweise unterstützen neuere Kernel mehr Hardware, verfügen über bessere Prozessverwaltungsfunktionen, laufen schneller und stabiler und beheben im Allgemeinen viele Schwachstellen älterer Versionen. Dies ist ein notwendiger Betriebsinhalt für Linux-Benutzer .

Warum kompiliert Linux den Kernel?

Die Betriebsumgebung dieses Tutorials: Ubuntu 18.04-System, Dell G3-Computer.

Warum den Linux-Kernel kompilieren?

Der neue Kernel behebt die Fehler des alten Kernels und fügt viele neue Funktionen hinzu. Wenn Benutzer diese neuen Funktionen nutzen oder einen effizienteren und stabileren Kernel an ihr eigenes System anpassen möchten, müssen sie den Linux-Kernel neu kompilieren.

Normalerweise unterstützen aktualisierte Kernel mehr Hardware, verfügen über bessere Prozessverwaltungsfunktionen, laufen schneller und stabiler und beheben im Allgemeinen viele Schwachstellen, die in älteren Versionen usw. gefunden wurden. Daher sollten Sie sich für ein häufiges Upgrade auf neuere Versionen entscheiden notwendige Betriebsinhalte für Linux-Benutzer.

Um die Konfigurationsoptionen für die Kernel-Kompilierung korrekt und sinnvoll festzulegen und nur den Code für die vom System benötigten Funktionen zu kompilieren, gibt es im Allgemeinen die folgenden vier Überlegungen:

  • (1) Der angepasste kompilierte Kernel wird ausgeführt schneller (hat weniger Code)

  • (2) Das System verfügt über mehr Speicher (der Kernel-Teil wird nicht in den virtuellen Speicher ausgelagert)

  • (3) Unnötige in den Kernel kompilierte Funktionen können das Systemrisiko erhöhen Angriffe Von Angreifern ausgenutzte Schwachstellen

  • (4) Das Kompilieren einer bestimmten Funktion in ein Modul ist langsamer als das Kompilieren in den Kernel

Der Zweck dieser Art der Kompilierung besteht hauptsächlich darin, die Kompilierung des Linux-Kernels durch den Kompilierungsprozess zu verstehen , machen Sie sich mit der Funktionsweise des Kernels vertraut und nehmen Sie sogar einige Änderungen vor.
Kompilierung kompiliert nur den Quellcode in ein Programm. Sie ersetzt nicht das aktuelle System und beeinträchtigt nicht den Betrieb des aktuellen Systems.

Das Kompilieren des Kernels kann auf bestimmte Anforderungen zurückzuführen sein, z. B. auf Anforderungen an die Kernelgröße und das Entfernen einiger nicht verwendeter Teile des Kernels. Dieses Szenario betrifft häufig eingebettete Systeme.
Oder Sie haben einen Teil des Kernel-Codes selbst geändert und müssen die Funktion nach der Kompilierung überprüfen.

Beim Kompilieren des Moduls werden einige Funktionsmodule in .ko kompiliert. Sie können xxx.ko insmodieren, um die geschriebenen Codefunktionen im System zu verwenden, ohne den Kernel neu zu kompilieren.
Das Kompilieren des Kernels ersetzt nicht den aktuellen Kernel. Der kompilierte neue Kernel befindet sich häufig in einem Verzeichnis, das dem folgenden ähnelt, und sein Name lautet meist bzImage

/usr/src/kernels/3.xx.x-.x86_64/arch/x86/boot/
Nach dem Login kopieren

Dann können Sie die Grub-Liste des Systems bearbeiten, um den neuesten zu verwendenden Kernel hinzuzufügen it

Der neue Kernel ist integriert. Neue Treiber, z. B. Intel Core Graphics: /lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko

Ein System kann mehrere Kernel installieren. B. Startdateien, wird der neue Kernel den alten Kernel nicht überschreiben:

/boot/vmlinuz-VERSION
/boot/initrd.img-VERSION
Nach dem Login kopieren

Während der Installation des neuen Kernels müssen einige Kernelmodule neu kompiliert werden, wie z. B. VirtualBox:

/lib/modules/`uname -r`/updates/dkms/vboxdrv.ko
Nach dem Login kopieren

Wenn der neue Kernel nicht ordnungsgemäß läuft, Sie können den alten Kernel auswählen, der im GRUB-Boot gestartet werden soll.

Sie können auch folgendermaßen zum Originalkernel wechseln:

ln -sf /boot/vmlinuz-VERSION /vmlinuz
ln -sf /boot/initrd.img-VERSION /initrd.img
Nach dem Login kopieren

Wobei VERSION die Version des Originalkernels ist.

Kompilieren Sie einen Linux-Kernel‍

Der gesamte Kernel-Kompilierungsprozess ist sehr einfach, aber die Kernel-Kompilierung dauert lange. Dies liegt hauptsächlich daran, dass der Kernel viel Code enthält. Wenn Ihr Computer leistungsstark ist, ist die Zeit natürlich viel kürzer. Beachten Sie außerdem, dass die Kompilierung in einer virtuellen Maschinenumgebung empfohlen wird, um Fehler zu vermeiden, die zu Systemproblemen führen können. Beim Testen in einer virtuellen Maschine wird empfohlen, dass die Größe der Systempartition und der Kernel-Quellcode-Partition größer als 20 GB ist.

Schritt 1: Laden Sie den Quellcode herunter

1. Gehen Sie zur offiziellen Website des Linux-Kernels und laden Sie die neueste Version oder andere Versionen des Kernel-Codes herunter. Hier ist ein komprimiertes Archiv des Quellcodes.

Warum kompiliert Linux den Kernel?

2. Gehen Sie davon aus, dass wir uns jetzt in einem Linux-Betriebssystem befinden. Geben Sie den folgenden Befehl in die Befehlszeile ein, um den Kernel herunterzuladen.

wget 链接(由于链接会被认为是广告,本文省略链接,请自行复制)
Nach dem Login kopieren

Sie können den Download-Fortschritt während des Download-Vorgangs sehen. Nach Abschluss des Downloads sehen die Informationen ungefähr wie unten dargestellt aus.

Warum kompiliert Linux den Kernel?

Schritt 2: Dekomprimieren Sie den Quellcode

Nachdem das komprimierte Paket heruntergeladen wurde, können Sie es mit dem Befehl tar dekomprimieren.

tar xvf linux-5.9.6.tar.xz
Nach dem Login kopieren

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

Warum kompiliert Linux den Kernel?

Step 3: 安装需要的软件包

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

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
Nach dem Login kopieren

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

Warum kompiliert Linux den Kernel?

Step 4: 配置内核代码

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

1. 进入源代码目录

cd linux-5.9.6
Nach dem Login kopieren

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

cp -v /boot/config-$(uname -r) .config
Nach dem Login kopieren
Warum kompiliert Linux den Kernel?

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

make menuconfig
Nach dem Login kopieren

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

Warum kompiliert Linux den Kernel?

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

Warum kompiliert Linux den Kernel?

Step 5: 编译内核

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

make -j 10
Nach dem Login kopieren

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

Warum kompiliert Linux den Kernel?

2. 安装模块

sudo make modules_install
Nach dem Login kopieren
Warum kompiliert Linux den Kernel?

3. 安装内核

sudo make install
Nach dem Login kopieren

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

Warum kompiliert Linux den Kernel?

Step 6: 重启,验证版本

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

uname -mrs
Nach dem Login kopieren

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

1Warum kompiliert Linux den Kernel?

结论‍

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

可能遇到的问题‍

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

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

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

vim .config
Nach dem Login kopieren

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

CONFIG_SYSTEM_TRUSTED_KEYS=”
Nach dem Login kopieren

相关推荐:《Linux视频教程

Das obige ist der detaillierte Inhalt vonWarum kompiliert Linux den Kernel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So öffnen Sie Web.xml So öffnen Sie Web.xml Apr 03, 2025 am 06:51 AM

Um eine Web.xml -Datei zu öffnen, können Sie die folgenden Methoden verwenden: Verwenden Sie einen Texteditor (z.

Vier Möglichkeiten zur Implementierung von Multithreading in C -Sprache Vier Möglichkeiten zur Implementierung von Multithreading in C -Sprache Apr 03, 2025 pm 03:00 PM

Multithreading in der Sprache kann die Programmeffizienz erheblich verbessern. Es gibt vier Hauptmethoden, um Multithreading in C -Sprache zu implementieren: Erstellen Sie unabhängige Prozesse: Erstellen Sie mehrere unabhängig laufende Prozesse. Jeder Prozess hat seinen eigenen Speicherplatz. Pseudo-MultitHhreading: Erstellen Sie mehrere Ausführungsströme in einem Prozess, der denselben Speicherplatz freigibt und abwechselnd ausführt. Multi-Thread-Bibliothek: Verwenden Sie Multi-Thread-Bibliotheken wie PThreads, um Threads zu erstellen und zu verwalten, wodurch reichhaltige Funktionen der Thread-Betriebsfunktionen bereitgestellt werden. Coroutine: Eine leichte Multi-Thread-Implementierung, die Aufgaben in kleine Unteraufgaben unterteilt und sie wiederum ausführt.

Wofür wird der Linux am besten verwendet? Wofür wird der Linux am besten verwendet? Apr 03, 2025 am 12:11 AM

Linux wird am besten als Serververwaltung, eingebettete Systeme und Desktop -Umgebungen verwendet. 1) In der Serververwaltung wird Linux verwendet, um Websites, Datenbanken und Anwendungen zu hosten und Stabilität und Zuverlässigkeit bereitzustellen. 2) In eingebetteten Systemen wird Linux aufgrund seiner Flexibilität und Stabilität in Smart Home und Automotive Electronic Systems häufig verwendet. 3) In der Desktop -Umgebung bietet Linux reichhaltige Anwendungen und eine effiziente Leistung.

Wie ist Debian Hadoop -Kompatibilität? Wie ist Debian Hadoop -Kompatibilität? Apr 02, 2025 am 08:42 AM

Debianlinux ist bekannt für seine Stabilität und Sicherheit und wird in Server-, Entwicklungs- und Desktop -Umgebungen häufig verwendet. Während es derzeit einen Mangel an offiziellen Anweisungen zur direkten Kompatibilität mit Debian und Hadoop gibt, wird dieser Artikel Sie dazu veranlassen, Hadoop in Ihrem Debian -System bereitzustellen. Debian -Systemanforderungen: Bevor Sie mit der Hadoop -Konfiguration beginnen, stellen Sie bitte sicher, dass Ihr Debian -System die Mindestanforderungen von Hadoop erfüllt, einschließlich der Installation der erforderlichen Java -Laufzeitumgebung (JRE) und Hadoop -Pakete. Schritte zur Bereitstellung von Hadoop -Bereitstellungen: Download und Unzip Hadoop: Laden Sie die Hadoop -Version von der offiziellen Apachehadoop -Website herunter und lösen Sie sie

Muss ich einen Oracle -Client installieren, wenn ich mit GO eine Verbindung zu einer Oracle -Datenbank herstellen kann? Muss ich einen Oracle -Client installieren, wenn ich mit GO eine Verbindung zu einer Oracle -Datenbank herstellen kann? Apr 02, 2025 pm 03:48 PM

Muss ich einen Oracle -Client installieren, wenn ich mit GO eine Verbindung zu einer Oracle -Datenbank herstellen kann? Bei der Entwicklung in Go ist die Verbindung zu Oracle -Datenbanken eine übliche Anforderung ...

Ist Debian Strings kompatibel mit mehreren Browsern Ist Debian Strings kompatibel mit mehreren Browsern Apr 02, 2025 am 08:30 AM

"DebianStrings" ist kein Standardbegriff und seine spezifische Bedeutung ist noch unklar. Dieser Artikel kann seine Browserkompatibilität nicht direkt kommentieren. Wenn sich jedoch "DebianStrings" auf eine Webanwendung bezieht, die auf einem Debian -System ausgeführt wird, hängt seine Browserkompatibilität von der technischen Architektur der Anwendung selbst ab. Die meisten modernen Webanwendungen sind für die Kompatibilität des Cross-Browsers verpflichtet. Dies beruht auf den folgenden Webstandards und der Verwendung gut kompatibler Front-End-Technologien (wie HTML, CSS, JavaScript) und Back-End-Technologien (wie PHP, Python, Node.js usw.). Um sicherzustellen, dass die Anwendung mit mehreren Browsern kompatibel ist, müssen Entwickler häufig Kreuzbrowser-Tests durchführen und die Reaktionsfähigkeit verwenden

Ich kann mich nicht als Stamm bei MySQL anmelden Ich kann mich nicht als Stamm bei MySQL anmelden Apr 08, 2025 pm 04:54 PM

Die Hauptgründe, warum Sie sich bei MySQL nicht als Root anmelden können, sind Berechtigungsprobleme, Konfigurationsdateifehler, Kennwort inkonsistent, Socket -Dateiprobleme oder Firewall -Interception. Die Lösung umfasst: Überprüfen Sie, ob der Parameter Bind-Address in der Konfigurationsdatei korrekt konfiguriert ist. Überprüfen Sie, ob die Root -Benutzerberechtigungen geändert oder gelöscht und zurückgesetzt wurden. Stellen Sie sicher, dass das Passwort korrekt ist, einschließlich Fall- und Sonderzeichen. Überprüfen Sie die Einstellungen und Pfade der Socket -Dateiberechtigte. Überprüfen Sie, ob die Firewall Verbindungen zum MySQL -Server blockiert.

libv sind zwei libv sind zwei Apr 03, 2025 pm 08:03 PM

Ich habe ein Projekt namens Lua-Libuv entwickelt und freue mich, meine Erfahrungen zu teilen. Die ursprüngliche Absicht des Projekts besteht darin, zu untersuchen, wie Libuv (eine in C geschriebene asynchrone E/A -Bibliothek) verwendet wird, um einen einfachen HTTP -Server zu erstellen, ohne die C -Sprache ausführlich lernen zu müssen. Mit Hilfe von ChatGPT habe ich den Basiscode von http.c. Beim Umgang mit anhaltenden Verbindungen habe ich zum richtigen Zeitpunkt erfolgreich die Schließung der Verbindung und die Freilegung von Ressourcen implementiert. Zuerst habe ich versucht, einen einfachen Server zu erstellen, der das Hauptprogramm beendete, indem ich die Verbindung schließt, aber ich hatte einige Probleme. Ich habe versucht, Datenblöcke mit Streaming zu senden, und während es funktioniert, blockiert dies den Haupt -Thread. Am Ende habe ich mich entschlossen, diesen Ansatz aufzugeben, weil mein Ziel nicht darin bestand, eine Tiefe der C -Sprache zu lernen. Endlich, ich

See all articles