无忧启动论坛

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

chainloader (hd0) 无法启动硬盘引导

[复制链接]
跳转到指定楼层
1#
发表于 2025-1-18 21:43:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
chainloader (hd0)   在GRUBUFEI环境下 EFI/grub/menu.lst 下   无法启动硬盘引导  求大神解答一下
2#
发表于 2025-1-19 07:31:13 | 只看该作者
title 0 /EFI/Microsoft/Boot/bootmgfw.efi
find --set-root /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
回复

使用道具 举报

3#
发表于 2025-1-19 08:03:38 | 只看该作者
不熟悉 这个配置
回复

使用道具 举报

4#
发表于 2025-1-19 09:37:12 | 只看该作者
学习学习,感谢分享。
回复

使用道具 举报

5#
 楼主| 发表于 2025-1-19 10:25:27 | 只看该作者

title 0 /EFI/Microsoft/Boot/bootmgfw.efi
find --set-root /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
这个启动U盘有什么区别

点评

因为前面问的是无法启动硬盘引导,所用的是uefi引导,windows硬盘的uefi引导一般是esp的 \EFI\Microsoft\Boot'bootmgfw.efi,所以版主回复 搜索 \EFI\Microsoft\Boot'bootmgfw.efi 引导。 类似的情况下启动U盘,  详情 回复 发表于 2025-1-19 13:30
你要的是启动windows吧?这个会搜索,找到就启动,在优盘硬盘均可,你问得不清不楚的,我也只能模糊回答。  详情 回复 发表于 2025-1-19 13:22
回复

使用道具 举报

6#
发表于 2025-1-19 12:21:22 | 只看该作者
来看一下
回复

使用道具 举报

7#
发表于 2025-1-19 12:49:28 | 只看该作者
谢谢分享,支持个。
回复

使用道具 举报

8#
发表于 2025-1-19 13:22:13 来自手机 | 只看该作者
fszqwl 发表于 2025-1-19 10:25
title 0 /EFI/Microsoft/Boot/bootmgfw.efi
find --set-root /EFI/Microsoft/Boot/bootmgfw.efi
chainl ...

你要的是启动windows吧?这个会搜索,找到就启动,在优盘硬盘均可,你问得不清不楚的,我也只能模糊回答。
回复

使用道具 举报

9#
发表于 2025-1-19 13:30:15 | 只看该作者
本帖最后由 hilsonma 于 2025-1-19 13:38 编辑
fszqwl 发表于 2025-1-19 10:25
title 0 /EFI/Microsoft/Boot/bootmgfw.efi
find --set-root /EFI/Microsoft/Boot/bootmgfw.efi
chainl ...

因为前面问的是无法启动硬盘引导,所用的是uefi引导,windows硬盘的uefi引导一般是esp的 \EFI\Microsoft\Boot\bootmgfw.efi,所以版主回复 搜索 \EFI\Microsoft\Boot\bootmgfw.efi 引导。

类似的情况下启动U盘,因为U盘的uefi引导规范是由efi分区的 \EFI\Boot\bootx64.efi 引导,所以,对U盘来说,搜索 \EFI\Boot\bootx64.efi 引导。

上面说的都是一般的情况下。如果是自己定制的,使用g4e做主引导的情况下,只要搜索到有效的引导文件,然后进一步引导即可。
比如你在u盘放一个名为pe的文件夹,里面放了全套的bootmgfw.efi+bcd+boot.sdi+boot.wim,那么,搜索 \pe\bootmgfw.efi 引导即可进入这个pe.
不管U盘还是硬盘都可以如此搜索定制引导,通用的。

硬盘和u盘默认的主引导才是有区别的
U盘默认的是efi分区的 \EFI\Boot\bootx64.efi
硬盘默认的是安装系统时创建的引导,对于windows来说就是efi分区的 \EFI\Microsoft\Boot\bootmgfw.efi
回复

使用道具 举报

