中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 【讨论】Gurb4dos 硬盘引导 - MBR, BIOS, menu.lst
作者:
标题: 【讨论】Gurb4dos 硬盘引导 - MBR, BIOS, menu.lst 上一主题 | 下一主题
oasisspirit
新手上路





积分 15
发帖 6
注册 2008-4-11
状态 离线
『楼 主』:  【讨论】Gurb4dos 硬盘引导 - MBR, BIOS, menu.lst 使用 LLM 解释/回答一下

昨天,因为使用一个 PE 光盘,导致硬盘无法自行引导,最后通过 GRUB4DOS 基本解决叻问题,但是仍然不知道导致问题得原因是什么。 相关讨论见链接:
http://bbs.wuyou.com/viewthread.php?tid=123806


在翻看grub资料和解决问题得过程中又遇到些新的问题,如下

1. MBR

“ DOS, Windows 等几大操作系统的 MBR 和 PBR 的重写方法”
http://www.cn-dos.net/forum/viewthread.php?tid=35676

中说(经过实践验证),WINXP 重新完全安装会改写MBR和DBR

那么,如果把 grub装到 MBR 中,是不是再重装 winxp后,也要重装grub到 MBR?
是不是安装grub到BIOS 是更好的解决方法?

【参考】
“硬盘无法启动,无光、软驱,没关系!不死系统让你电脑维护不耽误!” by 老毛桃
http://bbs.wuyou.com/viewthread.php?tid=64686
“尝试把grldr.mbr移植到RomOS写入Bios” by fastslz,实现 by Bean
http://www.cn-dos.net/forum/viewthread.php?tid=34760


2. menu.lst

在 winxp第一次安装过程(拷贝文件到硬盘)后,到 PE 下装了 gurb,并将menu.lst 部分编写如下:
title Microsoft Windows XP
find --set-root /ntldr
chainloader /ntldr
savedefault --wait=2

重启后,硬盘无法引导。

将 menu.lst 改写为:
title Microsoft Windows XP
find --set-root /ntldr
map +1 (hd0)
chainloader /ntldr
savedefault --wait=2

重启后,硬盘正常引导,完成 winxp 全部安装。

再将 menu.lst 改写为:
title Microsoft Windows XP
find --set-root /ntldr
chainloader /ntldr
savedefault --wait=2

重启后,硬盘正常引导。


【问题】
1) 为什么第1次无法引导?第2,3正常?
2) map +1 (hd0) 这里起到什么作用?


3. Boot.ini

通过 grub 引导 winXP 时,boot.ini 还起作用吗?


有朋友了解得,希望发表一下看法 <img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">

Last edited by oasisspirit on 2008-4-11 at 05:55 PM ]


2008-4-11 15:37
查看资料  发短消息  网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下


那么,如果把 grub装到 MBR 中,是不是再重装 winxp后,也要重装grub到 MBR?


当然是的,如果你需要 GRLDR 接管 MBR 的话。其实,如果微软接管了 MBR,你仍然有办法通过修改 boot.ini 来启动 grldr,所以,这也是不太要紧的。


是不是安装grub到BIOS 是更好的解决方法?


安装到 BIOS?这个说法或许不太标准。把 grub 或者 DOS 安装到主板 ROM 或者扩展卡的 ROM 中,通常是称为 “刷新” BIOS。这一般不是普通人愿意做的,而且也有一定的危险性。


1) 为什么第1次无法引导?第2,3正常?


很可能第一次是从 U盘启动,此时 U 盘成了第一硬盘 (hd0),而你的真实硬盘变成了第二硬盘 (hd1)。微软的 NTLDR 不支持从第二硬盘启动,必须是从第一硬盘启动。因此你需要一次仿真 map +1 (hd0),这条仿真就是把当前的硬盘仿真为 (hd0),也就是让 NTLDR 认为 (hd1) 就是 (hd0),从而能够启动成功。

