| @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 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 (such as GNU/Linux) via the grub shell |
| @file{/sbin/grub}, 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: |
| |
| @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 |