无忧启动论坛

标题: grub4dos 0.4.5.c帮助文档疑问 [打印本页]

作者: 1549957235    时间: 2013-12-20 18:20
标题: grub4dos 0.4.5.c帮助文档疑问
title find and load NTLDR of Windows NT/2K/XP\n find and load NTLDR of Windows NT/2K/XP
#设置菜单项标题,以及帮助信息

fallback 1
#本项菜单执行出错的话就转到菜单项1(本菜单文件中为下一菜单项)继续执行
#(本项菜单为菜单项0,菜单项从0开始编号)
find --set-root --ignore-floppies --ignore-cd /ntldr
#在所有设备的根目录下查找 ntldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根,未找到则执行 fallback 1
map () (hd0)
#将 ntldr 所在设备(现在的当前设备) 映射为 第一磁盘(hd0)
map (hd0) ()
#将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)
map --rehook
#使仿真生效
find --set-root --ignore-floppies --ignore-cd /ntldr
#在所有设备的根目录下查找 ntldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根
chainloader /ntldr
#加载当前设备根目录下的 ntldr 文件
savedefault --wait=2
#将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

中间的map的意义是不是将不确定的根设备  变为确定的(hd0)
作者: 不点    时间: 2013-12-21 11:29
本帖最后由 不点 于 2013-12-21 11:59 编辑

>>> map (hd0) ()
>>> #将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)

这个解释已经很清楚了。这条命令是 “打算” 把目前的 (hd0) 映射为 ntldr 所在的设备(比如说它是 (hd1))。在 hook 之前,一切都是 “打算”,就是说,还没真的开始起作用。

这条命令与第一条 map () (hd0) 合起来的综合效果,就是 “打算” 交换 (hd0) 与 (hd1) 的盘号【此处假定现在的 ntldr 所在的盘号是 (hd1)】。

执行 map --hook 或 map --rehook 之后,上述两条 map 映射将同时起作用。那么,ntldr 将位于虚拟的磁盘 (hd0) 上,【假定】它是真实的 (hd1)。而真实的 (hd0),则【假定】已经成为了虚拟的 (hd1) 。

注意,由于存在虚拟的盘 (hd0),所以,原来的真实盘 (hd0) 就被掩盖了,或者说是剥夺了。当你通过 bios 访问 (hd0) 时,你实际上是在访问虚拟的盘 (hd0),而不是访问真实的 (hd0)。

同样地,由于存在虚拟的盘 (hd1),所以,原来的真实盘 (hd1) 就被掩盖了,或者说是剥夺了。当你通过 bios 访问 (hd1) 时,你实际上是在访问虚拟的盘 (hd1),而不是访问真实的 (hd1)。

这就是说,有两个虚拟盘同时建立起来了。

一个是虚拟的 (hd0),它 “代表” 的是原来真实的 (hd1),你可以理解为,虚拟的 (hd0) 是真实的 (hd1) 的 “形象代言人”。注意,真实的 (hd1) 躲在幕后,不会公开露面了。

另一个是虚拟的 (hd1),它 “代表” 的是原来真实的 (hd0),你可以理解为,虚拟的 (hd1) 是真实的 (hd0) 的 “形象代言人”。注意,真实的 (hd0) 躲在幕后,不会公开露面了。

两个真实的盘符 (hd0) 和 (hd1) 都是被隐藏、被掩盖,而不会 “公开露面” 了。由他们的 “代言人” 公开露面,成为他们各自的 “传话筒”。




如果还有含糊的话,进一步再举例说明一下。

假定执行

map (hd0) (hd1)
map --hook

