| -*- Text -*- | 
 |  | 
 | This is the GRUB.  Welcome. | 
 |  | 
 | This file contains instructions for compiling and installing the GRUB. | 
 |  | 
 | The Requirements | 
 | ================ | 
 |  | 
 | GRUB depends on some software packages installed into your system. If | 
 | you don't have any of them, please obtain and install them before | 
 | configuring the GRUB. | 
 |  | 
 | * GCC | 
 |  | 
 |   Probably every recent GCC should work, but we recommend GCC 2.95 and | 
 |   later, since you can create smaller binary images. See the web page | 
 |   <http://gcc.gnu.org/>. | 
 |  | 
 | * GNU Make | 
 |  | 
 |   For now, the Makefiles produced by Automake depends on GNU Make. See | 
 |   the web page <http://www.gnu.org/software/make/make.html>. | 
 |  | 
 | * GNU binutils 2.9.1.0.23 or later | 
 |  | 
 |   Binutils has changed the behavior of 16bit assembler between 2.9.1 | 
 |   and 2.9.1.0.x, and we support only 2.9.1.0.x and higher. In | 
 |   particular, we recommend using binutils 2.10, since it is the only | 
 |   public release that supports real 16bit mode. Please take a look at | 
 |   the web page <http://sourceware.cygnus.com/binutils/>, for more | 
 |   information. Note that you don't have to install it into any system | 
 |   directory. See the section "Operation Controls", if you want to | 
 |   install binutils into your own directory. | 
 |  | 
 | If you'd like to develop GRUB, these below are also required. Don't | 
 | forget to specify the option `--enable-maintainer-mode' when running the | 
 | configure script. | 
 |  | 
 | * Texinfo 4.0 or later | 
 |  | 
 |   We use some new macros in the documents, so you need a recent | 
 |   Texinfo release. See the web page | 
 |   <http://www.gnu.org/software/texinfo/texinfo.html>. | 
 |  | 
 | * Developers: GNU Automake 1.5 | 
 |  | 
 |   You should not need Automake just to compile GRUB, but you will need | 
 |   it if you edit any of the build files (Makefile.am, configure.in, | 
 |   etc).  We use the new "per-executable flags" feature found in the | 
 |   latest release of automake.  See the web page | 
 |   <http://www.gnu.org/software/automake/automake.html>. | 
 |  | 
 |   Note that you shouldn't use 1.6 because of the incompatibility on | 
 |   assembler support. We will shift to 1.6, once 1.6 becomes more popular | 
 |   than 1.5. | 
 |  | 
 |  | 
 | Configuring the GRUB | 
 | ==================== | 
 |  | 
 | The `configure' shell script attempts to guess correct values for | 
 | various system-dependent variables used during compilation.  It uses | 
 | those values to create a `Makefile' in each directory of the package. | 
 | It may also create one or more `.h' files containing system-dependent | 
 | definitions.  Finally, it creates a shell script `config.status' that | 
 | you can run in the future to recreate the current configuration, a | 
 | file `config.cache' that saves the results of its tests to speed up | 
 | reconfiguring, and a file `config.log' containing compiler output | 
 | (useful mainly for debugging `configure'). | 
 |  | 
 | If you need to do unusual things to compile the package, please try to | 
 | figure out how `configure' could check whether to do them, and mail | 
 | diffs or instructions to the address given in the `README' so they can | 
 | be considered for the next release.  If at some point `config.cache' | 
 | contains results you don't want to keep, you may remove or edit it. | 
 |  | 
 | The file `configure.in' is used to create `configure' by a program | 
 | called `autoconf'.  You only need `configure.in' if you want to change | 
 | it or regenerate `configure' using a newer version of `autoconf'. | 
 |  | 
 |  | 
 | Building the GRUB | 
 | ================= | 
 |  | 
 | The simplest way to compile this package is: | 
 |  | 
 |   1. `cd' to the directory containing the package's source code and | 
 |      type `./configure' to configure the package for your system.  If | 
 |      you're using `csh' on an old version of System V, you might need | 
 |      to type `sh ./configure' instead to prevent `csh' from trying to | 
 |      execute `configure' itself. | 
 |  | 
 |      Running `configure' takes awhile.  While running, it prints some | 
 |      messages telling which features it is checking for. | 
 |  | 
 |   2. Type `make' to compile the package. | 
 |  | 
 |   3. Optionally, type `make check' to run any self-tests that come with | 
 |      the package. | 
 |  | 
 |   4. Type `make install' to install the programs and any data files and | 
 |      documentation. | 
 |  | 
 |   5. You can remove the program binaries and object files from the | 
 |      source code directory by typing `make clean'.  To also remove the | 
 |      files that `configure' created (so you can compile the package for | 
 |      a different kind of computer), type `make distclean'.  There is | 
 |      also a `make maintainer-clean' target, but that is intended mainly | 
 |      for the package's developers.  If you use it, you may have to get | 
 |      all sorts of other programs in order to regenerate files that came | 
 |      with the distribution. | 
 |  | 
 |  | 
 | Compiling For Multiple Architectures | 
 | ==================================== | 
 |  | 
 | You can compile the package for more than one kind of computer at the | 
 | same time, by placing the object files for each architecture in their | 
 | own directory.  `cd' to the directory where you want the object files | 
 | and executables to go and run the `configure' script.  `configure' | 
 | automatically checks for the source code in the directory that | 
 | `configure' is in and in `..'. | 
 |  | 
 |  | 
 | Installation Names | 
 | ================== | 
 |  | 
 | By default, `make install' will install the package's files in | 
 | `/usr/local/bin', `/usr/local/man', etc.  You can specify an | 
 | installation prefix by giving `configure' the option `--prefix=PATH'. | 
 |  | 
 | You can specify separate installation prefixes for | 
 | architecture-specific files and architecture-independent files.  If | 
 | you give `configure' the option `--exec-prefix=PATH', the package will | 
 | use PATH as the prefix for installing programs and libraries. | 
 | Documentation and other data files will still use the regular prefix. | 
 |  | 
 | In addition, if you use an unusual directory layout you can give | 
 | options like `--bindir=PATH' to specify different values for | 
 | particular kinds of files.  Run `configure --help' for a list of the | 
 | directories you can set and what kinds of files go in them. | 
 |  | 
 | If the package supports it, you can cause programs to be installed | 
 | with an extra prefix or suffix on their names by giving `configure' | 
 | the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. | 
 |  | 
 | Please note, however, that the GRUB knows where it is located in the | 
 | filesystem.  If you have installed it in an unusual location, the | 
 | system might not work properly, or at all.  The chief utility of these | 
 | options for the GRUB is to allow you to "install" in some alternate | 
 | location, and then copy these to the actual root filesystem later. | 
 |  | 
 |  | 
 | Sharing Defaults | 
 | ================ | 
 |  | 
 | If you want to set default values for `configure' scripts to share, | 
 | you can create a site shell script called `config.site' that gives | 
 | default values for variables like `CC', `cache_file', and `prefix'. | 
 | `configure' looks for `PREFIX/share/config.site' if it exists, then | 
 | `PREFIX/etc/config.site' if it exists.  Or, you can set the | 
 | `CONFIG_SITE' environment variable to the location of the site script. | 
 | A warning: not all `configure' scripts look for a site script. | 
 |  | 
 |  | 
 | Operation Controls | 
 | ================== | 
 |  | 
 |    `configure' recognizes the following options to control how it | 
 | operates. | 
 |  | 
 | `--cache-file=FILE' | 
 |      Use and save the results of the tests in FILE instead of | 
 |      `./config.cache'.  Set FILE to `/dev/null' to disable caching, for | 
 |      debugging `configure'. | 
 |  | 
 | `--help' | 
 |      Print a summary of the options to `configure', and exit. | 
 |  | 
 | `--quiet' | 
 | `--silent' | 
 | `-q' | 
 |      Do not print messages saying which checks are being made. | 
 |  | 
 | `--srcdir=DIR' | 
 |      Look for the package's source code in directory DIR.  Usually | 
 |      `configure' can determine that directory automatically. | 
 |  | 
 | `--version' | 
 |      Print the version of Autoconf used to generate the `configure' | 
 |      script, and exit. | 
 |  | 
 | `--enable-maintainer-mode' | 
 |      Enable make rules and dependencies not useful (and sometimes | 
 |      confusing) to the casual installer. If you are a GRUB developer, | 
 |      it is a good idea to specify this option. | 
 |  | 
 | `--disable-ext2fs' | 
 |      Omit the ext2fs support in Stage 2. | 
 |  | 
 | `--disable-fat' | 
 |      Omit the FAT support in Stage 2. | 
 |  | 
 | `--disable-ffs' | 
 |      Omit the FFS support in Stage 2. | 
 |  | 
 | `--disable-minix' | 
 |      Omit the Minix fs support in Stage 2. | 
 |  | 
 | `--disable-reiserfs' | 
 |      Omit the ReiserFS support in Stage 2. | 
 |  | 
 | `--disable-vstafs' | 
 |      Omit the VSTa filesystem support in Stage 2. | 
 |  | 
 | `--disable-jfs' | 
 |      Omit the JFS support in Stage 2. | 
 |  | 
 | `--disable-xfs' | 
 |      Omit the XFS support in Stage 2. | 
 |  | 
 | `--disable-gunzip' | 
 |      Omit the decompression support in Stage 2. | 
 |  | 
 | `--disable-md5-password' | 
 |      Omit the MD5 password support in Stage2. | 
 |  | 
 | `--with-binutils=PATH' | 
 |      Search the path PATH to find binutils. If you have installed your | 
 |      binutils executables into an unusual location where GCC doesn't | 
 |      search by default, use this option. | 
 |  | 
 | `--without-curses' | 
 |      Don't use the curses library. | 
 |  | 
 | `--disable-hercules' | 
 |      Omit the hercules console support in Stage 2. | 
 |  | 
 | `--disable-serial' | 
 |      Omit the serial terminal support in Stage 2. | 
 |  | 
 | `--enable-serial-speed-simulation' | 
 |      Simulate the slowness of a serial device in the grub shell. This | 
 |      option is useful for GRUB developers, as you can test the | 
 |      performance of a terminal emulation even on pseudo terminals. | 
 |  | 
 | `--enable-preset-menu=FILE' | 
 |      Preset a menu file FILE in Stage 2. This is useful, if you cannot | 
 |      put a configuration file on a filesystem for some reason (e.g. when | 
 |      you need to set the default terminal to a serial terminal in an | 
 |      embedded system). | 
 |  | 
 | `--enable-example-kernel' | 
 |      Build the example Multiboot kernel in the directory "docs". You | 
 |      will be able to boot the image "kernel" with GRUB. | 
 |  | 
 | `--disable-auto-linux-mem-opt' | 
 |      Don't pass the "mem=" option automatically, when booting Linux. | 
 |      You can also disable the feature at run time. | 
 |  | 
 |  | 
 | `configure' also accepts several options for the network support. See | 
 | the file `netboot/README.netboot', for more information. |