GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Kompilieren und Installieren eines Kernel.org-Kernels auf einem benutzerdefinierten Volume auf der Festplatte?

Ich möchte einen Kernel.org-Kernel auf einem benutzerdefinierten Festplattenlaufwerk kompilieren und installieren, sagen wir /dev/sda5 , anstatt mit meinen aktuellen Ubuntu-Verzeichnissen zusammengeführt zu werden.

Ich kann überall im Internet Informationen über den Konfigurations- und Kompilierungsprozess finden, aber es gibt keinen Hinweis darauf, wie man den Kernel auf ein benutzerdefiniertes Volume legt (anders als die gebootete Distribution, die Sie zum Zeitpunkt der Kompilierung verwenden). Was ich verlange, ist, wie wir 2 verschiedene Distributionen auf 2 verschiedenen Volumes auf 1 HDD installieren können. Stellen Sie sich jetzt meinen benutzerdefinierten Kernel als eine weitere Distribution vor.

Akzeptierte Antwort:

Sie können einen Kernel überall kompilieren, einschließlich Ihres Home-Verzeichnisses. Die einzige Zeit, in der Verzeichnisse außerhalb des Build-Baums geändert werden, ist, wenn Sie eine der install*-Anweisungen ausführen Ziele. Um also einen Kernel zu installieren, gehen Sie wie folgt vor:

cd $SOME_DIRECTORY
tar -xjvf linux-$VERSION.tar.bz2
cd linux-$VERSION
make mrproper menuconfig
# Configure the kernel here.
# Now build it using all your CPU threads in parallel.
make -j$(grep -c processor /proc/cpuinfo) bzImage modules

Nachdem Sie den Kernel konfiguriert haben, wird er erstellt. An diesem Punkt haben Sie eine Kernel-Binärdatei (vmlinux) und ein bootfähiges Kernel-Image unter arch/$YOUR_ARCHITECTURE/boot/bzImage.

Wenn Sie einen monolithischen Kernel erstellen, sind Sie fertig. Kopieren Sie die unkomprimierte Datei (vmlinux ) oder komprimierte Datei (bzImage ) auf Ihr gewünschtes Volume, konfigurieren Sie bei Bedarf den Bootmanager und los geht's.

Wenn Sie Module installieren müssen und davon ausgehen, dass Sie Ihr Zielvolume auf /mnt gemountet haben, könnten Sie sagen:

INSTALL_MOD_PATH=/mnt \
INSTALL_PATH=/mnt/boot \
make modules_install

Dadurch wird das Kernel-Image nach /mnt/boot kopiert und die Module nach /mnt/lib/modules/$VERSION .

Bitte beachten Sie, dass ich das zu sehr vereinfache. Wenn Sie Hilfe beim manuellen Erstellen des Kernels benötigen, sollten Sie einige der Dokumente in der Documentation/ des Kernel-Quellbaums lesen Unterverzeichnis. Die README Datei erklärt Ihnen auch, wie Sie es im Detail erstellen und installieren.

Das Booten des Kernels ist jedoch eine andere Geschichte. Die meisten modernen Distributionen verwenden ein anfängliches RAMdisk-Image, das eine Menge Treiber für die Hardware enthält, die benötigt wird, um den Rest des Kernels (Blockgeräte, Dateisysteme, Netzwerke usw.) aufzurufen. Dieser Prozess wird dieses Bild nicht erstellen. Je nachdem, was Sie tun müssen (was tun müssen Sie tun?), können Sie ein vorhandenes verwenden oder mithilfe der Toolchain Ihrer Distribution ein neues erstellen. Sie sollten die Dokumentation zu update-initramfs überprüfen .

Es gibt jedoch auch andere Probleme. Mit der Standard-Toolchain können Sie keinen Kernel für eine andere Architektur oder Unterarchitektur kompilieren. Beachten Sie, dass in einigen Fällen sogar Kernel, die auf einem bestimmten Typ von x86-Boxen kompiliert wurden, auf bestimmten anderen Typen von x86-Boxen nicht funktionieren. Es hängt alles von der Kombination der Subarchitekturen und der Kernelkonfiguration ab. Das Kompilieren über Architekturen hinweg (z. B. das Erstellen eines ARM-Kernels auf einem x86-Rechner) kommt überhaupt nicht in Frage, es sei denn, Sie installieren eine geeignete Cross-Compilation-Toolchain.

Verwandte:Linux – Dateien verlieren, wenn ich den Cache leeren (echo 3> /proc/sys/vm/drop_caches)?

Wenn Sie jedoch versuchen, eine andere Installation oder einen anderen Computer zu retten, könnte eine Rettungsdiskette praktischer sein, als einen solchen benutzerdefinierten Kernel zu erstellen.

Noch etwas:Wenn Sie versuchen, einen Kernel für einen anderen Computer zu erstellen, der bootet, die gleiche Architektur wie der ist, auf dem Sie kompilieren, und ein Debian- oder Debian-ähnliches Betriebssystem (Ubuntu zählt) ausführt, können Sie den installieren kernel-package Paket (sudo aptitude install kernel-package ). Entpacken Sie dann den Kernel, cd zum Stamm des Quellbaums und sagen Sie:

CONCURRENCY_LEVEL=$(grep -c processor /proc/cpuinfo) \
sudo make-kpkg --initrd binary-arch

Dies wird die notwendigen Patches anwenden, den Kernel konfigurieren, ihn bauen und als .deb-Paket packen (eigentlich ein paar Pakete). Alles, was Sie tun müssen, ist es auf Ihrem Zielsystem zu installieren und fertig.


Linux
  1. So installieren und testen Sie Ansible unter Linux

  2. So installieren und verwenden Sie Traceroute unter Linux

  3. Installieren und Einrichten von Grafana unter Linux

  4. Was ist nach der Installation von Arch Linux zu tun?

  5. Wie viel Größe wird beim Kompilieren des Linux-Kernels benötigt?

Installieren Sie Linux Kernel 4.15 in RPM- und DEB-basierten Systemen

Installieren und konfigurieren Sie Ansible unter Linux

Installieren und Konfigurieren von Jenkins unter Linux

So installieren und verwenden Sie phpMyAdmin unter Linux

So installieren und verwenden Sie den fd-Befehl unter Linux

So installieren und verwenden Sie Nu Shell unter Linux