xref: /illumos-gate/usr/src/grub/grub-0.97/INSTALL (revision 95c2d3023b88b9097d9822eb47ace5466e6d1cf4)
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