| -*- 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. |