无忧启动论坛

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

[求助] 看了《grub初级教程》,有几个不解的问题提问

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-29 00:07:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

纯粹新人小白,问得问题有点……那个,高手不吝赐教哦

有看那个grub初级教程。

里面有个
title 硬盘检测修复工具 效率源 (map)
map (hd0,0)/boot/grub/xly.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)


我的理解是:
grub可以直接引导xly.img
也就是说,grub可以识别img里面的引导文件,从而引导img的启动。

这样理解对吗?

另外,有这样一段话
title 启动第一主分区(hd0,0)上的操作系统
rootnoverify (hd0,0)
makeactive
chainloader +1


如果第一分区上有不同的引导文件(比如有ntldr,bootmgr,io.sys等等)。
而又没有像find --set-root --ignore-floppies /bootmgr
这样没有具体给它指定的话……

那会是什么情况呢
2#
发表于 2011-9-29 06:42:35 | 只看该作者
看来你有必要学习一下磁盘零磁道、引导代码之类的概念了。
回复

使用道具 举报

3#
 楼主| 发表于 2011-9-29 18:07:51 | 只看该作者

回复 #2 dos时代菜鸟 的帖子

感谢你的提醒!

我得到的答案是:尽管第一分区有多个引导文件,但是启动的是第一分区的pbr/mbr
回复

使用道具 举报

4#
发表于 2011-9-29 19:58:57 | 只看该作者

回复 #1 小豪diao 的帖子

你可能没有理解+1的含义,这是grub4dos的扇区序列表示法,对于整个硬盘+1代表mbr,对于分区+1代表代表pbr。
下面的帖子对这些概念介绍的挺清楚的:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=166641
回复

使用道具 举报

5#
发表于 2011-9-29 20:23:51 | 只看该作者
学习了,还是有点不懂,还是先看dihuo0 推荐的帖子
回复

使用道具 举报

6#
 楼主| 发表于 2011-9-29 20:39:17 | 只看该作者

回复 #4 dihuo0 的帖子

那,如果我放了多个引导文件的分区,这个硬盘没有去修改mbr,或pbr。它就一个纯粹的分区。

这样用grub去启动这个分区上的系统,会是什么结果呢
回复

使用道具 举报

7#
发表于 2011-9-29 21:02:56 | 只看该作者

回复 #6 小豪diao 的帖子

grub4dos的功能比较强大可以引导多种引导文件。
你先熟悉一下各个命令的用法吧,帮助文件讲得比较详细,置顶的初级教程和帮助文件应该还有不少示例讲解。

下面是帮助文件中的一个示例。

发行版grub4dos压缩包中外置菜单menu.lst文件详解
#==================== 初始化命令组(菜单头)部分=========================
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.

color blue/green yellow/red white/magenta white/magenta
# 设置菜单颜色
timeout 30
# 菜单等待时间
default /default
# 设置默认菜单项,需default文件配合,可参见目录索引 default 部分

#====================菜单项(菜单正文)=================================

title 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
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

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

title find and load CMLDR, the Recovery Console of Windows NT/2K/XP
# 设置菜单项标题
fallback 3
# 本项菜单执行出错的话就转到菜单项3(本菜单文件中为下一菜单项)继续执行
find --set-root --ignore-floppies --ignore-cd /cmldr
# 在所有设备的根目录下查找 cmldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根,未找到则执行 fallback 3
map () (hd0)
# 将 ntldr 所在设备(现在的当前设备) 映射为 第一磁盘(hd0)
map (hd0) ()
# 将 第一磁盘(hd0) 映射为 ntldr 所在设备(现在的当前设备)
map --rehook
# 使仿真生效
find --set-root --ignore-floppies --ignore-cd /cmldr
# 在所有设备的根目录下查找 cmldr文件,忽略软驱和光驱设备,找到的话就将该设备设为根
chainloader /cmldr
# 加载当前设备根目录下的 cmldr 文件
#####################################################################
# write string "cmdcons" to memory 0000:7C03 in 2 steps:
#####################################################################
write 0x7C03 0x63646D63
# step 1. Write 4 chars "cmdc" at 0000:7C03
# ascii码对应关系: c-0x63h m-0x6Dh d-0x64h ,写入内存地址 0x7C03处
# 写入内存时需倒序写入,即想写入"cmdc"须写入“cdmc”,对应ascii码为 0x63646D63
write 0x7C07 0x00736E6F
# step 2. Write 3 chars "ons" and an ending null at 0000:7C07
# ascii码对应关系: o-0x6Fh n-0x6Eh s-0x73h ,写入内存地址 0x7C07处
# 写入内存时需倒序写入,即想写入"ons"须写入“sno”,对应ascii码为 0x00736E6F
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

