|  | @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 |