1-*- Text -*- 2 3This is the GRUB. Welcome. 4 5This file contains instructions for compiling and installing the GRUB. 6 7The Requirements 8================ 9 10GRUB depends on some software packages installed into your system. If 11you don't have any of them, please obtain and install them before 12configuring the GRUB. 13 14* GCC 15 16 Probably every recent GCC should work, but we recommend GCC 2.95 and 17 later, since you can create smaller binary images. See the web page 18 <http://gcc.gnu.org/>. 19 20* GNU Make 21 22 For now, the Makefiles produced by Automake depends on GNU Make. See 23 the web page <http://www.gnu.org/software/make/make.html>. 24 25* GNU binutils 2.9.1.0.23 or later 26 27 Binutils has changed the behavior of 16bit assembler between 2.9.1 28 and 2.9.1.0.x, and we support only 2.9.1.0.x and higher. In 29 particular, we recommend using binutils 2.10, since it is the only 30 public release that supports real 16bit mode. Please take a look at 31 the web page <http://sourceware.cygnus.com/binutils/>, for more 32 information. Note that you don't have to install it into any system 33 directory. See the section "Operation Controls", if you want to 34 install binutils into your own directory. 35 36If you'd like to develop GRUB, these below are also required. Don't 37forget to specify the option `--enable-maintainer-mode' when running the 38configure script. 39 40* Texinfo 4.0 or later 41 42 We use some new macros in the documents, so you need a recent 43 Texinfo release. See the web page 44 <http://www.gnu.org/software/texinfo/texinfo.html>. 45 46* Developers: GNU Autoconf 2.5x and GNU Automake 1.7 or later 47 48 You should not need Automake just to compile GRUB, but you will need 49 it if you edit any of the build files (Makefile.am, configure.in, 50 etc). We use the new "per-executable flags" feature found in the 51 latest release of automake. See the web page 52 <http://www.gnu.org/software/automake/automake.html>. 53 54 55Configuring the GRUB 56==================== 57 58The `configure' shell script attempts to guess correct values for 59various system-dependent variables used during compilation. It uses 60those values to create a `Makefile' in each directory of the package. 61It may also create one or more `.h' files containing system-dependent 62definitions. Finally, it creates a shell script `config.status' that 63you can run in the future to recreate the current configuration, a 64file `config.cache' that saves the results of its tests to speed up 65reconfiguring, and a file `config.log' containing compiler output 66(useful mainly for debugging `configure'). 67 68If you need to do unusual things to compile the package, please try to 69figure out how `configure' could check whether to do them, and mail 70diffs or instructions to the address given in the `README' so they can 71be considered for the next release. If at some point `config.cache' 72contains results you don't want to keep, you may remove or edit it. 73 74The file `configure.in' is used to create `configure' by a program 75called `autoconf'. You only need `configure.in' if you want to change 76it or regenerate `configure' using a newer version of `autoconf'. 77 78 79Building the GRUB 80================= 81 82The simplest way to compile this package is: 83 84 1. `cd' to the directory containing the package's source code and 85 type `./configure' to configure the package for your system. If 86 you're using `csh' on an old version of System V, you might need 87 to type `sh ./configure' instead to prevent `csh' from trying to 88 execute `configure' itself. 89 90 Running `configure' takes awhile. While running, it prints some 91 messages telling which features it is checking for. 92 93 2. Type `make' to compile the package. 94 95 3. Optionally, type `make check' to run any self-tests that come with 96 the package. 97 98 4. Type `make install' to install the programs and any data files and 99 documentation. 100 101 5. You can remove the program binaries and object files from the 102 source code directory by typing `make clean'. To also remove the 103 files that `configure' created (so you can compile the package for 104 a different kind of computer), type `make distclean'. There is 105 also a `make maintainer-clean' target, but that is intended mainly 106 for the package's developers. If you use it, you may have to get 107 all sorts of other programs in order to regenerate files that came 108 with the distribution. 109 110 111Compiling For Multiple Architectures 112==================================== 113 114You can compile the package for more than one kind of computer at the 115same time, by placing the object files for each architecture in their 116own directory. `cd' to the directory where you want the object files 117and executables to go and run the `configure' script. `configure' 118automatically checks for the source code in the directory that 119`configure' is in and in `..'. 120 121 122Installation Names 123================== 124 125By default, `make install' will install the package's files in 126`/usr/local/bin', `/usr/local/man', etc. You can specify an 127installation prefix by giving `configure' the option `--prefix=PATH'. 128 129You can specify separate installation prefixes for 130architecture-specific files and architecture-independent files. If 131you give `configure' the option `--exec-prefix=PATH', the package will 132use PATH as the prefix for installing programs and libraries. 133Documentation and other data files will still use the regular prefix. 134 135In addition, if you use an unusual directory layout you can give 136options like `--bindir=PATH' to specify different values for 137particular kinds of files. Run `configure --help' for a list of the 138directories you can set and what kinds of files go in them. 139 140If the package supports it, you can cause programs to be installed 141with an extra prefix or suffix on their names by giving `configure' 142the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 143 144Please note, however, that the GRUB knows where it is located in the 145filesystem. If you have installed it in an unusual location, the 146system might not work properly, or at all. The chief utility of these 147options for the GRUB is to allow you to "install" in some alternate 148location, and then copy these to the actual root filesystem later. 149 150 151Sharing Defaults 152================ 153 154If you want to set default values for `configure' scripts to share, 155you can create a site shell script called `config.site' that gives 156default values for variables like `CC', `cache_file', and `prefix'. 157`configure' looks for `PREFIX/share/config.site' if it exists, then 158`PREFIX/etc/config.site' if it exists. Or, you can set the 159`CONFIG_SITE' environment variable to the location of the site script. 160A warning: not all `configure' scripts look for a site script. 161 162 163Operation Controls 164================== 165 166 `configure' recognizes the following options to control how it 167operates. 168 169`--cache-file=FILE' 170 Use and save the results of the tests in FILE instead of 171 `./config.cache'. Set FILE to `/dev/null' to disable caching, for 172 debugging `configure'. 173 174`--help' 175 Print a summary of the options to `configure', and exit. 176 177`--quiet' 178`--silent' 179`-q' 180 Do not print messages saying which checks are being made. 181 182`--srcdir=DIR' 183 Look for the package's source code in directory DIR. Usually 184 `configure' can determine that directory automatically. 185 186`--version' 187 Print the version of Autoconf used to generate the `configure' 188 script, and exit. 189 190`--enable-maintainer-mode' 191 Enable make rules and dependencies not useful (and sometimes 192 confusing) to the casual installer. If you are a GRUB developer, 193 it is a good idea to specify this option. 194 195`--disable-ext2fs' 196 Omit the ext2fs support in Stage 2. 197 198`--disable-fat' 199 Omit the FAT support in Stage 2. 200 201`--disable-ffs' 202 Omit the FFS support in Stage 2. 203 204`--disable-minix' 205 Omit the Minix fs support in Stage 2. 206 207`--disable-reiserfs' 208 Omit the ReiserFS support in Stage 2. 209 210`--disable-vstafs' 211 Omit the VSTa filesystem support in Stage 2. 212 213`--disable-jfs' 214 Omit the JFS support in Stage 2. 215 216`--disable-xfs' 217 Omit the XFS support in Stage 2. 218 219`--disable-ufs2' 220 Omit the UFS2 support in Stage 2. 221 222`--disable-iso9660' 223 Omit the ISO9660 support in Stage 2. 224 225`--disable-gunzip' 226 Omit the decompression support in Stage 2. 227 228`--disable-md5-password' 229 Omit the MD5 password support in Stage2. 230 231`--with-binutils=PATH' 232 Search the path PATH to find binutils. If you have installed your 233 binutils executables into an unusual location where GCC doesn't 234 search by default, use this option. 235 236`--without-curses' 237 Don't use the curses library. 238 239`--disable-hercules' 240 Omit the hercules console support in Stage 2. 241 242`--disable-serial' 243 Omit the serial terminal support in Stage 2. 244 245`--enable-serial-speed-simulation' 246 Simulate the slowness of a serial device in the grub shell. This 247 option is useful for GRUB developers, as you can test the 248 performance of a terminal emulation even on pseudo terminals. 249 250`--enable-preset-menu=FILE' 251 Preset a menu file FILE in Stage 2. This is useful, if you cannot 252 put a configuration file on a filesystem for some reason (e.g. when 253 you need to set the default terminal to a serial terminal in an 254 embedded system). 255 256`--enable-example-kernel' 257 Build the example Multiboot kernel in the directory "docs". You 258 will be able to boot the image "kernel" with GRUB. 259 260`--disable-auto-linux-mem-opt' 261 Don't pass the "mem=" option automatically, when booting Linux. 262 You can also disable the feature at run time. 263 264 265`configure' also accepts several options for the network support. See 266the file `netboot/README.netboot', for more information. 267