无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5347|回复: 49
打印 上一主题 下一主题

[已解决] Grub4DOS 在 64GB 优盘 (FAT32格式)下的使用体验及期望解决的问题

  [复制链接]
跳转到指定楼层
1#
发表于 2024-3-14 17:02:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 blank007 于 2024-3-16 09:04 编辑

( 已经解决 )Grub4DOS 在 64GB 优盘 (FAT32格式)下的使用体验及期望解决的问题


        之前用的都是 <= 32GB  的优盘,通过 UltraISO 写入 USB-Zip + V2 ,并在分区中安装 Grub4DOS (G4D/G4E 同时安装,优盘是单分区),grldr 、bootia32.efi、bootx64.efi 优先拷贝到优盘最开始的位置。
        启动、使用均正常。


        刚刚入手一部爱国者优盘,容量 64GB。依然使用 UltraISO 写入 USB-Zip + V2 (依然是FAT32格式),并在分区中安装 Grub4DOS (G4D/G4E 同时安装,优盘是单分区),grldr 、bootia32.efi、bootx64.efi 优先拷贝到优盘最开始的位置。

        发现:

        Grub4DOS 能正常启动,但进不了菜单,只能进入命令行。运行 root 命令,提示无法 mount 该分区。后面的操作自然无法进行。


        请问各位大侠:

        这是 BIOS 在限制,还是 Grub4DOS 暂时没有考虑这样的情况?


        补充:

        HPUSBFW.exe  也可以将这个 64GB 的优盘格式化为 FAT32 格式。


2#
发表于 2024-3-14 18:00:37 | 只看该作者
我不晓得  帮顶
回复

使用道具 举报

3#
发表于 2024-3-14 18:07:31 | 只看该作者
    我采用 UD 三分区的方法,在 128G U盘采用 G4D 和 G4E 双启动没问题。前部 UD 区12M,G4D BIOS 启动。尾部隐藏区2G,FAT32,G4E UEFI 启动。
回复

使用道具 举报

4#
发表于 2024-3-14 18:25:27 | 只看该作者
如果你第一启动是g4d,那就结合clover来查看整个优盘
回复

使用道具 举报

5#
发表于 2024-3-14 18:38:29 | 只看该作者
帮你顶
回复

使用道具 举报

6#
发表于 2024-3-14 19:17:12 | 只看该作者
果然是“爱国者”优盘。都用国产程序 的估计就行了。
回复

使用道具 举报

7#
发表于 2024-3-15 05:21:44 | 只看该作者
学习一下
回复

使用道具 举报

8#
发表于 2024-3-15 07:27:33 | 只看该作者
看知乎说fat32有两种寻址标准(zhua删nlan.zhi删hu.com/p/74376993)会不会是g4d只支持32GB的那种寻址?

点评

网页 https://zhuanlan.zhihu.com/p/74376993 提到的 32G 分区大小限制,只是说操作系统本身的格式化工具,最大只支持格式化为 32G 的 FAT32 分区。如果用第三方工具,可以格式化为 64G 或更大。从闪迪官方旗舰店购  详情 回复 发表于 2024-3-16 04:51
回复

使用道具 举报

9#
发表于 2024-3-15 08:18:52 | 只看该作者
我只是挽尊的,楼主辛苦了
回复

使用道具 举报

10#
发表于 2024-3-15 16:00:39 | 只看该作者
提供的信息不多,不足以确定问题的根源。根据已经提供的描述,我觉得,可能性较大的,是 ultraISO 的问题。

可以试试用 diskgen 来制作 FAT32 分区。

还可以试试用 imdisk 来制作 FAT32 分区。

另外,楼主没说究竟是 g4d 启动出现问题呢,还是 g4e 启动出现的问题。毕竟 g4d 和 g4e 是有一些差别的,在底层是不同的。g4d 基于 grub legacy,而 g4e 是基于 grub2。

应该说清楚究竟是哪一个出现了问题。顺便说,我对 g4d 比较了解。我认为,g4d 在 FAT32 格式方面,具有完整的适应性,不太可能存在无法 mount 的情况。

