当前位置: 首页 > news >正文

QEMU ARM 环境下 9P 文件夹共享配置指南

QEMU ARM 环境下 9P 文件夹共享配置指南

本文档适用于使用 qemu-system-arm 模拟 vexpress-a9 开发板,且宿主机需要向虚拟机传输驱动 .ko 或测试程序的情景。

1. 宿主机 QEMU 启动参数

由于 vexpress-a9 不支持 PCI 总线,必须使用基于 MMIO 的 virtio-9p-device

完整启动命令

qemu-system-arm \-M vexpress-a9 \-m 128M \-kernel linux-5.10/arch/arm/boot/zImage \-dtb linux-5.10/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \-drive file=rootfs.ext2,if=sd,format=raw \-append "root=/dev/mmcblk0 rw console=ttyAMA0" \-net nic -net user \-nographic \-fsdev local,path=./share,security_model=passthrough,id=fsdev0 \-device virtio-9p-device,fsdev=fsdev0,mount_tag=hostshare
  • path=./share: 宿主机上的文件夹路径。
  • id=fsdev0: 后端存储的唯一标识符。
  • mount_tag=hostshare: 虚拟机内部挂载时使用的“设备名”。

2. 内核编译选项 (zImage 配置)

如果执行 mount 时提示 Unknown filesystem type '9p',请在内核源码目录执行 make menuconfig 开启以下支持:

配置路径 选项名称 宏定义
Networking support Plan 9 resource sharing support CONFIG_NET_9P=y
Networking support 9P Virtio transport CONFIG_NET_9P_VIRTIO=y
Device Drivers Platform bus driver for virtio devices CONFIG_VIRTIO_MMIO=y
File systems Plan 9 Resource Sharing Support CONFIG_9P_FS=y

3. 虚拟机内部挂载步骤

进入系统后,执行以下命令完成挂载:

# 1. 创建挂载点
mkdir -p /mnt/share# 2. 挂载共享目录 (hostshare 必须对应启动参数里的 mount_tag)
mount -t 9p -o trans=virtio hostshare /mnt/share# 3. 验证
ls -l /mnt/share

4. 交叉编译建议

在宿主机的 ./share 目录下编译驱动和程序,以便在虚拟机中直接运行。

编译驱动 (.ko)

Makefile 中指定交叉编译器和内核路径:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C $(KERNEL_DIR) M=$(PWD) modules

编译测试程序 (C语言)

建议使用 静态链接,防止虚拟机系统缺少动态库:

arm-linux-gnueabihf-gcc test.c -o mem_test --static

5. 常见问题排查

  1. Invalid parameter 'mount_tag': 说明你把 mount_tag 写在了 -fsdev 里,它应该写在 -device 里。
  2. No 'PCI' bus found: 说明使用了 virtio-9p-pci,在 ARM 开发板上请改用 virtio-9p-device
  3. 权限不足: 若无法写入,请检查宿主机目录权限,或在 QEMU 参数中尝试 security_model=mapped
http://www.jsqmd.com/news/507226/

相关文章:

  • 2026年大型集团资产管理系统选型指南,哪个公司平台更出色? - 品牌2026
  • Elsevier Ocean Engineering 投稿全流程解析与实战技巧
  • 携程任我行卡高价回收攻略,手把手教你变现! - 团团收购物卡回收
  • 广州正规复读学校盘点:4大核心维度解析+10家优质院校推荐 - 妙妙水侠
  • 一篇讲透营销自动化:2026年开启企业线索高转化流水线的新引擎 - 纷享销客智能型CRM
  • 2026 雅思必看:线上小班网课与高效学习方案 - 品牌2025
  • 基础薄弱用什么app更合适?2026雅思从零开始自学app推荐 - 品牌2025
  • 2026年嘉兴住宅装修服务排名,嘉兴博艺装饰性价比高值得选购 - mypinpai
  • 如何为macOS文件系统开发构建自定义Clang静态检查规则:macFUSE项目实践指南
  • 2026 B2B 活动营销新解法:数字化底座打造高转化场景 - 纷享销客智能型CRM
  • 小白也能搞定!Qwen3-ASR-1.7B语音识别模型一键部署指南
  • 运维日志+监控告警方案
  • 踩坑实录:PageHelper 分页后筛选数据致总条数异常?原理 + 解决方案
  • LLVM项目贡献指南:如何参与开源编译器开发成为核心贡献者
  • 终极Odoo缓存优化指南:从ORM查询加速到Redis配置全攻略
  • Apache DataFusion算子实现终极指南:从零到一的完整教程
  • 2026年黑龙江值得推荐的变速箱配件销售公司,服务区域全涵盖 - mypinpai
  • 终极指南:macFUSE内核接口演进与IO Kit到DriverKit的完整迁移
  • 2026年河北地区聚氨酯异形件服务商排名,哪家口碑好值得选 - 工业品网
  • 在什么情况下,不推荐为数据库建立索引?
  • 分析2026年金昌橡塑性价比,金昌橡塑的财务状况稳定吗有答案 - 工业品网
  • Python实战:基于RealSense与JAKA机械臂的手眼标定全流程解析
  • 终极缓动函数指南:从命名规范到实战应用的完整教程
  • Lychee-Rerank模型微调实战:使用领域数据提升垂直搜索效果
  • 2026年雅思线上课程是如何高效提分的? - 品牌2025
  • 什么是 Write-Ahead Logging (WAL) 技术?它的优点是什么?MySQL 中是否用到了 WAL?
  • 深入理解LLVM类型系统:编译器类型检查的完整指南
  • 如何通过osxfuse实现macOS Server网络存储扩展:完整指南
  • 手办卖家看过来:如何用Nano Banana零成本生成‘开箱测评’级产品图?(避坑指南)
  • 告别HDR照片发灰!用Gain Map技术让你的iPhone 15 Pro照片在不同设备上都能正确显示