《树莓派实战秘籍》——2.6 技巧26仿真Pi

简介:

本节书摘来自异步社区《树莓派实战秘籍》一书中的第2章,第2.6节,作者: 【美】Ruth Suehle , Tom Callaway 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.6 技巧26仿真Pi

无论你是在旅行过程中没有带着Pi的情况下需要紧急测试什么东西,还是你的孩子已经接管了Pi而你一时找不着他,这个技巧有时可以很方便地在另一台机器上模拟Pi,这时QEMU就可以帮助你。

快速模拟器(QEMU,Quick EMUlator的简称)是一个开源的、托管的虚拟机管理程序。这意味着你可以用它在你平时的计算机(比如,一个x86的笔记本电脑)上来运行一个树莓派(使用ARM硬件)的Linux发行版。

它有两种模式,第一种是用户模式仿真,可以让你运行不是为你的机器编译的单个程序。不过本技巧的重点是QEMU的全系统仿真,它可以让你模拟一个完整的计算机——在本书中,这指的是树莓派。

首先安装QEMU,在Fedora上运行下面的命令:


screenshot

或者,在Debian/Ubuntu上运行这个命令:


screenshot

如果从http://xecdesign.com/downloads/linux-qemu/kernelqemu 上下载kernel-qemu的话,你也可以编译自己的内核1。

为什么是这个特殊的内核?

你可能已经注意到,我们没有向你指出本书中的构建一个自定义内核在树莓派上启动的相关技巧(技巧22)。这是有意为之,因为那个内核将不能在qemu_上工作。Qemu模拟了范围广泛的硬件环境,但是树莓派还没有被发现是这些确切的硬件中的一个。

kenel-qemu文件用来在qemu中提供最接近的匹配,并提供了同等水平的ARM优化和运行时支持。它可以让你运行几乎所有在你的树莓派Linux发行版用户空间可以运行的东西,就像在树莓派上运行一样。最显著的例外是VideoCore库(及任何使用它们的应用程序),因为QEMU没有BCM2835片上系统的硬件仿真,这些应用程序将无法在qemu仿真器上正常运行。

创建一个工作目录,把你的发行版映像文件和kernel-qemu的副本放进去。在这个例子的剩下部分我们将使用Pidora 18的映像文件(pidora-18-r1c.img),并使用qemu作为目录名,你可以使用其他发行版复制这些教程,当然也可以用任何你喜欢的名字命名目录。

对这个映像文件运行file命令:


screenshot

当你挂载映像文件时使用分区2的startsectour数字(上述输出的粗体部分)乘以512作为偏移数。


screenshot

现在在文本编辑器中打开 /mnt/pidora/etc/ld.so.preload文件,通过在唯一一行的前面添加一个#号注释该行,保存文件后,现在,你可以卸载它了:


screenshot

现在你已经做好了在QEMU中启动Pidora的准备了:


screenshot

有一些选项你需要设置:


screenshot

你可以用这个选项告诉软件使用下载的kernel-qemu内核文件。如果你创建了自己的内核文件,则在这里用其名称+/路径+代替。


screenshot

树莓派包含了一个ARM1176的内核,你可以用此选项指定。要查看QEMU提供的完整选项列表,请使用命令qemu-system-arm -cpu获取帮助。

如果你有一个老的QEMU安装或得到的是一个没有更新过的安装包,你使用-cpu选项时可能会遇到问题,因为老版本不支持ARM1176,你也许可以通过使用arm1136-r2替代来使之工作,不过更新你的QEMU版本将会更好。


screenshot

此选项以MB(megabytes)为单位设置虚拟内存,似乎超过256将不能工作。


screenshot

此选项设置虚拟机类型(我们在这里指定的是通用PB平台)。


screenshot

此选项重定向虚拟串口。默认值vc是图形模式下,非图形模式下是stdio。


screenshot

此选项给出了内核命令行参数。


screenshot

这个选项是你模拟的发行版的映像文件的位置。

你可以在http://qemu.org 读取更多有关QEMU 选项的文档。

上面的命令将把你带到第一个开机画面,你可以像在一台实际的Pi上一样通过开机过程,最终它将会重启,而QEMU也将会关闭,你必须要再次启动它。只需要按向上箭头键一次获取前一次qumu-systemarm命令并再次运行它即可。

这次你将会一直启动到登录界面,你可以像在一台实际的树莓派上一样的使用它了。

相关文章
Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
|
Docker 容器 网络协议
实战教程丨手把手教您在 Raspberry Pi 上设置集群(二)
有什么比在 Raspberry Pi 上安装 Docker Engine (CE) 18.09 更好的方式来表达“Happy Pi Day”呢?本文将引导您完成在 Pi 上安装 Docker Engine 18.09 的完整过程。
2090 0
|
Linux Docker 容器
实战教程丨手把手教您在 Raspberry Pi 上设置集群(一)
有什么比在 Raspberry Pi 上安装 Docker Engine (CE) 18.09 更好的方式来表达“Happy Pi Day”呢?本文将引导您完成在 Pi 上安装 Docker Engine 18.09 的完整过程。
3895 0
|
安全
《树莓派实战秘籍》——导读
树莓派的灵感诞生于埃本·厄普顿在剑桥大学负责计算机科学专业学生工作期间(参见前言中的描述),他发现准大学生需要有更多的机会获得编程经验才可以达到大学水平。如我们现在所知的,关于什么将会成为Pi的第一个概念设计诞生于2006年,阿尔法版在2011年年底通过验证,最初的10块板在2012年年初被拍卖,价格高达16 000英镑。
1736 0