回复

使用道具 举报

11#
发表于 2024-3-16 04:51:53 | 只看该作者
hzyry2046 发表于 2024-3-15 07:27
看知乎说fat32有两种寻址标准(zhua删nlan.zhi删hu.com/p/74376993)会不会是g4d只支持32GB的那种寻址?

网页 https://zhuanlan.zhihu.com/p/74376993 提到的 32G 分区大小限制,只是说操作系统本身的格式化工具,最大只支持格式化为 32G 的 FAT32 分区。如果用第三方工具,可以格式化为 64G 或更大。从闪迪官方旗舰店购买的 500G 优盘,买来之后就是 FAT32 格式的,而且是单一分区。也就是说,FAT32 分区的大小,已经证明可以达到 500G。而根据刚才提到的知乎网页中的描述,FAT32 分区的容量最大可达 2T。

这个 500G 的 FAT32 分区,在 Windows 下正常识别。在 grub4dos 下(无论 legacy BIOS 或者是 UEFI),也正常识别。

如果楼主不幸被骗,购买了坑爹的 “扩容盘”,那自然是各种不正常,不用说了。

至于说 BIOS,不像是有问题的样子。根据楼主的说明,32G 优盘是正常的。而 64G 的优盘,也把关键文件都放在开头,所以不会有影响。FAT32 格式的关键数据结构(即 BPB相关数据)都位于分区的最开头。所以,mount 总是会成功,按照原理来说,不可能失败。

但是,如果把 g4e 的文件放在优盘的尾部,这恐怕是有问题的吧?你放在尾部,那么 UEFI 也是有可能失败的,我这么认为。我对于 UEFI 没有深入研究,我不太清楚 UEFI 是否像 legacy BIOS 那样存在最大支持的扇区号问题。如果存在同样的问题,那么,UEFI 的相关启动文件,都需要放在优盘的开头,也就是说,不可以把 UEFI 的分区放在优盘尾部。
回复

使用道具 举报

12#
发表于 2024-3-16 05:38:50 | 只看该作者
再次回复一下楼主。

我从闪迪旗舰店购买的 500G 优盘(实际容量约 460G),制作 grub4dos 启动盘。以下凭记忆来描述制作过程。

1、原装优盘就是 FAT32 分区格式,单一分区,无需重新格式化。
2、删除原装优盘里面免费赠送的优盘加密软件。我不需要这些加密软件。其实,主要是,我一看见“软件”,就想到 “流氓”,一阵恶心、呕吐,身体不适,所以必须删除。
3、把 g4d、g4e 的相关文件、文件夹都拷贝到优盘。
4、写入 g4d 的分区引导记录(即 PBR,或者叫做 VBR)。这可以用 BOOTICE 来做。

此时,用 UEFI 启动,正常。

但后来用 legacy BIOS 启动时,发现不行,无法启动。这才知道,优盘上的 MBR 代码并未把控制权交给 优盘的分区引导记录。于是,

5、用 BOOTICE 把 wee 安装到优盘的 MBR 上。

至此,legacy BIOS 也能正常启动 grub4dos 了。

顺便说,哪个软件值得信赖?这个问题很重要。我使用 diskgen 有很多年了,从未发现 diskgen 有过什么大毛病,比如说,把什么东西整坏了。所以,在需要格式化的时候,我通常会用 diskgen 来做——放心。

另外,bootice 在写 wee 的时候有个 bug,它计算菜单起始位置有错误。workaround (躲过此毛病的办法)就是:自定义 wee 的菜单,把菜单中的第一句,重复写一次。也或者在第一句之前增加一条注释语句,注释语句的长度稍微长一点,达到 30 个字符以上即可。由于 BOOTICE 的 bug,反正第一句是不能正常执行的。它会从菜单之后的某个字节处开始执行。我们刚才做的,无非是想要保证:第二句能够正常执行。

点评

谢谢 不点 老师的 详细讲解,所说的那个wee 有时是有这情况发生,也不知原来是个BUG 有幸看到你讲解,我也把我的修得下菜单才行.  详情 回复 发表于 2024-3-16 10:28
回复