title find and load IO.SYS of Windows 9x/Me
# 设置菜单项标题
fallback 4
# 本项菜单执行出错的话就转到菜单项4(本菜单文件中为下一菜单项)继续执行
find --set-root /io.sys
# 在所有设备的根目录下查找 io.sys文件,找到的话就将该设备设为根
chainloader /io.sys
# 加载当前设备根目录下的 io.sys 文件
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

title find and boot 0PE.ISO
# 设置菜单项标题
fallback 5
# 本项菜单执行出错的话就转到菜单项5(本菜单文件中为下一菜单项)继续执行
find --set-root /0PE/0PE.ISO
# 在所有设备的/0PE/目录下查找 0PE.ISO文件,找到的话就将该设备设为根
map /0PE/0PE.ISO (0xff) || map --mem /0PE/0PE.ISO (0xff)
# 先尝试将iso镜像直接仿真为 (0xff)(要求镜像连续存放),失败的话再将iso镜像载入内存仿真为(0xff)
map --hook
# 使仿真生效
chainloader (0xff)
# 从(0xff)设备启动
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

title find and boot MicroPE.ISO
# 设置菜单项标题
fallback 6
# 本项菜单执行出错的话就转到菜单项6(本菜单文件中为下一菜单项)继续执行
find --set-root /boot/MicroPE.ISO
# 在所有设备的/boot/目录下查找 MicroPE.ISO文件,找到的话就将该设备设为根
map /boot/MicroPE.ISO (0xff) || map --mem /boot/MicroPE.ISO (0xff)
# 先尝试将iso镜像直接仿真为 (0xff)(要求镜像连续存放),失败的话再将iso镜像载入内存仿真为(0xff)
map --hook
# 使仿真生效
chainloader (0xff)
# 从(0xff)设备启动
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

title Parted Magic ISO
# 设置菜单项标题
fallback 7
# 本项菜单执行出错的话就转到菜单项7(本菜单文件中为下一菜单项)继续执行
find --set-root /pmagic.iso
# 在所有设备的根目录下查找 pmagic.iso文件,找到的话就将该设备设为根
map /pmagic.iso (0xff) || map --mem /pmagic.iso (0xff)
# 先尝试将iso镜像直接仿真为 (0xff)(要求镜像连续存放),失败的话再将iso镜像载入内存仿真为(0xff)
map --hook
# 使仿真生效
chainloader (0xff)
# 从(0xff)设备启动
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

title Ultimate Boot CD ISO
# 设置菜单项标题
fallback 8
# 本项菜单执行出错的话就转到菜单项8(本菜单文件中为下一菜单项)继续执行
find --set-root /ubcd.iso
# 在所有设备的根目录下查找 ubcd.iso文件,找到的话就将该设备设为根
map /ubcd.iso (0xff) || map --mem /ubcd.iso (0xff)
# 先尝试将iso镜像直接仿真为 (0xff)(要求镜像连续存放),失败的话再将iso镜像载入内存仿真为(0xff)
map --hook
# 使仿真生效
chainloader (0xff)
# 从(0xff)设备启动
savedefault --wait=2
# 将当前菜单项保存为默认菜单项,下次再加载本菜单文件时自动将当前菜单项设置为默认菜单项

title commandline
# 设置菜单项标题
commandline
# 进入命令行模式

title floppy (fd0)
# 设置菜单项标题
chainloader (fd0)+1
# 链式加载(fd0)的第一个扇区内容
rootnoverify (fd0)
# 设置(fd0)为根设备,root在设置根设备前,会测试一下该分区的文件系统是否可以识别,而rootnoverify则省略这一测试

title back to dos
# 设置菜单项标题
quit
# 返回到dos环境(如果是从dos环境进入grub4dos环境的话)

title reboot
# 设置菜单项标题
reboot
# 重新启动计算机

title halt
# 设置菜单项标题
halt
# 关闭计算机

title MAXDOS.IMG
# 设置菜单项标题
find --set-root --ignore-floppies /boot/MAXDOS.IMG
# 在所有设备的/boot/目录下查找 MAXDOS.IMG文件,忽略软驱设备,找到的话就将该设备设为根
map --mem /boot/MAXDOS.IMG (fd0)
# 将img镜像载入内存后仿真为第一软驱(fd0)
map --hook
# 使仿真生效
chainloader (fd0)+1
# 链式加载(fd0)的第一个扇区内容
rootnoverify (fd0)
# 设置(fd0)为根设备,root在设置根设备前,会测试一下该分区的文件系统是否可以识别,而rootnoverify则省略这一测试

