chenall / grub4dos

外部命令和工具源码:https://github.com/chenall/grubutils 下载:
http://grub4dos.chenall.net
GNU General Public License v2.0
629 stars 132 forks source link

将分区格式化为exfat格式后, 0.46a版本的g4d无法引导 #427

Open xhzkp opened 10 months ago

xhzkp commented 10 months ago

我下载使用的g4d版本0.46a链接如下: http://grub4dos.chenall.net/downloads/grub4dos-0.4.6a-2023-08-18/

我操作的步骤和遇到的情况如下:

我将下面链接中的PE, 先使用ultraiso软件将ISO文件写入优盘,使用的参数是: U+V2 和 高端隐藏 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=437157

然后用 GRLDR内置菜单编辑器V5.0.2软件 修改 0.46a版本的 grldr , 修改的内置菜单如下 default 0 timeout 0 debug off

title PE find --set-root /BOOTMGR chainloader /BOOTMGR

然后用软件diskgenius, 把上面修改好的 grldr 拷到了 PE分区(FAT16格式)的根目录下

接着用软件bootice, 把0.46a版本的 grldr.mbr 恢复到优盘的 MBR

然后在我的两台电脑上测试优盘的引导情况, 此时, BIOS和UEFI双启一切正常, 但是有个问题, 就是优盘的UEFI引导项有两个, 这应该是因为ultraiso写入优盘后, PE分区是FAT16格式的, 而数据区是FAT32格式的, 所以, 我就用系统自带的右键格式化 将数据区格式化为exFat格式, 然后重新测试优盘引导, 然而此时出了新情况, g4d无法BIOS引导了, 报错如下图所示 grldr 文件应该就在 HD0,3 分区中, 但是图片中显示该分区没有找到 grldr 文件 5

为了验证是不是因为分区格式变化而导致的问题, 我又重新将数据分区格式化为了Fat32, 再次测试, 又恢复了正常的BIOS引导, 由此可见exfat分区格式的确导致了问题的产生, 貌似是MBR无法再搜索到FAT16下的 grldr 文件了

下面分别是正常和失败时优盘分区表详细信息, 对比后发现:仅有一个字母的变化, 这也正好验证了分区格式的变化: 0C是FAT32而07是exFat -------------------------------------------------------------------------------------------BIOS正常引导时的分区表详细信息如下: 磁盘:1 磁盘信息 磁盘号 大小(字节) 柱面数 磁头数 扇数 扇区 媒体 签名 总线 1 30943995904 3762 255 63 512 11 000A0D74 7 MBR R 字符说明 激活 本分区起始 分区 本分区结束 本分区__ __本分区 激活为0x80 磁头_扇区_柱面 类型 磁头_扇区_柱面 起始扇区号____ 扇区总数__ 主分区1: 0x00 0x04 0x05 0x00 0x0C 0xFE 0xFF 0xFF 0x00 0x01 0x00 0x00 0x00 0x2D 0x8E 0x03 主分区2: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 主分区3: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 主分区4: 0x80 0x03 0x03 0x81 0x1E 0xFE 0xFF 0xFF 0x00 0x2E 0x8E 0x03 0xF4 0x05 0x0C 0x00 标志 : 0x55 0xAA 全部分区: 1 -2 -3 =4 分区 类型 激活(1) 起始(字节) 长度(字节) 隐藏扇区 结尾(字节) 物理# 盘符 1 0x0C 0 131072 30540431360 256 30540562432 1 G: -2 0x00 0 0 0 0 0 2
-3 0x00 0 0 0 0 0 3
0 0x1E 1 30540562432 403433472 59649536 30943995904 4

-------------------------------------------------------------------------------------------BIOS引导失败时的分区表详细信息如下: 磁盘:1 磁盘信息 磁盘号 大小(字节) 柱面数 磁头数 扇数 扇区 媒体 签名 总线 1 30943995904 3762 255 63 512 11 000A0D74 7 MBR R 字符说明 激活 本分区起始 分区 本分区结束 本分区__ __本分区 激活为0x80 磁头_扇区_柱面 类型 磁头_扇区_柱面 起始扇区号____ 扇区总数__ 主分区1: 0x00 0x04 0x05 0x00 0x07 0xFE 0xFF 0xFF 0x00 0x01 0x00 0x00 0x00 0x2D 0x8E 0x03 主分区2: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 主分区3: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 主分区4: 0x80 0x03 0x03 0x81 0x1E 0xFE 0xFF 0xFF 0x00 0x2E 0x8E 0x03 0xF4 0x05 0x0C 0x00 标志 : 0x55 0xAA 全部分区: 1 -2 -3 =4 分区 类型 激活(1) 起始(字节) 长度(字节) 隐藏扇区 结尾(字节) 物理# 盘符 1 0x07 0 131072 30540431360 256 30540562432 1 G: -2 0x00 0 0 0 0 0 2
-3 0x00 0 0 0 0 0 3
0 0x1E 1 30540562432 403433472 59649536 30943995904 4

xhzkp commented 10 months ago

因为使用微PE制作的两分区PE优盘, 能将优盘的数据分区格式化任意格式(FAT32/exFat/NTFS), 还能保证BIOS和UEFI双启完美启动, 所以我提取了微PE的MBR, 发现其使用的G4D版本为0.4.5c(在BOOTICE中的显示), 然后恢复到楼上提到的无法BIOS引导的优盘, 问题就解决了, 看来确实是新版的BUG, 微PE的相关文件如下供参考, 注意它的MBR中更改了要搜索的文件grldr的名字为WEIPE 微PE老版g4d.zip