title: qemu中使用 9p virtio, 支持 host 和 guest 中共享目录
date: 2018-09-30 19:24
author: gatieme
tags: qemu
categories:
- qemu
thumbnail:
blogexcerpt: 在使用qemu调试内核的时候, 若是没有网络,想要部署点驱动或者程序上去都须要从新制做文件系统,本文讲解了如何经过 9p virtio fs 实如今 qemu 和 host 机器上共享文件和目录。linux
CSDN | GitHub | Hexo |
---|---|---|
qemu中使用 9p virtio, 支持 host 和 guest 中共享目录 | AderXCoding/system/tools/qemu/0001-9p_virtio |
KernelShow-(gatieme.github.io) |
本做品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合做git
因本人技术水平和知识面有限, 内容若有纰漏或者须要修正的地方, 欢迎你们指正, 也欢迎你们提供一些其余好的调试工具以供收录, 鄙人在此谢谢啦github
使用 qemu 调试内核是很方便的,可是咱们有时候想传点驱动或者程序上去跑一会儿,都须要从新制做和打包文件系统,这样花费了咱们的精力,也很烦。web
那有没有什么办法可以在 qemu 和 host 机器之间共享文件呢,这样咱们就省去了不少工做量。shell
因而 9p virtio fs 就登场了网络
9p
是啥,网络文件系统,用于共享目录。固然,qemu中使用9p是用于host和guest中共享目录,也不须要网络的支持,而是须要virtio的支持。svg
qemu
支持和设置 virtfs
qemu
启动参数添加 virfts
qemu
启动参数须要添加 :工具
-fsdev local,security_model=passthrough,id=fsdev0,path=/tmp/share \ -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare
-fsdev local,security_model=passthrough,id=fsdev0,path=/tmp/share \ -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare
其中 path
为 host
本地的共享目录ui
而后提示:google
'virtio-9p-pci' is not a valid device model name
'virtio-9p-pci' is not a valid device model name
须要从新编译 qemu
, 编译时添加额外的 configure
参数 --enable-virtfs
qemu
支持 virtfs
./configure --enable-kvm --enable-virtfs --prefix=/opt/software/toolchain/qemu
./configure --enable-kvm --enable-virtfs --prefix=/opt/software/toolchain/qemu
注意 qemu
支持 virtfs
须要 libcap
和 libattr
等依赖库.
./configure --enable-kvm --enable-virtfs --prefix=/opt/software/toolchain/qemu !2818 ERROR: VirtFS requires libcap devel and libattr devel
CentOS
可使用以下命令安装
sudo yum install -y libcap-devel sudo yum install -y libattr-devel
sudo yum install -y libcap-devel sudo yum install -y libattr-devel
编译安装 qemu
后, 再运行, 能够了.
guest
支持和设置 virtfs
guest
中挂载 host
共享的目录mkdir /tmp/host_files mount -t 9p -o trans=virtio,version=9p2000.L hostshare /tmp/host_files
mkdir /tmp/host_files mount -t 9p -o trans=virtio,version=9p2000.L hostshare /tmp/host_files
若是提示 :
mount: unknown filesystem type '9p'
mount: unknown filesystem type '9p'
则说明构建的 guest
内核不支持 9p-virtio
.
须要开启对应的内核选项, 并从新编译.
kernel
中添加 9p
的支持CONFIG_NET_9P=y CONFIG_9P_FS=y CONFIG_VIRTIO_PCI=y CONFIG_NET_9P_VIRTIO=y CONFIG_9P_FS_POSIX_ACL=y CONFIG_NET_9P_DEBUG=y (Optional可选)
CONFIG_NET_9P=y CONFIG_9P_FS=y CONFIG_VIRTIO_PCI=y CONFIG_NET_9P_VIRTIO=y CONFIG_9P_FS_POSIX_ACL=y CONFIG_NET_9P_DEBUG=y (Optional可选)
而后就可使用了, 若是再加上 virtio console
的支持, 那么既有 shell
, 又能够传输文件
基本能够代替 adb
的经常使用功能了.
最后, 一切就绪以后, 启动 qemu, 就能够看到目录正常挂载了.
host 机器的共享目录
guest 机器的挂载点
Qemu share folder - 9pnet_virtio: no channels available for device
本做品/博文 ( AderStep-紫夜阑珊-青伶巷草 Copyright ©2013-2017 ), 由 成坚(gatieme) 创做.
采用<a rel="license"href=“http://creativecommons.org/licenses/by-nc-sa/4.0/”>知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 欢迎转载、使用、从新发布, 但务必保留文章署名成坚gatieme ( 包含连接: http://blog.csdn.net/gatieme ), 不得用于商业目的.
基于本文修改后的做品务必以相同的许可发布. 若有任何疑问,请与我联系.