blob: 4e910bba32eb2332ca8faa9fc31fae12b554af7a [file] [log] [blame] [raw]
@node FAQ
@appendix Frequently asked questions
@table @asis
@item How does GNU GRUB differ from Erich's original GRUB?
GNU GRUB is the successor of Erich's great GRUB. He couldn't work on
GRUB because of some other tasks, so the current maintainers OKUJI
Yoshinori and 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 (such as GNU/Hurd) via the grub shell
@file{/sbin/grub} (or @file{/usr/sbin/grub} on older systems), it
supports Logical Block Address (LBA) mode that solves the 1024 cylinders
problem, and @kbd{@key{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.
@item Can GRUB boot my operating system from over 8GB hard disks?
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. GNU/Hurd
and GNU/Linux can surely boot from such a large disk.
@item Can I put Stage2 into a partition which is over 1024 cylinders?
Yes, if your BIOS supports the LBA mode.
@item How to create a GRUB boot floppy with the menu interface?
The easiest way is:
@enumerate
@item
Create filesystem in your floppy disk. For example:
@example
$ mke2fs /dev/fd0
@end example
@item
Mount it on somewhere, say, @file{/mnt}.
@item
Copy the GRUB images to @file{/mnt/boot/grub}. Only @file{stage1},
@file{stage2} and @file{menu.lst} are necessary. You may not copy
@dfn{stage1.5}s.
@item
Run the following command (substitute @file{/usr/sbin/grub} for
@file{/sbin/grub} if you are using an older system):
@example
@group
$ /sbin/grub --batch <<EOT
root (fd0)
setup (fd0)
quit
EOT
@end group
@end example
@end enumerate
@item How to specify a partition?
@xref{Device syntax}.
@item GRUB does not recognize my GNU/Hurd partition.
I don't know why, but the authors of FDISK programs have assigned the
partition type @samp{0x63} to GNU Hurd incorrectly. A partition type
should mean what format is used in the partition, such as filesystem and
BSD slices, and should not be used to represent what operating system
owns the partition. So use @samp{0x83} if the partition contains ext2fs
filesystem, and use @samp{0xA5} if the partition contains ffs
filesystem, whether the partition owner is Hurd or not. We will use
@samp{0x63} for GNU Hurd filesystem that has not been implemented yet.
@item I've installed a recent version of binutils, but GRUB still crashes.
Please check for the version of your binutils by this command:
@example
$ ld -v
@end example
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:
@example
$ gcc -Wl,-v 2>&1 | grep "GNU ld"
@end example
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:
@example
$ ./configure --with-binutils=/usr/local/bin
@end example
If you follow the instructions above but GRUB still crashes, probably
there is a serious bug in GRUB. @xref{Reporting bugs}.
@item GRUB hangs up when accessing my SCSI disk.
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:
@table @asis
@item
Adaptec AIC-7880
@end table
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).
@strong{Caution:} Actually it has not been verified yet if this bug is
due to the SCSI BIOS or GRUB itself, frankly speaking. Because the
developers haven't seen it by their own eyes. This is why it is
desirable that you investigate the cause seriously if you have the
skill.
@item How can I specify an arbitrary memory size to Linux?
Pass a @samp{mem=} option to your Linux kernel, like this:
@example
grub> kernel /vmlinuz mem=128M
@end example
You may pass other options in the same way. See @xref{GNU/Linux}, for
more details.
@item I have a separate boot partition and GRUB doesn't recognize it.
This is often reported as a @dfn{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 @file{/boot} and you
install GRUB images into the directory @file{/boot/grub}, GRUB
recognizes that the images lies under the directory @file{/grub} but not
@file{/boot/grub}. That's fine, since there is no guarantee that all of
your operating systems mount the same partition as @file{/boot}.
There are several solutions for this situation.
@enumerate
@item
Install GRUB into the directory @file{/boot/boot/grub} instead of
@file{/boot/grub}. This may sound ugly but should work fine.
@item
Create a symbolic link before installing GRUB, like @samp{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.
@item
Install GRUB with the command @command{install}, to specify the paths of
GRUB images explicitly. Here is an example:
@example
@group
grub> root (hd0,1)
grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst
@end group
@end example
@end enumerate
@item Why don't Linux, FreeBSD, NetBSD, etc. become Multiboot-compliant?
Please ask the relevant maintainers. If all free kernels were
Multiboot-compliant (@pxref{Top, Multiboot Specification, Motivation,
multiboot, The Multiboot Specification}), the world would be an
utopia@dots{}
@end table
@node Obtaining and Building GRUB
@appendix How to obtain and build GRUB
@quotation
@strong{Caution:} GRUB requires binutils-2.9.1.0.23 or later because the
GNU assembler has been changed so that it can produce real 16bits
machine code between 2.9.1 and 2.9.1.0.x. See
@url{http://sourceware.cygnus.com/binutils/}, to obtain information on
how to get the latest version.
@end quotation
@c Do not change alpha.gnu.org:/gnu/grub to the URI, since TeX does
@c not format it well.
GRUB is available from the GNU alpha archive site
@url{alpha.gnu.org:/gnu/grub} or any of its mirrors. The file
will be named grub-version.tar.gz. The current version is
@value{VERSION}, so the file you should grab is:
@url{ftp://alpha.gnu.org/gnu/grub/grub-@value{VERSION}.tar.gz}
To unbundle GRUB use the instruction:
@example
zcat grub-@value{VERSION}.tar.gz | tar xvf -
@end example
which will create a directory called @file{grub-@value{VERSION}} with
all the sources. You can look at the file @file{INSTALL} for detailed
instructions on how to build and install GRUB, but you should be able to
just do:
@example
@group
$ cd grub-@value{VERSION}
$ ./configure
$ make install
@end group
@end example
This will install the grub shell @file{grub} (@pxref{Invoking the grub
shell}), the Multiboot checker @file{mbchk} (@pxref{Invoking mbchk}),
and the GRUB images It will also install the GRUB manual.
Also, the latest version is available from the CVS. The repository is:
@code{:pserver:anoncvs@@subversions.gnu.org:/home/cvs}
and the module is:
@code{grub}
The password for anoncvs is empty. So the instruction is:
@example
@group
$ cvs -d :pserver:anoncvs@@subversions.gnu.org:/home/cvs \
login
Password: @key{ENTER}
$ cvs -d :pserver:anoncvs@@subversions.gnu.org:/home/cvs \
checkout grub
@end group
@end example
Get the recent version of GNU Automake from the CVS to regenerate
@file{Makefile.in}s. See @url{http://sourceware.cygnus.com/automake/},
for more information.
@node Reporting bugs
@appendix Reporting bugs
When you encounter any problem or bug, please submit it to
@email{bug-grub@@gnu.org} with information about your computer and what
you did @emph{as much as possible}. Take a look at this list before you
send e-mail to the address:
@itemize @bullet
@item
Write what you did and what messages were printed on the screen in
detail. Don't paraphrase them. Please describe them as they were.
@item
Explain what you wanted to do. It is very useful to know your purpose
and your wish, and how GRUB didn't satisfy you.
@item
Inform us of the information about your GRUB. What version were you
using? Which were you using the grub shell or the boot images? If using
the grub shell, tell us what operating system was used to run it. And,
if you ran @command{configure} with some options when building GRUB, it
would be a good thing to let us know how to build it.
@item
The information on your hardware is also essential. These are especially
important: the geometries and the partition tables of your hard disk
drives and your BIOS.
@item
Write down anything that you think might be related. If you are not sure
whether to state a fact or leave it out, state it! Reporting too many
things is quite better than omitting an important thing.
@end itemize
@node Index
@unnumbered Index
@c Currently, we use only the Concept Index.
@printindex cp