Legacy模式下GPT SSD安装Ubuntu16.04 RAID0遇Grub安装失败
解决Legacy启动+GPT+RAID0环境下Grub安装失败的问题
你的配置和报错我都清楚了——核心问题出在Legacy启动模式下,Grub不能直接安装到RAID逻辑卷,必须写入物理磁盘的MBR区域,且需要确保GPT磁盘上的BIOS Boot分区配置正确,同时安装时必须进入系统的chroot环境才能生效。下面是一步步的修复步骤:
步骤1:从Live USB启动并激活RAID阵列
首先用你的Live USB启动系统,打开终端执行以下命令确保RAID阵列被正确识别:
# 扫描并组装RAID阵列 sudo mdadm --assemble --scan # 查看磁盘和分区信息,确认RAID卷(比如/dev/md1)和4MB BIOS Boot分区的位置 sudo lsblk
这里要注意:你提到的/dev/nvme01n1应该是输入错误,大概率是/dev/nvme0n1(第一块NVMe磁盘),第二块对应/dev/nvme1n1。
步骤2:挂载系统分区到/mnt
把RAID里的系统分区和必要的目录挂载到Live系统的/mnt目录下:
# 挂载RAID中的/分区(假设是/dev/md1p2,根据你的布局调整) sudo mount /dev/md1p2 /mnt # 挂载RAID中的/home分区(假设是/dev/md1p3) sudo mount /dev/md1p3 /mnt/home # 挂载系统必要的虚拟文件系统 sudo mount --bind /dev /mnt/dev sudo mount --bind /dev/pts /mnt/dev/pts sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
步骤3:进入chroot环境
这是关键!直接在Live系统里运行grub-install会因为找不到你的系统配置而失败,必须切换到你的系统环境中:
sudo chroot /mnt
步骤4:检查BIOS Boot分区并安装Grub
Legacy+GPT启动必须有一个类型为EF02的BIOS Boot分区(就是你预留的4MB空间),先确认它的类型正确:
# 用gdisk查看第一块磁盘的分区信息 gdisk /dev/nvme0n1
在gdisk界面中:
- 按
t键修改分区类型 - 输入你的4MB分区的编号(比如
1) - 输入
ef02设置为BIOS Boot分区类型 - 按
w键保存更改并退出
然后安装Grub到物理磁盘(不是RAID卷!):
# 安装Grub到第一块磁盘 grub-install /dev/nvme0n1 # 为了保险,同样安装到第二块磁盘(防止第一块磁盘故障) grub-install /dev/nvme1n1
步骤5:生成Grub配置文件
安装完成后,生成适配你RAID系统的Grub配置:
update-grub
步骤6:退出chroot并重启
输入exit退出chroot环境,然后卸载所有挂载的分区:
sudo umount /mnt/home sudo umount /mnt/dev/pts sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt
拔掉Live USB,重启系统,应该就能正常引导了。
为什么之前的操作失败?
- 你直接在Live系统中运行
grub-install,没有进入chroot环境,Grub无法读取你系统中的内核和RAID配置; - Grub不能安装到RAID逻辑卷(
/dev/md1),因为Legacy BIOS只能从物理磁盘的MBR加载引导程序,RAID卷是逻辑设备,BIOS无法直接识别; - 如果你的4MB分区类型不是
EF02,Grub无法在GPT磁盘的Legacy模式下正常写入引导信息。
内容的提问来源于stack exchange,提问作者Paritosh Kelkar
相关产品推荐
相关产品推荐