此时,建立了一个虚拟盘 (hd1)。此后对虚拟盘 (hd1) 的访问,都是访问幕后的 (hd0)。此时由于不存在 (hd0) 虚拟盘,所以,(hd0) 是真实的,它可以公开露面。就是说,(hd0) 既可以公开露面,也可以通过形象代言人 (hd1) 来说话。真实的 (hd0) 和虚拟的 (hd1),其 “发言” 的内容,都完全相同。由于此时存在着虚拟盘 (hd1),因此,原来那个真实的 (hd1) 就不可访问了,你可以理解为,它被别人强行地 “代表” 了、“剥夺” 了,它自己失去了发言权,甚至它连个代言人也找不到。你也可以理解为,它成了没有 “户口” 的 “黑户”。你还可以理解为,他的 “电话号码” 被别人注册了,打他的电话,找不到他,而找到的是别人,是 (hd0)。你还可以理解为,(hd0) 这个人,他拥有两个电话号码,一个是他原来的电话号码 (hd0),另一个是新注册的电话号码 (hd1)。


假定执行

map (hd1) (hd0)
map --hook

此时,建立了一个虚拟盘 (hd0)。此后对虚拟盘 (hd0) 的访问,都是访问幕后的 (hd1)。此时由于不存在 (hd1) 虚拟盘,所以,(hd1) 是真实的,它可以公开露面。就是说,(hd1) 既可以公开露面,也可以通过形象代言人 (hd0) 来说话。真实的 (hd1) 和虚拟的 (hd0),其 “发言” 的内容,都完全相同。由于此时存在着虚拟盘 (hd0),因此,原来那个真实的 (hd0) 就不可访问了,你可以理解为,它被别人强行地 “代表” 了、“剥夺” 了,它自己失去了发言权,甚至它连个代言人也找不到。你也可以理解为,它成了没有 “户口” 的 “黑户”。你还可以理解为,他的 “电话号码” 被别人注册了,打他的电话,找不到他,而找到的是别人,是 (hd1)。你还可以理解为,(hd1) 这个人,他拥有两个电话号码,一个是他原来的电话号码 (hd1),另一个是新注册的电话号码 (hd0)。



作者: 1549957235    时间: 2013-12-21 12:08
不点 发表于 2013-12-21 11:29
>>> map (hd0) ()
>>> #将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)

意思是不是map操作都是对于虚拟磁盘,
比如说:map --mem ()
            map --hook
意思是将当前磁盘映射到内存中
过程是:根设备-->虚拟设备-->内存
作者: 不点    时间: 2013-12-21 12:20
我来试试给你解释,究竟什么是 BIOS 的磁盘访问。

BIOS 是一套规范,正如电信的电话网一样。每个盘,都有一个电话号码,就是它的 BIOS 盘号。

正常情况下,你给谁打电话,谁就可以接收到信号。

特殊情况下,建立了呼叫转移,那么,你打的电话,就转移到另一个电话号码上了。

正如前面解释过的那样,虚拟的盘,不一定在内存上。

如果你带上 --mem,那就把某个文件的内容先拷贝一份放在内存,然后让 “电话号码”(即 bios 盘号) 指向内存中的文件内容。


作者: pseudo    时间: 2013-12-21 12:39
关键是要理解
map (hd0) (hd1)
map (hd1) (hd0)
map --rehook
这三行与
map (hd0) (hd1)
map --rehook
map (hd1) (hd0)
map --rehook
这四行效果不同。


geometry (hd0)
geometry (hd1)
查看执行前后的情况就能明白为什么要使用费解的那三行。

作者: 1549957235    时间: 2013-12-21 15:21
不点 发表于 2013-12-21 12:20
我来试试给你解释,究竟什么是 BIOS 的磁盘访问。

BIOS 是一套规范,正如电信的电话网一样。每个盘,都 ...

那我上面那个应该改为  根设备-->内存  吗?

假设要启动一个文件,映射到内存的要比映射到磁盘的快  对吗?
作者: 1549957235    时间: 2013-12-21 15:22
pseudo 发表于 2013-12-21 12:39
关键是要理解
map (hd0) (hd1)
map (hd1) (hd0)

这要在哪里操作啊?
作者: singel    时间: 2013-12-25 08:29
进来学习O(∩_∩)O




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3