在QEMU虚拟机和宿主机之间传输文件有多种方法,以下是一些常见的方法:
1. 使用共享文件夹(推荐)首先,在宿主机上创建一个共享目录,然后使用QEMU的-virtfs选项将其挂载到虚拟机上。
在宿主机上创建一个共享目录,例如:
mkdir /mnt/shared将文件放入此共享目录。
启动QEMU时,将共享目录挂载为一个虚拟文件系统,例如:
qemu-system-arm ... -virtfs local,path=/mnt/shared,mount_tag=host0,security_model=passthrough,id=host0其中,“-virtfs”选项指定了共享文件夹的参数,“local”表示共享文件夹是本地文件夹,“path”指定了共享文件夹的路径,“mount_tag”指定了共享文件夹在虚拟机中的挂载点,“security_model”指定了安全模型,“id”是共享文件夹的标识符。
在虚拟机内部,挂载共享文件夹,例如:
mkdir -p /mnt/sharedsudo mount -t 9p -o trans=virtio,version=9p2000.L host0 /mnt/shared其中,“-t”选项指定了文件系统类型,“9p”是QEMU支持的文件系统类型,“trans”指定了传输协议,“version”指定了文件系统版本,“host0”是共享文件夹的标识符,“/mnt/shared”是共享文件夹在虚拟机中的挂载点。
此时,/mnt/shared目录将指向宿主机上的/mnt/shared目录,可以在两者之间传输文件。
tips:每次重启QEMU虚拟机都要重新挂载,可以把上述 mount 命令做成开机自启。
2. 使用网络传输文件(推荐)通过SSH或其他网络传输工具(如FTP、HTTP等),在宿主机和虚拟机之间传输文件。首先需要在虚拟机上安装SSH服务器(如果没有的话),然后通过虚拟机的IP地址(例如,使用-user-net选项配置的虚拟机网络)访问它。
推荐使用scp命令,或者将QEMU中的22端口映射到宿主机的其他端口上,方便使用Xftp简化操作。
安装SSH服务器:
# 安装openssh-serversudo apt-get install openssh-server# 查看状态sudo systemctl status ssh# 开机自启sudo systemctl enable ssh编辑 /etc/ssh/sshd_config 文件,解除以下内容的注释
Port 22ListenAddress 0.0.0.0ListenAddress ::PermitRootLogin yesPasswordAuthentication yes重新加载配置文件
sudo service sshd reload获取IP地址:
ip addr show 用scp命令 scp file.txt username@:/path/to/destination