使用道具 举报

13#
发表于 2024-3-16 06:55:58 | 只看该作者
刚才说了,用 BootICE 把 grub4dos 安装在 PBR 以后,启动失败,又安装 wee 到 MBR 才成功。这也挺麻烦的,尤其是 wee 的菜单还要进行微调。

其实,不需要安装 wee。安装微软的 MBR 代码也是可以的。

当时我也尝试安装微软的 MBR 代码,但依旧失败!

我慌了,于是,赶紧安装 wee —— 紧急关头,先解决问题再说。

后来知道了,优盘的 FAT32 分区处于 “未激活” 状态,那么,微软的 MBR 代码,就不会把控制权交给 PBR 代码。使用微软的 MBR 代码,必须激活 PBR 分区,这才能够正常递交控制权。

岁数大了,精力不够使,容易忘事。所以,激活、未激活,这种事情,容易忽略。而在失败后,又容易紧张。紧张之后,就找个 wee 来解决。其实,安装了 wee 之后,就不需要 PBR 了(因为 wee 自己能找到并加载 grldr)。所以,wee 不是来解决 PBR 无法接管控制权的问题的。“把 PBR 分区激活” —— 这才真正解决 MBR --> PBR 的控制权递交失败的问题。

点评

多谢不点大侠的指点 经过再次尝试,基本断定这个现象与 UltraISO 有关。 首先,使用 Diskgen 将启动模式转换为 HDD 模式,MBR 为 WinNT 6.x ,将 G4D 安装在 PBR。后面的操作和前面一样,启动、使用正常了  详情 回复 发表于 2024-3-16 08:54
回复

使用道具 举报

14#
发表于 2024-3-16 07:19:55 | 只看该作者
听不点大佬娓娓道来,收获颇多

点评

感谢假大人善待老年人。老年人身体和精神都很脆弱,不像年轻人那么具有承受力了。  详情 回复 发表于 2024-3-16 07:27
回复

使用道具 举报

15#
发表于 2024-3-16 07:27:03 | 只看该作者
假大空 发表于 2024-3-16 07:19
听不点大佬娓娓道来,收获颇多

感谢假大人善待老年人。老年人身体和精神都很脆弱,不像年轻人那么具有承受力了。
回复

使用道具 举报

16#
 楼主| 发表于 2024-3-16 08:54:53 | 只看该作者
本帖最后由 blank007 于 2024-3-16 09:02 编辑
不点 发表于 2024-3-16 06:55
刚才说了,用 BootICE 把 grub4dos 安装在 PBR 以后,启动失败,又安装 wee 到 MBR 才成功。这也挺麻烦的, ...

多谢不点大侠的指点

        经过再次尝试,基本断定这个现象与 UltraISO 有关。


        首先,使用 Diskgen 将启动模式转换为 HDD 模式,MBR 为 WinNT 6.x ,将 G4D 安装在 PBR。后面的操作和前面一样,启动、使用正常了。(usb-zip ,usb-fdd 模式下没有盘符,故没有继续操作)

        因为偏爱 USB-ZIP + v2 启动,故采用 Bootice 对其重新分区,选择 U+ v2 模式,不隐藏,主引导记录自然也是USB-ZIP + v2,G4D 也是安装到 PBR 。启动、使用也正常了。


初步结论:

        1、UltraISO 对 <=32GB 的优盘处理得很好,对 >32GB 的处理可能没有考虑

        2、Bootice  只有 USB HDD+ v2、USB ZIP+ v2 可选


另外一个疑虑:

        曾经,用 UltraISO/BootICE 对某个优盘操作时,强制使用 USB-ZIP + v2 模式后,那个优盘物理损坏了。不知道是不是巧合。


补充:


      之前没有明说是g4d还是g4e ,是因为表现都一样。现在,也是表现都一样:都能正常启动、使用了

点评

结果好,就是一切都好。感谢告知详情,让我也能学到不少知识。  详情 回复 发表于 2024-3-16 10:36
回复

使用道具 举报

17#
发表于 2024-3-16 09:58:17 来自手机 | 只看该作者
HPUSBFW格成dos再启动grub.exe试

