LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 464|回复: 0

关于 grub 的一些资料

[复制链接]
发表于 2004-11-15 11:33:06 | 显示全部楼层 |阅读模式
转自http://www.ddvip.net/os/linux/index2/89.htm#q9
    * 0. GRUB?我有问题!
    * 1. GNU GRUB和Erich's的原始版本GRUB有什么不同?
    * 2. GRUB能从超过8G的硬盘引导吗?
    * 3. 我能把第二阶段引导程序(Stage2)放在1024柱面以外的分区上吗?
    * 4. 如何创建带菜单界面的GRUB启动软盘?
    * 5. 如何指定某个分区?好象Grub对分区的命名和操作系统完全不同...
    * 6. GRUB不能识别我的GNU/Hurd分区。
    * 7. 我已经装了binutils的最新版本,但GRUB还是会在引导时死掉。
    * 8. 我无法在Red Hat 7.0上编译GRUB。
    * 9. 如何为Linux指定任意内存大小?
    * 10. 如何从非第一个硬盘(指主硬盘)引导Windows (或DOS)。
    * 11. 我的GNU/Linux (或其它类UNIX系统)有一个独立的引导区,似乎GRUB无法正确处理这种情况。
    * 12. 如何从硬盘卸载GRUB?
    * 13. GRUB在读取我的IDE大硬盘时挂起。
    * 14. 为什么Linux (FreeBSD、NetBSD、等)不采用多重引导?

0. GRUB?我有问题!


首先,请仔细阅读GRUB发行版中的文档。 你应该能够从这些文档中得到几乎所有信息。本FAQ只是给你一些额外的提示。
1. GNU GRUB和Erich's的原始版本GRUB有什么不同?

GNU GRUB是Erich's的出色的GRUB的后继版本。他由于别的任务而不能继续完成GRUB,所以由现在的维护者--Gordon Matzigkeit--来接替他的维护任务,并且开放了这个项目的研发工作,以使每个人都能参与进来。

从技术角度讲,GNU GRUB比最初的GRUB增加了许多新特性。例如:GNU GRUB能通过grub shell指令/sbin/grub,在类UNIX系统(如GNU/Linux)上安装;它支持逻辑块寻址(LBA)方式,解决了1024柱面问题;支持 TAB键自动补全文件名(文件名不重复时);当然,我们也修复了许多bug,所以我们推荐使用GNU GRUB。
2. GRUB能从超过8G的硬盘引导吗?


这取决于你的BIOS和操作系统。你必须确定你的硬盘能在LBA模式下正常访问。通常情况下,这是可以通过BIOS(原文如此,应为CMOS)设置工具来配置的。更多信息请参考你的BIOS设置手册。


此外,某些操作系统(例如DOS)无法访问任何大硬盘,这个问题任何引导管理器都无法解决。据我所知,至少GNU/Hurd和GNU/Linux可以从这样的大硬盘引导。
3. 我能把第二阶段引导程序(Stage2)放在1024柱面以外的分区上吗


是的,只要你的BIOS支持LBA模式就可以。虽然在早期的版本中,为了这样做,你不得不使用一个特别定制的Stage1,但已经不再需要了,因为现在的Stage1支持所有模式。
4. 如何创建带菜单界面的GRUB启动软盘?

   1. 按照手册上的描述,建立一张普通的启动盘。
   2. 在另一张软盘上建立文件系统,然后把GRUB的映像和你的配置文件拷贝到这张软盘上。
   3. 用普通的启动盘(第一张盘)引导系统,然后放入建有文件系统的盘(第二张盘)。
   4. 和在硬盘上安装GRUB一样操作,在软盘上安装GRUB。

5. 如何指定某个分区?好象Grub对分区的命名和操作系统完全不同...