[ 本帖最后由 dihuo0 于 2011-9-29 21:23 编辑 ]
回复

使用道具 举报

8#
 楼主| 发表于 2011-9-29 23:27:08 | 只看该作者

回复 #7 dihuo0 的帖子

非常感谢你的详细回答!

这些资料对我来说是非常珍贵的!

不过我还是想让你能点明我的疑问:


如果我放了多个引导文件的分区,这个硬盘没有去修改mbr,或pbr。它就一个纯粹的分区。

这样用grub去启动这个分区上的系统,会是什么结果呢
回复

使用道具 举报

9#
发表于 2011-9-30 08:02:18 | 只看该作者
这要看你的引导文件是什么了。
1. 如果c盘是ntldr,即Windows2000、xp、2003的引导文件,那么就该这么写:chainloader (hd0,0)/ntldr

2. 如果c盘是bootmgr,即 Windows VISTA/2K8/win7/win8的引导文件,那么就该这么写:chainloader (hd0,0)/bootmgr

3. 如果c盘是io.sys,即 dos/win98/win me的引导文件,那么就该这么写:chainloader (hd0,0)/io.sys

上面的帖子里都有例子。

[ 本帖最后由 dihuo0 于 2011-9-30 08:04 编辑 ]
回复

使用道具 举报

10#
 楼主| 发表于 2011-9-30 11:42:40 | 只看该作者

回复 #9 dihuo0 的帖子

我用虚拟机实验了。

挂了两个硬盘,第一个硬盘,grub引导第二个硬盘 hd(1,0)
第二个硬盘放了各种引导,但mbr没有做处理。

但我不采用指定引导文件,而是模糊的
title 启动第一主分区(hd0,0)上的操作系统
rootnoverify (hd0,0)
makeactive
chainloader +1
用这句。。。提示磁盘错误。~


不知道这个试验是否严谨

[ 本帖最后由 小豪diao 于 2011-9-30 11:56 编辑 ]
回复

使用道具 举报

11#
发表于 2011-9-30 12:56:18 | 只看该作者
唉!给你发的那个电子邮件白发了。你给出的信息还是太少啊!
第一个硬盘安装了什么系统?怎么安装的?
你的grub4dos安装到哪儿了?怎么安装的?
回复

使用道具 举报

12#
 楼主| 发表于 2011-9-30 20:05:02 | 只看该作者

回复 #11 dihuo0 的帖子

哎呀,一整天忙的都忘记了、、、

好像第一个分区是装grub。直接写入mbr的那种方式

引导bootmgr。也引导第二个硬盘。

第二个硬盘放了IO.sys bootmgr grub那些文件。这个硬盘没有写入mbr/pbr
回复

使用道具 举报

13#
发表于 2011-9-30 22:02:39 | 只看该作者
那么就绪要把grldr、menu.lst放到任意一个分区的根目录下。

[ 本帖最后由 dihuo0 于 2011-9-30 22:06 编辑 ]
回复

使用道具 举报

14#
发表于 2011-9-30 22:11:27 | 只看该作者
你最后装个GRUB4DOS硬盘工具箱(201-09-18更新)
地址: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=194035

置顶帖有个帮助文件,遇到问题多看看。
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

明天我要回老家过节,上网不方便,估计国庆节期间不会上网了。
回复

使用道具 举报

15#
发表于 2011-9-30 22:19:44 | 只看该作者

回复 #12 小豪diao 的帖子

你还是说的太简略了,我猜你的硬盘都只有一个分区,第一个硬盘的mbr安装了grldr.mbr,第二个硬盘放了一些引导工具。
有没有别的了?第一个硬盘安装了什么系统,第二个硬盘呢?

你要把你的整个操作过程讲清楚,越清楚越好,将不清楚就截图,一图抵万言。
回复

使用道具 举报

16#
 楼主| 发表于 2011-10-1 00:02:29 | 只看该作者

回复 #15 dihuo0 的帖子

嘿嘿嘿,其实我也只是闲的无聊瞎折腾。

根本做这些都是没有意义的事情。

已经不继续了,懒得搞。grub是万能就是了。其他是浮云~嘎嘎
回复

使用道具 举报

17#
发表于 2011-10-29 11:08:29 | 只看该作者
樓上把問題說清楚點吧。。。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 02:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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