10#
 楼主| 发表于 2025-1-19 14:25:01 | 只看该作者
chainloader /efi/microsoft/boot/bootmgfw.efi   启动U盘PE
回复

使用道具 举报

11#
 楼主| 发表于 2025-1-19 15:00:45 | 只看该作者
用G4E 中的bootx64.efi 引导   在不手动关闭secure boot   如何认证或跳过 bios中secure boot(安全引导)

点评

进bios信任它  详情 回复 发表于 2025-1-21 08:17
回复

使用道具 举报

12#
发表于 2025-1-21 08:17:43 | 只看该作者
fszqwl 发表于 2025-1-19 15:00
用G4E 中的bootx64.efi 引导   在不手动关闭secure boot   如何认证或跳过 bios中secure boot(安全引导)

进bios信任它
回复

使用道具 举报

13#
 楼主| 发表于 2025-1-21 18:19:53 | 只看该作者
测试有secure boot 主板有华硕 微星 等
回复

使用道具 举报

14#
发表于 2025-3-24 15:32:12 | 只看该作者
楼主,我也正想问这个问题,你找到答案了吗?

点评

2楼和9楼的回答你没有看明白吧。 uefi环境下是不能转扇区引导的,只能转efi文件引导 所以uefi下要启动硬盘不是 chainloader (hd0) ,而是 chainloader (hd0,n)/efipath/xxx.efi ,就是直接转硬盘上的efi文件引导。  详情 回复 发表于 2025-3-24 15:55
回复

使用道具 举报

15#
发表于 2025-3-24 15:55:57 | 只看该作者
gmy 发表于 2025-3-24 15:32
楼主,我也正想问这个问题,你找到答案了吗?

2楼和9楼的回答你没有看明白吧。
uefi环境下是不能转扇区引导的,只能转efi文件引导
所以uefi下要启动硬盘不是 chainloader (hd0) ,而是 chainloader (hd0,n)/efipath/xxx.efi ,就是直接转硬盘上的efi文件引导。如果是win的话,一般是 /efi/microsoft/boot/bootmgfw.efi,如果不确定是哪个分区,可以先find

find --set-root /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi

也就是2楼的答案

点评

gmy
我明白了,但我有个另外的相关问题,G4D(不是G4E)的从硬盘启动,我以前用这个代码: title Win7/8/10 find --set-root /bootmgr chainloader /bootmgr 但发现不能用于U盘启动,因为U盘也有bootmgr,如果只想启  详情 回复 发表于 2025-3-24 16:21
回复

使用道具 举报

16#
发表于 2025-3-24 16:21:07 | 只看该作者
hilsonma 发表于 2025-3-24 15:55
2楼和9楼的回答你没有看明白吧。
uefi环境下是不能转扇区引导的,只能转efi文件引导
所以uefi下要启动 ...

我明白了,但我有个另外的相关问题,G4D(不是G4E)的从硬盘启动,我以前用这个代码:
title Win7/8/10
find --set-root /bootmgr
chainloader /bootmgr
但发现不能用于U盘启动,因为U盘也有bootmgr,如果只想启动硬盘的Win7/8/10,怎么解决?
回复

使用道具 举报

17#
发表于 2025-3-24 16:26:53 来自手机 | 只看该作者
可以在要启动的根分区,放置一个空文件,比如111.txt ,然后:find --set-root /111.txt

点评

gmy
制作通用版的PE系统,给陌生人修电脑,不能在别人的硬盘提前写入文件吧  详情 回复 发表于 2025-3-24 16:32
回复

使用道具 举报

18#
发表于 2025-3-24 16:32:54 | 只看该作者
2011yaya2007777 发表于 2025-3-24 16:26
可以在要启动的根分区,放置一个空文件,比如111.txt ,然后:find --set-root /111.txt

制作通用版的PE系统,给陌生人修电脑,不能在别人的硬盘提前写入文件吧
回复

使用道具 举报

