qemu使用9pfs共享host目录

对于经常使用qemu的人,经常要在guest中访问host中的内容,或者要把一些日志信息保存在host中,等等。虽然可以通过挂载虚拟磁盘,虚拟sd卡等方式共享文件,但不是很方便。

 这个时候9pfs文件系统来了,可以用来共享host和guest中的目录,本篇不介绍它的历史背景和原理。


        1)先贴上我自己的qemu启动参数:

qemu使用9pfs共享host目录

     

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

        


上一篇:Linux虚拟化KVM-Qemu分析(九)之virtio设备


下一篇:使用 qemu 模拟和调试不同架构的二进制程序