点评

这也是个思路。如果 DOS 能够启动,那就说明,FAT32 的分区是正常的,是可以 mount 的。假如说,进入 grub4dos 环境以后,在 grub4dos 底下无法 mount 分区、无法访问分区里面的文件,那就应该算是 grub4dos 的 bug  详情 回复 发表于 2024-3-16 11:31
回复

使用道具 举报

18#
发表于 2024-3-16 10:28:18 | 只看该作者
不点 发表于 2024-3-16 05:38
再次回复一下楼主。

我从闪迪旗舰店购买的 500G 优盘(实际容量约 460G),制作 grub4dos 启动盘。以下 ...

谢谢 不点 老师的 详细讲解,所说的那个wee 有时是有这情况发生,也不知原来是个BUG  有幸看到你讲解,我也把我的修得下菜单才行.
回复

使用道具 举报

19#
发表于 2024-3-16 10:36:46 | 只看该作者
blank007 发表于 2024-3-16 08:54
多谢不点大侠的指点

        经过再次尝试,基本断定这个现象与 UltraISO 有关。

结果好,就是一切都好。感谢告知详情,让我也能学到不少知识。
回复

使用道具 举报

20#
发表于 2024-3-16 11:31:28 | 只看该作者
szwp 发表于 2024-3-16 09:58
HPUSBFW格成dos再启动grub.exe试

这也是个思路。如果 DOS 能够启动,那就说明,FAT32 的分区是正常的,是可以 mount 的。假如说,进入 grub4dos 环境以后,在 grub4dos 底下无法 mount 分区、无法访问分区里面的文件,那就应该算是 grub4dos 的 bug 了。

DOS 底下运行 grub.exe,这只能临时测试用用,这是可以的。不要用于正式发布的产品中。这道理,以前说过。DOS 修改了 BIOS 建立的中断向量表,而运行 grub.exe 之后,无法把这个中断向量表 100% 恢复为 P-O-S-T(通电自检)后的状态。换句话说,中断向量表已经被污染了(或者说,不干净了)。在大多数情况下,不干净的中断向量表也能正常工作。但对于某些品牌电脑,这会产生死机等问题。所以,为了保险起见,我们最好就不要再经由 DOS 而进入 grub4dos 了。

如果是在 syslinux 或 grub2 之下用 kernel 或 linux 命令加载 grub.exe,这是没问题的(此时 grub.exe 是看作 Linux 的内核格式,而不是当作 DOS 的 EXE 格式)。这里不存在 “DOS 污染中断向量表” 的问题。syslinux,grub2,linux 等,都不污染中断向量表。其实,严格来说,Linux 污染了一个中断向量,也就是位于物理内存最开头的4个字节(它应该指向 “除以零” 这个故障的处理程序的入口)。由于 “除以零” 这个故障是很少会发生的,所以,这个问题也就不严重。既然我们忽略这个问题,那么,Linux 也就被认为是 “没有污染中断向量表” 了。

点评

只使用g4d的可以考虑写入grldr.mbr或整个grldr就不需要考虑分区激活了  详情 回复 发表于 2024-3-16 15:21
回复

使用道具 举报

21#
发表于 2024-3-16 15:21:41 来自手机 | 只看该作者
不点 发表于 2024-3-16 11:31
这也是个思路。如果 DOS 能够启动,那就说明,FAT32 的分区是正常的,是可以 mount 的。假如说,进入 gru ...

只使用g4d的可以考虑写入grldr.mbr或整个grldr就不需要考虑分区激活了
回复

使用道具 举报

22#
发表于 2024-3-17 09:07:49 | 只看该作者
我今天再次进入这个话题,提出一个问题,供各位大人以及开发者们思考。

我注意到,楼主的 64G 的 FAT32 分区,能够在 Windows 下正常使用。然而,grub4dos 启动后,却不能 mount 这个分区。

——对了,这就是问题。Windows 能识别,而 grub4dos 不能识别,这肯定有疑问,对不对?

