首先,请仔细阅读GRUB发行版中的文档。你应该能够从这些文档中得到几乎所有信息。本FAQ只是给你一些额外的提示。
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。
这取决于你的BIOS和操作系统。你必须确定你的硬盘能在LBA模式下正常访问。通常情况下,这是可以通过BIOS(原文如此,应为CMOS)设置工具来配置的。更多信息请参考你的BIOS设置手册。
此外,某些操作系统(例如DOS)无法访问任何大硬盘,这个问题任何引导管理器都无法解决。据我所知,至少GNU/Hurd和GNU/Linux可以从这样的大硬盘引导。
是的,只要你的BIOS支持LBA模式就可以。虽然在早期的版本中,为了这样做,你不得不使用一个特别定制的Stage1,但已经不再需要了,因为现在的Stage1支持所有模式。
是的,GRUB的设备语法和其它系统有很大不同,但它和DOS以及Windows 98有些类似:GRUB并不区分IDE或是SCSI硬盘,所以你的硬盘用(hd%d)
来表示,(%d是一个整数,从0开始计算)。同样的,软驱用(fd%d)
来表示。
真正让用户困惑的是分区编号的计算。GRUB从0开始计算分区,而几乎所有其它的操作系统都从1开始。我们将改进这一点以取得统一。
我不知道为什么,FDISK程序的作者错误的把分区类型0x63分配给了GNU Hurd。一种分区类型应该指出该分区使用的格式,包括文件系统以及BSD片段等,而不应该用来指定该分区被什么操作系统拥有。所以不论该分区的拥有者是不是Hurd,当分区使用ext2fs文件系统的时候用0x83;当分区使用ffs文件系统的时候用0xA5。我们将会使用0x63来代表GNU Hurd文件系统,但现在还没有采用这种表示。
请用以下命令检查你的binutils版本:
$ ld -v
然后,敲:
$ gcc -Wl,-v 2>&1 | grep ""GNU ld""
$ ./configure --with-binutils=/usr/local/bin
如果你按以上方法操作,GRUB还是会崩溃,可能就是GRUB有大bug了,请向<[email protected]>邮件列表报告这个错误。
你读了这条消息吗?我们从没有支持过gcc的任何未发行版本。
附--原文大意:
GCC 2.96
我们注意到个别GNU/Linux发行版包含了“GCC 2.96”。GCC 2.96并非GCC的正式发行版,也不会有这样的发行版本号,它只是我们的一个开发代码,正式发行时将是GCC 3.0。
2.96和2.97都是我们的开发代号,不建议在正式发行的版本中使用,GCC小组不向上述版本提供支持。
向你的Linux内核传递一个mem=参数,就象这样:
grub> kernel /vmlinuz mem=128M
你也可以用同样方法传递其它启动参数。可用的参数请参考Linux文档。
使用map命令,交换虚拟BIOS驱动,如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
这经常被视为一个bug,其实并不是bug,而是一种特性。
因为GRUB是一种引导管理器,它常常运行在还没有操作系统的裸机上,它并不知道你的操作系统会挂载哪个分区。因此,如果你划分了/boot分区,并且把GRUB映像安装在/boot/grub路径下,GRUB会认为映像安装在/grub路径下而不是/boot/grub。既然不能保证你的所有操作系统会把同一个分区挂载为/boot,那好,这种情况有以下几种解决方法:
cd /boot && ln -s . boot
。只有根分区的文件系统支持符号链接,并且GRUB也支持这一特性时,这个方法才有效。install
命令安装GRUB,明确指定GRUB映像的路径。例如:
grub> root (hd0,1)
grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst
对于引导管理器而言,没有卸载这个概念,因为一旦你卸载了引导管理器,就只剩下一台不能启动的破铜烂铁。所以,正确的做法是用别的引导管理器覆盖现在的,换句话说,你可以直接安装别的引导管理器而无须卸载GRUB。
比方说,如果你想安装Windows的引导程序,只需要在Windows下运行FDISK /MBR
。如果你想安装LILO(尽管这样做是不可思议的),在GNU/Linux下运行/sbin/lilo
就可以了。
如果你的硬盘大于32GB,可能你需要升级主板的BIOS来解决这个问题。这是个众所周知的bug,多数(主板)供应商都会提供补丁。例如,对ASUS-P3BF主板,将BIOS升级到V1007beta1或更高版本可以解决。请向你的(主板)供应商索取更多信息。
这个就要问它们的维护者了。如果所有的自由(操作系统)内核都支持多重引导,我们岂不是生活在乌托邦?
到GNU GRUB网页 /
GNU首页.
Copyleft (C) 2001 呆哥
允许以任何形式逐字复制与分发本文,但必须保留本申明。
最后修改时间: Tue Jan 23 04:41:05 JST 2001
翻译时间:Sat Oct 13 17:11:09 GMT 2001