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

如何通过GRUB引导加载器直接从QCOW2镜像启动裸机系统且不破坏Proxmox环境

如何通过GRUB引导加载器直接从QCOW2镜像启动裸机系统且不破坏Proxmox环境

没问题,你完全可以通过GRUB直接引导QCOW2镜像启动裸机系统,不用每次转RAW格式,而且只要操作得当,绝对不会破坏你的Proxmox环境。下面我给你一步步拆解实现方法:

先做临时测试(避免直接改配置踩坑)

先别急着改GRUB配置,我们可以先在GRUB命令行临时测试,确保路径和参数都正确:

  1. 重启你的Proxmox主机,在GRUB菜单出现时按c键进入命令行模式。
  2. 加载GRUB需要的模块(根据你的实际分区格式调整,比如用MBR就换part_msdos,根分区是XFS就换xfs):
    insmod qcow2
    insmod ext4
    insmod part_gpt
    
  3. 指定存放QCOW2镜像的磁盘分区,比如你的Proxmox存储在第一块磁盘的第3个GPT分区,就输入:
    set root=(hd0,gpt3)
    
    不确定的话可以用ls命令查看所有磁盘:ls,再逐个查看分区内容:ls (hd0,gpt3)。
  4. 挂载QCOW2镜像为loop设备,替换成你实际的镜像路径(Proxmox默认镜像路径一般是/var/lib/vz/images/VMID/xxx.qcow2):
    loopback loop /var/lib/vz/images/100/vm-100-disk-0.qcow2
    
  5. 指定镜像内Ubuntu系统的根分区,比如镜像里的第2个GPT分区:
    set root=(loop,gpt2)
    
    同样可以用ls (loop,gpt2)/boot确认里面有内核文件。
  6. 加载Ubuntu的内核和initramfs,替换成你镜像内实际的内核版本号:
    linux /boot/vmlinuz-6.8.0-31-generic root=/dev/loop0 ro quiet splash
    initrd /boot/initrd.img-6.8.0-31-generic
    
  7. 最后输入boot启动系统,如果能正常进入Ubuntu,说明参数没问题。

把配置加入GRUB永久菜单

测试成功后,我们可以把这个启动项加入GRUB菜单,下次重启直接选就行:

  1. 编辑GRUB的自定义配置文件:
    nano /etc/grub.d/40_custom
    
  2. 在文件末尾添加以下内容,记得替换成你自己的参数:
    menuentry "Boot Ubuntu 24.04 from QCOW2" --class ubuntu --class gnu-linux --class gnu --class os {
        insmod qcow2
        insmod ext4
        insmod part_gpt
        # 替换成存放QCOW2的磁盘分区
        set root=(hd0,gpt3)
        # 替换成你的QCOW2镜像实际路径
        loopback loop /var/lib/vz/images/100/vm-100-disk-0.qcow2
        # 替换成镜像内Ubuntu的根分区
        set root=(loop,gpt2)
        # 替换成镜像内实际的内核版本
        linux /boot/vmlinuz-6.8.0-31-generic root=/dev/loop0 ro quiet splash
        initrd /boot/initrd.img-6.8.0-31-generic
    }
    
  3. 保存退出后,更新GRUB配置:
    update-grub
    
    下次重启Proxmox,你就能看到这个新的启动菜单选项了。

重要注意事项(必看!)

  • 启动前必须确保对应的VM已经完全关机,如果VM还在运行就启动镜像,会直接损坏QCOW2文件!
  • 从KVM虚拟机转到裸机后,Ubuntu可能会因为硬件变化出现适配问题,比如网卡名称改变、缺少裸机硬件驱动,需要你手动调整网络配置或者安装对应驱动。
  • 启动裸机系统后,绝对不要修改Proxmox所在的磁盘分区,只操作QCOW2镜像内的系统,避免破坏Proxmox环境。
  • 如果启动失败,回到GRUB命令行用ls命令排查路径是否正确,或者检查模块是否加载对了(比如MBR分区要加载part_msdos)。

备注:内容来源于stack exchange,提问作者Mario Bash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:59:33