也就是说,有很大的可能性,grub4dos 对 FAT32 格式的检查过于 “严格”,导致 UltraISO 创建的这个比较 “特殊” 的 FAT32 格式被判定为 “非法” 或 “未知” 格式。

因此我觉得,这个问题值得楼主和开发者们继续深入讨论研究。

点评

楼上有朋友说FAT32存在2种寻址方式。估计 GRUB4DOS 与 Bootice 的寻址方式一致, UltraISO 对 >=32GB 的 FAT32 应该用的是另外一种寻址方式。 另外,我也觉得这情况值得继续研究:大容量的优盘会越来越多,UEFI  详情 回复 发表于 2024-3-17 12:01
回复

使用道具 举报

23#
发表于 2024-3-17 09:36:52 来自手机 | 只看该作者
期望谁去解决呢?按分区id判断简单,但可能会遇上故意设置特殊id的
回复

使用道具 举报

24#
 楼主| 发表于 2024-3-17 12:01:37 | 只看该作者
不点 发表于 2024-3-17 09:07
我今天再次进入这个话题,提出一个问题,供各位大人以及开发者们思考。

我注意到,楼主的 64G 的 FAT32  ...

楼上有朋友说FAT32存在2种寻址方式。估计 GRUB4DOS 与 Bootice 的寻址方式一致, UltraISO 对 >=32GB 的 FAT32 应该用的是另外一种寻址方式。

另外,我也觉得这情况值得继续研究:大容量的优盘会越来越多,UEFI 的 ESP 可能在一段比较长的时间内继续以 FAT32 为标准,故移动硬盘、优盘启动计算机时,恐怕还得考虑这个情况。

点评

如果 yaya 能够提供一个调试版,让你测试,那就能够定位出错的位置了。 你把有问题的环境弄好,让它再现问题,以便运行 yaya 的调试版来跟踪执行。 你甚至也可以试试在虚拟机上弄,让问题再现。这样的话,yaya  详情 回复 发表于 2024-3-17 18:51
回复

使用道具 举报

25#
发表于 2024-3-17 18:51:44 | 只看该作者
blank007 发表于 2024-3-17 12:01
楼上有朋友说FAT32存在2种寻址方式。估计 GRUB4DOS 与 Bootice 的寻址方式一致, UltraISO 对 >=32GB 的  ...

如果 yaya 能够提供一个调试版,让你测试,那就能够定位出错的位置了。

你把有问题的环境弄好,让它再现问题,以便运行 yaya 的调试版来跟踪执行。

你甚至也可以试试在虚拟机上弄,让问题再现。这样的话,yaya 自己就可以调试了。

既然这个问题与 BIOS 无关,那它就是个 FAT32 格式的问题。可能性较大的,是在 BPB 数据结构方面,有异常情况出现。所以,用虚拟机应该也能再现这个问题。

你把调试环境弄好以后,给 yaya 留言,看看 yaya 有没有时间来做这个事。
回复

使用道具 举报

26#
发表于 2024-3-17 19:01:49 来自手机 | 只看该作者
好像楼主把U盘重新格式化了,问题得到了解决。如果能重现bug,作为技术问题可以探讨。如果楼主不嫌麻烦的话。

点评