19#
发表于 2025-3-24 16:34:27 | 只看该作者
本帖最后由 gmy 于 2025-3-24 16:58 编辑

以下是另外一个网友的G4D代码,我改了一下,成功了:
title WinXP/Vista/7/8/10
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
map (hd1) (hd0)
map (hd0) (hd1)
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /ntldr || chainloader /bootmgr

启动XP时出现错误提示十几行,最终也成功了。
不知以上代码还可以优化吗?


回复

使用道具 举报

20#
发表于 2025-3-24 17:54:05 | 只看该作者
本帖最后由 hilsonma 于 2025-3-24 18:09 编辑
gmy 发表于 2025-3-24 16:34
以下是另外一个网友的G4D代码,我改了一下,成功了:
title WinXP/Vista/7/8/10
find --set-root --ignor ...
  1. title WinXP/Vista/7/8/10
  2.     find --set-root --devices=h /bootmgr || find --set-root --devices=h /ntldr
  3.     map () (hd0)
  4.     map (hd0) ()
  5.     map --rehook
  6.     find --set-root --devices=h /bootmgr || find --set-root --devices=h /ntldr
  7.     chainloader /bootmgr || chainloader /ntldr
复制代码


如果U盘也是bootmgr引导并且被识别为硬盘的话,那么find 的对象就改成 /Windows
  1. title WinXP/Vista/7/8/10
  2.     find --set-root --devices=h /Windows
  3.     map () (hd0)
  4.     map (hd0) ()
  5.     map --rehook
  6.     find --set-root --devices=h /Windows
  7.     chainloader /bootmgr || chainloader /ntldr
复制代码

点评

bootmgr 不需要交换盘号。 ntldr 才需要交换盘号。 第二条 find 命令可以用另外一条命令代替(前不久我发过帖子)。find 命令查找文件,很浪费。所以,应该使用替代方案。 Fatal!Inconsistent data read f  详情 回复 发表于 2025-3-25 10:32
gmy
试了几台XP和Win7的老电脑,第二个代码成功了。但XP下虽然成功了,但中途仍有错误代码,显示8屏之多。我把第1屏和第8屏的截图发一下,请分析一下,看看能完美解决吗?[attachimg]556179[/attachimg] [attachimg]5  详情 回复 发表于 2025-3-24 19:21
回复

使用道具 举报

21#
发表于 2025-3-24 19:21:20 | 只看该作者
hilsonma 发表于 2025-3-24 17:54
如果U盘也是bootmgr引导并且被识别为硬盘的话,那么find 的对象就改成 /Windows

试了几台XP和Win7的老电脑,第二个代码成功了。但XP下虽然成功了,但中途仍有错误代码,显示8屏之多。我把第1屏和第8屏的截图发一下,请分析一下,看看能完美解决吗?


点评

这是扇区读取出错,运行磁盘扫描看是什么结果 如果是数据链接出错应该可以修复,如果系统文件坏了就要重装系统 记忆中好象有个sfc功能的,如果还能进系统可以运行看看(自动修补系统文件的,好象要挂载光盘镜像)  详情 回复 发表于 2025-3-24 19:59
回复

使用道具 举报

22#
发表于 2025-3-24 19:59:27 | 只看该作者
gmy 发表于 2025-3-24 19:21
试了几台XP和Win7的老电脑,第二个代码成功了。但XP下虽然成功了,但中途仍有错误代码,显示8屏之多。我 ...

这是扇区读取出错,运行磁盘扫描看是什么结果
如果是数据链接出错应该可以修复,如果系统文件坏了就要重装系统
记忆中好象有个sfc功能的,如果还能进系统可以运行看看(自动修补系统文件的,好象要挂载光盘镜像)
如果重装系统后问题依旧存在那可能是物理损坏了,要扫坏道避开坏道,确定是坏道的话可能要考虑淘汰硬盘。
回复

使用道具 举报

