如何将包含Raspberry Pi操作系统的SD卡连接到我的Linux PC,并在仿真器中启动操作系统?

VMWare为什么不起作用?

什么是什么?此方法的局限性?


相关文章:在Windows PC上进行仿真


评论

这不是虚拟化问题,而不是仿真问题?

我不喜欢虚拟化编辑的仿真...我们可以聊聊吗?

基本问题是,Pi的ARM cpu与VMWare知道的x86不兼容。您需要一个模拟器。

请注意,可以从Raspberry Pi网站下载具有Debian版本的自定义版本,该版本具有Raspbian的许多功能(包括桌面环境PIXEL和大多数应用程序)。

#1 楼

是的,这完全有可能。但是,实际上它与您的想法有些不同。


序言

SD卡包含操作系统的映像。并通过在打开设备电源时使该图像膨胀来工作。但是,在刷新映像之前您可以做的是使用QEMU(它是处理器仿真器)对其进行处理,并允许我们仿真ARM指令集。

通过这种方式,将映像刷新到SD卡后,对映像进行的任何更改(安装,编译等)仍将存在。

我现在将告诉您如何使用QEMU加载图像。我将使用Arch Linux映像进行演示,但是无论如何,该过程都应该相同。您将需要为系统获取QEMU。
QEMU应该只有一个要求,为了使输入设备正常工作,您需要安装SDL开发包,该包应从包管理器中获取。使用常规软件包管理器:

Arch:

sudo pacman -S sdl qemu


Ubuntu:

更多最新版本(自14.04起)有适合它的软件包:

sudo apt-get install qemu-system-arm


旧版本: >
或者,您可以自己构建QEMU。如果您想尝试一个新版本,那就太好了,但是它可能很慢,并且在编译过程中会为很多错误做好准备!请注意,如果从他们的网站构建QEMU,则必须对其进行编译以获取ARM支持。因此,请先检查您的发行版存储库。可以这样完成;

sudo apt-get install libsdl-dev
sudo add-apt-repository ppa:linaro-maintainers/tools
sudo apt-get update
sudo apt-get install qemu-system


通过以下方法验证您对ARM的支持: br />获取图像

我们正在使用Arch Linux,因此将使用Arch Arm映像。但是,将其替换为您希望使用的任何东西,或者您已经有了图像。在这种情况下,请跳过此步骤。

mkdir rpi-emu && cd rpi-emu
wget http://wiki.qemu.org/download/qemu-1.1.0-1.tar.bz2
tar xvjf qemu-1.1.0-1.tar.bz2
cd qemu-1.1.0-1
./configure –target-list=arm-softmmu,arm-linux-user
make
sudo make install


要使QEMU工作,我们还需要内核映像(位于.img文件中)。


注意:我认为Debian不需要执行此步骤。请确认。


幸运的是有可用的预编译图像,您可以从此处使用(直接下载)。


TODO:在这里演示如何编译内核映像?


启动VM

您现在应该拥有:


可以使用提供的sha1验证img文件(推荐)。
内核映像(zImage)。
用于ARM的QEMU。 >
现在可以使用以下冗长的命令启动虚拟机:

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



请注意,您只有几百兆字节使用此方法进行存储(无论映像上有什么备用)。可以按照QEMU用户指南创建虚拟硬盘。


评论


这更是我的追求-谢谢!这是一个很好的参考答案

– Alex L
2012年6月14日下午13:41

@Alex没问题,让我知道您是否需要我详细说明。另外,请告诉我您是否可以使用debian映像,如果有不同,我们可以将其添加到说明中。

–活动
2012年6月14日下午13:45

这里有一个相当全面的演练

– Alex L
2012年6月14日14:33

@Alex这是一个很好的人,我没有看到。

–活动
2012年6月14日14:35

另一个已关闭,所以我所能做的就是重新投票

–活动
2012年6月14日17:44



#2 楼

Ubuntu 16.04,QEMU 2.9.0 -M raspi2,Raspbian 2016-05-27,香草内核从源:

sudo apt-get build-dep qemu-system-arm
git clone --recursive git://git.qemu-project.org/qemu.git
cd qemu
git checkout v2.9.0
./configure
make `nproc`



下载图像并从中提取内核和dts:




下载图像并解压缩:

wget http://downloads.raspberrypi.org/raspbian/images/raspbian-2016-05-31/2016-05-27-raspbian-jessie.zip
unzip 2016-05-27-raspbian-jessie.zip



安装分区的第二个图像。最简单的方法是:

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


这仅适用于Ubuntu 16.04上的最新losetup,其他方法位于:https://askubuntu.com/questions/69363/mount-整个磁盘设备映像的单个分区/ 496576#496576

这将打印一个循环设备,例如:

/dev/loop0


执行以下操作:

