我目前正在从事嵌入式系统设计,我的测试开发机器目前是在 KVM 中运行的 VM。是否可以让 KVM 挂载一个目录(如 chroot)并将其用作 VM 的根文件系统?
我目前将根文件系统放在单个稀疏文件中,并且可以通过循环将其安装到目录中,但是在进行和测试更改时,将根文件系统放在本地计算机上的目录结构中会更容易。
答案1
如果您的虚拟机具有 IP 连接,请通过 NFS 挂载其根文件系统。(您需要在内核或 initrd/initramfs 中安装 NFS 客户端驱动程序及其依赖项。)
在主机上,安装 NFS 服务器并通过在中声明来导出目录/etc/exports
。
/path/to/root 10.0.9.0/24(ro,async,no_subtree_check)
在客人上,阅读nfsroot.txt
在内核文档中;简而言之,内核命令行应该包含类似的内容
root=/dev/nfs nfsroot=10.0.9.1:/path/to/root
如果在虚拟机运行时共享目录树不是绝对要求,并且您所需要的只是在启动虚拟机之前方便地重新生成根文件系统,那么编写一个小脚本或 makefile 来重建根文件系统就足够简单了。启动前的根文件系统映像。这在嵌入式开发中很常见。根文件系统的一个方便选择是初始化文件系统,一个变体初始化程序。也可以看看 如何生成带有 busybox 链接的 initramfs 映像?。