Fråga:
Emulering på en Linux-dator
Alex L
2012-06-13 09:45:48 UTC
view on stackexchange narkive permalink

Hur kan jag ansluta ett SD-kort som innehåller ett Raspberry Pi OS till min Linux-dator och starta operativsystemet i en emulator?

Varför fungerar inte VMWare?

Vad är begränsningarna för denna metod?

Relaterad: Emulering på en Windows-dator

Är inte detta en virtualiseringsfråga istället för en emuleringsfråga?
Jag gillar inte emuleringen till virtualiseringsredigering ... kan vi prata om det?
Det grundläggande problemet är att Pi har en ARM-cpu som är oförenlig med x86 vilket är vad VMWare vet hur man kör. Du behöver en emulator.
Observera att en version av debian anpassad med många av funktionerna i Raspbian (inklusive skrivbordsmiljön PIXEL och de flesta applikationer) är tillgänglig för nedladdning från [Raspberry Pi-webbplatsen] (https://www.raspberrypi.org/blog/pixel -pc-mac /)
Fyra svar:
#1
+56
Jivings
2012-06-14 17:47:26 UTC
view on stackexchange narkive permalink

Ja det här är helt möjligt. I själva verket är det lite annorlunda än vad du tänker.


Preamble

SD-kortet innehåller en bild av operativsystemet . Och fungerar genom att blåsa upp den här bilden när enheten är påslagen.

Som jag förväntar dig att du redan vet blinkar du den här bilden på SD-kortet för att skapa ett fungerande system. Men vad du kan göra innan du blinkar bilden är att leka med den med hjälp av QEMU , som är en processoremulator och tillåter oss att efterlikna ARM-instruktionsuppsättningen.

På det här sättet kommer alla ändringar du gör i bilden (installation, kompilering etc) fortfarande att vara kvar när du blinkar den till SD-kortet.

Jag pratar nu med dig genom hur man använder QEMU för att ladda bilden. Jag kommer att demonstrera med Arch Linux-bilden, men processen ska vara densamma oavsett.


Använda QEMU

Förutsättningar

Du måste skaffa QEMU för ditt system. QEMU borde bara ha ett krav, för att ingångsenheter ska fungera måste du ha SDL-utvecklingspaketet installerat, vilket ska vara tillgängligt från din pakethanterare.

Jag rekommenderar att du laddar ner paketet med din vanliga pakethanterare :

Arch :

  sudo pacman -S sdl qemu  

Ubuntu stark>:

Nyare versioner (sedan 14.04) har ett paket för det:

  sudo apt-get install qemu-system-arm  

För äldre versioner:

  sudo apt-get install libsdl-devsudo add-apt-repository ppa: linaro-maintenanceers / toolssudo apt-get updatesudo apt-get install qemu-system  

Bygg QEMU själv

Alternativt kan du bygga QEMU själv. Det här är bra om du vill prova en ny version, men det kan vara långsamt och vara beredd på många fel under kompileringen! Observera att om man bygger QEMU från deras webbplats måste den kompileras för ARM-support. Så kolla först dina distroförvar. Detta kan göras så;

  mkdir rpi-emu && cd rpi-emuwget http://wiki.qemu.org/download/qemu-1.1.0-1.tar.bz2tar xvjf qemu-1.1.0-1.tar.bz2cd qemu-1.1.0-1./configure –target-list = arm-softmmu, arm-linux-usermakesudo make install  

Kontrollera att du har ARM-stöd med:

  qemu-system-arm --versionQEMU emulator version 1.0,1, Copyright (c) 2003-2008 Fabrice Bellard  

Skaffa bilden

Vi arbetar med Arch Linux, så kommer att använda Arch Arm-bilden. Men ersätt detta med vad du vill arbeta med, eller kanske har du redan en bild. Hoppa i så fall över detta steg.

  wget http://anorien.csc.warwick.ac.uk/mirrors/raspberrypi.org/images/archlinuxarm/archlinuxarm-29-04-2012 /archlinuxarm-29-04-2012.zipunzip archlinuxarm-29-04-2012.zip 

För att QEMU ska fungera behöver vi också kärnbilden (som skulle finnas i .img-filen) .

Obs: Jag tror inte att detta steg är nödvändigt för Debian. Bekräfta någon.

Lyckligtvis finns det förkompilerade bilder tillgängliga, och du kan använda den från här ( direktnedladdning).

TODO: Demonstrera hur man kompilerar en kärnbild här?

Starta den virtuella datorn

Du borde nu ha:

  • En img-fil som du kan verifiera med den medföljande sha1 (rekommenderas).
  • En kärnbild (zImage).
  • QEMU för ARM.

Den virtuella maskinen kan nu startas med följande långvariga kommando:

  qemu-system-arm -kernel zImage -cpu arm1176 -M versatilepb -serie stdio -append "root = / dev / sda2" -hda archlinuxarm-29-04-2012.img -klock dynticks  kod > 

Observera att du bara har flera hundra megabyte lagringsutrymme med den här metoden (vad som helst som finns kvar på bilden). En virtuell hårddisk kan skapas genom att följa QEMU-användarhandboken.

Det här är mer vad jag letade efter - tack! Detta är ett utmärkt referenssvar
@Alex Inga problem, låt mig veta om du behöver mig att utarbeta. Berätta också om du får en debian-bild som fungerar och vi kan lägga till den i instruktionerna om de är annorlunda.
Det finns en ganska grundlig genomgång [här] (http://linux-news.org/index.php/2012/06/02/raspberry-pi-emulation/)
@Alex Det är bra, jag hade inte sett det.
Detta är smärtsamt långsamt utan kvm ...
@AlexChamberlain Det är ganska bra för mig, åtminstone lika snabbt som Pi faktiskt.
Vad är resultatet av `lsmod | grep kvm`?
Ingenting, jag använder inte kvm.
Det här svaret passar mycket bättre för [den här frågan] (http://raspberrypi.stackexchange.com/q/249/20), medan du länkar till det här svaret på den programvarucentrerade frågan och lägger till mer information om hur du överför bild till ett SD-kort skulle ge ett bättre svar på denna fråga.
@jandjorgensen Kanske har du rätt. Hur kan detta åtgärdas?
Jag föreslår att du flyttar större delen av din genomgång till den andra frågan och sedan länkar till den i det här svaret. Andra medlemmar i samhället kan ha ett bättre förslag.
Den andra är stängd, så allt jag kan göra är att rösta för att öppna igen
@jandjorgensen http: // meta.raspberrypi.stackexchange.com / a / 122/35
Skulle samma vara möjligt med Raspbian?
Om kärnbilden istället är img-filen, varför måste du ladda ner den separat? Detta är ett onödigt och felbenäget steg.
Det skulle vara coolt om raspbian illustrerades istället eftersom det är den officiella distro. Bilder nedladdade från: https://www.raspberrypi.org/downloads/raspbian/ Tyvärr kommer det inte heller med någon kompilerad kärna. Och då behövs några in-QEMU-tweaks: http://embedonix.com/articles/linux/emulating-raspberry-pi-on-linux/
#2
+8
Ciro Santilli 郝海东冠状病六四事件法轮功
2016-08-26 00:13:47 UTC
view on stackexchange narkive permalink

Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2016-05-27, vaniljkärna

enter image description here

  1. Kompilera QEMU 2.9.0 från källa:

      sudo apt-get build-dep qemu-system-armgit clone - recursive git: // git. qemu-project.org/qemu.gitcd qemugit checkout v2.9.0./configuremake `nproc`  
  2. Ladda ner bild och extrahera kärnan och dts från den:

    1. Ladda ner bilden och packa upp den:

        wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05- 31 / 2016-05-27-raspbian-jessie.zipunzip 2016-05-27-raspbian-jessie.zip  
    2. Montera den andra bilden av partitionen. Det enklaste sättet är:

        sudo losetup -f --show -P 2016-05-27-raspbian-jessie.img  

      Detta fungerar bara med senaste losetup på Ubuntu 16.04, andra metoder på: https://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device/ 496576 # 496576

      Detta skriver ut en loop-enhet, t.ex.:

        / dev / loop0  

      så vi gör :

        sudo mkdir / mnt / rpisudo mount / dev / loop0p1 / mnt / rpicp /mnt/rpi/kernel7.img bcm2709-rpi-2-b.dtb .sudo umount / mnt / rpisudo losetup -d /dev/loop0
  3. Run :

    ./arm-softmmu / qemu-system-arm \ -M raspi2 \ -append "rw earlyprintk loglevel = 8 console = ttyAMA0,115200 dwc_otg.lpm_enable = 0 root = / dev / mmcblk0p2" \ -cpu arm1176 \ -dtb bcm2709-rpi-2-b .dtb \ -sd 2016-05-27-raspbian-jessie.img \ -kernel kernel7.img \ -m 1G \ -smp 4 \ -serie stdio \;  
  4. ol>

    Du kan sedan logga in på terminalen som visas på din värdperiod inal.

    Nuvarande begränsningar:

  • -M raspi2 lades till i QEMU 2.6.0 och Ubuntu 16.04 har bara QEMU 2.5.0, så vi måste kompilera QEMU från källan. Men det här är inte svårt.
  • GUI visar men svarar inte på musen / tangentbordet, testad på både SDL och VNC. Men CLI fungerar dock perfekt. Så du kan lika gärna använda Lite-avbildningen som har GUI för tillfället.
  • inget nätverk

Ubuntu 16.04, QEMU 2.5.0, Raspbian 2016- 05-27, modifierad kärna

Denna metod använder -M versatilepb som finns på QEMU 2.5.0 av Ubuntu 16.04.

Nackdelen är att du måste ladda ner en modifierad kärna (se Emulera med Qemu: varför den extra kärnan?), och ändra bilden, så den blir mindre representant för det verkliga systemet.

  1. Ladda ner: https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4. 12-jessie

    Vi väljer 4.4.12 eftersom det är kärnversionen i Raspbian-bilden.

    Processen för att generera den kärnan blob beskrivs i förvaret på: https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools

    Varför den här extra kärnbilden är behövs: Emulerar med Qemu: varför ext ra kärna?

  2. Ändra Raspbian-bilden som nämnts på: https://github.com/dhruvvyas90/qemu-rpi-kernel/wiki/ Emulering-Jessie-bild-med-4.x.xx-kärna / 0068f0c21d942b0f331e18014ff8e22c20cada5c

    Sammanfattning :

    1. Montera bilden precis som vi gjorde för -M raspi2 , men använd den andra partitionen istället för den första:

        sudo mount / dev / loop0p2 / mnt / rpi  
    2. Redigera bilden:

        # Kommentera raden som finns där med #sudo vim /mnt/rpi/etc/ld.so.preload# Kommentar ut raderna av typen: "/ dev / mmcblk *" sudo vim / mnt / rpi / etc / fstab  
  3. Kör :

      sudo apt-get install qemu-system-armqemu-system-arm \ -kernel kernel-qemu-4.4.12-jessie \ -cpu arm1176 \ -m 256 \ -M versatilepb \ -ingen starta om \ -serien stdio \
    -append "root = / dev / sda2 panic = 1 rootfstype = ext4 rw" \ -hda 2016-05-27-raspbian-jessie.img  

[misslyckades] Ubuntu 17.04, QEMU 2.8.0 -M raspi2, Raspbian 2016-05-27, vaniljkärna

På denna nyare Ubuntu är QEMU 2.8.0 standard, så vi behöver inte kompilera QEMU från källan för -M raspi2 . 2.8.0 hänger dock vid start efter meddelandet:

  Konsol: byter till färgrambufferenhet 100x30  

Detta visar hur instabil -M raspi2 är fortfarande.

[misslyckades] Ubuntu 16.04, QEMU 2.9.0 -M raspi2, Raspbian 2017-08-16, vaniljkärna

På denna nyare bild, med samma metod för 2016-05-27, får kärnan panik vid start med:

  Lägg till ett korrekt "root =" startalternativ; här är de tillgängliga partitionerna: ... [4.138114] --- [slut Kärnpanik - synkroniseras inte: VFS: Det går inte att montera root fs på okänt block (0,0)  

bztsrc / raspi3-tutorial RPI3 bare metal på QEMU

https://github.com/bztsrc/raspi3-tutorial är en bra uppsättning exempel som bara fungerar på QEMU, ultraquick kommer igång på: Hur man gör QEMU-emulering för ren metall Raspberry Pi-bilder

Dude, du är fantastisk!
#3
+4
user13
2012-06-13 10:10:44 UTC
view on stackexchange narkive permalink

Du kan inte göra vad du föreslår, för Raspberry Pi har en annan processorarkitektur än de flesta datorer. Medan de flesta datorer är x86-baserade är RPi en ARM-baserad dator.

Detta är samma anledning som varför du inte kan köra, till exempel Microsoft Windows på RPi.

VmWare fungerar inte eftersom det bara kan virtualisera x86-baserade operativsystem (32-bitars och 64-bitars). Det finns andra emulatorer som kan virtualisera ARM, som QEMU, men de kör full programemulering utan inbyggt CPU virtualizaton-stöd, så du kan förvänta dig att de blir ganska långsamma.

Kan du inkludera lite mer information om ** hur man ** emulerar RasPi på x86 (dvs. med QEMU)? Det var det jag verkligen ville fokusera den här frågan på, även om förklaringen är uppskattad.
Ledsen att jag röstar ner, men detta förklarar inte hur man uppnår vad frågaren behöver.
Å andra sidan tar det upp andra punkter i frågan som det andra svaret inte gör. Jag tror att dina nedröstningar inte är meriterade (det är inte som att den här frågan leder heller)
Även utan inbyggt dygdstöd är långsam ganska relativt eftersom du förmodligen virtualiserar på en maskin som är mycket kraftfullare än en hallon-pi
#4
  0
iotify
2017-02-01 22:43:37 UTC
view on stackexchange narkive permalink

Du kan enkelt prova en Raspberry Pi-simulator som ingår i sensor, kommandorad och filredigerare på iotify.io. Kolla in vår dokumentation på https://docs.iotify.io/ för att komma igång med de olika projekten, operativsystemet och göra dig bekant med Raspberry Pi-arbetsmiljön.

enter image description here

Även om detta tekniskt är ett svar, använder du helt klart vår webbplats för gratis reklam. Medan det du erbjuder kan vara gratis är det fortfarande inte ok. Vi uppskattar ditt bidrag till samhället men ta din annonsering någon annanstans.
@DarthVader: Eftersom affischen gjorde det känt att de är anslutna till produkten, och det svarar på frågan, är jag benägen att kalla det acceptabelt.


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...