无忧启动论坛

标题: 关于 map 命令和 find 用法的问题 [打印本页]

作者: 2010qaqz111    时间: 2013-3-21 19:33
标题: 关于 map 命令和 find 用法的问题
在很多地方看到这样的写法:

title [1] 搜索并启动硬盘上的 NT6 系统\n(Windows 8/7/Vista/2012/2008)
find --set-root --devices=h /bootmgr
map () (hd0)
map (hd0) ()

map --rehook
find --set-root --devices=h /bootmgr
chainloader /bootmgr


红颜色部分的3行不是很理解。

1.
第一个地方的第一行,
map () (hd0)
是将找到 /bootmgr 文件的分区映射成了整个硬盘 hd0,为什么要这样做?为什么不在 find --set-root 之后直接 chainloader /bootmgr?我在命令行下试过了是可以的,bootmgr放在深一点的目录里面也没有问题,比如放到 /boot/bootmgr,然后在 find --set-root 之后直接 chainloader /boot/bootmgr 也是可以启动系统的。那么为什么还需要下面一直到 chainloader 中间的命令?它们有什么作用?

2.
第一个地方的第二行,
map (hd0) ()
前面一行已经将当前 root 映射成了 hd0,这时候 () 和 (hd0) 应该是一样的,为什么还要加这一句?有什么作用?

3.
第二个地方,第二次 find --set-root,这个也不明白,前面第一次 find --set-root 已经把 root 设置到目标分区了,为什么还要设置一次?难道中间的 3 个 map 调用会更改当前 root?

[ 本帖最后由 2010qaqz111 于 2013-3-21 19:38 编辑 ]
作者: x9tian    时间: 2013-3-22 13:31
第一行表示:当前盘符交换为Hd0
第二行表示:然来的HD0交换到你find的盘符
这是为了保证操作盘符为第一硬盘第一分区
第三行就更好理解了,盘符都交换了当然要重新操作
作者: 2012iixin    时间: 2013-3-22 14:56
楼上高手,受教了。留个爪子印。
作者: 2010qaqz111    时间: 2013-3-23 23:07
谢谢,明白了,在 rehook 之前的两个 map 指定的操作实际上都还没有执行。




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