GNU GRUB FAQ
[
French |
German |
Spanish
]
First of all, read the document in the GRUB distribution
enough carefully. You should be able to obtain most information from
the document. This FAQ just gives you some hints.
Also, note that we don't accept bugs about unofficial versions, such as
Red Hat's. Many versions distributed with GNU/Linux vendors are
modified with their own patches, so not all bugs are reproducible in
official versions. Thus, try the latest official version, before
reporting bugs to us.
GNU GRUB is the successor of Erich's great GRUB. He couldn't work on
GRUB because of some other tasks, so the current maintainer Gordon
Matzigkeit took over the maintainership, and opened the development in
order for everybody to participate it.
Technically speaking, GNU GRUB has many features that are not
seen in the original GRUB. For example, GNU GRUB can be installed on
UNIX-like operating system (i.e. GNU/Linux) via the grub shell
/sbin/grub, it supports Logical Block Address (LBA) mode that solves
the 1024 cylinders problem, and TAB completes a filename when it's
unique. Of course, many bug fixes are done as well, so it is
recommended to use GNU GRUB.
That depends on your BIOS and your operating system. You must make
sure that your drive is accessible in LBA mode. Generally, that is
configurable in BIOS setting utility. Read the manual for your BIOS
for more information.
Furthermore, some operating systems (i.e. DOS) cannot access any large
disk, so the problem is not solved by any kind of boot loader. As long
as I know, at least GNU/Hurd and GNU/Linux can boot from such a large
disk.
Yes, you can, if your BIOS supports LBA mode. Although you had to use a
special Stage1 in the previous version, it isn't necessary any longer,
because Stage1 now supports both modes.
- Create a filesystem in your floppy disk (e.g.
mke2fs /dev/fd0 ).
- Mount the floppy on somewhere, say, /mnt.
- Copy the GRUB images to the directory /mnt/boot/grub.
Only stage1, stage2 and menu.lst
are necessary. You may not copy *stage1_5.
- Unmount the floppy.
- Run the following commands (note that the executable grub
may reside in a different directory in your system, for example,
/usr/sbin):
/sbin/grub --batch --device-map=/dev/null <<EOF
device (fd0) /dev/fd0
root (fd0)
setup (fd0)
quit
EOF
Yes, GRUB's device syntax is very different from others, but somewhat
resembles DOS and Windows 98. GRUB doesn't distinguish between IDE and
SCSI, so your hard disk drives are represented as (hd%d)
(%d is an integer, counted from zero). Likewise, your floppy drives
are represented as (fd%d).
The point that confuses the users very much is the partition
numbering style. GRUB counts partitions from zero, while almost all
operating systems count from one. We will fix the inconsistency
someday.
I don't know why, but the authors of FDISK programs have assigned the
partition type 0x63 to GNU Hurd
incorrectly. So use 0x83 if the partition contains ext2
filesystem, and use 0xA5 if the partition contains ffs filesystem,
whether the partition owner is Hurd or not. We will use 0x63 for GNU
Hurd filesystem that has not been implemented yet.
Please check for the version of your binutils by this command:
$ ld -v
This will show two versions, but only the latter is important. If the
version is identical with what you have installed, the installation was
not bad.
Well, please try:
$ gcc -Wl,-v 2>&1 | grep "GNU ld"
If this is not identical with the result above, you should specify the
directory where you have installed binutils for the script configure,
like this:
$ ./configure --with-binutils=/usr/local/bin
If you follow the instructions above but GRUB still crashes, probably
there is a serious bug in GRUB. Please report it to the
Bug Tracking System.
Have you seen this message?
We never support any unreleased version of
gcc.
Pass a mem= option to your Linux kernel, like this:
grub> kernel /vmlinuz mem=128M
You may pass other options in the same way. See the documentation for
Linux, for available options.
Use the command map, to exchange BIOS drives virtually,
like this:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
This is often reported as a bug, but this is not a bug really.
This is a feature.
Because GRUB is a boot loader and it normally runs under no operating
system, it doesn't know where a partition is mounted under your
operating systems. So, if you have the partition /boot and you
install GRUB images into the directory /boot/grub, GRUB
recognizes that the images lies under the directory /grub but
not /boot/grub. That's fine, since there is no guarantee that
all of your operating systems mount the same partition as
/boot.
There are several solutions for this situation:
- Install GRUB into the directory /boot/boot/grub instead
of /boot/grub. This may sound ugly but should work fine.
- Create a symbolic link before installing GRUB, like
cd /boot && ln -s . boot . This works only if
the filesystem of the boot partition supports symbolic links and
GRUB supports the feature as well.
- Install GRUB with the command install, to specify
the paths of GRUB images explicitly. Here is an example:
grub> root (hd0,1)
grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst
There is no concept uninstall in boot loaders, because if you
uninstall a boot loader, an unbootable machine would simply
remain. So all you need to do is overwrite another boot loader you like
to your disk, that is, install the boot loader without uninstalling GRUB.
For example, if you want to install the boot loader for Windows, just
run FDISK /MBR on Windows. If you want to install LILO
(I can't imagine why you want to do such a thing, though), run
/sbin/lilo on GNU/Linux.
If your disk is bigger than 32GB, probably updating your mainboard BIOS
will solve your problem. This bug is well-known and most vendors should
provide fixed versions. For example, if you have ASUS-P3BF, upgrading
the BIOS to V1007beta1 or later can fix it. Please ask your vendor, for
more information.
Check if you have turned on the support for INT 13 extension (LBA). If
so, disable the support and see if GRUB can now access your SCSI
disk. This will make it clear that your SCSI BIOS sucks.
For now, we know the following doesn't provide working LBA mode:
In the case where you have such a SCSI controller unfortunately, you
cannot use the LBA mode, though GRUB still works fine in the CHS mode
(so the well-known 1024 cylinders problem comes again to you).
There are many possibilities, but it is likely that there is something wrong
in your device map file. Take a look at the file
/boot/grub/device.map. The format is well-documented in the
manual.
If there is something wrong, modify the file appropriately and re-run
grub-install.
If you still have a problem or you don't know how you should modify it,
it would be easier to install GRUB with a boot floppy rather than to stick
to grub-install.
Please ask the maintainers. If all free kernels were
Multiboot-compliant, the world would be an utopia...
[
French |
German |
Spanish
]
Return to GNU GRUB webpage /
GNU's home page.
Copyright (C) 1999,2000,2002,2003 Yoshinori K. Okuji
Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.
Last modified: Sat Nov 15 21:40:59 CET 2003
|