Warum kompiliert Linux den Kernel?
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 .
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/
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
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
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
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.wget 链接(由于链接会被认为是广告,本文省略链接,请自行复制)
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
在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。

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视频教程》
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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.

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.

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? Bei der Entwicklung in Go ist die Verbindung zu Oracle -Datenbanken eine übliche Anforderung ...

"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

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.

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
