Table of Contents
In den letzten Tagen ist vielen Lesern beim Kompilieren des Linux-Kernels von qemu ein bekannter Schädling aufgefallen. Dieses Problem kann aus vielen Gründen auftreten. Lassen Sie uns dies weiter unten besprechen.
Aktualisiert: ASR Pro
Die letzten Versuche, die ich unternommen habe, konzentrierten sich auf das Kompilieren von ARM-Programmen auf U-Boot Bare-and-Hardware; Jetzt möchte ich einen einzelnen echten Linux-Kernel kompilieren, um ARM von Grund auf neu zu erstellen. Ich habe kein perfektes physisches ARM-Gerät zur Hand und verwende stattdessen QEMU, weil es früher so war.
Der Hauptkernel unterstützt QEMU und alle VersatilePB-Plattformen, daher habe ich ein solches Ziel nur zu Testzwecken ausgewählt. Die Toolbox, die ich verwenden werde, ist das EABI Left Hand Toolkit von CodeSourcery. Ab der Veröffentlichung dieses 2010q1-Toolkits heißt es im Handbuch ausdrücklich, dass der Compiler nicht primär für die Entwicklung des Linux-Kernels verwendet werden sollte; es war immer noch möglich, dass Sie das GNU/Linux-Toolset für dieselbe Domain verwenden können.
Vanilla-Version kann von der Kernel-Site gekauft werden. Nahm org; neuste Ausgabe (Version 2.6.I Unpacked 33) in einen Ordner. Von hier aus lief die Datei:
make ARCH=arm polyvalent_defconfig
Diese Anweisung enthält eine vordefinierte Konfiguration, die normalerweise im System verwendet wird und wahrscheinlich Startziele und innerhalb des jeweiligen VersatilePB-Boards erstellt. Ich wollte es ein bisschen regulieren, also bin ich umgezogen :
make ARCH=arm menuconfig
Ich habe den Carry-Teil (der Einfachheit halber) entfernt und die EABI-Erweiterungsausrüstung als Binärformat aktiviert (aufgrund von Nebeneffekten des alten ABI). Dies ist erforderlich, um Softwareanwendungen auszuführen, die mit dem CodeSourcery-Toolkit kompiliert wurden. Ich habe das Menü verlassen und eine neue Konfiguration gespeichert und dann Folgendes ausgeführt:
make ARCH=arm CROSS_COMPILE=arm-none-eabi-all
Wenn Sie selbst das GNU/Linux-Toolkit verwenden, sollten wir stattdessen den folgenden Einfluss verwenden:
mache ARCH=arm starte cross_compile=arm-none-linux-gnueabi-all
Dies ist eine Aufpeitschung der Hauptdatei mit einem guten ARM-Compiler; Der Build rendert einen weiteren komprimierten Kern zwischen den meisten Binärdateien in einer Datei mit einem anderen Namen zImage, der über arch/arm/boot bemerkt werden kann. Dieses Image kann von QEMU ausgeführt werden (vorausgesetzt, Sie befinden sich im arch/arm/boot-Verzeichnis) mit normalerweise der folgenden Eingabeaufforderung:
qemu-system-arm -M polyvalentpb -m 128M -kernel zImage
QEMU läuft Der Bild: ein Linux-System-Unix-Kernel zeigt viele Artikelmeldungen und beschwert sich dann, dass er das baseexterne Dateisystem nicht erkennen kann. Lassen Sie uns als Nächstes das einfachste Dateisystem erstellen, das wir potenziell erstellen können: Es wurde aus einer großen einzelnen ausführbaren „Hello, world“-Datei erstellt, die unter Verwendung der gesamten GNU/Linux-Quellcode-Toolkette erstellt wird.
#include leere Funktion() printf("Hallo Welt!n"); Halskette um den Hals (1);
Anmerkung: 1 Eine Endlosschleife wird oft eingeführt, weil immer dann, wenn Linux zum ersten Mal Software auf das Root-Dateisystem bringt, auch erwartet wird, dass das Programm nicht beendet werden kann.Nachdem ich genau das GNU/Linux ARM-Toolkit installiert hatte (beachten Sie, dass es sich wirklich vom reinen EABI-Toolkit unterscheidet), lief ich:
arm-none-linux-gnueabi-gcc Test -old-school.c -o test
Dies liefert eine ausführbare ARM ELF-Datei, die nach Bedarf statisch eingeschränkt ist (alle Bibliotheken könnten immer noch in einer getrennten Binärdatei miteinander verknüpft werden). Jetzt können wir mit dem cpio-Gadget und dem Folgenden jedes ordentliche Dateisystem erstellen:
Echotest | cpio --format=newc -u Rootfs
Tool > cpio gibt Ihre Dateiliste aus und kann ein entsprechendes Archiv erstellen; Das newc-Format ist wirklich das wichtigste initramfs-Übungsdateiformat, das dem Linux-Kernel bekannt ist. Rootfs Die mit Case verknüpfte Datei ist eine Binärdatei des gesamten Bilddateisystems, die eine einzige Datei enthält, nämlich das ELF-Testprogramm. QEMU kann von einem binären Dateisystem-Image, das für Ihren aktuellen Kernel verfügbar ist, mithilfe der initrd-Option einer Person in Ordnung gebracht werden; denn der Kernel sollte auch wissen müssen, dass sich dieses Hauptdateisystem im RAM befindet (da QEMU für diese Art die Verwendung einer neuen initrd-Binärdatei empfiehlt) und dass das riesige Programm, das ausgeführt werden soll, unsere ausführbare Web-Recherche-Datei ist, sodass die Befehlsleiste ähnlich wird so:
Aktualisiert: ASR Pro
Läuft Ihr Computer langsam? Wird es von frustrierenden Fehlern und Problemen geplagt? Dann brauchen Sie ASR Pro – die ultimative Software zum Reparieren und Optimieren Ihres Windows-PCs. Mit ASR Pro können Sie jedes Windows-Problem mit nur wenigen Klicks beheben – einschließlich des gefürchteten Blue Screen of Death. Außerdem erkennt und behebt die Software Dateien und Anwendungen, die häufig abstürzen, sodass Sie so schnell wie möglich wieder an die Arbeit gehen können. Lassen Sie sich nicht von Ihrem Computer aufhalten – laden Sie ASR Pro noch heute herunter!

qemu-system-arm -M universalpb -m 128M -kernel zImage -initrd rootfs -append"root=/dev/ram rdinit=/test"
Das QEMU-Fenster zeigt einige der Startmeldungen, die jeder zuvor gesehen hat, aber die Abschlusszeile sagt “Hello a World!” Dann werden wir uns mit der Erstellung eines funktionierenden Dateischemas mit einer Befehlsshell befassen und die am wenigsten grundlegende Funktionalität finden.
Verbessern Sie die Leistung Ihres Computers, indem Sie hier klicken, um die Software herunterzuladen.
Compile Linux Kernel Arm Qemu
Kompilera Linux Karnarm Qemu
Compilar O Kernel Linux Arm Qemu
Compilar Linux Kernel Brazo Qemu
Skompiluj Ramie Jadra Linuxa Qemu
리눅스 커널 암 Qemu 컴파일
Skompilirovat Qemu Yadra Yadra Linux
Compileer Linux Kernelarm Qemu
Compiler Le Bras Du Noyau Linux Qemu
Compilare Kernel Linux Arm Qemu