23#
发表于 2025-3-24 20:03:45 来自手机 | 只看该作者
g4e,启动XP?那就得是64位的XP,用efi启动;很明显你这是legacy的XP。

点评

他和楼主都是想u盘启动转硬盘启动,所以他在这里借楼发问 其实楼主是uefi平台,他是legacy平台,操作有区别的。  详情 回复 发表于 2025-3-24 20:15
回复

使用道具 举报

24#
发表于 2025-3-24 20:15:25 | 只看该作者
窄口牛 发表于 2025-3-24 20:03
g4e,启动XP?那就得是64位的XP,用efi启动;很明显你这是legacy的XP。

他和楼主都是想u盘启动转硬盘启动,所以他在这里借楼发问
其实楼主是uefi平台,他是legacy平台,操作有区别的。
回复

使用道具 举报

25#
发表于 2025-3-25 10:32:13 | 只看该作者
本帖最后由 不点 于 2025-3-25 11:09 编辑
hilsonma 发表于 2025-3-24 17:54
如果U盘也是bootmgr引导并且被识别为硬盘的话,那么find 的对象就改成 /Windows

bootmgr 不需要交换盘号。

ntldr 才需要交换盘号。

第二条 find 命令可以用另外一条命令代替(前不久我发过帖子)。find 命令查找文件,很浪费。所以,应该使用替代方案。

Fatal!Inconsistent data read from .........

这是 BIOS 读盘失败的信息,是 int13 读盘错误(同一个扇区)两次读取的数据不一致,这是无法解决的,因此不要尝试去解决,不要运行磁盘扫描之类的软件(这解决不了问题)。这不是某分区的 Volume 数据格式有错,也不是磁盘坏块;而是 BIOS int13 能够成功读取扇区(进位标志 C=0),但两次读取返回的扇区数据的内容不同(因此 grub4dos 判定这种情况为“无效读取”;这条出错信息 Fatal!Inconsistent data read from ......... 也是 grub4dos 发出的)。补充说明,Fatal!Inconsistent data read from ......... 虽然是失败,但不是最严重的失败。最严重的失败,是 int13 根本就来不及显示任何信息,直接死机或自动重启。

有可能是 137G 极限造成的。也就是说,find 命令尝试去读靠后的分区时,就有可能出现这个问题。

对于无法访问的分区,find 的查找结果是失败,失败后继续运行(find 之后的)下一条命令。

另外,find 去找 Windows 文件夹也不保险。用户在安装 Windows 时,有可能把 Windows 安装在 Win 下,或者 MyWindows 下,这个名字是可以更改的。当然,WinXP 以后的系统是否支持更改 Windows 文件夹的名字,我就不太清楚了。

点评

感谢指导斧正。 是什么命令?在哪个贴子?我一下子找不到。  详情 回复 发表于 2025-3-25 11:02
回复

使用道具 举报

26#
发表于 2025-3-25 11:02:59 | 只看该作者
不点 发表于 2025-3-25 10:32
bootmgr 不需要交换盘号。

ntldr 才需要交换盘号。

感谢指导斧正。

第二条 find 命令可以用另外一条命令代替(前不久我发过帖子)

是什么命令?在哪个贴子?我一下子找不到。

点评

找到了,在这儿: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=444092&page=1#pid5542700 我把关键部分复制过来,如下。注意 root (hd0,) 这条命令取代了第二条 find 命令,也就是说,只需要开头的那条  详情 回复 发表于 2025-3-25 12:45
容我找到后再来回帖。  详情 回复 发表于 2025-3-25 11:05
回复

使用道具 举报

27#
发表于 2025-3-25 11:05:11 | 只看该作者

容我找到后再来回帖。
回复

使用道具 举报

28#
发表于 2025-3-25 11:17:20 | 只看该作者
学习一下,感谢分享。
回复

使用道具 举报

29#
发表于 2025-3-25 12:45:37 | 只看该作者
本帖最后由 不点 于 2025-3-25 13:11 编辑

