Jak podłączyć kartę SD z systemem Raspberry Pi do komputera z systemem Linux i uruchomić system operacyjny w emulatorze?
Dlaczego VMWare nie działa?
Jakie są ograniczenia tej metody?
Powiązane: Emulacja na komputerze z systemem Windows
Jak podłączyć kartę SD z systemem Raspberry Pi do komputera z systemem Linux i uruchomić system operacyjny w emulatorze?
Dlaczego VMWare nie działa?
Jakie są ograniczenia tej metody?
Powiązane: Emulacja na komputerze z systemem Windows
Odpowiedzi:
Tak, jest to całkowicie możliwe. Jednak w rzeczywistości jest trochę inaczej niż myślisz.
Preambuła
Karta SD zawiera obraz systemu operacyjnego. I działa poprzez nadmuchanie tego obrazu, gdy urządzenie jest włączone.
Oczekuję, że już wiesz, że flashujesz ten obraz na kartę SD, aby stworzyć działający system. Jednak przed flashowaniem obrazu możesz się z nim pobawić za pomocą QEMU , który jest emulatorem procesora i pozwala nam emulować zestaw instrukcji ARM.
W ten sposób wszelkie zmiany dokonane w obrazie (instalacja, kompilacja itp.) Będą nadal dostępne po flashowaniu go na kartę SD.
Omówię teraz sposób użycia QEMU do załadowania obrazu. Będę demonstrować z obrazem Arch Linux, ale proces powinien być taki sam, niezależnie od tego.
Korzystanie z QEMU
Wymagania wstępne
Będziesz musiał nabyć QEMU dla swojego systemu. QEMU powinien mieć tylko jeden wymóg, aby urządzenia wejściowe działały, musisz mieć zainstalowany pakiet programistyczny SDL, który powinien być dostępny w menedżerze pakietów.
Zalecam pobranie pakietu za pomocą zwykłego menedżera pakietów:
Łuk :
Ubuntu :
Nowsze wersje (od 14.04) mają pakiet:
W przypadku starszych wersji:
Samodzielne budowanie QEMU
Alternatywnie możesz samodzielnie zbudować QEMU. Jest to świetne, jeśli chcesz wypróbować nową wersję, ale może być powolna i być przygotowanym na wiele błędów podczas kompilacji! Pamiętaj, że jeśli budujesz QEMU z ich strony internetowej, musisz go skompilować do obsługi ARM. Najpierw sprawdź repozytoria dystrybucji. Można to zrobić w ten sposób;
Sprawdź, czy masz wsparcie ARM za pomocą:
Uzyskiwanie obrazu
Pracujemy z Arch Linux, więc będziemy używać obrazu Arch Arm. Ale zamień to na to, z czym chcesz pracować, a może masz już obraz. W takim przypadku pomiń ten krok.
Aby QEMU działało, potrzebujemy również obrazu jądra (który byłby w pliku .img).
Na szczęście dostępne są prekompilowane obrazy i możesz użyć tego z tego miejsca ( bezpośrednie pobieranie ).
Uruchamianie maszyny wirtualnej
Powinieneś teraz mieć:
Maszynę wirtualną można teraz uruchomić za pomocą następującego długiego polecenia:
źródło
Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 27.05.2016, jądro wanilii
Skompiluj QEMU 2.9.0 ze źródła:
Pobierz obraz i wyodrębnij z niego jądro i dts:
Pobierz obraz i rozpakuj go:
Zamontuj drugi obraz partycji. Najprostszym sposobem jest:
Działa to tylko z najnowszą
losetup
wersją Ubuntu 16.04, innymi metodami na: https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/496576#496576Wyświetla to urządzenie pętli, np .:
więc robimy:
Biegać:
Następnie możesz zalogować się do terminala wyświetlanego na terminalu hosta.
Obecne ograniczenia:
-M raspi2
został dodany w QEMU 2.6.0, a Ubuntu 16.04 ma tylko QEMU 2.5.0, więc musimy skompilować QEMU ze źródła. Ale to nie jest trudne.Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016-05-27, zmodyfikowane jądro
Ta metoda wykorzystuje,
-M versatilepb
który jest obecny w QEMU 2.5.0 Ubuntu 16.04.Minusem jest to, że musisz pobrać zmodyfikowane jądro (patrz Emulowanie za pomocą Qemu: dlaczego dodatkowe jądro? ) I zmodyfikować obraz, aby był mniej reprezentatywny dla prawdziwego systemu.
Pobierz: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie
Wybieramy,
4.4.12
ponieważ jest to wersja jądra na obrazie Raspbian.Proces generowania tego obiektu blob jądra opisano w repozytorium pod adresem : https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools
Dlaczego ten dodatkowy obraz jądra jest potrzebny: Emulacja za pomocą Qemu: dlaczego dodatkowe jądro?
Zmodyfikuj obraz Raspbian, jak wspomniano na stronie : https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/Emulations-Jessie-image-with-4.x.xx-kernel/0068f0c21d942b0f331e18014ff8e22c20cada5c
Podsumowanie:
Zamontuj obraz tak, jak zrobiliśmy to dla
-M raspi2
, ale użyj drugiej partycji zamiast pierwszej:Edytuj obraz:
Biegać:
[nieudane] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 27.05.2016, jądro wanilii
W tym nowszym Ubuntu QEMU 2.8.0 jest domyślna, więc nie musimy kompilować QEMU ze źródła
-M raspi2
. Jednak 2.8.0 zawiesza się przy starcie po komunikacie:To pokazuje, jak niestabilny
-M raspi2
jest nadal.[nieudane] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, jądro wanilii
Na tym nowszym obrazie, przy użyciu tej samej metody dla 27.05.2016, jądro wpada w panikę podczas rozruchu z:
bztsrc/raspi3-tutorial
RPI3 bare metal na QEMUhttps://github.com/bztsrc/raspi3-tutorial to dobry zestaw przykładów, które działają tylko na QEMU, ultraszybkie rozpoczęcie pracy: Jak wykonać emulację QEMU dla nagich obrazów Raspberry Pi
źródło
Nie możesz zrobić tego, co sugerujesz, ponieważ Raspberry Pi ma inną architekturę procesorów niż większość komputerów. Podczas gdy większość komputerów PC jest oparta na architekturze x86, RPi jest komputerem opartym na ARM.
Jest to ten sam powód, dla którego nie można uruchomić na przykład Microsoft Windows na RPi.
VmWare nie będzie działać, ponieważ może wirtualizować tylko systemy operacyjne oparte na x86 (32-bitowe i 64-bitowe). Istnieją inne emulatory, które mogą wirtualizować ARM, takie jak QEMU, ale są one uruchomione w pełnej emulacji oprogramowania bez natywnej obsługi wirtualizacji procesora, więc można oczekiwać, że będą one działać bardzo wolno.
źródło
Możesz łatwo wypróbować symulator Raspberry Pi dołączony do czujnika, wiersza poleceń i edytora plików na iotify.io. Sprawdź naszą dokumentację na https://docs.iotify.io/, aby rozpocząć różne projekty, system operacyjny i zapoznać się ze środowiskiem pracy Raspberry Pi.
źródło