无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 6711 | 评论数: 17 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-2-10 23:00

正文摘要:

本帖最后由 liuzhaoyzz 于 2018-2-10 23:07 编辑 引导方式是硬盘NTLDR→boot.ini→sxldr(由grldr改名而来),论坛的以前类似的帖子我都看了,没有找到想要的结果。 我用winhex替换grub4dos-0.4.6a-2017-12-23中 ...

回复

2011yaya2007777 发表于 2018-2-11 10:20:42
如果把最后一句c:\SXLDR="sxldr"换成F:\SXLDR="sxldr",F盘是逻辑分区,结果windows就启动不了,放在C盘(主分区)就没问题。  这是NTLDR的事。只好向微软反馈。
2010techon 发表于 2018-8-17 16:11:49
刚刚试了一下,4处都改了,没发现你的问题。。。

不点 发表于 2018-2-26 10:38:02
grub4dos 对不同的分区格式(FAT、NTFS、ext2/3/4 等)是平等对待的,如果有差别,那大概会是在驱动层面,比如,对 NTFS 的某些特性(比如压缩之类)支持不好(也可能永远都做不好这个工作)。除此之外,我感觉应该是一律平等的,就 grub4dos 而言,不存在其它各种限制,不会只让 FAT 运转而让 NTFS 不工作。
liuzhaoyzz 发表于 2018-2-25 22:58:17
是吗?没有尝试过。都是NTFS.
szwp 发表于 2018-2-25 13:54:56
逻辑分区如果是FAT32,应该就没事了。
liuzhaoyzz 发表于 2018-2-11 11:09:13
谢谢您和yaya的答疑、解惑!明白了。
不点 发表于 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 命令,则根本就不去执行外置菜单。



liuzhaoyzz 发表于 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
不点 发表于 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 也要出错。


liuzhaoyzz 发表于 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
不点 发表于 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 即可。
liuzhaoyzz 发表于 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带来的问题,而且修改的地址不对。
不点 发表于 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
liuzhaoyzz 发表于 2018-2-11 09:06:52
谢谢两位大神回复!
我所给的提示信息是我修改后的grldr,是用winhex修改后的,我把GRLDR内部的字符串GRLDR全部替换为SXLDR,所以有这个提示SXLDR is missing。
我这样做是因为有特殊用途,类似一键ghost这样子。
我正在测试yaya所说的。
不点 发表于 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。有可能是启动失败,而去加载位于分区上的微软引导扇区了。
2011yaya2007777 发表于 2018-2-11 08:38:06
修改2处即可。在“No GRLDR ...”处。修改处必须大写。(实际文件名可以小写)

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

闽公网安备 35020302032614号

GMT+8, 2024-11-24 01:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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