Ubuntu Server 22.04(Ventoy引导VDI镜像)中GRUB安装问题求助
Ubuntu Server 22.04(Ventoy引导VDI镜像)中GRUB安装问题求助
解决方案思路
这种场景下GRUB没法识别Ventoy映射的分区,核心是GRUB对/dev/mapper类设备的分区识别逻辑和普通物理盘不一样,试试下面这些步骤:
1. 直接指定VDI的EFI分区安装GRUB
既然/dev/mapper/ventoy1是VDI里的EFI分区,别盯着整个/dev/mapper/ventoy设备,直接给这个分区装GRUB:
# 先确认/boot/efi挂载的是ventoy1,没挂载的话先执行这条 sudo mount /dev/mapper/ventoy1 /boot/efi # 执行GRUB安装 sudo grub-install --efi-directory=/boot/efi /dev/mapper/ventoy1
2. 修正GRUB设备映射文件
GRUB的device.map不需要手动加分区条目,只保留磁盘级映射就行,让GRUB自己探测分区:
- 编辑
/boot/grub/device.map,只留这一行:
(hd0) /dev/mapper/ventoy
- 重新生成GRUB配置:
sudo grub-mkconfig -o /boot/grub/grub.cfg
- 再尝试安装GRUB到EFI分区:
sudo grub-install /dev/mapper/ventoy1
3. 绕过Ventoy映射,直接挂载VDI文件操作
如果上面的方法不行,可以直接给VDI文件创建loop设备,绕开Ventoy的映射层:
- 找到你的VDI文件路径(比如
/mnt/ventoy/ubuntu.vdi) - 创建带分区的loop设备:
sudo losetup -fP /mnt/ventoy/ubuntu.vdi
- 查看生成的loop设备(比如
/dev/loop0),挂载它的EFI分区(假设是/dev/loop0p1):
sudo mount /dev/loop0p1 /boot/efi
- 给这个loop设备安装GRUB:
sudo grub-install --efi-directory=/boot/efi /dev/loop0
- 完成后清理loop设备:
sudo umount /boot/efi sudo losetup -d /dev/loop0
4. 应急方案:临时锁定GRUB避免升级触发重装
如果暂时没解决,先阻止apt自动重装GRUB:
# 锁定GRUB相关包 sudo apt-mark hold grub-efi-amd64 grub-efi-amd64-bin # 编辑GRUB配置,禁用自动探测 sudo nano /etc/default/grub # 添加一行:GRUB_DISABLE_OS_PROBER=true # 保存后更新配置 sudo update-grub
等找到彻底解决方案后,再用sudo apt-mark unhold grub-efi-amd64 grub-efi-amd64-bin解锁。
备注:内容来源于stack exchange,提问作者Ansel Pol
相关产品推荐
相关产品推荐

