无忧启动论坛

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

grub4dos-0.4.6a-2017-12-23,boot.ini怎么引导改名字后的grldr?

[复制链接]
跳转到指定楼层
1#
发表于 2018-2-10 23:00:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liuzhaoyzz 于 2018-2-10 23:07 编辑

引导方式是硬盘NTLDR→boot.ini→sxldr(由grldr改名而来),论坛的以前类似的帖子我都看了,没有找到想要的结果。
我用winhex替换grub4dos-0.4.6a-2017-12-23中的grldr→sxldr,只找到了4处,替换后,引导不了sxldr,提示sxldr is missing。
我用grub4dos-0.4.5c-2016-01-18中的grldr→sxldr,找到了8处,替换后,可以引导sxldr。
那么要想grldr被ntldr引导,要怎么改名字才行?

类似的帖子:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=335949
我不想用bootmgr来引导。
推荐
发表于 2018-2-11 10:20:42 来自手机 | 只看该作者
如果把最后一句c:\SXLDR="sxldr"换成F:\SXLDR="sxldr",F盘是逻辑分区,结果windows就启动不了,放在C盘(主分区)就没问题。  这是NTLDR的事。只好向微软反馈。
回复

使用道具 举报

3#
发表于 2018-2-11 08:38:06 | 只看该作者
修改2处即可。在“No GRLDR ...”处。修改处必须大写。(实际文件名可以小写)
回复

使用道具 举报

4#
发表于 2018-2-11 09:03:38 | 只看该作者
本帖最后由 不点 于 2018-2-11 09:08 编辑

楼主你搞错了吧?

sxldr is missing

这条信息不是 grub4dos 显示的,而是微软的引导扇区显示的。你一定是采用了微软的引导扇区。

微软的引导扇区会显示 XXXXX is missing
grub4dos 的引导扇区会显示 No XXXXXX

据此可以判断究竟是微软的引导扇区获得了控制权,还是 grub4dos 的引导扇区获得了控制权。

【补充】又仔细看了一楼的报告: 0.4.5c 成功。——因此,问题有可能是 0.4.6 带来的 bug。有可能是启动失败,而去加载位于分区上的微软引导扇区了。
回复

使用道具 举报

5#
 楼主| 发表于 2018-2-11 09:06:52 | 只看该作者
谢谢两位大神回复!
我所给的提示信息是我修改后的grldr,是用winhex修改后的,我把GRLDR内部的字符串GRLDR全部替换为SXLDR,所以有这个提示SXLDR is missing。
我这样做是因为有特殊用途,类似一键ghost这样子。
我正在测试yaya所说的。
回复

使用道具 举报

6#
发表于 2018-2-11 09:21:37 | 只看该作者
本帖最后由 不点 于 2018-2-11 09:30 编辑

你最好使用 bootmgr。理由如下:

1、bootmgr 功能更强。
2、bootmgr 对 grub4dos 的支持更好。
3、grub4dos 对 bootmgr 的支持更好。

你可以试着升级用户主机上的 ntldr,把它升级为 bootmgr。可以通过改名之类的手段实现。可以先在你的机器上试验,如果成功,就可以推广了。




如果你还存在某种忧虑或思想障碍,希望这样能打消你的顾虑:

bootmgr 能够直接加载 ntldr。在 boot.ini 中添加

C:\NTLDR="NTLDR"

即可。

点评

我之前看过您说的观点: 我和芈员外在玩RAMOS批处理,需要修改的不是一台电脑,可能是很多台,不应该把用户的NTLDR强行改为BOOTMGR启动,这样同时还需要修改BCD,很麻烦。对于单台电脑你说的方法适用,但是对于  详情 回复 发表于 2018-2-11 09:33
回复

使用道具 举报

7#
 楼主| 发表于 2018-2-11 09:27:21 | 只看该作者
按照yaya的提示,在grub4dos-0.4.6a-2017-12-23里面的grldr里面,我用winhex共找到了4处大写的GRLDR,修改前两处的GRLDR为SXLDR,地址是3F3和5E3,然后再把grldr改名为sxldr就行了。谢谢!
直接上图吧。
NTLDR作为第一引导→boot.ini→改名后的grldr,这个改名后的grldr是不是只能放在主分区,不能放在逻辑分区?我试了放在逻辑分区的F:盘,windows启动不了,提示hal.dll错误。

QQ截图20180211092720.png (5.27 KB, 下载次数: 128)

QQ截图20180211092720.png

QQ截图20180211092749.png (5.15 KB, 下载次数: 119)

QQ截图20180211092749.png
回复

使用道具 举报

8#
 楼主| 发表于 2018-2-11 09:33:48 | 只看该作者
本帖最后由 liuzhaoyzz 于 2018-2-11 09:37 编辑
不点 发表于 2018-2-11 09:21
你最好使用 bootmgr。理由如下:

1、bootmgr 功能更强。


我之前看过您说的观点:
用 bootmgr 的好处是,它启动 grub4dos 成功率为 100%,不打折扣。
因为 bootmgr 比 ntldr 强大了很多,它比 ntldr 的启动能力强很多。


我和芈员外在玩RAMOS批处理,需要修改的不是一台电脑,可能是很多台,不应该把用户的NTLDR强行改为BOOTMGR启动,这样同时还需要修改BCD,很麻烦。对于单台电脑你说的方法适用,但是对于很多台需要批量处理的,怕是不适合。类似的场景有lianjiang编写的gghost一键恢复之类的,强行修改用户的引导器不是太适合。为了安装gghost一键恢复,而且要保证和用户自己安装的grldr不冲突,就必须用这样子的方法。