是的,GRUB的设备语法和其它系统有很大不同,但它和DOS以及Windows 98有些类似:GRUB并不区分IDE或是SCSI硬盘,所以你的硬盘用 (hd%d) 来表示,(%d是一个整数,从 0 开始计算)。同样的,软驱用 (fd%d) 来表示。
真正让用户困惑的是分区编号的计算。GRUB从 0 开始计算分区,而几乎所有其它的操作系统都从1开始。我们将改进这一点以取得统一。
6. GRUB不能识别我的GNU/Hurd分区。

我不知道为什么,FDISK程序的作者错误的把分区类型0x63分配给了 GNU Hurd 。一种分区类型应该指出该分区使用的格式,包括文件系统以及BSD片段等,而不应该用来指定该分区被什么操作系统拥有。所以不论该分区的拥有者是不是 Hurd,当分区使用ext2fs文件系统的时候用0x83;当分区使用ffs文件系统的时候用0xA5。我们将会使用0x63来代表GNU Hurd文件系统,但现在还没有采用这种表示。
7. 我已经装了binutils的最新版本,但GRUB还是会在引导时死掉。

请用以下命令检查你的binutils版本:

$ ld -v

这个命令会显示两个版本号,只有后面一个是有意义的。如果它和你安装的版本号是一样的,就算安装好了。


然后,敲:

$ gcc -Wl,-v 2>&1 | grep "GNU ld"

如果这次和上面的结果不一样,你应该在配置脚本里指定安装binutils的路径,例如:

$ ./configure --with-binutils=/usr/local/bin


如果你按以上方法操作,GRUB还是会崩溃,可能就是GRUB有大bug了,请向<bug-grub@gnu.org>邮件列表报告这个错误。
8. 我无法在Red Hat 7.0上编译GRUB。


你读了 这条消息 吗?我们从没有支持过 gcc 的任何未发行版本。


附--原文大意:


GCC 2.96


我们注意到个别GNU/Linux发行版包含了“GCC 2.96”。GCC 2.96并非GCC的正式发行版,也不会有这样的发行版本号,它只是我们的一个开发代码,正式发行时将是GCC 3.0。


2.96和2.97都是我们的开发代号,不建议在正式发行的版本中使用,GCC小组不向上述版本提供支持。

9. 如何为Linux指定任意内存大小?

向你的Linux内核传递一个 mem= 参数,就象这样:

grub> kernel /vmlinuz mem=128M


你也可以用同样方法传递其它启动参数。可用的参数请参考Linux文档。
10. 如何从非第一个硬盘(指主硬盘)引导Windows (或DOS)。


使用 map 命令,交换 虚拟 BIOS驱动,如下:

grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

11. 我的GNU/Linux (或其它类UNIX系统)有一个独立的引导区,似乎GRUB无法正确处理这种情况。


这经常被视为一个 bug ,其实并不是bug,而是一种特性。


因为GRUB是一种引导管理器,它常常运行在还没有操作系统的裸机上,它并不知道你的操作系统会挂载哪个分区。因此,如果你划分了 /boot 分区,并且把GRUB映像安装在 /boot/grub 路径下,GRUB会认为映像安装在 /grub 路径下而不是 /boot/grub 。既然不能保证你的所有操作系统会把同一个分区挂载为 /boot ,那好,这种情况有以下几种解决方法:


   1. 把GRUB安装到 /boot/boot/grub 路径而非 /boot/grub 。这样很难看,但是很管用。
   2. 在安装GRUB前先建立一个符号链接,例如: cd /boot && ln -s . boot 。只有根分区的文件系统支持符号链接,并且GRUB也支持这一特性时,这个方法才有效。
   3. 用 install 命令安装GRUB,明确指定GRUB映像的路径。例如:

      grub> root (hd0,1)
      grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst


12. 如何从硬盘卸载GRUB?


对于引导管理器而言,没有 卸载 这个概念,因为一旦你 卸载 了引导管理器,就只剩下一台不能启动的破铜烂铁。所以,正确的做法是用别的引导管理器覆盖现在的,换句话说,你可以直接安装别的引导管理器而无须卸载GRUB。


比方说,如果你想安装Windows的引导程序,只需要在Windows下运行 FDISK /MBR 。如果你想安装LILO(尽管这样做是不可思议的),在GNU/Linux下运行 /sbin/lilo 就可以了。

