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

vmbuilder创建Ubuntu 16.04虚拟机完成但无法启动问题咨询

关于vmbuilder(ubuntu-vm-builder)弃用状态及你的虚拟机启动问题分析

核心问题解答:vmbuilder确实已被弃用

没错,vmbuilder(也叫ubuntu-vm-builder)早在多年前就被官方标记为弃用状态了,尤其是在Ubuntu 16.04这个版本之后,它不再被主动维护,遗留的bug也不会得到官方修复。目前官方推荐的替代工具包括:

  • virt-install 配合Ubuntu Cloud镜像(灵活性高,支持现代虚拟化特性)
  • virt-manager 图形化虚拟机管理工具(适合可视化操作场景)
  • multipass 快速创建Ubuntu虚拟机的轻量工具

你的虚拟机启动失败的原因分析

从你日志里的GRUB安装目录未找到、UUID解析失败、/dev/pts未挂载这些报错来看,都是vmbuilder工具老旧导致的兼容性问题:

  1. GRUB安装失败:vmbuilder的GRUB部署逻辑没有适配Ubuntu 16.04的引导布局,导致引导程序安装不完整,虚拟机根本没法正常完成系统引导。
  2. UUID解析错误:工具在生成文件系统UUID时出现逻辑问题,系统启动时无法识别根分区,直接陷入启动死循环或者紧急模式。
  3. /dev/pts未挂载:vmbuilder的初始化脚本没有正确配置虚拟文件系统挂载,就算虚拟机勉强启动,控制台和SSH连接也无法正常建立。

至于virsh list --all显示“启动成功”,只是Libvirt标记了虚拟机进程已启动,但系统内部根本没完成引导流程,属于“假启动”状态。

解决建议

方案一:改用官方推荐的替代工具(优先推荐)

这里以virt-install配合Ubuntu 16.04 Cloud镜像为例,步骤清晰且兼容性拉满:

  1. 下载Ubuntu 16.04 Cloud镜像:
    wget https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
    
  2. 创建cloud-init配置文件user-data,用来设置用户名、密码和SSH权限:
    #cloud-config
    users:
      - name: rex
        password: blabla
        sudo: ['ALL=(ALL) NOPASSWD:ALL']
        shell: /bin/bash
    ssh_pwauth: true
    
  3. 生成cloud-init的seed镜像(用来传递配置给虚拟机):
    cloud-localds seed.img user-data
    
  4. 使用virt-install创建虚拟机:
    virt-install --name testguest \
      --memory 8000 --vcpus 4 \
      --disk path=xenial-server-cloudimg-amd64-disk1.img,size=8 \
      --disk path=seed.img,device=cdrom \
      --network bridge=br0 \
      --os-variant ubuntu16.04 \
      --virt-type kvm \
      --graphics none \
      --console pty,target_type=serial
    

用这种方式创建的虚拟机可以正常启动,SSH连接也能直接用,完全避开vmbuilder的各种坑。

方案二:尝试修复现有vmbuilder创建的虚拟机(仅临时应急,不推荐)

如果你一定要抢救现有虚拟机,可以试试这些步骤:

  1. 启动虚拟机并进入控制台:
    virsh start testguest --console
    
    在GRUB菜单里选择“Advanced options” -> “Recovery mode”进入救援模式。
  2. 修复GRUB引导:
    grub-install /dev/vda
    update-grub
    
  3. 修复UUID和/dev/pts挂载:
    先查看当前分区的真实UUID:
    blkid
    
    然后编辑/etc/fstab,把错误的UUID替换成实际值,同时确保/dev/pts的挂载项存在:
    /dev/pts        /dev/pts        devpts  defaults        0       0
    
  4. 重新挂载分区并重启:
    mount -a
    reboot
    

不过要提醒的是,由于vmbuilder本身已被弃用,这类修复只是临时解决,后续大概率还会出现其他兼容性问题,还是建议尽早切换到新工具。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:36:25