Wie kann ich eine SD-Karte mit einem Raspberry Pi-Betriebssystem an meinen Linux-PC anschließen und das Betriebssystem in einem Emulator starten?
Warum funktioniert VMWare nicht?
Was sind die Einschränkungen dieser Methode?
Verwandte: Emulation auf einem Windows-PC
Antworten:
Ja, das ist völlig möglich. In Wirklichkeit ist es jedoch ein bisschen anders, als Sie denken.
Präambel
Die SD-Karte enthält ein Image des Betriebssystems. Und funktioniert, indem dieses Bild aufgeblasen wird, wenn das Gerät eingeschaltet ist.
Wie Sie wahrscheinlich bereits wissen, flashen Sie dieses Image auf die SD-Karte, um ein funktionierendes System zu erstellen. Was Sie jedoch tun können, bevor Sie das Bild flashen , ist, mit QEMU , einem Prozessoremulator , ein wenig herumzuspielen und den ARM-Befehlssatz zu emulieren.
Auf diese Weise bleiben alle Änderungen, die Sie am Image vornehmen (Installieren, Kompilieren usw.), erhalten, nachdem Sie es auf die SD-Karte geflasht haben.
Ich werde Ihnen jetzt erklären, wie Sie mit QEMU das Image laden können. Ich werde es mit dem Arch Linux-Image demonstrieren, aber der Prozess sollte trotzdem der gleiche sein.
QEMU verwenden
Voraussetzungen
Sie müssen QEMU für Ihr System erwerben . QEMU sollte nur eine Anforderung haben. Damit Eingabegeräte funktionieren, muss das SDL-Entwicklungspaket installiert sein, das bei Ihrem Paketmanager erhältlich sein sollte.
Ich empfehle, das Paket mit Ihrem regulären Paketmanager herunterzuladen:
Bogen :
Ubuntu :
Neuere Versionen (seit 14.04) haben ein Paket dafür:
Für ältere Versionen:
QEMU selbst erstellen
Alternativ können Sie QEMU selbst erstellen. Dies ist großartig, wenn Sie eine neue Version ausprobieren möchten, diese kann jedoch langsam sein und auf viele Fehler beim Kompilieren vorbereitet sein! Beachten Sie, dass QEMU für die ARM-Unterstützung kompiliert werden muss, wenn es von ihrer Website erstellt wird. Überprüfen Sie also zuerst Ihre Distributionsspeicher. Das kann so gemacht werden;
Stellen Sie sicher, dass Sie ARM-Unterstützung haben mit:
Das Bild erhalten
Wir arbeiten mit Arch Linux, verwenden also das Arch Arm-Image. Aber ersetzen Sie dies durch das, womit Sie arbeiten möchten oder vielleicht haben Sie bereits ein Bild. In diesem Fall überspringen Sie diesen Schritt.
Damit QEMU funktioniert, benötigen wir auch das Kernel-Image (das sich in der IMG-Datei befindet).
Zum Glück gibt es vorkompilierte Bilder zur Verfügung, und Sie können das einer vom nutzen hier ( direkter Download ).
Starten der VM
Sie sollten jetzt haben:
Die virtuelle Maschine kann jetzt mit dem folgenden langwierigen Befehl gestartet werden:
quelle
Ubuntu 16.04, QEMU 2.9.0-M raspi2, Raspbian 2016-05-27, Vanillekern
Kompilieren Sie QEMU 2.9.0 aus dem Quellcode:
Lade das Bild herunter und extrahiere den Kernel und dts daraus:
Lade das Bild herunter und entpacke es:
Hängen Sie das zweite Image der Partition ein. Der einfachste Weg ist:
Dies funktioniert nur mit
losetup
Ubuntu 16.04, andere Methoden unter: https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Dies druckt ein Loop-Gerät, zB:
so machen wir es:
Lauf:
Sie können sich dann an dem Terminal anmelden, das auf Ihrem Host-Terminal angezeigt wird.
Aktuelle Einschränkungen:
-M raspi2
wurde in QEMU 2.6.0 hinzugefügt, und Ubuntu 16.04 hat nur QEMU 2.5.0, daher müssen wir QEMU aus dem Quellcode kompilieren. Das ist aber nicht schwer.Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, geänderter Kernel
Diese Methode verwendet
-M versatilepb
die auf der QEMU 2.5.0 von Ubuntu 16.04 vorhandene.Der Nachteil ist, dass Sie einen modifizierten Kernel herunterladen müssen (siehe Emulieren mit Qemu: Warum der zusätzliche Kernel? ) Und das Image modifizieren müssen, damit es weniger repräsentativ für das reale System ist.
Download: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Wir wählen,
4.4.12
da dies die Kernel-Version im Raspbian-Image ist.Der Prozess zum Generieren dieses Kernel-Blobs ist im Repository unter https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools beschrieben
Warum wird dieses zusätzliche Kernel-Image benötigt: Emulieren mit Qemu: Warum der zusätzliche Kernel?
Ändern Sie das Raspbian-Image wie folgt: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulating-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Zusammenfassung:
Hängen Sie das Image genauso ein, wie wir es für das getan haben
-M raspi2
, aber verwenden Sie die zweite Partition anstelle der ersten:Bearbeiten Sie das Bild:
Lauf:
[fehlgeschlagen] Ubuntu 17.04, QEMU 2.8.0-M raspi2, Raspbian 2016-05-27, Vanillekernel
Auf diesem neueren Ubuntu ist QEMU 2.8.0 der Standard, daher müssen wir QEMU nicht aus dem Quellcode für kompilieren
-M raspi2
. 2.8.0 hängt jedoch beim Booten nach der Meldung:Dies zeigt, wie instabil
-M raspi2
noch ist.[fehlgeschlagen] Ubuntu 16.04, QEMU 2.9.0-M raspi2, Raspbian 2017-08-16, Vanillekernel
Auf diesem neueren Image kommt der Kernel nach der gleichen Methode für den 27.05.2016 beim Booten in Panik mit:
bztsrc/raspi3-tutorial
RPI3 Bare Metal auf QEMUhttps://github.com/bztsrc/raspi3-tutorial ist eine gute Sammlung von Beispielen, die nur mit QEMU funktionieren. Eine schnelle Einführung finden Sie unter: So erstellen Sie eine QEMU-Emulation für Bare-Metal-Raspberry-Pi-Bilder
quelle
Sie können nicht tun, was Sie vorschlagen, da Raspberry Pi eine andere Prozessorarchitektur als die meisten PCs hat. Während die meisten PCs x86-basiert sind, ist RPi ein ARM-basierter Computer.
Dies ist der gleiche Grund, warum Sie beispielsweise Microsoft Windows unter RPi nicht ausführen können.
VmWare funktioniert nicht, da es nur x86-basierte Betriebssysteme (32-Bit und 64-Bit) virtualisieren kann. Es gibt andere Emulatoren, die ARM virtualisieren können, z. B. QEMU. Auf diesen wird jedoch eine vollständige Software-Emulation ohne native CPU-Virtualisierungsunterstützung ausgeführt, sodass Sie davon ausgehen können, dass sie recht langsam sind.
quelle
Sie können problemlos einen Himbeer-Pi-Simulator ausprobieren, der im Lieferumfang von Sensor, Befehlszeile und Datei-Editor von iotify.io enthalten ist. Lesen Sie unsere Dokumentation unter https://docs.iotify.io/ , um mit den verschiedenen Projekten und dem Betriebssystem zu beginnen und sich mit der Arbeitsumgebung von Raspberry Pi vertraut zu machen.
quelle