找到了,在这儿:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=444092&page=1#pid5542700

我把关键部分复制过来,如下。注意 root (hd0,) 这条命令取代了第二条 find 命令,也就是说,只需要开头的那条 find 命令。关于 root (hd0,) 命令的解释,请点击上述链接。

注意,这里假定 U 盘上没有 ntldr,也就是说,find 命令应该会找到硬盘上的 ntldr。如果 U 盘上也有一个 ntldr,那么必须用别的办法找到硬盘 ntldr 所在分区,并设为 root。用查找 windows 文件夹的办法,貌似是不行的!因为 Windows 文件夹不一定与 ntldr 处于同一分区下。要成功引导 ntldr,必须先将 ntldr 所在分区设为 root。可以考虑,将 U 盘上的 ntldr 更名为 myNTLDR 之类的,这样就可以避免冲突了。




总的来说,菜单改成下面这样,更完美一些:

    title find and load NTLDR of Windows NT/2K/XP
    find --set-root --ignore-floppies --ignore-cd /ntldr
    map () (hd0)
    map (hd0) ()
    map --rehook
    root (hd0,)
    chainloader /ntldr
    boot


这样更改以后,也能够适应当 find 找到的是 (hd0,x) 的情况(以下是详细解释):

    find --set-root --ignore-floppies --ignore-cd /ntldr —— 假定找到了 (hd0,3) 上的 ntldr,设定 root 为 (hd0,3)
    map () (hd0) —— 相当于执行 map (hd0) (hd0),把 hd0 映射成自己,也就是撤销对 hd0 的映射项目。
    map (hd0) () —— 也相当于执行 map (hd0) (hd0),把 hd0 映射成自己,也就是撤销对 hd0 的映射项目。
    map --rehook —— 此时由于磁盘映射项目不存在,map --rehook 将不执行任何动作。但如果是 map --hook,则会报错。

    root (hd0,) —— 这句也没问题。执行这条命令之前 root 是 (hd0,3),执行后,root 仍然是 (hd0,3)。
    chainloader /ntldr —— 加载当前 root 设备根目录下的 ntldr (“引导代码”)到内存。

    boot —— 启动前面已经加载的引导代码(递交控制权)。


点评

非常感谢。 bootmgr不要求从(hd0)引导,所以不需要交换盘号。 ntldr必须从(hd0)引导,不是在(hd0)时需要交换盘号将ntldr所在盘换成(hd0) 使用map --rehook 代替 map --hook,可以忽略map项目不存在的错误  详情 回复 发表于 2025-3-25 13:13
回复

使用道具 举报

30#
发表于 2025-3-25 13:13:04 | 只看该作者
本帖最后由 hilsonma 于 2025-3-25 13:22 编辑

非常感谢。

总结一下:

bootmgr不要求从(hd0)引导,所以不需要交换盘号。
ntldr必须从(hd0)引导,不是在(hd0)时需要交换盘号将ntldr所在盘换成(hd0)

使用map --rehook 代替 map --hook,可以忽略map项目不存在的错误

使用root (hd0,) 来避免交换盘号之后二次find

  1. title WinXP/Vista/7/8/10
  2.     find --set-root --devices=h /Windows
  3.     map () (hd0)
  4.     map (hd0) ()
  5.     map --rehook
  6.     root (hd0,)
  7.     chainloader /bootmgr || chainloader /ntldr
复制代码


点评

gmy
测了这个新代码,没问题。敢用真人头像的大神  详情 回复 发表于 2025-3-25 19:07
我已经更新了帖子,补充了 “不可以 find Windows”的内容。 因为 Windows 所在分区,不一定是 ntldr 所在分区。 有这样的可能性:ntldr 位于一个较小的分区上,而 Windows 位于一个较大的分区上。两者不在同  详情 回复 发表于 2025-3-25 13:28
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-4-5 03:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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