这个不是grub4dos-0.4.6a-2017-12-23的bug,这是我自己强行修改了grldr带来的问题,而且修改的地址不对。
回复

使用道具 举报

9#
发表于 2018-2-11 09:43:27 | 只看该作者
既然你成功了,就说明 0.4.6 没有 bug。

grldr 无论放在哪里都行。只要 grldr 能被启动,其它工作都 “好说”。

用 GRLDR 启动 Windows 时,你可以试试在启动时添加命令,骗过 Windows,让它以为是从主分区启动的。

具体做法:

在这一行

chainloader (...)/.../ntldr  或  chainloader (...)/.../bootmgr

之后,添加:

rootnoverify (hd0,0) <---- 根据需要调整为自己的主分区,这个主分区的根目录下应该有 NTLDR 启动所需的其它文件,比如 boot.ini 和 ntdetect 之类的。

然后 boot 即可。
回复

使用道具 举报

10#
 楼主| 发表于 2018-2-11 09:55:59 | 只看该作者
本帖最后由 liuzhaoyzz 于 2018-2-11 09:57 编辑

我举个例子吧,boot.ini如下:
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /noexecute=alwaysoff /detecthal
c:\SXLDR="sxldr"
如果把最后一句c:\SXLDR="sxldr"换成F:\SXLDR="sxldr",F盘是逻辑分区,结果windows就启动不了,放在C盘(主分区)就没问题。

sxldr内置菜单:
default 0
timeout 2

title boot Windows by zhaohj
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
#rootnoverify (hd0,0)
chainloader /ntldr || chainloader /bootmgr

点评

你说的这个 C:\....=.... 是 Windows 强制的要求,此处 C: 不可以改成别的盘符。这是 Windows 要求的,没办法。此处必须用 C,即使你的主分区叫做 G:,也必须用 C:\...=... 而不可以用 G:\...=...,这是强制性的。  详情 回复 发表于 2018-2-11 10:15
回复

使用道具 举报

11#
发表于 2018-2-11 10:15:04 | 只看该作者
本帖最后由 不点 于 2018-2-11 10:20 编辑
liuzhaoyzz 发表于 2018-2-11 09:55
我举个例子吧,boot.ini如下:

timeout=1


你说的这个 C:\....=.... 是 Windows 强制的要求,此处 C: 不可以改成别的盘符。这是 Windows 要求的,没办法。此处必须用 C,即使你的主分区叫做 G:,也必须用 C:\...=... 而不可以用 G:\...=...,这是强制性的。

grub4dos readme 文件里面也提到了这一点。

但你可以放在子目录下:

C:\...\...=.... 这好像是可以的。然而,ntdetect 和 boot.ini 等文件,必须放在此主分区的根目录,否则 NTLDR 也要出错。


回复

使用道具 举报

12#
 楼主| 发表于 2018-2-11 10:20:05 | 只看该作者
谢谢回复!理解了。g4d里面知识点好多啊。
顺便问下,grub4dos-0.4.6a-2017-12-23,内置外置菜单的优先级是怎样的?
不点发表于 2010-12-16 23:53:56
老版本是外置优先,新版本是内置优先。新版本的内置菜单中有一条 configfile 命令,它可以模拟以前的外置优先的做法,是一种兼容手段。

点评

对的,新版本是内置菜单优先。 在内置菜单的开头(即,还没执行到 title 之前)放置一条不带参数的 configfile 命令即可模拟旧版本,即可转去加载 “ grldr 所在分区根目录下” 的 menu.lst 文件。如果不存在此文  详情 回复 发表于 2018-2-11 10:33
回复

使用道具 举报

13#
发表于 2018-2-11 10:33:21 | 只看该作者
本帖最后由 不点 于 2018-2-11 10:36 编辑
liuzhaoyzz 发表于 2018-2-11 10:20
谢谢回复!理解了。g4d里面知识点好多啊。
顺便问下,grub4dos-0.4.6a-2017-12-23,内置外置菜单的优先级 ...

对的,新版本是内置菜单优先。

在内置菜单的开头(即,还没执行到 title 之前)放置一条不带参数的 configfile 命令即可模拟旧版本,即,转去加载 “ grldr 所在分区根目录下 ” 的 menu.lst 文件。如果不存在此文件,则继续返回到内置菜单。如果存在此文件,则内置菜单就不再执行了。

如果你的内置菜单里面没有 configfile 命令,则根本就不去执行外置菜单。



回复

使用道具 举报

14#
 楼主| 发表于 2018-2-11 11:09:13 | 只看该作者
谢谢您和yaya的答疑、解惑!明白了。
回复

使用道具 举报

15#
发表于 2018-2-25 13:54:56 | 只看该作者
逻辑分区如果是FAT32,应该就没事了。
回复

使用道具 举报

16#
 楼主| 发表于 2018-2-25 22:58:17 | 只看该作者
是吗?没有尝试过。都是NTFS.
回复

使用道具 举报

17#
发表于 2018-2-26 10:38:02 | 只看该作者
grub4dos 对不同的分区格式(FAT、NTFS、ext2/3/4 等)是平等对待的,如果有差别,那大概会是在驱动层面,比如,对 NTFS 的某些特性(比如压缩之类)支持不好(也可能永远都做不好这个工作)。除此之外,我感觉应该是一律平等的,就 grub4dos 而言,不存在其它各种限制,不会只让 FAT 运转而让 NTFS 不工作。
回复

使用道具 举报

18#
发表于 2018-8-17 16:11:49 | 只看该作者
刚刚试了一下,4处都改了,没发现你的问题。。。

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 08:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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