求教如何用vbox虚拟机制作img树莓派系统?

如题!我发现树莓派上装个东西很慢 所以我想弄到电脑的虚拟机里面去安装,然后制作成img文件!

阅读 12.4k
2 个回答

不能,除非(任选一):

  1. 你的电脑是和树莓派相同的 ARM 架构
  2. 你使用更慢的 qemu 模拟器来安装

建议(任选一):

嫌安装慢,我猜你是在编译安装:

  1. 找预编译包。不知道你的树莓派装的什么系统,以及你要装什么软件。常见软件+操作系统组合都可以从软件源里直接安装的
  2. 找个适合树莓派的交叉编译工具链在电脑上编译了给树莓派用。推荐使用类 UNIX 系统,不推荐使用虚拟机因为它会慢一些

注意:VirtualBox仅能用于x86的虚拟化。模拟器应当使用QEMU。

如果基于现有系统,去修改定制自己定义的.img文件并分发,无非是以下三种方案:

  • 实机定制
  • QEMU虚拟机定制
  • 直接修改Ext4 rootfs主分区(不实际运行,能做的定制有限)

带运行的定制方法(实机、QEMU)

实机定制:这个其实最为简单,坑也最少……实际运行,做必要的修改(APT更新升级、安装自定制软件等)即可。修改后把磁盘做个.img就行。

虚拟机定制:虚拟机软件要用QEMU。QEMU运行时,其实能够把.img文件完整的当做硬盘使用起来,可以mount并正确读写FAT32部分和Ext4的大分区(这一点和我qq告诉你的有区别)。所以升级内核、升级引导器一类的问题,应该都可以做,没有问题。

具体QEMU运行的方法请直接查看:http://www.raspberrypi.org/forums/viewtopic.php?f=29&t=37386

QEMU运行之后,由于是直接把.img文件当硬盘来修改的,所以.img文件直接就可以使用了。

不带运行的定制方法(单纯修改rootfs)

台机跑Linux,插入SD卡即可直接读写Ext4分区。

并不运行系统,只修改系统文件,所以能做的有限,一般用于插入少量启动自定义代码之类的小改动

共通的要点

无论是实机还是虚拟机,都需要注意以下的要点:

(1)如果你需要把.img分享给他人使用,就需要注意.img的大小。.img文件可是磁盘多大镜像就多大的,并不会把磁盘上未使用的空间让出来。所以如果有分发的需求,则需要以下做法选择一个:

  1. 扩展分区(Expand filesystem)之后,在做.img之前想尽办法缩减分区,把Ext4分区无损缩减到比所有文件占据空间大点不多的地步。这个缩减可以在台式机Linux上用GParted工具简单完成。
  2. 如果定制过程中能够避免Expand filesystem那是最好。这样原.img文件多大,新做.img文件就可以做多大。
  3. 或者也可以手动扩展分区,扩展到一个合适的大小,而不是一开始就扩展到全盘。

(2)磁盘上的未占用空间,一般总是有旧数据存在的(因为删文件时并不销毁文件的数据,只是让出文件占用的区域)。给磁盘做.img文件的时候,这些旧数据的痕迹也会做进去。自用无所谓,如果分发就要小心这个问题。

做分发用的.img,一定要在开工之前全SD卡填零。

(3)SSH Host Key。SSH远程登录的主机私钥,很多人忘记删除,直接打包在.img里分发出去了。这样会让所有采用这个系统的人的SSH私钥全部一致,让黑客可以轻易监听SSH安全连接的内容。

请在分发.img之前,务必确认删除掉了/etc/ssh/ssh_host_rsa_key/etc/ssh/ssh_host_rsa_key.pub两个文件。系统启动时如果发现密钥不存在会生成新的。这样就保证了每个.img的使用者都能得到不同的密钥。


该有的要点我认为足够详细了都写进去了。但很多地方都只有原则没有细则,全看你自己的实践了。
欢迎您继续支持SegmentFault开源硬件专区,提出更多实用的问题和大家分享!

宣传栏