本节书摘来异步社区《树莓派实战秘籍》一书中的第2章,第2.6节,作者:【美】Ruth Suehle ,Tom Callaway,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.6 技巧26仿真Pi
树莓派实战秘籍
无论你是在旅行过程中没有带着Pi的情况下需要紧急测试什么东西,还是你的孩子已经接管了Pi而你一时找不着他,这个技巧有时可以很方便地在另一台机器上模拟Pi,这时QEMU就可以帮助你。
快速模拟器(QEMU,Quick EMUlator的简称)是一个开源的、托管的虚拟机管理程序。这意味着你可以用它在你平时的计算机(比如,一个x86的笔记本电脑)上来运行一个树莓派(使用ARM硬件)的Linux发行版。
它有两种模式,第一种是用户模式仿真,可以让你运行不是为你的机器编译的单个程序。不过本技巧的重点是QEMU的全系统仿真,它可以让你模拟一个完整的计算机——在本书中,这指的是树莓派。
首先安装QEMU,在Fedora上运行下面的命令:
或者,在Debian/Ubuntu上运行这个命令:
为什么是这个特殊的内核?
你可能已经注意到,我们没有向你指出本书中的构建一个自定义内核在树莓派上启动的相关技巧(技巧22)。这是有意为之,因为那个内核将不能在qemu_上工作。Qemu模拟了范围广泛的硬件环境,但是树莓派还没有被发现是这些确切的硬件中的一个。
kenel-qemu文件用来在qemu中提供最接近的匹配,并提供了同等水平的ARM优化和运行时支持。它可以让你运行几乎所有在你的树莓派Linux发行版用户空间可以运行的东西,就像在树莓派上运行一样。最显著的例外是VideoCore库(及任何使用它们的应用程序),因为QEMU没有BCM2835片上系统的硬件仿真,这些应用程序将无法在qemu仿真器上正常运行。
创建一个工作目录,把你的发行版映像文件和kernel-qemu的副本放进去。在这个例子的剩下部分我们将使用Pidora 18的映像文件(pidora-18-r1c.img),并使用qemu作为目录名,你可以使用其他发行版复制这些教程,当然也可以用任何你喜欢的名字命名目录。
对这个映像文件运行file命令:
当你挂载映像文件时使用分区2的startsectour数字(上述输出的粗体部分)乘以512作为偏移数。
现在在文本编辑器中打开 /mnt/pidora/etc/ld.so.preload文件,通过在唯一一行的前面添加一个#号注释该行,保存文件后,现在,你可以卸载它了:
现在你已经做好了在QEMU中启动Pidora的准备了:
有一些选项你需要设置:
你可以用这个选项告诉软件使用下载的kernel-qemu内核文件。如果你创建了自己的内核文件,则在这里用其名称+/路径+代替。
树莓派包含了一个ARM1176的内核,你可以用此选项指定。要查看QEMU提供的完整选项列表,请使用命令qemu-system-arm -cpu获取帮助。
如果你有一个老的QEMU安装或得到的是一个没有更新过的安装包,你使用-cpu选项时可能会遇到问题,因为老版本不支持ARM1176,你也许可以通过使用arm1136-r2替代来使之工作,不过更新你的QEMU版本将会更好。
上面的命令将把你带到第一个开机画面,你可以像在一台实际的Pi上一样通过开机过程,最终它将会重启,而QEMU也将会关闭,你必须要再次启动它。只需要按向上箭头键一次获取前一次qumu-systemarm命令并再次运行它即可。
这次你将会一直启动到登录界面,你可以像在一台实际的树莓派上一样的使用它了。