在第3次,由于 XP 系统已经安装成功,U 盘已经退去,不再引导机器,因此真实的硬盘本身已经是 (hd0) 了,这样就不需要仿真了。


通过 grub 引导 winXP 时,boot.ini 还起作用吗?


grub 不能直接引导 XP,需要通过引导 NTLDR 才能间接引导 XP。NTLDR 的配置文件是 BOOT.INI,因此,BOOT.INI 也是有用的,它要被 NTLDR 读取。

补充:

在新版本中,“当前设备” 有个新的表达法,即 空括号:(),你可以像使用其它设备那样来使用 () 这个设备。比如:


map ()+1 (hd0)

map (hd0) ()


以上这两条命令也可以同时使用。

Last edited by 不点 on 2008-4-11 at 07:51 PM ]




因为我们亲手创建,这个世界更加美丽。
2008-4-11 19:43
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
oasisspirit
新手上路





积分 15
发帖 6
注册 2008-4-11
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

非常感谢 不点 的精彩回复 <img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">

另外, 楼上楼, 是我在dos论坛的第一篇帖子<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">


想再问一下:


1.

之所以用 grldr 是因为硬盘不能自主通过ntldr引导 hd0

看帖子 http://bbs.wuyou.com/viewthread.php?tid=123806 所说的问题,能大概判断问题出在哪里吗?


2.

为什么第1次无法引导?第2,3正常?
很可能第一次是从 U盘启动,此时 U 盘成了第一硬盘 (hd0),而你的真实硬盘变成了第二硬盘 (hd1)。微软的 NTLDR 不支持从第二硬盘启动,必须是从第一硬盘启动。因此你需要一次仿真 map +1 (hd0),这条仿真就是把当前的硬盘仿真为 (hd0),也就是让 NTLDR 认为 (hd1) 就是 (hd0),从而能够启动成功。

在第3次,由于 XP 系统已经安装成功,U 盘已经退去,不再引导机器,因此真实的硬盘本身已经是 (hd0) 了,这样就不需要仿真了。


不好意思, 没说清楚, 我用的是 pe 光盘. 而且, 第一次启动 没有通过 光盘引导, 而是 我在winXP 完成蓝平下拷贝文件需要重启的时候, 到 pe 下 安装 grub并设置menu.lst文件的. 这样的话, 会是什么原因那?



3. Boot.ini

按说应该是你说的道理. 可是, 我在 Boot.ini 里面, 将等待时间 设置成 1000, 可是没有任何等待 就启动 winXp了. 不知道为什么?


4. +1 的意思

看到过你关于 mp (hd0,0) +1 (hd0) 的解释
http://bbs.znpc.net/redirect.php?tid=1000

chainloader (fd0) +1 也是这样理解吗?

Last edited by oasisspirit on 2008-4-12 at 01:07 AM ]


2008-4-12 00:52
查看资料  发短消息  网志   编辑帖子  回复  引用回复
fujianabc
金牌会员





积分 3467
发帖 1616
注册 2004-6-21
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

Originally posted by oasisspirit at 2008-4-12 12:52 AM:
按说应该是你说的道理. 可是, 我在 Boot.ini 里面, 将等待时间 设置成 1000, 可是没有任何等待 就启动 winXp了. 不知道为什么?

设得太大了,超过上限了,设个10就可以了


2008-4-12 10:18
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
barton
中级用户





积分 480
发帖 197
注册 2006-9-20
来自 黄冈
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

timeout设为-1

基本可以达到你设为1000所想要达到的目的。


2008-4-12 11:56
查看资料  发短消息  网志   编辑帖子  回复  引用回复
oasisspirit
新手上路





积分 15
发帖 6
注册 2008-4-11
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

Originally posted by barton at 2008-4-12 11:56:
timeout设为-1

基本可以达到你设为1000所想要达到的目的。



对的哈, 我去看看 <img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">


--

刚 试过了,好像没有用哈

Last edited by oasisspirit on 2008-4-13 at 11:34 PM ]


2008-4-13 23:25
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: