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