对于经常使用qemu的人,经常要在guest中访问host中的内容,或者要把一些日志信息保存在host中,等等。虽然可以通过挂载虚拟磁盘,虚拟sd卡等方式共享文件,但不是很方便。
这个时候9pfs文件系统来了,可以用来共享host和guest中的目录,本篇不介绍它的历史背景和原理。
1)先贴上我自己的qemu启动参数:
1.-cpu host:把host cpu的特性全部暴露给guest,我主要用来进行kvm嵌套
2.-enable-kvm:使用kvm来硬件加速(其实我本来就是用来调试kvm的)
(如果不使用kvm加速,1,2 两个参数都不需要)
3.-m 1024M 给guest分配1024M内存(对应host上1024M虚拟内存而已)
4.-nographic:以非图形界面启动,配合内核参数中的console=ttyS0
以非图形界面启动,要进入qemu控制台的话按 ctrl+a+c,更多命令输 入 ctrl+a+h.
以图形界面启动进入qemu控制台命令 ctrl+alt+2 ,返回ctrl+alt+1
5. -smp 4,sockets=1,cores=2,threads=2 分配4个cpu(1个物理cpu,两个核心,每个核心两个线程)
6.-hda ./x86-kvm.img -kernel ./nest-kvm/bzImage分配一个硬盘和指明内核路径,因为kvm可以嵌套,我自己使用的这个镜像把kvm内核模块也编译进guest内核了,启动qemu之后,又可以在guest中再启动另外的guest. (如果不使用-hda也可以使用 -drive file=./x86-kvm.img,if=virtio来代替,但是-append 中的root=/dev/vda)。
7.指明9p文件系统要共享的目录和mount_tag(在guest中挂载9p文件系统的时候需要这个标签)
8.-balloon:内存气球,host进入qemu控制台用来动态控制guest中的内存大小.
9.传递内核参数
2).运行上面的脚本,启动guest内核之后在guest中:
mount jeff-host-code -t 9p /mnt
进入/mnt目录之后就能看到主机/home/jeff/git下面的内容了。
guest的内核在编译的时候需要打开以下选项:
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_9P_FS=y
CONFIG_9P_FS_POSIX_ACL=y
CONFIG_PCI=y
CONFIG_VIRTIO_PCI=y
----
~jeff