|
本帖最后由 不点 于 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 —— 启动前面已经加载的引导代码(递交控制权)。
|
|