无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6808|回复: 21
打印 上一主题 下一主题

[求助] 对grub4dos命令的一些疑问

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-8 08:50:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手机发帖,排版不太好,见谅!

title 使用map启动C盘dos工具箱

map --mem (hd0,0)/grub/dos.ima (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

对以上这段代码有一些问题请教

1、上面的fd0是指映射文件到软盘,hd0是指第一块硬盘,那这儿可以改为fd1吗?我将ima文件映射到第二块软盘可以吗?

2、chainloader (fd0)+1,这儿的+1可以省略吗?+1的意思是从软盘的第一个扇区开始读取吗?省略了是否意味着从第0个扇区开始读取?


title Boot myiso.iso

map --mem (hd0,0)/myiso.iso (hd32)

map --hook

chainloader (hd32)

boot

3、启动光盘镜像最后为何执行boot而软盘镜像是rootnoverify(fd0)呢


title 启动第一主分区(hd0,0)上的操作系统

rootnoverify (hd0,0)

makeactive

chainloader +1

4、何时需要使用makeactive来激活主分区?
2#
发表于 2011-4-8 21:36:59 | 只看该作者

回复 #1 0428_hai 的帖子

1,可以  就是不能保证dos工具能正常使用  毕竟大部分dos工具都是以fd0加载的  具体还是自己试下吧

2,第0个扇区不等于0扇区  无论是0扇区还是1扇区都要从第1个扇区引导  不可能去掉 +1  直接引导

3,这个只是写法的差异  你也可以这么写

map --mem /grub/dos.ima (fd0)
map --hook
rootnoverify (fd0)
chainloader +1

map --mem (hd0,0)/myiso.iso (0xff)
map --hook
rootnoverify (0xff)
chainloader (0xff)

4,这个应该是想用的时候就能用

[ 本帖最后由 sratlf 于 2011-4-8 21:58 编辑 ]
回复

使用道具 举报

3#
发表于 2011-4-8 21:47:46 | 只看该作者
(fd0)+1 等价于 (fd0)0+1,就是说,从扇区0开始的一个扇区。

+1 的意思是,有 1 个扇区。
0+1 的意思是从扇区0开始,长度是一个扇区。此处的 0 可以省略,变成了 +1。


下面这个用法是错的:

map --mem (hd0,0)/myiso.iso (0xff)
map --hook
rootnoverify (0xff)
chainloader +1

光盘不能用 +1 来引导。必须用光秃秃的设备名 (0xff) 来引导,设备名后面不能带有扇区序号。正确的用法如下:

map --mem (hd0,0)/myiso.iso (0xff)
map --hook
rootnoverify (0xff)
chainloader (0xff)

[ 本帖最后由 不点 于 2011-4-8 21:48 编辑 ]
回复

使用道具 举报

4#
发表于 2011-4-8 21:51:49 | 只看该作者
看了楼上三位...
受益良多啊...
以前我也只是模仿这他人的菜单,添加自己需要的工具,懵懵懂懂的,特别是 lz 提出的一些问题...
回复

使用道具 举报

5#
发表于 2011-4-8 21:54:49 | 只看该作者
makeactive 激活主分区,通常用于有多个 Windows 共存的情况。激活了的主分区通常会被 Win98 当作 C 盘。但 XP 以后是不是这样,恐怕就不一定了。我估计 XP 以后,激活标志的用处已经不太大了。

但微软的 MBR 引导代码会直接启动激活分区上的 PBR 引导代码。所以,从这个意义上说,激活标志仍然有用。
回复

使用道具 举报

6#
发表于 2011-4-8 22:00:35 | 只看该作者

回复 #5 不点 的帖子

不好意思  反面教材了  2#已修改
回复

使用道具 举报

7#
发表于 2011-4-8 22:04:29 | 只看该作者
错误在所难免。智者千虑,必有一失。
回复

使用道具 举报

8#
发表于 2011-4-8 22:12:37 | 只看该作者
激活标志的意义在于启动活动主分区(盘),在进入grub4dos环境后,其makeactive的意义仅为改变启动的默认主分区。
回复

使用道具 举报

9#
发表于 2011-4-8 22:17:46 | 只看该作者

回复 #8 blithewind 的帖子

激活标志不影响 grub4dos 的启动特性。换句话说,grub4dos 本身不使用激活标志,或者说,激活标志对于 grub4dos 来说完全没有用处。只有微软以及别的启动软件才使用激活标志。
回复

使用道具 举报

10#
 楼主| 发表于 2011-4-10 20:24:40 | 只看该作者
感谢楼上朋友的解答,受益匪浅。
经测试
1、将map --mem (hd0,0)/grub/dos.ima (fd0)中的fd0改为fd1不可行,会提示如下错误


2、将chainloader (fd0)+1改为chainloader (fd0)或者chainloader +1,会分别出现如下错误


回复

使用道具 举报

11#
发表于 2011-4-10 20:59:06 | 只看该作者

回复 #10 0428_hai 的帖子

命令不对吧  我测试可以

map到fd1的情况



map到fd0的情况



将chainloader (fd0)+1改为chainloader (fd0)或者chainloader +1,会分别出现如下错误


这也分情况    chainloader (fd0) 这个是肯定不对的

前文略。。。
rootnoverify (fd0)
chainloader (fd0)+1

这种情况下   因为root已经是在fd0上了  所以chainloader (fd0)+1也可以写成chainloader +1

前文略。。。
chainloader (fd0)+1
rootnoverify (fd0)

这种情况下就得写完整了  因为root还不是在fd0上  chainloader +1就不是引导fd0的第一扇区启动了
回复

使用道具 举报

12#
 楼主| 发表于 2011-4-10 22:42:03 | 只看该作者
原帖由 sratlf 于 2011-4-10 20:59 发表
命令不对吧  我测试可以

map到fd1的情况

map到fd0的情况


这也分情况    chainloader (fd0) 这个是肯定不对的

前文略。。。
rootnoverify (fd0)
chainloader (fd0)+1

...


恩,谢谢,受益匪浅~~~
又有几个新问题。
1、我看到您直接在grub命令行中用map --mem /boot/imgs/firadisk.img (fd1)和map --hook,然后用find就能找出fd1。
而我用cdrom --init和map --hook,然后用find怎么找不到cd呢?我的虚拟机光驱里是有iso文件的,而且下图好像已经提示发现了CD-ROM。为何不显示呢?


2、为何我无法用grub启动我D盘上的winpe?我是这样做的
将老毛桃SUPER_BOOTCD.iso中的WINNT.XPE、MINIPE(内含WINPE.IS_)、WXPE(内含NTDETECT.COM和SETUPLDR.BIN),一共四个文件,我把SETUPLDR.BIN移动到D盘根目录。
然后我启动grub,在menu.lst中编辑条目,并输入以下命令
chainloader (hd0,4)/SETUPLDR.BIN
然后根本启动不起来pe,有如下提示。
从下图可以看到,文件结构貌似没有问题,而是提示配置文件txtsetup.sif有问题,但是我根本没有动WINPE.IS_文件啊,而且用winrar打开此文件发现txtsetup.sif完好无损。请教原因~~
回复

使用道具 举报

13#
发表于 2011-4-10 23:01:43 | 只看该作者

回复 #12 0428_hai 的帖子

第一个问题不太清楚  猜测不是以cdrom为第一启动  你可以试试直接访问(cd)可不可以

第二个问题是因为pe不能从逻辑分区启动  如果硬要从逻辑分区启动的话可以用下面的命令

title pe
if not exist /SETUPLDR.BIN find --set-root /SETUPLDR.BIN
map --in-place ()+1 (hd0)
map --hook
chainloader /SETUPLDR.BIN
boot
回复

使用道具 举报

14#
 楼主| 发表于 2011-4-10 23:25:01 | 只看该作者
原帖由 sratlf 于 2011-4-10 23:01 发表
第一个问题不太清楚  猜测不是以cdrom为第一启动  你可以试试直接访问(cd)可不可以

第二个问题是因为pe不能从逻辑分区启动  如果硬要从逻辑分区启动的话可以用下面的命令

title pe
if not exist /SETUPL ...


关于第二个问题:
winpe可以从逻辑分区启动,是从lianjiang大大grub4dos的初级教程中看到的,但是我在使用时遇到了这样的问题,不知道为何?


回复

使用道具 举报

15#
发表于 2011-4-10 23:32:16 | 只看该作者
真不错 又懂了一点知识
回复

使用道具 举报

16#
发表于 2011-4-10 23:35:21 | 只看该作者

回复 #14 0428_hai 的帖子

SETUPLDR.BIN还需要放在WXPE目录下

lianjiang的例子是从第一逻辑分区启动的  通用的写法可以用  map --in-place ()+1 (hd0)
回复

使用道具 举报

17#
 楼主| 发表于 2011-4-11 00:12:15 | 只看该作者
原帖由 sratlf 于 2011-4-10 23:35 发表
SETUPLDR.BIN还需要放在WXPE目录下

lianjiang的例子是从第一逻辑分区启动的  通用的写法可以用  map --in-place ()+1 (hd0)

他的例子是从逻辑分区启动的,我刚才测试成功了
我将WINPE.IS_、setupldr.bin、NTDETECT.COM、WINT.XPE四个文件全部放入D盘根目录,更改WINNT.XPE路径以正确指向WINPE.IS_文件,然后再进行测试。
我之所以出现txtsetup.sif丢失那个界面,是因为我直接使用了chainloader (hdo0,4)/setupldr.bin,而他的教程中是
map (hd0,4)+1 (hd0)
map --hook
find --set-root /setupldr.bin
chainloader /setupldr.bin
我完全敲入上述代码后,就可以进入pe了,这几行代码貌似缺一不可,因为缺了哪个都进不去pe。
不懂上面的map映射是啥意思,是将D盘的引导扇映射到hd0?
回复

使用道具 举报

18#
发表于 2011-4-11 00:24:46 | 只看该作者

回复 #17 0428_hai 的帖子

不是你理解的那样  第一句的意思简单理解就是欺骗 setupldr.bin 文件  让它误以为自己所在的是主分区  符合启动条件  继续启动

第二句是使第一句的“欺骗”生效  通常来说执行了map命令后  大部分需要加一句map --hook命令使仿真生效

第三行就是查找 setupldr.bin 的所在  非必需

第四行是加载setupldr.bin进行启动
回复

使用道具 举报

19#
发表于 2011-4-11 17:56:04 | 只看该作者
map (hd0,4)+1 (hd0)
是把一个逻辑分区映射为一个单主分区的硬盘来使用;
不过映射前,最好map (hd0) (hd)
=============
map --in-place的用法不知现在有没有,help map 没找到。参数--in-situ也没找到。
回复

使用道具 举报

20#
发表于 2011-4-11 19:05:18 | 只看该作者

回复 #19 zhaohj 的帖子

参数--in-situ被使用于硬盘驱动器映像或者是硬盘驱动器分区。

通过--in-situ ,我们可以把一个逻辑分区象征性的作为一个主分区来使用。

--in-situ 的映射是整个驱动器的映射。它只虚拟出分区表和 DBR 上的BPB里的隐藏扇区数。

尽管磁盘仿真在 win9x 中可能会遇到的各种问题,但在win9x中,in-situ的映射却运行得很好。

注意 --in-situ 的映射不会改变真实的分区表。

示例:

map --in-situ (hd0,4)+1 (hd0)


readme里的

--in-place这个确实没有  不过这个参数现在应该有效
回复

使用道具 举报

21#
发表于 2011-4-11 22:35:42 | 只看该作者
启动PE1.X的可以试试NTBOOT
只需要一个IS_或IM_之类的文件就可以启动了.比如

/NTBOOT/NTBOOT PE1=/BOOT/PE/WINPE.IS_
回复

使用道具 举报

22#
发表于 2011-5-1 11:52:11 | 只看该作者
学习了,还是按照GRUB的规范来写代码吧,要不就是不断调试!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 17:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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