sudo mkdir /mnt/rpi
sudo mount /dev/loop0p1 /mnt/rpi
cp /mnt/rpi/kernel7.img bcm2709-rpi-2-b.dtb .
sudo umount /mnt/rpi
sudo losetup -d /dev/loop0





运行:

./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 \
    -serial stdio \
;



然后您可以登录显示在主机终端上的终端。

当前限制:是在QEMU 2.6.0中添加的,而Ubuntu 16.04仅具有QEMU 2.5.0,因此我们必须从源代码编译QEMU。但这并不难。
GUI显示但未响应在SDL和VNC上测试过的鼠标/键盘。但是CLI可以完美地工作。因此,您最好还是使用带有GUI的Lite映像。 >


此方法使用Ubuntu 16.04的QEMU 2.5.0上提供的-M raspi2。 (请参阅使用Qemu进行仿真:为什么要使用额外的内核?),并修改映像,因此它不太代表真实的系统。 github.com/dhruvvyas90/qemu-rpi-kernel/blob/36ede073f4ccb64f60200ede36c231afe9502070/kernel-qemu-4.4.12-jessie

我们选择-M versatilepb是因为这是Raspbian映像中的内核版本。 >
存储库中描述了生成该内核blob的过程:https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/36ede073f4ccb64f60200ede36c231afe9502070/tools

为什么这个额外的内核映像是需要:用Qemu进行仿真:为什么要使用额外的内核? -Jessie-image-with-4.x.xx-kernel / 0068f0c21d942b0f331e18014ff8e22c20cada5c

摘要: 4.4.12,但使用第二个分区而不是第一个:

sudo mount /dev/loop0p2 /mnt/rpi



编辑图像:

# Comment out the line present there with #
sudo vim /mnt/rpi/etc/ld.so.preload
# Comment out the lines of type: "/dev/mmcblk*"
sudo vim /mnt/rpi/etc/fstab





运行:

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



[失败] Ubuntu 17.04,QEMU 2.8.0 -M raspi2,Raspbian 2016-05-27,香草内核

在此较新的Ubuntu上,默认设置为QEMU 2.8.0,因此我们无需为-M raspi2从源代码编译QEMU。但是,在出现以下消息后,2.8.0会在启动时挂起: Ubuntu 16.04,QEMU 2.9.0 -M raspi2,Raspbian 2017-08-16,香草内核

在此更新的映像上,使用与2016-05-27相同的方法,内核在启动时会出现混乱:

Console: switching to colour frame buffer device 100x30
QEMU上的RPI3裸机

https://github.com/bztsrc/raspi3-tutorial是一个很好的集合可以在QEMU上运行的示例,超快速入门从:如何为裸机Raspberry Pi图像进行QEMU仿真

评论


杜德,你太棒了!

– Subin
16年8月27日在16:50

#3 楼

您无法按照您的建议去做,因为Raspberry Pi具有与大多数PC不同的处理器架构。虽然大多数PC都是基于x86的,但是RPi是基于ARM的计算机。

这与您无法在RPi上运行Microsoft Windows的原因相同。

VmWare将不起作用,因为它只能虚拟化基于x86的操作系统(32位和64位)。还有其他可以虚拟化ARM的仿真器,例如QEMU,但是它们在没有本机CPU虚拟化支持的情况下运行完整的软件仿真,因此可以预期它们会很慢。

评论


您能否提供更多有关如何在x86上模拟RasPi的信息(即使用QEMU)?这是我真正想重点关注的问题,尽管对此解释表示赞赏。

– Alex L
2012年6月13日7:38

对不起,投反对票,但这并不能解释如何实现要求者的要求。

– G-。
2012年6月16日上午9:21

另一方面,它确实解决了其他答案没有解决的问题的其他问题。我认为您的选票是没有根据的(这也不是这个问题的答案)

–user13
2012年6月18日17:42

即使没有本机virt支持,慢速也是相对的,因为您可能是在比树莓派功能强大得多的机器上进行虚拟化

–肯尼斯·威尔克(Kenneth Wilke)
15年6月8日在15:00

#4 楼

您可以在iotify.io上轻松尝试包含传感器,命令行和文件编辑器的Raspberry Pi模拟器。在https://docs.iotify.io/上查看我们的文档,以开始使用不同的项目,操作系统,并熟悉Raspberry Pi的工作环境。



评论


从技术上来说,这是一个答案,但是您显然可以使用我们的网站进行一些免费的广告宣传。虽然您提供的内容可能是免费的,但仍然不行。感谢您为社区做出的贡献,但请将您的广告投放到其他地方。

–达斯·维达♦
17年2月1日于16:55

@DarthVader:自从发帖人告知他们已与该产品关联后,它的确回答了这个问题,因此我倾向于将其称为可接受的。

–Jacobm001♦
17年2月1日在17:45