如果把最后一句c:\SXLDR="sxldr"换成F:\SXLDR="sxldr",F盘是逻辑分区,结果windows就启动不了,放在C盘(主分区)就没问题。 这是NTLDR的事。只好向微软反馈。 |
刚刚试了一下,4处都改了,没发现你的问题。。。 |
grub4dos 对不同的分区格式(FAT、NTFS、ext2/3/4 等)是平等对待的,如果有差别,那大概会是在驱动层面,比如,对 NTFS 的某些特性(比如压缩之类)支持不好(也可能永远都做不好这个工作)。除此之外,我感觉应该是一律平等的,就 grub4dos 而言,不存在其它各种限制,不会只让 FAT 运转而让 NTFS 不工作。 |
是吗?没有尝试过。都是NTFS. |
逻辑分区如果是FAT32,应该就没事了。 |
谢谢您和yaya的答疑、解惑!明白了。 |
本帖最后由 不点 于 2018-2-11 10:36 编辑 liuzhaoyzz 发表于 2018-2-11 10:20 对的,新版本是内置菜单优先。 在内置菜单的开头(即,还没执行到 title 之前)放置一条不带参数的 configfile 命令即可模拟旧版本,即,转去加载 “ grldr 所在分区根目录下 ” 的 menu.lst 文件。如果不存在此文件,则继续返回到内置菜单。如果存在此文件,则内置菜单就不再执行了。 如果你的内置菜单里面没有 configfile 命令,则根本就不去执行外置菜单。 |
本帖最后由 不点 于 2018-2-11 10:20 编辑 liuzhaoyzz 发表于 2018-2-11 09:55 你说的这个 C:\....=.... 是 Windows 强制的要求,此处 C: 不可以改成别的盘符。这是 Windows 要求的,没办法。此处必须用 C,即使你的主分区叫做 G:,也必须用 C:\...=... 而不可以用 G:\...=...,这是强制性的。 grub4dos readme 文件里面也提到了这一点。 但你可以放在子目录下: C:\...\...=.... 这好像是可以的。然而,ntdetect 和 boot.ini 等文件,必须放在此主分区的根目录,否则 NTLDR 也要出错。 |
本帖最后由 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 |
既然你成功了,就说明 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:37 编辑 不点 发表于 2018-2-11 09:21 我之前看过您说的观点: 用 bootmgr 的好处是,它启动 grub4dos 成功率为 100%,不打折扣。 我和芈员外在玩RAMOS批处理,需要修改的不是一台电脑,可能是很多台,不应该把用户的NTLDR强行改为BOOTMGR启动,这样同时还需要修改BCD,很麻烦。对于单台电脑你说的方法适用,但是对于很多台需要批量处理的,怕是不适合。类似的场景有lianjiang编写的gghost一键恢复之类的,强行修改用户的引导器不是太适合。为了安装gghost一键恢复,而且要保证和用户自己安装的grldr不冲突,就必须用这样子的方法。 这个不是grub4dos-0.4.6a-2017-12-23的bug,这是我自己强行修改了grldr带来的问题,而且修改的地址不对。 |
本帖最后由 不点 于 2018-2-11 09:30 编辑 你最好使用 bootmgr。理由如下: 1、bootmgr 功能更强。 2、bootmgr 对 grub4dos 的支持更好。 3、grub4dos 对 bootmgr 的支持更好。 你可以试着升级用户主机上的 ntldr,把它升级为 bootmgr。可以通过改名之类的手段实现。可以先在你的机器上试验,如果成功,就可以推广了。 如果你还存在某种忧虑或思想障碍,希望这样能打消你的顾虑: bootmgr 能够直接加载 ntldr。在 boot.ini 中添加 C:\NTLDR="NTLDR" 即可。 |
谢谢两位大神回复! 我所给的提示信息是我修改后的grldr,是用winhex修改后的,我把GRLDR内部的字符串GRLDR全部替换为SXLDR,所以有这个提示SXLDR is missing。 我这样做是因为有特殊用途,类似一键ghost这样子。 我正在测试yaya所说的。 |
本帖最后由 不点 于 2018-2-11 09:08 编辑 楼主你搞错了吧? sxldr is missing 这条信息不是 grub4dos 显示的,而是微软的引导扇区显示的。你一定是采用了微软的引导扇区。 微软的引导扇区会显示 XXXXX is missing grub4dos 的引导扇区会显示 No XXXXXX 据此可以判断究竟是微软的引导扇区获得了控制权,还是 grub4dos 的引导扇区获得了控制权。 【补充】又仔细看了一楼的报告: 0.4.5c 成功。——因此,问题有可能是 0.4.6 带来的 bug。有可能是启动失败,而去加载位于分区上的微软引导扇区了。 |
修改2处即可。在“No GRLDR ...”处。修改处必须大写。(实际文件名可以小写) |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.