这个现象可以重现。 不过,先说另外一个操作: 找到了一个240GB的固态硬盘,使用 UltraISO 写入 USB-ZIP + V2 后,(fat32格式)安装 grub4dos。结果, G4D/G4E 都是正常的(安装g4d时,grubinst 1.4 显示  详情 回复 发表于 2024-3-17 23:30
yaya 来了,好。 我说几点想法,不一定对,仅供参考。 首先,UltraISO 制作了一个并不常见的 FAT32 格式。这里姑且认为它的格式是 “正确” 的(因为毕竟 Windows 也承认了它的格式)。尽管它 “正确”,但却  详情 回复 发表于 2024-3-17 19:27
回复

使用道具 举报

27#
发表于 2024-3-17 19:04:59 | 只看该作者
不错
回复

使用道具 举报

28#
发表于 2024-3-17 19:27:46 | 只看该作者
2011yaya2007777 发表于 2024-3-17 19:01
好像楼主把U盘重新格式化了,问题得到了解决。如果能重现bug,作为技术问题可以探讨。如果楼主不嫌麻烦的话 ...

yaya 来了,好。

我说几点想法,不一定对,仅供参考。

首先,UltraISO 制作了一个并不常见的 FAT32 格式。这里姑且认为它的格式是 “正确” 的(因为毕竟 Windows 也承认了它的格式)。尽管它 “正确”,但却不常见,属于 “正确” 里面的 “罕见” 或 “奇葩” 情况。我们的开发者,如果有精力、有时间、有兴趣,是可以去支持它、适应它的。如果没时间、没精力、没兴趣,也完全可以放弃支持它。

其次,这个问题,应该可以在虚拟机里面重现。楼主可以制作一个极小的 FAT32 分区,提供给 yaya 来研究。我觉得问题很可能就出在 BPB 上。甚而至于,只要用一个 16 进制编辑器来查看这个异常分区的 BPB,并与其它正常分区的 BPB 进行比较,就有可能发现问题。

回复

使用道具 举报

29#
发表于 2024-3-17 19:54:27 | 只看该作者
我再说第三点看法。

grub4dos 对于 FAT32 的支持,是严格遵照网上搜集到的知识和标准的。有微软公开的标准,也有未公开的、但被网上高人 hack 出来的 “内幕标准”。所以,一个 “正常” 的 FAT32 分区,不太可能让 grub4dos 无法 mount。

在最终结论没确定之前,我姑且认为,UltraISO 在 “走钢丝”,在 “似是而非” 的模糊领域进行 “试探”。这种 “新” 格式,尽管能够被 Windows 支持,但谁敢保证,以后不会出问题?比如说,某一天,突然这个分区瘫痪了!比如,是因为微软自己的某个工具软件不承认这个 FAT32 格式,而产生误操作,把它毁了!或者,虽然微软没有毁掉它,但第三方某个应用程序不能很好地与这个新的 FAT32 格式兼容,那照样也存在毁掉的风险!

如果最终能够确定,这确实是罕见的奇葩格式,那么,我倒是倾向于,不再支持这种格式。就是说,有意不去支持这种格式。“走钢丝” 式的 “正确”,能算是 “正确” 吗?我们知道,世上没有绝对的东西。正确性也是相对的。从不同的视角去看,得到的结论也不同。如果按照 “微软 Windows 能够识别” 就定义为 “正确”,那就是正确。如果考虑到,微软自己从不创建这种格式,那么,这就不属于 “正确” 的范畴。所以说,正确性是相对的。你倾向于哪一个,就是哪一个。没有 “绝对正确” 这回事。
回复

使用道具 举报

30#
发表于 2024-3-17 20:28:48 来自手机 | 只看该作者
前段时间,一个老外反馈,不能挂载NTFS分区。分区在500Gb左右。他是使用linux工具格式化的。查启动分区的BPB表,结果每磁道扇区数、磁头数、隐藏扇区数都为零。grub挂载时需要检查这里(尽管这几个参数直接启动时需要,而挂载则不是必要的),因此失败。

点评

今天又有一点思考,分享一下。 Linux 的世界,不同于微软。Linux 在启动之后,立即转入保护模式,不在实模式停留片刻。也就是说,Linux 不使用 BIOS。这是从 Linux 开发之初就实施的,一直延续下来,都是如此。那  详情 回复 发表于 2024-3-20 05:59
今天又想到了一点,再发表一下。 如果站在 grub4dos 的开发者的立场上看问题,就可能有这样的想法:我们是参照业界规范,在认认真真、正儿八经开发软件。我们应该伺候好谁?当然 “谁最牛B,我们就伺候好谁”。现  详情 回复 发表于 2024-3-19 10:39
这个世界,给人的自由度是蛮大的,各种事情都有。而且,存在皆合理,你又不能说人家是 “错误” 的。 我只能站在我的角度来看问题,因为我永远也不可能站在别人的角度。 NTFS 和 FAT系列格式,都是微软的。微  详情 回复 发表于 2024-3-18 05:59
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 21:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表