So kompilieren Sie Vanilla Linux -Kernel aus der Quelle auf Fedora
- 813
- 137
- Phoebe Jeorga
Der Kernel ist der wichtigste Bestandteil eines Betriebssystems: Unter den anderen Dingen unterstützt er verschiedene Arten von Hardware und verwaltet Ressourcenzuweisungen.
Linux ist ein monolithischer Kernel: Obwohl seine Funktionen statisch oder gebaut und als getrennt geladen werden können Module
, Es läuft immer als „Einzelstück“ im gleichen Adressraum. In diesem Tutorial sehen wir, wie Sie einen Vanilla Linux -Kernel herunterladen, kompilieren und installieren. Die angegebenen Anweisungen sollten auf allen Linux -Verteilungen funktionieren. Dieser Leitfaden konzentriert sich jedoch auf die Zusammenstellung des Kernels auf einem Fedora -System.
In diesem Tutorial lernen Sie:
- So konfigurieren, kompilieren und installieren Sie einen Vanilla Linux -Kernel
- So verpacken Sie den kompilierten Kernel und seine Module
Das NCurses-basierte Konfigurationsmenü für den Linux-Kernel
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Fedora |
Software |
|
Andere | Root -Berechtigungen zur Installation der erforderlichen Abhängigkeiten und des kompilierten Kernels |
Konventionen | # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können |
Installation der Abhängigkeiten
Um den Linux -Kernel aus der Quelle kompilieren zu können, müssen wir einige Pakete in unserem System installieren:
$ sudo dnf Installation GCC Flex Make Bison OpenSSL-Devel Elfutils-liBelf-Devel
Die oben genannten sind nur die "Kernpakete", die wir brauchen. Um bestimmte Konfigurationsziele aufzurufen, müssen einige zusätzliche Pakete installiert werden: die ncurses-devel
Und qt-devel
Zum Beispiel werden Pakete erforderlich RPM-Build
Paket wird benötigt, um eine Drehzahl mit dem kompilierten Kernel zu erstellen.
Herunterladen des Quell -Tarballs
Als erstes müssen wir den Tarball mit den neuesten stabilen Linux -Kernelquellen erhalten. Wir können den Tarball mit nur einem Befehl herunterladen und extrahieren:
$ curl https: // cdn.Kernel.org/pub/linux/kernel/v5.X/Linux-5.1.5.Teer.xz | tar -xj
Am Ende des Downloadprozesses in unserem aktuellen Arbeitsverzeichnis sollten wir einen neuen Ordner finden, der den Kernel -Quellcode enthält. Wir müssen es in diesem Fall eingeben:
$ CD Linux-5.1.5
Zu diesem Zeitpunkt können wir den Kernel konfigurieren. Im nächsten Absatz werden wir uns die häufigsten Konfigurationsziele ansehen, die zur Erfüllung der Aufgabe verwendet werden.
Konfigurieren des Kernels
Es gibt verschiedene Möglichkeiten, wie wir den Kernel konfigurieren können, und sie entsprechen unterschiedlich Konfigurationsziele
. Wenn ein Konfigurationsziel aufgerufen wird, wenn eine Datei benannt .Konfiguration
Eine gültige Kernelkonfiguration findet sich im Quellenverzeichnis. Sie wird als Ausgangspunkt für das Setup verwendet. Dadurch wird eine bereits existierende Konfiguration aktualisiert oder geändert /Stiefel
Verzeichnis, nach dem verwendeten Kernel benannt).
Wenn die Datei nicht gefunden wird, beginnt die Konfiguration von vorne und die .Konfiguration
Die Datei wird generiert, sobald wir unser Setup gespeichert haben. Lassen Sie uns einige der Konfigurationsziele
wir können benutzen:
Konfiguration
Wenn dieses Ziel aufgerufen wird, wird der Benutzer aufgefordert, den Kernel durch Beantwortung einer Reihe von Fragen auf folgende Weise zu konfigurieren:
* * Linux/x86 5.1.5 Kernelkonfiguration * * * Compiler: GCC (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1) * * * Allgemeine Setup * Kompilierende Treiber, die nicht geladen werden (compile_test) [n/y/?]
Menuconfig
Dieses Ziel verwendet ein nettes und benutzerfreundliches Ziel Ncurses
Schnittstelle, um uns die Kernelkonfiguration zu generieren oder zu aktualisieren. Wie bereits erwähnt, können Sie diese Schnittstelle verwenden ncurses-devel
Das Paket muss im System installiert werden.
Die NCURSES-basierte Konfiguration inteface
Mit dieser Schnittstelle können wir die drücken H
Schlüssel beim Hervorheben einer bestimmten Option, um Informationen und Vorschläge dazu zu erhalten:
Das Erhalten von Informationen über eine Option ist nur eine Frage der Auswahl und Drücken Sie die H -Taste zum H -Taste
Y
Bei einer Option wird es statisch in den Kernel einbezogen (die Option wird mit a markiert *
), drücken N
wird es ausschließen und die drücken M
Der Schlüssel beinhaltet es als Modul (die Option wird mit einem markiert M
). Um nach einer bestimmten Option zu suchen, können wir die verwenden /
Schlüssel und geben Sie die String oder Regex an, um nach zu suchen: Die NCURSSE -Schnittstelle sucht nach einer bestimmten Option
xconfig
Durch das Aufrufen dieses Ziels ist es möglich, den Kernel über eine grafische Schnittstelle basierend auf dem zu konfigurieren Qt
Toolkit Wenn die qt-devel
Das Paket ist im System installiert.
Die QT-basierte Konfigurationsschnittstelle
OldConfig
Dieses Ziel ist es nützlich, wenn wir eine bereits vorhandene Kernelkonfiguration als Ausgangspunkt verwenden möchten. Wenn wir dieses Ziel aufrufen, werden wir aufgefordert, nur die im Kernel verfügbaren Funktionen zu konfigurieren, die wir konfigurieren, aber nicht in der ursprünglichen Konfigurationsdatei enthalten sind.
localmodconfig
Wenn Sie dieses Ziel aufrufen. Nur sie werden in die Konfiguration einbezogen, die anderen werden deaktiviert. Dies kann als schnelle Möglichkeit verwendet werden, einen maßgeschneiderten Kernel basierend auf dem aktuellen Zustand einer Maschine zu erhalten.
Lokalyesconfig
Dieses Ziel funktioniert ähnlich wie localmodconfig
Mit einem großen Unterschied: Die Funktionen der derzeit im System geladenen Module werden statisch in den Kernel einbezogen.
Kompilieren und Installieren des Kernels
Sobald wir den Kernel konfiguriert haben, können wir den Quellcode kompilieren. Alles, was wir tun müssen, ist zu rennen:
$ make
Die Operation kann eine Weile dauern, abhängig von den Merkmalen, die wir in den Kernel einbezogen haben. Um den Prozess zu beschleunigen, können wir ausführen machen
mit dem -J
Option und geben Sie die Anzahl der Jobs an, die gleichzeitig ausgeführt werden sollen: Ein für diese Option häufig verwendeter Wert ist die Anzahl der logischen CPU -Kerne + 1. Auf einer Maschine mit 4 logischen Kernen würden wir daher laufen:
$ make -j5
Sobald er zusammengestellt wurde, können wir einfach ausführen, um den Kernel zu installieren:
$ sudo installieren
Die Kernel -Kerndateien werden in die kopiert /Stiefel
Verzeichnis. Um die Kernel -Module zu kompilieren und zu installieren, können wir stattdessen ausführen:
$ sudo machen modules_install
Die Kernelmodule werden in einem Verzeichnis unter installiert /lib/module
benannt nach der Kernelversion. Schließlich müssen wir die GRUB -Konfiguration regenerieren, damit der neue Kernel beim Start verfügbar und ausgewählt werden kann:
$ sudo grub2 -mkconfig -o/boot/grub2/grub.CFG
Verpackung des Kernels
Anstatt den kompilierten Kernel wie oben direkt zu installieren, können wir eine erstellen, um seine Installation und Entfernung über den Systempaketmanager zu verwalten, um eine zu erstellen Drehzahlpaket
. Um die Aufgabe zu erfüllen, müssen wir eine zwischen den verwenden RPM-PKG
Und binrpm-pkg
Ziele. Der erste baut sowohl die Quell- als auch die binären Drehzahlpakete auf, die zweite nur die binäre. Damit dieses Ziel richtig laufen kann, die RPM-Build
Paket muss installiert werden. Um nur das binäre Drehzahlpaket zu erstellen, würden wir ausführen:
$ make binrpm-pkg
Wenn die Operationen ohne Fehler durchgeführt werden, die rpmbuild
Verzeichnisbaum wird in unserem Heimverzeichnis erstellt. Das gebaute RPM -Paket wird in einem Unterverzeichnis von erhältlich sein ~/rpmbuild/rpms
benannt nach der Architektur des Systems.
Eine andere Möglichkeit besteht darin, den Kernel und seine Module in einem komprimierten Tarball zu verpacken, indem Sie einen zwischen den verwenden targz-pkg
, Tarbz2-pkg
Und tarxz-pkg
Ziele, abhängig von der Komprimierung, die wir verwenden möchten. Der Tarball wird im Kernel -Quellverzeichnis erstellt.
Schlussfolgerungen
In diesem Tutorial haben wir gelernt zu wissen, warum Linux als monolithischer Kernel bezeichnet wird und wie seine Komponenten statisch oder als Module konfiguriert werden können. Wir haben gesehen, wie man einen Vanillekern und die verschiedenen Methoden heruntergeladen hat. Schließlich haben wir gesehen, wie man es kompiliert, verpackt und in unserem System installiert. Ein letzter Rat: Wenn Sie sich entscheiden, den Kernel neu zu kompilieren, ist es immer eine gute Idee, einen der von Zielreinigungsziele
Vor fortfahren:
- sauber: Entfernt die meisten generierten Dateien, behalten Sie jedoch die Konfiguration und genügend Build -Unterstützung, um externe Module zu erstellen
- Mrproper: Entfernt alle generierten Dateien + Konfiguration + verschiedene Sicherungsdateien
- Distclean: Führt MRPROPER aus und entfernt auch Editor Backup- und Patch -Dateien
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Linux -Download
- Linux -Konfigurationsdateien: Top 30 am wichtigsten
- Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…
- Dinge zu installieren auf Ubuntu 22.04
- Wie man Kali Linux und Windows 10 Dual -Boot -Start hat
- « So richten Sie einen NFS -Server auf Debian 10 Buster ein
- So installieren Sie Veracrypt auf Debian 10 Buster »