You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无SSH功能的ARM虚拟机如何实现本地文件共享?

实现QEMU ARM虚拟机与本地文件共享的方法

方法1:使用QEMU VirtioFS(推荐,高效便捷)

VirtioFS是QEMU提供的高性能文件共享方案,通过virtio-9p设备实现本地目录与虚拟机的直接映射。

  • 修改QEMU启动命令,添加共享参数:

    qemu-system-arm -M ast2600-evb -nic user -nographic -drive file=image.static.mtd,format=raw,if=mtd \
      -chardev socket,id=char0,path=/tmp/virtiofs.socket \
      -device virtio-9p-pci,fsdev=fsdev0,mount_tag=hostshare \
      -fsdev local,id=fsdev0,path=/path/to/your/local/folder,security_model=mapped
    

    替换/path/to/your/local/folder为你要共享的本地目录路径。

  • 虚拟机启动后,在系统内执行挂载命令:

    # 若未加载9p模块,先加载
    modprobe 9pnet_virtio
    # 创建挂载点并挂载共享目录
    mkdir -p /mnt/host
    mount -t 9p hostshare /mnt/host
    

    之后即可在/mnt/host访问本地共享的文件。

方法2:修改MTD镜像直接嵌入文件

由于你使用的是raw格式的MTD镜像,可以直接挂载到本地修改,将文件嵌入后再启动虚拟机。

  • 制作镜像副本(避免修改原镜像):

    cp image.static.mtd image.static.mtd.modified
    
  • 挂载修改后的镜像:

    # 加载mtdblock模块
    modprobe mtdblock
    # 创建挂载点
    mkdir /tmp/mtd-mount
    # 挂载镜像(若提示只读,添加rw参数)
    mount -o loop,rw image.static.mtd.modified /tmp/mtd-mount
    

    若镜像包含多分区,需先用fdisk -l image.static.mtd查看分区偏移量,再通过offset=xxxx参数挂载对应分区。

  • 复制本地文件到挂载目录,然后卸载:

    cp /path/to/local/file /tmp/mtd-mount/
    umount /tmp/mtd-mount
    
  • 使用修改后的镜像启动虚拟机:

    qemu-system-arm -M ast2600-evb -nic user -nographic -drive file=image.static.mtd.modified,format=raw,if=mtd
    

方法3:通过initrd临时传递文件

利用initrd(初始RAM磁盘)将文件临时传入虚拟机,适合单次传输少量文件的场景。

  • 将本地文件打包为cpio格式的initrd镜像:

    cd /path/to/local/files
    find . -print0 | cpio --null -ov --format=newc > ../initrd-share.cpio
    
  • 修改启动命令,加载这个initrd:

    qemu-system-arm -M ast2600-evb -nic user -nographic -drive file=image.static.mtd,format=raw,if=mtd -initrd /path/to/initrd-share.cpio
    
  • 虚拟机启动后,挂载initrd并提取文件:

    mkdir /tmp/initrd-files
    mount /dev/ram0 /tmp/initrd-files
    # 复制文件到系统目录
    cp /tmp/initrd-files/your-file /path/in/vm/
    umount /tmp/initrd-files
    

方法4:通过串口用sz/rz传输文件

如果虚拟机系统中已安装lrzsz工具(包含sz/rz命令),可以通过QEMU的串口控制台直接传输文件。

  • 在虚拟机内执行接收命令:

    rz
    
  • 在本地QEMU终端中,按Ctrl+A后再按S,选择要发送的文件,等待传输完成即可。

  • 若要从虚拟机传文件到本地,在虚拟机内执行:

    sz your-file-name
    

    本地终端会自动接收文件。

注:若虚拟机未安装lrzsz,需先通过方法2或3将工具包传入系统并安装。

内容的提问来源于stack exchange,提问作者Nath Acion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 18:12:28