13. GRUB在读取我的IDE大硬盘时挂起。

如果你的硬盘大于32GB,可能你需要升级主板的BIOS来解决这个问题。这是个众所周知的bug,多数(主板)供应商都会提供补丁。例如,对ASUS-P3BF主板,将BIOS升级到V1007beta1或更高版本可以解决。请向你的(主板)供应商索取更多信息。

14. 为什么Linux (FreeBSD、NetBSD、等)不采用多重引导?


这个就要问它们的维护者了。如果所有的自由(操作系统)内核都支持多重引导,我们岂不是生活在乌托邦?


到 GNU GRUB网页 /
GNU首页 .

Copyleft (C) 2001 呆哥


允许以任何形式逐字复制与分发本文,但必须保留本申明。

最后修改时间: Tue Jan 23 04:41:05 JST 2001
翻译时间:Sat Oct 13 17:11:09 GMT 2001


来自水木清华的
关于启动的grub配置问题

发信人: kingsberg (Long King!), 信区: LinuxApp
标  题: 关于启动的grub配置问题!上次被水给淹了!
发信站: BBS 水木清华站 (Fri Jun 11 11:39:34 2004), 站内

这次再重新发一次!

windows对其他系统的兼容有问题,在现状了linux在装windows时,windows自带的引导程序会将MBR中关于其他系统的引导信息删除,索引一定要现状windows后装linux这样在引导的问题上就没有问题了,如果不行,出现了这种问题,可按照下面的两步,但是前提是你必须有软驱。

一:
首先拿来了一张软盘,插入了软驱,同在windows下一样,首先要格式化,windows的操作是简单的,甚至没有因为厂家在出厂时就已经格式化了,不信你可以查看一下包装纸。


1、命令:
#mke2fs /dev/fd0
注释:此命令是将软盘格式化成为ext2的格式。

然后我们要做的就是,既然是为了从软盘引导系统,那么我们当然就要将GRUB装到软盘上了
在此之前可用#mount /mnt/floppy产看一下我们建立的文件系统,也可以不用做。
2、命令:
#grub-install --root-directory=/mnt/floppy/'fd0'
注释:安装grub到软盘。

可以查看一下,也可不用看,为了保险自己察看以下。
到现在我们的第一步就完事了,下一步进入的过程就是重新开机,进入bios重新引导系统从
软驱启动,你将看到的界面如下有一个命令提示符
grub>
下面我们就可以开始配置了。
\\\\\\\\\\\\\\\\\

二:
grub的配置。
首先看一下自己所处的环境,在名利提示行下输入root命令如下。
3、grub>root
下一步我们要将grub安装到MBR了,只有这样你的系统在下次启动时才会像你希望的那样启动,你不会想将上面的步骤重复一遍吧?
我们下面就进入安装的过程。
你现在连要安装的文件在哪里都不知道呢?当然查找了。
4、grub>find /boot/grub/grub.config
   (hd0,0)//这行是输出结果,会因为彼得系统安装不同而不同
注释:这部命令是找到安装文件在硬盘上的位置。
5、grub>root(hd0,0)//至于括号里的东西只要将4中的输出结果抄进来就可以了。
注释:这步命令是将输出结果中的分区设置为root.
下面我们就开始安装了。
6、grub>setup(hd0)
等到屏幕上出现了Done之后就完成了。重新启动,从硬盘引导。就可以了。
如果此时windows又不见了,那么用vi编辑以下/etc/grub/grub.conf文件了,就可以解决了
具体的编辑,可找到一些资料,自己试试吧!这历久不详细地说了。

这是整个过程,至于那些文字并不重要,如果你不想知道为什么,只想弄好自己的系统。
这是整个关于引导的问题,最常见的就是后装了windows找不到linux了。
一些基本的问题总是困扰着linux的初学者,希望这篇帖子能有所帮助,以起来enjoy吧!

不足之处敬请指教。
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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