You need to enable JavaScript to run this app. 如何在远程Ubuntu/Debian服务器上无libvirt运行无头QEMU?
优惠活动
大模型
产品
解决方案
定价
更多

如何在远程Ubuntu/Debian服务器上无libvirt运行无头QEMU?

模块加载报错修复

你遇到的模块初始化失败报错是QEMU主程序和对应block模块版本不匹配导致,先执行对应命令修复:

  • Debian/Ubuntu 系列系统:
sudo apt update && sudo apt install --reinstall qemu-system-x86 qemu-block-extra
  • RHEL/CentOS/Fedora 系列系统:
sudo dnf reinstall qemu-system-x86 qemu-block-extras

如果是自行编译安装的QEMU,需要把编译生成的所有模块安装到对应路径,或者编译时添加--disable-modules参数静态编译,避免动态加载模块的问题。

参数冲突问题说明

-nographic参数会将QEMU的所有输入输出绑定到当前终端,和-daemonize后台脱离终端的特性互斥,不能同时使用。


两种无头运行QEMU的可用方案

方案1:纯后台运行,不需要直接访问控制台

直接使用-display none配合-daemonize即可,不要加-nographic参数,正确命令如下:

qemu-system-x86_64 -hda hdd.img -m 1G -net nic,macaddr=MACADDR -net bridge,br=BRIDGE -enable-kvm -display none -daemonize

启动后可以通过ps aux | grep qemu查看进程是否正常运行,需要终止时直接kill对应进程即可。

方案2:后台运行,同时支持访问虚拟机串口和QEMU监控界面

将串口和监控界面重定向到本地TCP端口,方便后续远程连接调试:

qemu-system-x86_64 -hda hdd.img -m 1G -net nic,macaddr=MACADDR -net bridge,br=BRIDGE -enable-kvm -display none -serial telnet:127.0.0.1:4444,server,nowait -monitor telnet:127.0.0.1:4445,server,nowait -daemonize

使用说明:

  • 执行telnet 127.0.0.1 4444即可连接虚拟机的串口控制台,需要虚拟机内部内核启动参数添加console=ttyS0且开启ttyS0终端服务才能正常交互
  • 执行telnet 127.0.0.1 4445即可连接QEMU监控界面,可执行查看虚拟机状态、热插拔设备、关闭虚拟机等操作

注意事项

如果使用普通用户运行,需要将用户加入kvm和netdev用户组,否则会出现权限不足无法使用KVM加速或者无法挂载网桥的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:27:03