xref: /onnv-gate/usr/src/grub/grub-0.97/docs/grub.texi (revision 8044:b3af80bbf173)
1*8044SWilliam.Kucharski@Sun.COM\input texinfo
2*8044SWilliam.Kucharski@Sun.COM@c -*-texinfo-*-
3*8044SWilliam.Kucharski@Sun.COM@c %**start of header
4*8044SWilliam.Kucharski@Sun.COM@setfilename grub.info
5*8044SWilliam.Kucharski@Sun.COM@settitle GRUB Manual
6*8044SWilliam.Kucharski@Sun.COM@c %**end of header
7*8044SWilliam.Kucharski@Sun.COM
8*8044SWilliam.Kucharski@Sun.COM@include version.texi
9*8044SWilliam.Kucharski@Sun.COM
10*8044SWilliam.Kucharski@Sun.COM@c Unify all our little indices for now.
11*8044SWilliam.Kucharski@Sun.COM@syncodeindex fn cp
12*8044SWilliam.Kucharski@Sun.COM@syncodeindex vr cp
13*8044SWilliam.Kucharski@Sun.COM@syncodeindex ky cp
14*8044SWilliam.Kucharski@Sun.COM@syncodeindex pg cp
15*8044SWilliam.Kucharski@Sun.COM@syncodeindex tp cp
16*8044SWilliam.Kucharski@Sun.COM
17*8044SWilliam.Kucharski@Sun.COM@footnotestyle separate
18*8044SWilliam.Kucharski@Sun.COM@paragraphindent 3
19*8044SWilliam.Kucharski@Sun.COM@finalout
20*8044SWilliam.Kucharski@Sun.COM
21*8044SWilliam.Kucharski@Sun.COM@dircategory Kernel
22*8044SWilliam.Kucharski@Sun.COM@direntry
23*8044SWilliam.Kucharski@Sun.COM* GRUB: (grub).                 The GRand Unified Bootloader
24*8044SWilliam.Kucharski@Sun.COM* grub-install: (grub)Invoking grub-install.    Install GRUB on your drive
25*8044SWilliam.Kucharski@Sun.COM* grub-md5-crypt: (grub)Invoking grub-md5-crypt.        Encrypt a password
26*8044SWilliam.Kucharski@Sun.COM                                                        in MD5 format
27*8044SWilliam.Kucharski@Sun.COM* grub-terminfo: (grub)Invoking grub-terminfo.  Generate a terminfo
28*8044SWilliam.Kucharski@Sun.COM                                                command from a
29*8044SWilliam.Kucharski@Sun.COM                                                terminfo name
30*8044SWilliam.Kucharski@Sun.COM* grub-set-default: (grub)Invoking grub-set-default.    Set a default boot
31*8044SWilliam.Kucharski@Sun.COM                                                        entry
32*8044SWilliam.Kucharski@Sun.COM* mbchk: (grub)Invoking mbchk.  Check for the format of a Multiboot kernel
33*8044SWilliam.Kucharski@Sun.COM@end direntry
34*8044SWilliam.Kucharski@Sun.COM
35*8044SWilliam.Kucharski@Sun.COM@setchapternewpage odd
36*8044SWilliam.Kucharski@Sun.COM
37*8044SWilliam.Kucharski@Sun.COM@ifinfo
38*8044SWilliam.Kucharski@Sun.COMCopyright @copyright{} 1999,2000,2001,2002,2004 Free Software Foundation, Inc.
39*8044SWilliam.Kucharski@Sun.COM
40*8044SWilliam.Kucharski@Sun.COMPermission is granted to make and distribute verbatim copies of
41*8044SWilliam.Kucharski@Sun.COMthis manual provided the copyright notice and this permission notice
42*8044SWilliam.Kucharski@Sun.COMare preserved on all copies.
43*8044SWilliam.Kucharski@Sun.COM
44*8044SWilliam.Kucharski@Sun.COM@ignore
45*8044SWilliam.Kucharski@Sun.COMPermission is granted to process this file through TeX and print the
46*8044SWilliam.Kucharski@Sun.COMresults, provided the printed document carries a copying permission
47*8044SWilliam.Kucharski@Sun.COMnotice identical to this one except for the removal of this paragraph
48*8044SWilliam.Kucharski@Sun.COM(this paragraph not being relevant to the printed manual).
49*8044SWilliam.Kucharski@Sun.COM
50*8044SWilliam.Kucharski@Sun.COM@end ignore
51*8044SWilliam.Kucharski@Sun.COM
52*8044SWilliam.Kucharski@Sun.COMPermission is granted to copy and distribute modified versions of this
53*8044SWilliam.Kucharski@Sun.COMmanual under the conditions for verbatim copying, provided also that
54*8044SWilliam.Kucharski@Sun.COMthe entire resulting derived work is distributed under the terms of a
55*8044SWilliam.Kucharski@Sun.COMpermission notice identical to this one.
56*8044SWilliam.Kucharski@Sun.COM
57*8044SWilliam.Kucharski@Sun.COMPermission is granted to copy and distribute translations of this manual
58*8044SWilliam.Kucharski@Sun.COMinto another language, under the above conditions for modified versions.
59*8044SWilliam.Kucharski@Sun.COM@end ifinfo
60*8044SWilliam.Kucharski@Sun.COM
61*8044SWilliam.Kucharski@Sun.COM@titlepage
62*8044SWilliam.Kucharski@Sun.COM@sp 10
63*8044SWilliam.Kucharski@Sun.COM@title the GRUB manual
64*8044SWilliam.Kucharski@Sun.COM@subtitle The GRand Unified Bootloader, version @value{VERSION}, @value{UPDATED}.
65*8044SWilliam.Kucharski@Sun.COM@author Gordon Matzigkeit
66*8044SWilliam.Kucharski@Sun.COM@author Yoshinori K. Okuji
67*8044SWilliam.Kucharski@Sun.COM@c The following two commands start the copyright page.
68*8044SWilliam.Kucharski@Sun.COM@page
69*8044SWilliam.Kucharski@Sun.COM@vskip 0pt plus 1filll
70*8044SWilliam.Kucharski@Sun.COMCopyright @copyright{} 1999,2000,2001,2002,2004 Free Software Foundation, Inc.
71*8044SWilliam.Kucharski@Sun.COM
72*8044SWilliam.Kucharski@Sun.COMPermission is granted to make and distribute verbatim copies of
73*8044SWilliam.Kucharski@Sun.COMthis manual provided the copyright notice and this permission notice
74*8044SWilliam.Kucharski@Sun.COMare preserved on all copies.
75*8044SWilliam.Kucharski@Sun.COMPermission is granted to copy and distribute modified versions of this
76*8044SWilliam.Kucharski@Sun.COMmanual under the conditions for verbatim copying, provided that the entire
77*8044SWilliam.Kucharski@Sun.COMresulting derived work is distributed under the terms of a permission
78*8044SWilliam.Kucharski@Sun.COMnotice identical to this one.
79*8044SWilliam.Kucharski@Sun.COM
80*8044SWilliam.Kucharski@Sun.COMPermission is granted to copy and distribute translations of this manual
81*8044SWilliam.Kucharski@Sun.COMinto another language, under the above conditions for modified versions,
82*8044SWilliam.Kucharski@Sun.COMexcept that this permission notice may be stated in a translation approved
83*8044SWilliam.Kucharski@Sun.COMby Free Software Foundation.
84*8044SWilliam.Kucharski@Sun.COM@end titlepage
85*8044SWilliam.Kucharski@Sun.COM
86*8044SWilliam.Kucharski@Sun.COM@c Output the table of contents at the beginning.
87*8044SWilliam.Kucharski@Sun.COM@contents
88*8044SWilliam.Kucharski@Sun.COM
89*8044SWilliam.Kucharski@Sun.COM@finalout
90*8044SWilliam.Kucharski@Sun.COM@headings double
91*8044SWilliam.Kucharski@Sun.COM
92*8044SWilliam.Kucharski@Sun.COM@ifnottex
93*8044SWilliam.Kucharski@Sun.COM@node Top
94*8044SWilliam.Kucharski@Sun.COM@top GRUB manual
95*8044SWilliam.Kucharski@Sun.COM
96*8044SWilliam.Kucharski@Sun.COMThis is the documentation of GNU GRUB, the GRand Unified Bootloader,
97*8044SWilliam.Kucharski@Sun.COMa flexible and powerful boot loader program for @sc{pc}s.
98*8044SWilliam.Kucharski@Sun.COM
99*8044SWilliam.Kucharski@Sun.COMThis edition documents version @value{VERSION}.
100*8044SWilliam.Kucharski@Sun.COM@end ifnottex
101*8044SWilliam.Kucharski@Sun.COM
102*8044SWilliam.Kucharski@Sun.COM@menu
103*8044SWilliam.Kucharski@Sun.COM* Introduction::                Capturing the spirit of GRUB
104*8044SWilliam.Kucharski@Sun.COM* Naming convention::           Names of your drives in GRUB
105*8044SWilliam.Kucharski@Sun.COM* Installation::                Installing GRUB on your drive
106*8044SWilliam.Kucharski@Sun.COM* Booting::                     How to boot different operating systems
107*8044SWilliam.Kucharski@Sun.COM* Configuration::               Writing your own configuration file
108*8044SWilliam.Kucharski@Sun.COM* Network::                     Downloading OS images from a network
109*8044SWilliam.Kucharski@Sun.COM* Serial terminal::             Using GRUB via a serial line
110*8044SWilliam.Kucharski@Sun.COM* Preset Menu::                 Embedding a configuration file into GRUB
111*8044SWilliam.Kucharski@Sun.COM* Security::                    Improving the security
112*8044SWilliam.Kucharski@Sun.COM* Images::                      GRUB image files
113*8044SWilliam.Kucharski@Sun.COM* Filesystem::                  Filesystem syntax and semantics
114*8044SWilliam.Kucharski@Sun.COM* Interface::                   The menu and the command-line
115*8044SWilliam.Kucharski@Sun.COM* Commands::                    The list of available builtin commands
116*8044SWilliam.Kucharski@Sun.COM* Troubleshooting::             Error messages produced by GRUB
117*8044SWilliam.Kucharski@Sun.COM* Invoking the grub shell::     How to use the grub shell
118*8044SWilliam.Kucharski@Sun.COM* Invoking grub-install::       How to use the GRUB installer
119*8044SWilliam.Kucharski@Sun.COM* Invoking grub-md5-crypt::     How to generate a cryptic password
120*8044SWilliam.Kucharski@Sun.COM* Invoking grub-terminfo::      How to generate a terminfo command
121*8044SWilliam.Kucharski@Sun.COM* Invoking grub-set-default::   How to set a default boot entry
122*8044SWilliam.Kucharski@Sun.COM* Invoking mbchk::              How to use the Multiboot checker
123*8044SWilliam.Kucharski@Sun.COM* Obtaining and Building GRUB:: How to obtain and build GRUB
124*8044SWilliam.Kucharski@Sun.COM* Reporting bugs::              Where you should send a bug report
125*8044SWilliam.Kucharski@Sun.COM* Future::                      Some future plans on GRUB
126*8044SWilliam.Kucharski@Sun.COM* Internals::                   Hacking GRUB
127*8044SWilliam.Kucharski@Sun.COM* Index::
128*8044SWilliam.Kucharski@Sun.COM@end menu
129*8044SWilliam.Kucharski@Sun.COM
130*8044SWilliam.Kucharski@Sun.COM
131*8044SWilliam.Kucharski@Sun.COM@node Introduction
132*8044SWilliam.Kucharski@Sun.COM@chapter Introduction to GRUB
133*8044SWilliam.Kucharski@Sun.COM
134*8044SWilliam.Kucharski@Sun.COM@menu
135*8044SWilliam.Kucharski@Sun.COM* Overview::                    What exactly GRUB is and how to use it
136*8044SWilliam.Kucharski@Sun.COM* History::                     From maggot to house fly
137*8044SWilliam.Kucharski@Sun.COM* Features::                    GRUB features
138*8044SWilliam.Kucharski@Sun.COM* Role of a boot loader::       The role of a boot loader
139*8044SWilliam.Kucharski@Sun.COM@end menu
140*8044SWilliam.Kucharski@Sun.COM
141*8044SWilliam.Kucharski@Sun.COM
142*8044SWilliam.Kucharski@Sun.COM@node Overview
143*8044SWilliam.Kucharski@Sun.COM@section Overview
144*8044SWilliam.Kucharski@Sun.COM
145*8044SWilliam.Kucharski@Sun.COMBriefly, a @dfn{boot loader} is the first software program that runs when
146*8044SWilliam.Kucharski@Sun.COMa computer starts.  It is responsible for loading and transferring
147*8044SWilliam.Kucharski@Sun.COMcontrol to an operating system @dfn{kernel} software (such as Linux or
148*8044SWilliam.Kucharski@Sun.COMGNU Mach).  The kernel, in turn, initializes the rest of the operating
149*8044SWilliam.Kucharski@Sun.COMsystem (e.g. a GNU system).
150*8044SWilliam.Kucharski@Sun.COM
151*8044SWilliam.Kucharski@Sun.COMGNU GRUB is a very powerful boot loader, which can load a wide variety
152*8044SWilliam.Kucharski@Sun.COMof free operating systems, as well as proprietary operating systems with
153*8044SWilliam.Kucharski@Sun.COMchain-loading@footnote{@dfn{chain-load} is the mechanism for loading
154*8044SWilliam.Kucharski@Sun.COMunsupported operating systems by loading another boot loader. It is
155*8044SWilliam.Kucharski@Sun.COMtypically used for loading DOS or Windows.}. GRUB is designed to
156*8044SWilliam.Kucharski@Sun.COMaddress the complexity of booting a personal computer; both the
157*8044SWilliam.Kucharski@Sun.COMprogram and this manual are tightly bound to that computer platform,
158*8044SWilliam.Kucharski@Sun.COMalthough porting to other platforms may be addressed in the future.
159*8044SWilliam.Kucharski@Sun.COM
160*8044SWilliam.Kucharski@Sun.COMOne of the important features in GRUB is flexibility; GRUB understands
161*8044SWilliam.Kucharski@Sun.COMfilesystems and kernel executable formats, so you can load an arbitrary
162*8044SWilliam.Kucharski@Sun.COMoperating system the way you like, without recording the physical
163*8044SWilliam.Kucharski@Sun.COMposition of your kernel on the disk. Thus you can load the kernel
164*8044SWilliam.Kucharski@Sun.COMjust by specifying its file name and the drive and partition where the
165*8044SWilliam.Kucharski@Sun.COMkernel resides.
166*8044SWilliam.Kucharski@Sun.COM
167*8044SWilliam.Kucharski@Sun.COMWhen booting with GRUB, you can use either a command-line interface
168*8044SWilliam.Kucharski@Sun.COM(@pxref{Command-line interface}), or a menu interface (@pxref{Menu
169*8044SWilliam.Kucharski@Sun.COMinterface}). Using the command-line interface, you type the drive
170*8044SWilliam.Kucharski@Sun.COMspecification and file name of the kernel manually. In the menu
171*8044SWilliam.Kucharski@Sun.COMinterface, you just select an OS using the arrow keys. The menu is
172*8044SWilliam.Kucharski@Sun.COMbased on a configuration file which you prepare beforehand
173*8044SWilliam.Kucharski@Sun.COM(@pxref{Configuration}). While in the menu, you can switch to the
174*8044SWilliam.Kucharski@Sun.COMcommand-line mode, and vice-versa. You can even edit menu entries
175*8044SWilliam.Kucharski@Sun.COMbefore using them.
176*8044SWilliam.Kucharski@Sun.COM
177*8044SWilliam.Kucharski@Sun.COMIn the following chapters, you will learn how to specify a drive, a
178*8044SWilliam.Kucharski@Sun.COMpartition, and a file name (@pxref{Naming convention}) to GRUB, how to
179*8044SWilliam.Kucharski@Sun.COMinstall GRUB on your drive (@pxref{Installation}), and how to boot your
180*8044SWilliam.Kucharski@Sun.COMOSes (@pxref{Booting}), step by step.
181*8044SWilliam.Kucharski@Sun.COM
182*8044SWilliam.Kucharski@Sun.COMBesides the GRUB boot loader itself, there is a @dfn{grub shell}
183*8044SWilliam.Kucharski@Sun.COM@command{grub} (@pxref{Invoking the grub shell}) which can be run when
184*8044SWilliam.Kucharski@Sun.COMyou are in your operating system. It emulates the boot loader and can
185*8044SWilliam.Kucharski@Sun.COMbe used for installing the boot loader.
186*8044SWilliam.Kucharski@Sun.COM
187*8044SWilliam.Kucharski@Sun.COM
188*8044SWilliam.Kucharski@Sun.COM@node History
189*8044SWilliam.Kucharski@Sun.COM@section History of GRUB
190*8044SWilliam.Kucharski@Sun.COM
191*8044SWilliam.Kucharski@Sun.COMGRUB originated in 1995 when Erich Boleyn was trying to boot the GNU
192*8044SWilliam.Kucharski@Sun.COMHurd with the University of Utah's Mach 4 microkernel (now known as GNU
193*8044SWilliam.Kucharski@Sun.COMMach).  Erich and Brian Ford designed the Multiboot Specification
194*8044SWilliam.Kucharski@Sun.COM(@pxref{Top, Multiboot Specification, Motivation, multiboot, The Multiboot
195*8044SWilliam.Kucharski@Sun.COMSpecification}), because they were determined not to add to the large
196*8044SWilliam.Kucharski@Sun.COMnumber of mutually-incompatible PC boot methods.
197*8044SWilliam.Kucharski@Sun.COM
198*8044SWilliam.Kucharski@Sun.COMErich then began modifying the FreeBSD boot loader so that it would
199*8044SWilliam.Kucharski@Sun.COMunderstand Multiboot. He soon realized that it would be a lot easier
200*8044SWilliam.Kucharski@Sun.COMto write his own boot loader from scratch than to keep working on the
201*8044SWilliam.Kucharski@Sun.COMFreeBSD boot loader, and so GRUB was born.
202*8044SWilliam.Kucharski@Sun.COM
203*8044SWilliam.Kucharski@Sun.COMErich added many features to GRUB, but other priorities prevented him
204*8044SWilliam.Kucharski@Sun.COMfrom keeping up with the demands of its quickly-expanding user base. In
205*8044SWilliam.Kucharski@Sun.COM1999, Gordon Matzigkeit and Yoshinori K. Okuji adopted GRUB as an
206*8044SWilliam.Kucharski@Sun.COMofficial GNU package, and opened its development by making the latest
207*8044SWilliam.Kucharski@Sun.COMsources available via anonymous CVS. @xref{Obtaining and Building
208*8044SWilliam.Kucharski@Sun.COMGRUB}, for more information.
209*8044SWilliam.Kucharski@Sun.COM
210*8044SWilliam.Kucharski@Sun.COM
211*8044SWilliam.Kucharski@Sun.COM@node Features
212*8044SWilliam.Kucharski@Sun.COM@section GRUB features
213*8044SWilliam.Kucharski@Sun.COM
214*8044SWilliam.Kucharski@Sun.COMThe primary requirement for GRUB is that it be compliant with the
215*8044SWilliam.Kucharski@Sun.COM@dfn{Multiboot Specification}, which is described in @ref{Top, Multiboot
216*8044SWilliam.Kucharski@Sun.COMSpecification, Motivation, multiboot, The Multiboot Specification}.
217*8044SWilliam.Kucharski@Sun.COM
218*8044SWilliam.Kucharski@Sun.COMThe other goals, listed in approximate order of importance, are:
219*8044SWilliam.Kucharski@Sun.COM
220*8044SWilliam.Kucharski@Sun.COM@itemize @bullet{}
221*8044SWilliam.Kucharski@Sun.COM@item
222*8044SWilliam.Kucharski@Sun.COMBasic functions must be straightforward for end-users.
223*8044SWilliam.Kucharski@Sun.COM
224*8044SWilliam.Kucharski@Sun.COM@item
225*8044SWilliam.Kucharski@Sun.COMRich functionality to support kernel experts and designers.
226*8044SWilliam.Kucharski@Sun.COM
227*8044SWilliam.Kucharski@Sun.COM@item
228*8044SWilliam.Kucharski@Sun.COMBackward compatibility for booting FreeBSD, NetBSD, OpenBSD, and
229*8044SWilliam.Kucharski@Sun.COMLinux. Proprietary kernels (such as DOS, Windows NT, and OS/2) are
230*8044SWilliam.Kucharski@Sun.COMsupported via a chain-loading function.
231*8044SWilliam.Kucharski@Sun.COM@end itemize
232*8044SWilliam.Kucharski@Sun.COM
233*8044SWilliam.Kucharski@Sun.COMExcept for specific compatibility modes (chain-loading and the Linux
234*8044SWilliam.Kucharski@Sun.COM@dfn{piggyback} format), all kernels will be started in much the same
235*8044SWilliam.Kucharski@Sun.COMstate as in the Multiboot Specification. Only kernels loaded at 1 megabyte
236*8044SWilliam.Kucharski@Sun.COMor above are presently supported. Any attempt to load below that
237*8044SWilliam.Kucharski@Sun.COMboundary will simply result in immediate failure and an error message
238*8044SWilliam.Kucharski@Sun.COMreporting the problem.
239*8044SWilliam.Kucharski@Sun.COM
240*8044SWilliam.Kucharski@Sun.COMIn addition to the requirements above, GRUB has the following features
241*8044SWilliam.Kucharski@Sun.COM(note that the Multiboot Specification doesn't require all the features
242*8044SWilliam.Kucharski@Sun.COMthat GRUB supports):
243*8044SWilliam.Kucharski@Sun.COM
244*8044SWilliam.Kucharski@Sun.COM@table @asis
245*8044SWilliam.Kucharski@Sun.COM@item Recognize multiple executable formats
246*8044SWilliam.Kucharski@Sun.COMSupport many of the @dfn{a.out} variants plus @dfn{ELF}. Symbol
247*8044SWilliam.Kucharski@Sun.COMtables are also loaded.
248*8044SWilliam.Kucharski@Sun.COM
249*8044SWilliam.Kucharski@Sun.COM@item Support non-Multiboot kernels
250*8044SWilliam.Kucharski@Sun.COMSupport many of the various free 32-bit kernels that lack Multiboot
251*8044SWilliam.Kucharski@Sun.COMcompliance (primarily FreeBSD, NetBSD, OpenBSD, and
252*8044SWilliam.Kucharski@Sun.COMLinux). Chain-loading of other boot loaders is also supported.
253*8044SWilliam.Kucharski@Sun.COM
254*8044SWilliam.Kucharski@Sun.COM@item Load multiples modules
255*8044SWilliam.Kucharski@Sun.COMFully support the Multiboot feature of loading multiple modules.
256*8044SWilliam.Kucharski@Sun.COM
257*8044SWilliam.Kucharski@Sun.COM@item Load a configuration file
258*8044SWilliam.Kucharski@Sun.COMSupport a human-readable text configuration file with preset boot
259*8044SWilliam.Kucharski@Sun.COMcommands. You can also load another configuration file dynamically and
260*8044SWilliam.Kucharski@Sun.COMembed a preset configuration file in a GRUB image file. The list of
261*8044SWilliam.Kucharski@Sun.COMcommands (@pxref{Commands}) are a superset of those supported on the
262*8044SWilliam.Kucharski@Sun.COMcommand-line. An example configuration file is provided in
263*8044SWilliam.Kucharski@Sun.COM@ref{Configuration}.
264*8044SWilliam.Kucharski@Sun.COM
265*8044SWilliam.Kucharski@Sun.COM@item Provide a menu interface
266*8044SWilliam.Kucharski@Sun.COMA menu interface listing preset boot commands, with a programmable
267*8044SWilliam.Kucharski@Sun.COMtimeout, is available. There is no fixed limit on the number of boot
268*8044SWilliam.Kucharski@Sun.COMentries, and the current implementation has space for several hundred.
269*8044SWilliam.Kucharski@Sun.COM
270*8044SWilliam.Kucharski@Sun.COM@item Have a flexible command-line interface
271*8044SWilliam.Kucharski@Sun.COMA fairly flexible command-line interface, accessible from the menu,
272*8044SWilliam.Kucharski@Sun.COMis available to edit any preset commands, or write a new boot command
273*8044SWilliam.Kucharski@Sun.COMset from scratch. If no configuration file is present, GRUB drops to
274*8044SWilliam.Kucharski@Sun.COMthe command-line.
275*8044SWilliam.Kucharski@Sun.COM
276*8044SWilliam.Kucharski@Sun.COMThe list of commands (@pxref{Commands}) are a subset of those supported
277*8044SWilliam.Kucharski@Sun.COMfor configuration files. Editing commands closely resembles the Bash
278*8044SWilliam.Kucharski@Sun.COMcommand-line (@pxref{Command Line Editing, Bash, Command Line Editing,
279*8044SWilliam.Kucharski@Sun.COMfeatures, Bash Features}), with @key{TAB}-completion of commands,
280*8044SWilliam.Kucharski@Sun.COMdevices, partitions, and files in a directory depending on context.
281*8044SWilliam.Kucharski@Sun.COM
282*8044SWilliam.Kucharski@Sun.COM@item Support multiple filesystem types
283*8044SWilliam.Kucharski@Sun.COMSupport multiple filesystem types transparently, plus a useful explicit
284*8044SWilliam.Kucharski@Sun.COMblocklist notation. The currently supported filesystem types are
285*8044SWilliam.Kucharski@Sun.COM@dfn{BSD FFS}, @dfn{DOS FAT16 and FAT32}, @dfn{Minix fs}, @dfn{Linux
286*8044SWilliam.Kucharski@Sun.COMext2fs}, @dfn{ReiserFS}, @dfn{JFS}, @dfn{XFS}, and @dfn{VSTa
287*8044SWilliam.Kucharski@Sun.COMfs}. @xref{Filesystem}, for more information.
288*8044SWilliam.Kucharski@Sun.COM
289*8044SWilliam.Kucharski@Sun.COM@item Support automatic decompression
290*8044SWilliam.Kucharski@Sun.COMCan decompress files which were compressed by @command{gzip}. This
291*8044SWilliam.Kucharski@Sun.COMfunction is both automatic and transparent to the user (i.e. all
292*8044SWilliam.Kucharski@Sun.COMfunctions operate upon the uncompressed contents of the specified
293*8044SWilliam.Kucharski@Sun.COMfiles). This greatly reduces a file size and loading time, a
294*8044SWilliam.Kucharski@Sun.COMparticularly great benefit for floppies.@footnote{There are a few
295*8044SWilliam.Kucharski@Sun.COMpathological cases where loading a very badly organized ELF kernel might
296*8044SWilliam.Kucharski@Sun.COMtake longer, but in practice this never happen.}
297*8044SWilliam.Kucharski@Sun.COM
298*8044SWilliam.Kucharski@Sun.COMIt is conceivable that some kernel modules should be loaded in a
299*8044SWilliam.Kucharski@Sun.COMcompressed state, so a different module-loading command can be specified
300*8044SWilliam.Kucharski@Sun.COMto avoid uncompressing the modules.
301*8044SWilliam.Kucharski@Sun.COM
302*8044SWilliam.Kucharski@Sun.COM@item Access data on any installed device
303*8044SWilliam.Kucharski@Sun.COMSupport reading data from any or all floppies or hard disk(s) recognized
304*8044SWilliam.Kucharski@Sun.COMby the BIOS, independent of the setting of the root device.
305*8044SWilliam.Kucharski@Sun.COM
306*8044SWilliam.Kucharski@Sun.COM@item Be independent of drive geometry translations
307*8044SWilliam.Kucharski@Sun.COMUnlike many other boot loaders, GRUB makes the particular drive
308*8044SWilliam.Kucharski@Sun.COMtranslation irrelevant. A drive installed and running with one
309*8044SWilliam.Kucharski@Sun.COMtranslation may be converted to another translation without any adverse
310*8044SWilliam.Kucharski@Sun.COMeffects or changes in GRUB's configuration.
311*8044SWilliam.Kucharski@Sun.COM
312*8044SWilliam.Kucharski@Sun.COM@item Detect all installed @sc{ram}
313*8044SWilliam.Kucharski@Sun.COMGRUB can generally find all the installed @sc{ram} on a PC-compatible
314*8044SWilliam.Kucharski@Sun.COMmachine. It uses an advanced BIOS query technique for finding all
315*8044SWilliam.Kucharski@Sun.COMmemory regions. As described on the Multiboot Specification (@pxref{Top,
316*8044SWilliam.Kucharski@Sun.COMMultiboot Specification, Motivation, multiboot, The Multiboot
317*8044SWilliam.Kucharski@Sun.COMSpecification}), not all kernels make use of this information, but GRUB
318*8044SWilliam.Kucharski@Sun.COMprovides it for those who do.
319*8044SWilliam.Kucharski@Sun.COM
320*8044SWilliam.Kucharski@Sun.COM@item Support Logical Block Address mode
321*8044SWilliam.Kucharski@Sun.COMIn traditional disk calls (called @dfn{CHS mode}), there is a geometry
322*8044SWilliam.Kucharski@Sun.COMtranslation problem, that is, the BIOS cannot access over 1024
323*8044SWilliam.Kucharski@Sun.COMcylinders, so the accessible space is limited to at least 508 MB and to
324*8044SWilliam.Kucharski@Sun.COMat most 8GB. GRUB can't universally solve this problem, as there is no
325*8044SWilliam.Kucharski@Sun.COMstandard interface used in all machines. However, several newer machines
326*8044SWilliam.Kucharski@Sun.COMhave the new interface, Logical Block Address (@dfn{LBA}) mode. GRUB
327*8044SWilliam.Kucharski@Sun.COMautomatically detects if LBA mode is available and uses it if
328*8044SWilliam.Kucharski@Sun.COMavailable. In LBA mode, GRUB can access the entire disk.
329*8044SWilliam.Kucharski@Sun.COM
330*8044SWilliam.Kucharski@Sun.COM@item Support network booting
331*8044SWilliam.Kucharski@Sun.COMGRUB is basically a disk-based boot loader but also has network
332*8044SWilliam.Kucharski@Sun.COMsupport. You can load OS images from a network by using the @dfn{TFTP}
333*8044SWilliam.Kucharski@Sun.COMprotocol.
334*8044SWilliam.Kucharski@Sun.COM
335*8044SWilliam.Kucharski@Sun.COM@item Support remote terminals
336*8044SWilliam.Kucharski@Sun.COMTo support computers with no console, GRUB provides remote terminal
337*8044SWilliam.Kucharski@Sun.COMsupport, so that you can control GRUB from a remote host. Only serial
338*8044SWilliam.Kucharski@Sun.COMterminal support is implemented at the moment.
339*8044SWilliam.Kucharski@Sun.COM@end table
340*8044SWilliam.Kucharski@Sun.COM
341*8044SWilliam.Kucharski@Sun.COM
342*8044SWilliam.Kucharski@Sun.COM@node Role of a boot loader
343*8044SWilliam.Kucharski@Sun.COM@section The role of a boot loader
344*8044SWilliam.Kucharski@Sun.COM
345*8044SWilliam.Kucharski@Sun.COMThe following is a quotation from Gordon Matzigkeit, a GRUB fanatic:
346*8044SWilliam.Kucharski@Sun.COM
347*8044SWilliam.Kucharski@Sun.COM@quotation
348*8044SWilliam.Kucharski@Sun.COMSome people like to acknowledge both the operating system and kernel when
349*8044SWilliam.Kucharski@Sun.COMthey talk about their computers, so they might say they use
350*8044SWilliam.Kucharski@Sun.COM``GNU/Linux'' or ``GNU/Hurd''.  Other people seem to think that the
351*8044SWilliam.Kucharski@Sun.COMkernel is the most important part of the system, so they like to call
352*8044SWilliam.Kucharski@Sun.COMtheir GNU operating systems ``Linux systems.''
353*8044SWilliam.Kucharski@Sun.COM
354*8044SWilliam.Kucharski@Sun.COMI, personally, believe that this is a grave injustice, because the
355*8044SWilliam.Kucharski@Sun.COM@emph{boot loader} is the most important software of all. I used to
356*8044SWilliam.Kucharski@Sun.COMrefer to the above systems as either ``LILO''@footnote{The LInux LOader,
357*8044SWilliam.Kucharski@Sun.COMa boot loader that everybody uses, but nobody likes.} or ``GRUB''
358*8044SWilliam.Kucharski@Sun.COMsystems.
359*8044SWilliam.Kucharski@Sun.COM
360*8044SWilliam.Kucharski@Sun.COMUnfortunately, nobody ever understood what I was talking about; now I
361*8044SWilliam.Kucharski@Sun.COMjust use the word ``GNU'' as a pseudonym for GRUB.
362*8044SWilliam.Kucharski@Sun.COM
363*8044SWilliam.Kucharski@Sun.COMSo, if you ever hear people talking about their alleged ``GNU'' systems,
364*8044SWilliam.Kucharski@Sun.COMremember that they are actually paying homage to the best boot loader
365*8044SWilliam.Kucharski@Sun.COMaround@dots{} GRUB!
366*8044SWilliam.Kucharski@Sun.COM@end quotation
367*8044SWilliam.Kucharski@Sun.COM
368*8044SWilliam.Kucharski@Sun.COMWe, the GRUB maintainers, do not (usually) encourage Gordon's level of
369*8044SWilliam.Kucharski@Sun.COMfanaticism, but it helps to remember that boot loaders deserve
370*8044SWilliam.Kucharski@Sun.COMrecognition.  We hope that you enjoy using GNU GRUB as much as we did
371*8044SWilliam.Kucharski@Sun.COMwriting it.
372*8044SWilliam.Kucharski@Sun.COM
373*8044SWilliam.Kucharski@Sun.COM
374*8044SWilliam.Kucharski@Sun.COM@node Naming convention
375*8044SWilliam.Kucharski@Sun.COM@chapter Naming convention
376*8044SWilliam.Kucharski@Sun.COM
377*8044SWilliam.Kucharski@Sun.COMThe device syntax used in GRUB is a wee bit different from what you may
378*8044SWilliam.Kucharski@Sun.COMhave seen before in your operating system(s), and you need to know it so
379*8044SWilliam.Kucharski@Sun.COMthat you can specify a drive/partition.
380*8044SWilliam.Kucharski@Sun.COM
381*8044SWilliam.Kucharski@Sun.COMLook at the following examples and explanations:
382*8044SWilliam.Kucharski@Sun.COM
383*8044SWilliam.Kucharski@Sun.COM@example
384*8044SWilliam.Kucharski@Sun.COM(fd0)
385*8044SWilliam.Kucharski@Sun.COM@end example
386*8044SWilliam.Kucharski@Sun.COM
387*8044SWilliam.Kucharski@Sun.COMFirst of all, GRUB requires that the device name be enclosed with
388*8044SWilliam.Kucharski@Sun.COM@samp{(} and @samp{)}. The @samp{fd} part means that it is a floppy
389*8044SWilliam.Kucharski@Sun.COMdisk. The number @samp{0} is the drive number, which is counted from
390*8044SWilliam.Kucharski@Sun.COM@emph{zero}. This expression means that GRUB will use the whole floppy
391*8044SWilliam.Kucharski@Sun.COMdisk.
392*8044SWilliam.Kucharski@Sun.COM
393*8044SWilliam.Kucharski@Sun.COM@example
394*8044SWilliam.Kucharski@Sun.COM(hd0,1)
395*8044SWilliam.Kucharski@Sun.COM@end example
396*8044SWilliam.Kucharski@Sun.COM
397*8044SWilliam.Kucharski@Sun.COMHere, @samp{hd} means it is a hard disk drive. The first integer
398*8044SWilliam.Kucharski@Sun.COM@samp{0} indicates the drive number, that is, the first hard disk, while
399*8044SWilliam.Kucharski@Sun.COMthe second integer, @samp{1}, indicates the partition number (or the
400*8044SWilliam.Kucharski@Sun.COM@sc{pc} slice number in the BSD terminology). Once again, please note
401*8044SWilliam.Kucharski@Sun.COMthat the partition numbers are counted from @emph{zero}, not from
402*8044SWilliam.Kucharski@Sun.COMone. This expression means the second partition of the first hard disk
403*8044SWilliam.Kucharski@Sun.COMdrive. In this case, GRUB uses one partition of the disk, instead of the
404*8044SWilliam.Kucharski@Sun.COMwhole disk.
405*8044SWilliam.Kucharski@Sun.COM
406*8044SWilliam.Kucharski@Sun.COM@example
407*8044SWilliam.Kucharski@Sun.COM(hd0,4)
408*8044SWilliam.Kucharski@Sun.COM@end example
409*8044SWilliam.Kucharski@Sun.COM
410*8044SWilliam.Kucharski@Sun.COMThis specifies the first @dfn{extended partition} of the first hard disk
411*8044SWilliam.Kucharski@Sun.COMdrive. Note that the partition numbers for extended partitions are
412*8044SWilliam.Kucharski@Sun.COMcounted from @samp{4}, regardless of the actual number of primary
413*8044SWilliam.Kucharski@Sun.COMpartitions on your hard disk.
414*8044SWilliam.Kucharski@Sun.COM
415*8044SWilliam.Kucharski@Sun.COM@example
416*8044SWilliam.Kucharski@Sun.COM(hd1,a)
417*8044SWilliam.Kucharski@Sun.COM@end example
418*8044SWilliam.Kucharski@Sun.COM
419*8044SWilliam.Kucharski@Sun.COMThis means the BSD @samp{a} partition of the second hard disk. If you
420*8044SWilliam.Kucharski@Sun.COMneed to specify which @sc{pc} slice number should be used, use something
421*8044SWilliam.Kucharski@Sun.COMlike this: @samp{(hd1,0,a)}. If the @sc{pc} slice number is omitted,
422*8044SWilliam.Kucharski@Sun.COMGRUB searches for the first @sc{pc} slice which has a BSD @samp{a}
423*8044SWilliam.Kucharski@Sun.COMpartition.
424*8044SWilliam.Kucharski@Sun.COM
425*8044SWilliam.Kucharski@Sun.COMOf course, to actually access the disks or partitions with GRUB, you
426*8044SWilliam.Kucharski@Sun.COMneed to use the device specification in a command, like @samp{root
427*8044SWilliam.Kucharski@Sun.COM(fd0)} or @samp{unhide (hd0,2)}. To help you find out which number
428*8044SWilliam.Kucharski@Sun.COMspecifies a partition you want, the GRUB command-line
429*8044SWilliam.Kucharski@Sun.COM(@pxref{Command-line interface}) options have argument
430*8044SWilliam.Kucharski@Sun.COMcompletion. This means that, for example, you only need to type
431*8044SWilliam.Kucharski@Sun.COM
432*8044SWilliam.Kucharski@Sun.COM@example
433*8044SWilliam.Kucharski@Sun.COMroot (
434*8044SWilliam.Kucharski@Sun.COM@end example
435*8044SWilliam.Kucharski@Sun.COM
436*8044SWilliam.Kucharski@Sun.COMfollowed by a @key{TAB}, and GRUB will display the list of drives,
437*8044SWilliam.Kucharski@Sun.COMpartitions, or file names. So it should be quite easy to determine the
438*8044SWilliam.Kucharski@Sun.COMname of your target partition, even with minimal knowledge of the
439*8044SWilliam.Kucharski@Sun.COMsyntax.
440*8044SWilliam.Kucharski@Sun.COM
441*8044SWilliam.Kucharski@Sun.COMNote that GRUB does @emph{not} distinguish IDE from SCSI - it simply
442*8044SWilliam.Kucharski@Sun.COMcounts the drive numbers from zero, regardless of their type. Normally,
443*8044SWilliam.Kucharski@Sun.COMany IDE drive number is less than any SCSI drive number, although that
444*8044SWilliam.Kucharski@Sun.COMis not true if you change the boot sequence by swapping IDE and SCSI
445*8044SWilliam.Kucharski@Sun.COMdrives in your BIOS.
446*8044SWilliam.Kucharski@Sun.COM
447*8044SWilliam.Kucharski@Sun.COMNow the question is, how to specify a file? Again, consider an
448*8044SWilliam.Kucharski@Sun.COMexample:
449*8044SWilliam.Kucharski@Sun.COM
450*8044SWilliam.Kucharski@Sun.COM@example
451*8044SWilliam.Kucharski@Sun.COM(hd0,0)/vmlinuz
452*8044SWilliam.Kucharski@Sun.COM@end example
453*8044SWilliam.Kucharski@Sun.COM
454*8044SWilliam.Kucharski@Sun.COMThis specifies the file named @samp{vmlinuz}, found on the first
455*8044SWilliam.Kucharski@Sun.COMpartition of the first hard disk drive. Note that the argument
456*8044SWilliam.Kucharski@Sun.COMcompletion works with file names, too.
457*8044SWilliam.Kucharski@Sun.COM
458*8044SWilliam.Kucharski@Sun.COMThat was easy, admit it. Now read the next chapter, to find out how to
459*8044SWilliam.Kucharski@Sun.COMactually install GRUB on your drive.
460*8044SWilliam.Kucharski@Sun.COM
461*8044SWilliam.Kucharski@Sun.COM
462*8044SWilliam.Kucharski@Sun.COM@node Installation
463*8044SWilliam.Kucharski@Sun.COM@chapter Installation
464*8044SWilliam.Kucharski@Sun.COM
465*8044SWilliam.Kucharski@Sun.COMIn order to install GRUB as your boot loader, you need to first
466*8044SWilliam.Kucharski@Sun.COMinstall the GRUB system and utilities under your UNIX-like operating
467*8044SWilliam.Kucharski@Sun.COMsystem (@pxref{Obtaining and Building GRUB}). You can do this either
468*8044SWilliam.Kucharski@Sun.COMfrom the source tarball, or as a package for your OS.
469*8044SWilliam.Kucharski@Sun.COM
470*8044SWilliam.Kucharski@Sun.COMAfter you have done that, you need to install the boot loader on a
471*8044SWilliam.Kucharski@Sun.COMdrive (floppy or hard disk). There are two ways of doing that - either
472*8044SWilliam.Kucharski@Sun.COMusing the utility @command{grub-install} (@pxref{Invoking
473*8044SWilliam.Kucharski@Sun.COMgrub-install}) on a UNIX-like OS, or by running GRUB itself from a
474*8044SWilliam.Kucharski@Sun.COMfloppy. These are quite similar, however the utility might probe a
475*8044SWilliam.Kucharski@Sun.COMwrong BIOS drive, so you should be careful.
476*8044SWilliam.Kucharski@Sun.COM
477*8044SWilliam.Kucharski@Sun.COMAlso, if you install GRUB on a UNIX-like OS, please make sure that you
478*8044SWilliam.Kucharski@Sun.COMhave an emergency boot disk ready, so that you can rescue your computer
479*8044SWilliam.Kucharski@Sun.COMif, by any chance, your hard drive becomes unusable (unbootable).
480*8044SWilliam.Kucharski@Sun.COM
481*8044SWilliam.Kucharski@Sun.COMGRUB comes with boot images, which are normally put in the directory
482*8044SWilliam.Kucharski@Sun.COM@file{/usr/lib/grub/i386-pc}. If you do not use grub-install, then
483*8044SWilliam.Kucharski@Sun.COMyou need to copy the files @file{stage1}, @file{stage2}, and
484*8044SWilliam.Kucharski@Sun.COM@file{*stage1_5} to the directory @file{/boot/grub}, and run the
485*8044SWilliam.Kucharski@Sun.COM@command{grub-set-default} (@pxref{Invoking grub-set-default}) if you
486*8044SWilliam.Kucharski@Sun.COMintend to use @samp{default saved} (@pxref{default}) in your
487*8044SWilliam.Kucharski@Sun.COMconfiguration file. Hereafter, the directory where GRUB images are
488*8044SWilliam.Kucharski@Sun.COMinitially placed (normally @file{/usr/lib/grub/i386-pc}) will be
489*8044SWilliam.Kucharski@Sun.COMcalled the @dfn{image directory}, and the directory where the boot
490*8044SWilliam.Kucharski@Sun.COMloader needs to find them (usually @file{/boot/grub}) will be called
491*8044SWilliam.Kucharski@Sun.COMthe @dfn{boot directory}.
492*8044SWilliam.Kucharski@Sun.COM
493*8044SWilliam.Kucharski@Sun.COM@menu
494*8044SWilliam.Kucharski@Sun.COM* Creating a GRUB boot floppy::
495*8044SWilliam.Kucharski@Sun.COM* Installing GRUB natively::
496*8044SWilliam.Kucharski@Sun.COM* Installing GRUB using grub-install::
497*8044SWilliam.Kucharski@Sun.COM* Making a GRUB bootable CD-ROM::
498*8044SWilliam.Kucharski@Sun.COM@end menu
499*8044SWilliam.Kucharski@Sun.COM
500*8044SWilliam.Kucharski@Sun.COM
501*8044SWilliam.Kucharski@Sun.COM@node Creating a GRUB boot floppy
502*8044SWilliam.Kucharski@Sun.COM@section Creating a GRUB boot floppy
503*8044SWilliam.Kucharski@Sun.COM
504*8044SWilliam.Kucharski@Sun.COMTo create a GRUB boot floppy, you need to take the files @file{stage1}
505*8044SWilliam.Kucharski@Sun.COMand @file{stage2} from the image directory, and write them to the first
506*8044SWilliam.Kucharski@Sun.COMand the second block of the floppy disk, respectively.
507*8044SWilliam.Kucharski@Sun.COM
508*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} This procedure will destroy any data currently stored
509*8044SWilliam.Kucharski@Sun.COMon the floppy.
510*8044SWilliam.Kucharski@Sun.COM
511*8044SWilliam.Kucharski@Sun.COMOn a UNIX-like operating system, that is done with the following
512*8044SWilliam.Kucharski@Sun.COMcommands:
513*8044SWilliam.Kucharski@Sun.COM
514*8044SWilliam.Kucharski@Sun.COM@example
515*8044SWilliam.Kucharski@Sun.COM@group
516*8044SWilliam.Kucharski@Sun.COM# @kbd{cd /usr/lib/grub/i386-pc}
517*8044SWilliam.Kucharski@Sun.COM# @kbd{dd if=stage1 of=/dev/fd0 bs=512 count=1}
518*8044SWilliam.Kucharski@Sun.COM1+0 records in
519*8044SWilliam.Kucharski@Sun.COM1+0 records out
520*8044SWilliam.Kucharski@Sun.COM# @kbd{dd if=stage2 of=/dev/fd0 bs=512 seek=1}
521*8044SWilliam.Kucharski@Sun.COM153+1 records in
522*8044SWilliam.Kucharski@Sun.COM153+1 records out
523*8044SWilliam.Kucharski@Sun.COM#
524*8044SWilliam.Kucharski@Sun.COM@end group
525*8044SWilliam.Kucharski@Sun.COM@end example
526*8044SWilliam.Kucharski@Sun.COM
527*8044SWilliam.Kucharski@Sun.COMThe device file name may be different. Consult the manual for your OS.
528*8044SWilliam.Kucharski@Sun.COM
529*8044SWilliam.Kucharski@Sun.COM
530*8044SWilliam.Kucharski@Sun.COM@node Installing GRUB natively
531*8044SWilliam.Kucharski@Sun.COM@section Installing GRUB natively
532*8044SWilliam.Kucharski@Sun.COM
533*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} Installing GRUB's stage1 in this manner will erase the
534*8044SWilliam.Kucharski@Sun.COMnormal boot-sector used by an OS.
535*8044SWilliam.Kucharski@Sun.COM
536*8044SWilliam.Kucharski@Sun.COMGRUB can currently boot GNU Mach, Linux, FreeBSD, NetBSD, and OpenBSD
537*8044SWilliam.Kucharski@Sun.COMdirectly, so using it on a boot sector (the first sector of a
538*8044SWilliam.Kucharski@Sun.COMpartition) should be okay. But generally, it would be a good idea to
539*8044SWilliam.Kucharski@Sun.COMback up the first sector of the partition on which you are installing
540*8044SWilliam.Kucharski@Sun.COMGRUB's stage1. This isn't as important if you are installing GRUB on
541*8044SWilliam.Kucharski@Sun.COMthe first sector of a hard disk, since it's easy to reinitialize it
542*8044SWilliam.Kucharski@Sun.COM(e.g. by running @samp{FDISK /MBR} from DOS).
543*8044SWilliam.Kucharski@Sun.COM
544*8044SWilliam.Kucharski@Sun.COMIf you decide to install GRUB in the native environment, which is
545*8044SWilliam.Kucharski@Sun.COMdefinitely desirable, you'll need to create a GRUB boot disk, and
546*8044SWilliam.Kucharski@Sun.COMreboot your computer with it. Otherwise, see @ref{Installing GRUB using
547*8044SWilliam.Kucharski@Sun.COMgrub-install}.
548*8044SWilliam.Kucharski@Sun.COM
549*8044SWilliam.Kucharski@Sun.COMOnce started, GRUB will show the command-line interface
550*8044SWilliam.Kucharski@Sun.COM(@pxref{Command-line interface}). First, set the GRUB's @dfn{root
551*8044SWilliam.Kucharski@Sun.COMdevice}@footnote{Note that GRUB's root device doesn't necessarily mean
552*8044SWilliam.Kucharski@Sun.COMyour OS's root partition; if you need to specify a root partition for
553*8044SWilliam.Kucharski@Sun.COMyour OS, add the argument into the command @command{kernel}.} to the
554*8044SWilliam.Kucharski@Sun.COMpartition containing the boot directory, like this:
555*8044SWilliam.Kucharski@Sun.COM
556*8044SWilliam.Kucharski@Sun.COM@example
557*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{root (hd0,0)}
558*8044SWilliam.Kucharski@Sun.COM@end example
559*8044SWilliam.Kucharski@Sun.COM
560*8044SWilliam.Kucharski@Sun.COMIf you are not sure which partition actually holds this directory, use the
561*8044SWilliam.Kucharski@Sun.COMcommand @command{find} (@pxref{find}), like this:
562*8044SWilliam.Kucharski@Sun.COM
563*8044SWilliam.Kucharski@Sun.COM@example
564*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{find /boot/grub/stage1}
565*8044SWilliam.Kucharski@Sun.COM@end example
566*8044SWilliam.Kucharski@Sun.COM
567*8044SWilliam.Kucharski@Sun.COMThis will search for the file name @file{/boot/grub/stage1} and show the
568*8044SWilliam.Kucharski@Sun.COMdevices which contain the file.
569*8044SWilliam.Kucharski@Sun.COM
570*8044SWilliam.Kucharski@Sun.COMOnce you've set the root device correctly, run the command
571*8044SWilliam.Kucharski@Sun.COM@command{setup} (@pxref{setup}):
572*8044SWilliam.Kucharski@Sun.COM
573*8044SWilliam.Kucharski@Sun.COM@example
574*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{setup (hd0)}
575*8044SWilliam.Kucharski@Sun.COM@end example
576*8044SWilliam.Kucharski@Sun.COM
577*8044SWilliam.Kucharski@Sun.COMThis command will install the GRUB boot loader on the Master Boot
578*8044SWilliam.Kucharski@Sun.COMRecord (MBR) of the first drive. If you want to put GRUB into the boot
579*8044SWilliam.Kucharski@Sun.COMsector of a partition instead of putting it in the MBR, specify the
580*8044SWilliam.Kucharski@Sun.COMpartition into which you want to install GRUB:
581*8044SWilliam.Kucharski@Sun.COM
582*8044SWilliam.Kucharski@Sun.COM@example
583*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{setup (hd0,0)}
584*8044SWilliam.Kucharski@Sun.COM@end example
585*8044SWilliam.Kucharski@Sun.COM
586*8044SWilliam.Kucharski@Sun.COMIf you install GRUB into a partition or a drive other than the first
587*8044SWilliam.Kucharski@Sun.COMone, you must chain-load GRUB from another boot loader. Refer to the
588*8044SWilliam.Kucharski@Sun.COMmanual for the boot loader to know how to chain-load GRUB.
589*8044SWilliam.Kucharski@Sun.COM
590*8044SWilliam.Kucharski@Sun.COMAfter using the setup command, you will boot into GRUB without the
591*8044SWilliam.Kucharski@Sun.COMGRUB floppy. See the chapter @ref{Booting} to find out how to boot
592*8044SWilliam.Kucharski@Sun.COMyour operating systems from GRUB.
593*8044SWilliam.Kucharski@Sun.COM
594*8044SWilliam.Kucharski@Sun.COM
595*8044SWilliam.Kucharski@Sun.COM@node Installing GRUB using grub-install
596*8044SWilliam.Kucharski@Sun.COM@section Installing GRUB using grub-install
597*8044SWilliam.Kucharski@Sun.COM
598*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} This procedure is definitely less safe, because
599*8044SWilliam.Kucharski@Sun.COMthere are several ways in which your computer can become
600*8044SWilliam.Kucharski@Sun.COMunbootable. For example, most operating systems don't tell GRUB how to
601*8044SWilliam.Kucharski@Sun.COMmap BIOS drives to OS devices correctly---GRUB merely @dfn{guesses}
602*8044SWilliam.Kucharski@Sun.COMthe mapping. This will succeed in most cases, but not
603*8044SWilliam.Kucharski@Sun.COMalways. Therefore, GRUB provides you with a map file called the
604*8044SWilliam.Kucharski@Sun.COM@dfn{device map}, which you must fix if it is wrong. @xref{Device
605*8044SWilliam.Kucharski@Sun.COMmap}, for more details.
606*8044SWilliam.Kucharski@Sun.COM
607*8044SWilliam.Kucharski@Sun.COMIf you still do want to install GRUB under a UNIX-like OS (such
608*8044SWilliam.Kucharski@Sun.COMas @sc{gnu}), invoke the program @command{grub-install} (@pxref{Invoking
609*8044SWilliam.Kucharski@Sun.COMgrub-install}) as the superuser (@dfn{root}).
610*8044SWilliam.Kucharski@Sun.COM
611*8044SWilliam.Kucharski@Sun.COMThe usage is basically very simple. You only need to specify one
612*8044SWilliam.Kucharski@Sun.COMargument to the program, namely, where to install the boot loader. The
613*8044SWilliam.Kucharski@Sun.COMargument can be either a device file (like @samp{/dev/hda}) or a
614*8044SWilliam.Kucharski@Sun.COMpartition specified in GRUB's notation. For example, under Linux the
615*8044SWilliam.Kucharski@Sun.COMfollowing will install GRUB into the MBR of the first IDE disk:
616*8044SWilliam.Kucharski@Sun.COM
617*8044SWilliam.Kucharski@Sun.COM@example
618*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-install /dev/hda}
619*8044SWilliam.Kucharski@Sun.COM@end example
620*8044SWilliam.Kucharski@Sun.COM
621*8044SWilliam.Kucharski@Sun.COMLikewise, under GNU/Hurd, this has the same effect:
622*8044SWilliam.Kucharski@Sun.COM
623*8044SWilliam.Kucharski@Sun.COM@example
624*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-install /dev/hd0}
625*8044SWilliam.Kucharski@Sun.COM@end example
626*8044SWilliam.Kucharski@Sun.COM
627*8044SWilliam.Kucharski@Sun.COMIf it is the first BIOS drive, this is the same as well:
628*8044SWilliam.Kucharski@Sun.COM
629*8044SWilliam.Kucharski@Sun.COM@example
630*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-install '(hd0)'}
631*8044SWilliam.Kucharski@Sun.COM@end example
632*8044SWilliam.Kucharski@Sun.COM
633*8044SWilliam.Kucharski@Sun.COMOr you can omit the parentheses:
634*8044SWilliam.Kucharski@Sun.COM
635*8044SWilliam.Kucharski@Sun.COM@example
636*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-install hd0}
637*8044SWilliam.Kucharski@Sun.COM@end example
638*8044SWilliam.Kucharski@Sun.COM
639*8044SWilliam.Kucharski@Sun.COMBut all the above examples assume that GRUB should use images under
640*8044SWilliam.Kucharski@Sun.COMthe root directory. If you want GRUB to use images under a directory
641*8044SWilliam.Kucharski@Sun.COMother than the root directory, you need to specify the option
642*8044SWilliam.Kucharski@Sun.COM@option{--root-directory}. The typical usage is that you create a GRUB
643*8044SWilliam.Kucharski@Sun.COMboot floppy with a filesystem. Here is an example:
644*8044SWilliam.Kucharski@Sun.COM
645*8044SWilliam.Kucharski@Sun.COM@example
646*8044SWilliam.Kucharski@Sun.COM@group
647*8044SWilliam.Kucharski@Sun.COM# @kbd{mke2fs /dev/fd0}
648*8044SWilliam.Kucharski@Sun.COM# @kbd{mount -t ext2 /dev/fd0 /mnt}
649*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-install --root-directory=/mnt fd0}
650*8044SWilliam.Kucharski@Sun.COM# @kbd{umount /mnt}
651*8044SWilliam.Kucharski@Sun.COM@end group
652*8044SWilliam.Kucharski@Sun.COM@end example
653*8044SWilliam.Kucharski@Sun.COM
654*8044SWilliam.Kucharski@Sun.COMAnother example is when you have a separate boot partition
655*8044SWilliam.Kucharski@Sun.COMwhich is mounted at @file{/boot}. Since GRUB is a boot loader, it
656*8044SWilliam.Kucharski@Sun.COMdoesn't know anything about mountpoints at all. Thus, you need to run
657*8044SWilliam.Kucharski@Sun.COM@command{grub-install} like this:
658*8044SWilliam.Kucharski@Sun.COM
659*8044SWilliam.Kucharski@Sun.COM@example
660*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-install --root-directory=/boot /dev/hda}
661*8044SWilliam.Kucharski@Sun.COM@end example
662*8044SWilliam.Kucharski@Sun.COM
663*8044SWilliam.Kucharski@Sun.COMBy the way, as noted above, it is quite difficult to guess BIOS drives
664*8044SWilliam.Kucharski@Sun.COMcorrectly under a UNIX-like OS. Thus, @command{grub-install} will prompt
665*8044SWilliam.Kucharski@Sun.COMyou to check if it could really guess the correct mappings, after the
666*8044SWilliam.Kucharski@Sun.COMinstallation. The format is defined in @ref{Device map}. Please be
667*8044SWilliam.Kucharski@Sun.COMquite careful. If the output is wrong, it is unlikely that your
668*8044SWilliam.Kucharski@Sun.COMcomputer will be able to boot with no problem.
669*8044SWilliam.Kucharski@Sun.COM
670*8044SWilliam.Kucharski@Sun.COMNote that @command{grub-install} is actually just a shell script and the
671*8044SWilliam.Kucharski@Sun.COMreal task is done by the grub shell @command{grub} (@pxref{Invoking the
672*8044SWilliam.Kucharski@Sun.COMgrub shell}). Therefore, you may run @command{grub} directly to install
673*8044SWilliam.Kucharski@Sun.COMGRUB, without using @command{grub-install}. Don't do that, however,
674*8044SWilliam.Kucharski@Sun.COMunless you are very familiar with the internals of GRUB. Installing a
675*8044SWilliam.Kucharski@Sun.COMboot loader on a running OS may be extremely dangerous.
676*8044SWilliam.Kucharski@Sun.COM
677*8044SWilliam.Kucharski@Sun.COM
678*8044SWilliam.Kucharski@Sun.COM@node Making a GRUB bootable CD-ROM
679*8044SWilliam.Kucharski@Sun.COM@section Making a GRUB bootable CD-ROM
680*8044SWilliam.Kucharski@Sun.COM
681*8044SWilliam.Kucharski@Sun.COMGRUB supports the @dfn{no emulation mode} in the El Torito
682*8044SWilliam.Kucharski@Sun.COMspecification@footnote{El Torito is a specification for bootable CD
683*8044SWilliam.Kucharski@Sun.COMusing BIOS functions.}. This means that you can use the whole CD-ROM
684*8044SWilliam.Kucharski@Sun.COMfrom GRUB and you don't have to make a floppy or hard disk image file,
685*8044SWilliam.Kucharski@Sun.COMwhich can cause compatibility problems.
686*8044SWilliam.Kucharski@Sun.COM
687*8044SWilliam.Kucharski@Sun.COMFor booting from a CD-ROM, GRUB uses a special Stage 2 called
688*8044SWilliam.Kucharski@Sun.COM@file{stage2_eltorito}. The only GRUB files you need to have in your
689*8044SWilliam.Kucharski@Sun.COMbootable CD-ROM are this @file{stage2_eltorito} and optionally a config file
690*8044SWilliam.Kucharski@Sun.COM@file{menu.lst}. You don't need to use @file{stage1} or @file{stage2},
691*8044SWilliam.Kucharski@Sun.COMbecause El Torito is quite different from the standard boot process.
692*8044SWilliam.Kucharski@Sun.COM
693*8044SWilliam.Kucharski@Sun.COMHere is an example of procedures to make a bootable CD-ROM
694*8044SWilliam.Kucharski@Sun.COMimage. First, make a top directory for the bootable image, say,
695*8044SWilliam.Kucharski@Sun.COM@samp{iso}:
696*8044SWilliam.Kucharski@Sun.COM
697*8044SWilliam.Kucharski@Sun.COM@example
698*8044SWilliam.Kucharski@Sun.COM$ @kbd{mkdir iso}
699*8044SWilliam.Kucharski@Sun.COM@end example
700*8044SWilliam.Kucharski@Sun.COM
701*8044SWilliam.Kucharski@Sun.COMMake a directory for GRUB:
702*8044SWilliam.Kucharski@Sun.COM
703*8044SWilliam.Kucharski@Sun.COM@example
704*8044SWilliam.Kucharski@Sun.COM$ @kbd{mkdir -p iso/boot/grub}
705*8044SWilliam.Kucharski@Sun.COM@end example
706*8044SWilliam.Kucharski@Sun.COM
707*8044SWilliam.Kucharski@Sun.COMCopy the file @file{stage2_eltorito}:
708*8044SWilliam.Kucharski@Sun.COM
709*8044SWilliam.Kucharski@Sun.COM@example
710*8044SWilliam.Kucharski@Sun.COM$ @kbd{cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub}
711*8044SWilliam.Kucharski@Sun.COM@end example
712*8044SWilliam.Kucharski@Sun.COM
713*8044SWilliam.Kucharski@Sun.COMIf desired, make the config file @file{menu.lst} under @file{iso/boot/grub}
714*8044SWilliam.Kucharski@Sun.COM(@pxref{Configuration}), and copy any files and directories for the disc to the
715*8044SWilliam.Kucharski@Sun.COMdirectory @file{iso/}.
716*8044SWilliam.Kucharski@Sun.COM
717*8044SWilliam.Kucharski@Sun.COMFinally, make a ISO9660 image file like this:
718*8044SWilliam.Kucharski@Sun.COM
719*8044SWilliam.Kucharski@Sun.COM@example
720*8044SWilliam.Kucharski@Sun.COM$ @kbd{mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
721*8044SWilliam.Kucharski@Sun.COM    -boot-load-size 4 -boot-info-table -o grub.iso iso}
722*8044SWilliam.Kucharski@Sun.COM@end example
723*8044SWilliam.Kucharski@Sun.COM
724*8044SWilliam.Kucharski@Sun.COMThis produces a file named @file{grub.iso}, which then can be burned
725*8044SWilliam.Kucharski@Sun.COMinto a CD (or a DVD).  @kbd{mkisofs} has already set up the disc to boot
726*8044SWilliam.Kucharski@Sun.COMfrom the @kbd{boot/grub/stage2_eltorito} file, so there is no need to
727*8044SWilliam.Kucharski@Sun.COMsetup GRUB on the disc.  (Note that the @kbd{-boot-load-size 4} bit is
728*8044SWilliam.Kucharski@Sun.COMrequired for compatibility with the BIOS on many older machines.)
729*8044SWilliam.Kucharski@Sun.COM
730*8044SWilliam.Kucharski@Sun.COMYou can use the device @samp{(cd)} to access a CD-ROM in your
731*8044SWilliam.Kucharski@Sun.COMconfig file. This is not required; GRUB automatically sets the root device
732*8044SWilliam.Kucharski@Sun.COMto @samp{(cd)} when booted from a CD-ROM. It is only necessary to refer to
733*8044SWilliam.Kucharski@Sun.COM@samp{(cd)} if you want to access other drives as well.
734*8044SWilliam.Kucharski@Sun.COM
735*8044SWilliam.Kucharski@Sun.COM
736*8044SWilliam.Kucharski@Sun.COM@node Booting
737*8044SWilliam.Kucharski@Sun.COM@chapter Booting
738*8044SWilliam.Kucharski@Sun.COM
739*8044SWilliam.Kucharski@Sun.COMGRUB can load Multiboot-compliant kernels in a consistent way,
740*8044SWilliam.Kucharski@Sun.COMbut for some free operating systems you need to use some OS-specific
741*8044SWilliam.Kucharski@Sun.COMmagic.
742*8044SWilliam.Kucharski@Sun.COM
743*8044SWilliam.Kucharski@Sun.COM@menu
744*8044SWilliam.Kucharski@Sun.COM* General boot methods::        How to boot OSes with GRUB generally
745*8044SWilliam.Kucharski@Sun.COM* OS-specific notes::           Notes on some operating systems
746*8044SWilliam.Kucharski@Sun.COM* Making your system robust::   How to make your system robust
747*8044SWilliam.Kucharski@Sun.COM@end menu
748*8044SWilliam.Kucharski@Sun.COM
749*8044SWilliam.Kucharski@Sun.COM
750*8044SWilliam.Kucharski@Sun.COM@node General boot methods
751*8044SWilliam.Kucharski@Sun.COM@section How to boot operating systems
752*8044SWilliam.Kucharski@Sun.COM
753*8044SWilliam.Kucharski@Sun.COMGRUB has two distinct boot methods. One of the two is to load an
754*8044SWilliam.Kucharski@Sun.COMoperating system directly, and the other is to chain-load another boot
755*8044SWilliam.Kucharski@Sun.COMloader which then will load an operating system actually. Generally
756*8044SWilliam.Kucharski@Sun.COMspeaking, the former is more desirable, because you don't need to
757*8044SWilliam.Kucharski@Sun.COMinstall or maintain other boot loaders and GRUB is flexible enough to
758*8044SWilliam.Kucharski@Sun.COMload an operating system from an arbitrary disk/partition. However,
759*8044SWilliam.Kucharski@Sun.COMthe latter is sometimes required, since GRUB doesn't support all the
760*8044SWilliam.Kucharski@Sun.COMexisting operating systems natively.
761*8044SWilliam.Kucharski@Sun.COM
762*8044SWilliam.Kucharski@Sun.COM@menu
763*8044SWilliam.Kucharski@Sun.COM* Loading an operating system directly::
764*8044SWilliam.Kucharski@Sun.COM* Chain-loading::
765*8044SWilliam.Kucharski@Sun.COM@end menu
766*8044SWilliam.Kucharski@Sun.COM
767*8044SWilliam.Kucharski@Sun.COM
768*8044SWilliam.Kucharski@Sun.COM@node Loading an operating system directly
769*8044SWilliam.Kucharski@Sun.COM@subsection How to boot an OS directly with GRUB
770*8044SWilliam.Kucharski@Sun.COM
771*8044SWilliam.Kucharski@Sun.COMMultiboot (@pxref{Top, Multiboot Specification, Motivation, multiboot,
772*8044SWilliam.Kucharski@Sun.COMThe Multiboot Specification}) is the native format supported by GRUB.
773*8044SWilliam.Kucharski@Sun.COMFor the sake of convenience, there is also support for Linux, FreeBSD,
774*8044SWilliam.Kucharski@Sun.COMNetBSD and OpenBSD. If you want to boot other operating systems, you
775*8044SWilliam.Kucharski@Sun.COMwill have to chain-load them (@pxref{Chain-loading}).
776*8044SWilliam.Kucharski@Sun.COM
777*8044SWilliam.Kucharski@Sun.COMGenerally, GRUB can boot any Multiboot-compliant OS in the following
778*8044SWilliam.Kucharski@Sun.COMsteps:
779*8044SWilliam.Kucharski@Sun.COM
780*8044SWilliam.Kucharski@Sun.COM@enumerate
781*8044SWilliam.Kucharski@Sun.COM@item
782*8044SWilliam.Kucharski@Sun.COMSet GRUB's root device to the drive where the OS images are stored with
783*8044SWilliam.Kucharski@Sun.COMthe command @command{root} (@pxref{root}).
784*8044SWilliam.Kucharski@Sun.COM
785*8044SWilliam.Kucharski@Sun.COM@item
786*8044SWilliam.Kucharski@Sun.COMLoad the kernel image with the command @command{kernel} (@pxref{kernel}).
787*8044SWilliam.Kucharski@Sun.COM
788*8044SWilliam.Kucharski@Sun.COM@item
789*8044SWilliam.Kucharski@Sun.COMIf you need modules, load them with the command @command{module}
790*8044SWilliam.Kucharski@Sun.COM(@pxref{module}) or @command{modulenounzip} (@pxref{modulenounzip}).
791*8044SWilliam.Kucharski@Sun.COM
792*8044SWilliam.Kucharski@Sun.COM@item
793*8044SWilliam.Kucharski@Sun.COMRun the command @command{boot} (@pxref{boot}).
794*8044SWilliam.Kucharski@Sun.COM@end enumerate
795*8044SWilliam.Kucharski@Sun.COM
796*8044SWilliam.Kucharski@Sun.COMLinux, FreeBSD, NetBSD and OpenBSD can be booted in a similar
797*8044SWilliam.Kucharski@Sun.COMmanner. You load a kernel image with the command @command{kernel} and
798*8044SWilliam.Kucharski@Sun.COMthen run the command @command{boot}. If the kernel requires some
799*8044SWilliam.Kucharski@Sun.COMparameters, just append the parameters to @command{kernel}, after the
800*8044SWilliam.Kucharski@Sun.COMfile name of the kernel. Also, please refer to @ref{OS-specific notes},
801*8044SWilliam.Kucharski@Sun.COMfor information on your OS-specific issues.
802*8044SWilliam.Kucharski@Sun.COM
803*8044SWilliam.Kucharski@Sun.COM
804*8044SWilliam.Kucharski@Sun.COM@node Chain-loading
805*8044SWilliam.Kucharski@Sun.COM@subsection Load another boot loader to boot unsupported operating systems
806*8044SWilliam.Kucharski@Sun.COM
807*8044SWilliam.Kucharski@Sun.COMIf you want to boot an unsupported operating system (e.g. Windows 95),
808*8044SWilliam.Kucharski@Sun.COMchain-load a boot loader for the operating system. Normally, the boot
809*8044SWilliam.Kucharski@Sun.COMloader is embedded in the @dfn{boot sector} of the partition on which
810*8044SWilliam.Kucharski@Sun.COMthe operating system is installed.
811*8044SWilliam.Kucharski@Sun.COM
812*8044SWilliam.Kucharski@Sun.COM@enumerate
813*8044SWilliam.Kucharski@Sun.COM@item
814*8044SWilliam.Kucharski@Sun.COMSet GRUB's root device to the partition by the command
815*8044SWilliam.Kucharski@Sun.COM@command{rootnoverify} (@pxref{rootnoverify}):
816*8044SWilliam.Kucharski@Sun.COM
817*8044SWilliam.Kucharski@Sun.COM@example
818*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{rootnoverify (hd0,0)}
819*8044SWilliam.Kucharski@Sun.COM@end example
820*8044SWilliam.Kucharski@Sun.COM
821*8044SWilliam.Kucharski@Sun.COM@item
822*8044SWilliam.Kucharski@Sun.COMSet the @dfn{active} flag in the partition using the command
823*8044SWilliam.Kucharski@Sun.COM@command{makeactive}@footnote{This is not necessary for most of the
824*8044SWilliam.Kucharski@Sun.COMmodern operating systems.} (@pxref{makeactive}):
825*8044SWilliam.Kucharski@Sun.COM
826*8044SWilliam.Kucharski@Sun.COM@example
827*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{makeactive}
828*8044SWilliam.Kucharski@Sun.COM@end example
829*8044SWilliam.Kucharski@Sun.COM
830*8044SWilliam.Kucharski@Sun.COM@item
831*8044SWilliam.Kucharski@Sun.COMLoad the boot loader with the command @command{chainloader}
832*8044SWilliam.Kucharski@Sun.COM(@pxref{chainloader}):
833*8044SWilliam.Kucharski@Sun.COM
834*8044SWilliam.Kucharski@Sun.COM@example
835*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{chainloader +1}
836*8044SWilliam.Kucharski@Sun.COM@end example
837*8044SWilliam.Kucharski@Sun.COM
838*8044SWilliam.Kucharski@Sun.COM@samp{+1} indicates that GRUB should read one sector from the start of
839*8044SWilliam.Kucharski@Sun.COMthe partition. The complete description about this syntax can be found
840*8044SWilliam.Kucharski@Sun.COMin @ref{Block list syntax}.
841*8044SWilliam.Kucharski@Sun.COM
842*8044SWilliam.Kucharski@Sun.COM@item
843*8044SWilliam.Kucharski@Sun.COMRun the command @command{boot} (@pxref{boot}).
844*8044SWilliam.Kucharski@Sun.COM@end enumerate
845*8044SWilliam.Kucharski@Sun.COM
846*8044SWilliam.Kucharski@Sun.COMHowever, DOS and Windows have some deficiencies, so you might have to
847*8044SWilliam.Kucharski@Sun.COMuse more complicated instructions. @xref{DOS/Windows}, for more
848*8044SWilliam.Kucharski@Sun.COMinformation.
849*8044SWilliam.Kucharski@Sun.COM
850*8044SWilliam.Kucharski@Sun.COM
851*8044SWilliam.Kucharski@Sun.COM@node OS-specific notes
852*8044SWilliam.Kucharski@Sun.COM@section Some caveats on OS-specific issues
853*8044SWilliam.Kucharski@Sun.COM
854*8044SWilliam.Kucharski@Sun.COMHere, we describe some caveats on several operating systems.
855*8044SWilliam.Kucharski@Sun.COM
856*8044SWilliam.Kucharski@Sun.COM@menu
857*8044SWilliam.Kucharski@Sun.COM* GNU/Hurd::
858*8044SWilliam.Kucharski@Sun.COM* GNU/Linux::
859*8044SWilliam.Kucharski@Sun.COM* FreeBSD::
860*8044SWilliam.Kucharski@Sun.COM* NetBSD::
861*8044SWilliam.Kucharski@Sun.COM* OpenBSD::
862*8044SWilliam.Kucharski@Sun.COM* DOS/Windows::
863*8044SWilliam.Kucharski@Sun.COM* SCO UnixWare::
864*8044SWilliam.Kucharski@Sun.COM* QNX::
865*8044SWilliam.Kucharski@Sun.COM@end menu
866*8044SWilliam.Kucharski@Sun.COM
867*8044SWilliam.Kucharski@Sun.COM
868*8044SWilliam.Kucharski@Sun.COM@node GNU/Hurd
869*8044SWilliam.Kucharski@Sun.COM@subsection GNU/Hurd
870*8044SWilliam.Kucharski@Sun.COM
871*8044SWilliam.Kucharski@Sun.COMSince GNU/Hurd is Multiboot-compliant, it is easy to boot it; there is
872*8044SWilliam.Kucharski@Sun.COMnothing special about it. But do not forget that you have to specify a
873*8044SWilliam.Kucharski@Sun.COMroot partition to the kernel.
874*8044SWilliam.Kucharski@Sun.COM
875*8044SWilliam.Kucharski@Sun.COM@enumerate
876*8044SWilliam.Kucharski@Sun.COM@item
877*8044SWilliam.Kucharski@Sun.COMSet GRUB's root device to the same drive as GNU/Hurd's. Probably the
878*8044SWilliam.Kucharski@Sun.COMcommand @code{find /boot/gnumach} or similar can help you
879*8044SWilliam.Kucharski@Sun.COM(@pxref{find}).
880*8044SWilliam.Kucharski@Sun.COM
881*8044SWilliam.Kucharski@Sun.COM@item
882*8044SWilliam.Kucharski@Sun.COMLoad the kernel and the module, like this:
883*8044SWilliam.Kucharski@Sun.COM
884*8044SWilliam.Kucharski@Sun.COM@example
885*8044SWilliam.Kucharski@Sun.COM@group
886*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{kernel /boot/gnumach root=hd0s1}
887*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{module /boot/serverboot}
888*8044SWilliam.Kucharski@Sun.COM@end group
889*8044SWilliam.Kucharski@Sun.COM@end example
890*8044SWilliam.Kucharski@Sun.COM
891*8044SWilliam.Kucharski@Sun.COM@item
892*8044SWilliam.Kucharski@Sun.COMRun the command @command{boot} (@pxref{boot}).
893*8044SWilliam.Kucharski@Sun.COM@end enumerate
894*8044SWilliam.Kucharski@Sun.COM
895*8044SWilliam.Kucharski@Sun.COM
896*8044SWilliam.Kucharski@Sun.COM@node GNU/Linux
897*8044SWilliam.Kucharski@Sun.COM@subsection GNU/Linux
898*8044SWilliam.Kucharski@Sun.COM
899*8044SWilliam.Kucharski@Sun.COMIt is relatively easy to boot GNU/Linux from GRUB, because it somewhat
900*8044SWilliam.Kucharski@Sun.COMresembles to boot a Multiboot-compliant OS.
901*8044SWilliam.Kucharski@Sun.COM
902*8044SWilliam.Kucharski@Sun.COM@enumerate
903*8044SWilliam.Kucharski@Sun.COM@item
904*8044SWilliam.Kucharski@Sun.COMSet GRUB's root device to the same drive as GNU/Linux's. Probably the
905*8044SWilliam.Kucharski@Sun.COMcommand @code{find /vmlinuz} or similar can help you (@pxref{find}).
906*8044SWilliam.Kucharski@Sun.COM
907*8044SWilliam.Kucharski@Sun.COM@item
908*8044SWilliam.Kucharski@Sun.COMLoad the kernel:
909*8044SWilliam.Kucharski@Sun.COM
910*8044SWilliam.Kucharski@Sun.COM@example
911*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{kernel /vmlinuz root=/dev/hda1}
912*8044SWilliam.Kucharski@Sun.COM@end example
913*8044SWilliam.Kucharski@Sun.COM
914*8044SWilliam.Kucharski@Sun.COMIf you need to specify some kernel parameters, just append them to the
915*8044SWilliam.Kucharski@Sun.COMcommand. For example, to set @option{vga} to @samp{ext}, do this:
916*8044SWilliam.Kucharski@Sun.COM
917*8044SWilliam.Kucharski@Sun.COM@example
918*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{kernel /vmlinuz root=/dev/hda1 vga=ext}
919*8044SWilliam.Kucharski@Sun.COM@end example
920*8044SWilliam.Kucharski@Sun.COM
921*8044SWilliam.Kucharski@Sun.COMSee the documentation in the Linux source tree for complete
922*8044SWilliam.Kucharski@Sun.COMinformation on the available options.
923*8044SWilliam.Kucharski@Sun.COM
924*8044SWilliam.Kucharski@Sun.COM@item
925*8044SWilliam.Kucharski@Sun.COMIf you use an initrd, execute the command @command{initrd}
926*8044SWilliam.Kucharski@Sun.COM(@pxref{initrd}) after @command{kernel}:
927*8044SWilliam.Kucharski@Sun.COM
928*8044SWilliam.Kucharski@Sun.COM@example
929*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{initrd /initrd}
930*8044SWilliam.Kucharski@Sun.COM@end example
931*8044SWilliam.Kucharski@Sun.COM
932*8044SWilliam.Kucharski@Sun.COM@item
933*8044SWilliam.Kucharski@Sun.COMFinally, run the command @command{boot} (@pxref{boot}).
934*8044SWilliam.Kucharski@Sun.COM@end enumerate
935*8044SWilliam.Kucharski@Sun.COM
936*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} If you use an initrd and specify the @samp{mem=}
937*8044SWilliam.Kucharski@Sun.COMoption to the kernel to let it use less than actual memory size, you
938*8044SWilliam.Kucharski@Sun.COMwill also have to specify the same memory size to GRUB. To let GRUB know
939*8044SWilliam.Kucharski@Sun.COMthe size, run the command @command{uppermem} @emph{before} loading the
940*8044SWilliam.Kucharski@Sun.COMkernel. @xref{uppermem}, for more information.
941*8044SWilliam.Kucharski@Sun.COM
942*8044SWilliam.Kucharski@Sun.COM
943*8044SWilliam.Kucharski@Sun.COM@node FreeBSD
944*8044SWilliam.Kucharski@Sun.COM@subsection FreeBSD
945*8044SWilliam.Kucharski@Sun.COM
946*8044SWilliam.Kucharski@Sun.COMGRUB can load the kernel directly, either in ELF or a.out format. But
947*8044SWilliam.Kucharski@Sun.COMthis is not recommended, since FreeBSD's bootstrap interface sometimes
948*8044SWilliam.Kucharski@Sun.COMchanges heavily, so GRUB can't guarantee to pass kernel parameters
949*8044SWilliam.Kucharski@Sun.COMcorrectly.
950*8044SWilliam.Kucharski@Sun.COM
951*8044SWilliam.Kucharski@Sun.COMThus, we'd recommend loading the very flexible loader
952*8044SWilliam.Kucharski@Sun.COM@file{/boot/loader} instead. See this example:
953*8044SWilliam.Kucharski@Sun.COM
954*8044SWilliam.Kucharski@Sun.COM@example
955*8044SWilliam.Kucharski@Sun.COM@group
956*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{root (hd0,a)}
957*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{kernel /boot/loader}
958*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{boot}
959*8044SWilliam.Kucharski@Sun.COM@end group
960*8044SWilliam.Kucharski@Sun.COM@end example
961*8044SWilliam.Kucharski@Sun.COM
962*8044SWilliam.Kucharski@Sun.COM
963*8044SWilliam.Kucharski@Sun.COM@node NetBSD
964*8044SWilliam.Kucharski@Sun.COM@subsection NetBSD
965*8044SWilliam.Kucharski@Sun.COM
966*8044SWilliam.Kucharski@Sun.COMGRUB can load NetBSD a.out and ELF directly, follow these steps:
967*8044SWilliam.Kucharski@Sun.COM
968*8044SWilliam.Kucharski@Sun.COM@enumerate
969*8044SWilliam.Kucharski@Sun.COM@item
970*8044SWilliam.Kucharski@Sun.COMSet GRUB's root device with @command{root} (@pxref{root}).
971*8044SWilliam.Kucharski@Sun.COM
972*8044SWilliam.Kucharski@Sun.COM@item
973*8044SWilliam.Kucharski@Sun.COMLoad the kernel with @command{kernel} (@pxref{kernel}). You should
974*8044SWilliam.Kucharski@Sun.COMappend the ugly option @option{--type=netbsd}, if you want to load an
975*8044SWilliam.Kucharski@Sun.COMELF kernel, like this:
976*8044SWilliam.Kucharski@Sun.COM
977*8044SWilliam.Kucharski@Sun.COM@example
978*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{kernel --type=netbsd /netbsd-elf}
979*8044SWilliam.Kucharski@Sun.COM@end example
980*8044SWilliam.Kucharski@Sun.COM
981*8044SWilliam.Kucharski@Sun.COM@item
982*8044SWilliam.Kucharski@Sun.COMRun @command{boot} (@pxref{boot}).
983*8044SWilliam.Kucharski@Sun.COM@end enumerate
984*8044SWilliam.Kucharski@Sun.COM
985*8044SWilliam.Kucharski@Sun.COMFor now, however, GRUB doesn't allow you to pass kernel parameters, so
986*8044SWilliam.Kucharski@Sun.COMit may be better to chain-load it instead. For more information, please
987*8044SWilliam.Kucharski@Sun.COMsee @ref{Chain-loading}.
988*8044SWilliam.Kucharski@Sun.COM
989*8044SWilliam.Kucharski@Sun.COM
990*8044SWilliam.Kucharski@Sun.COM@node OpenBSD
991*8044SWilliam.Kucharski@Sun.COM@subsection OpenBSD
992*8044SWilliam.Kucharski@Sun.COM
993*8044SWilliam.Kucharski@Sun.COMThe booting instruction is exactly the same as for NetBSD
994*8044SWilliam.Kucharski@Sun.COM(@pxref{NetBSD}).
995*8044SWilliam.Kucharski@Sun.COM
996*8044SWilliam.Kucharski@Sun.COM
997*8044SWilliam.Kucharski@Sun.COM@node DOS/Windows
998*8044SWilliam.Kucharski@Sun.COM@subsection DOS/Windows
999*8044SWilliam.Kucharski@Sun.COM
1000*8044SWilliam.Kucharski@Sun.COMGRUB cannot boot DOS or Windows directly, so you must chain-load them
1001*8044SWilliam.Kucharski@Sun.COM(@pxref{Chain-loading}). However, their boot loaders have some critical
1002*8044SWilliam.Kucharski@Sun.COMdeficiencies, so it may not work to just chain-load them. To overcome
1003*8044SWilliam.Kucharski@Sun.COMthe problems, GRUB provides you with two helper functions.
1004*8044SWilliam.Kucharski@Sun.COM
1005*8044SWilliam.Kucharski@Sun.COMIf you have installed DOS (or Windows) on a non-first hard disk, you
1006*8044SWilliam.Kucharski@Sun.COMhave to use the disk swapping technique, because that OS cannot boot
1007*8044SWilliam.Kucharski@Sun.COMfrom any disks but the first one. The workaround used in GRUB is the
1008*8044SWilliam.Kucharski@Sun.COMcommand @command{map} (@pxref{map}), like this:
1009*8044SWilliam.Kucharski@Sun.COM
1010*8044SWilliam.Kucharski@Sun.COM@example
1011*8044SWilliam.Kucharski@Sun.COM@group
1012*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{map (hd0) (hd1)}
1013*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{map (hd1) (hd0)}
1014*8044SWilliam.Kucharski@Sun.COM@end group
1015*8044SWilliam.Kucharski@Sun.COM@end example
1016*8044SWilliam.Kucharski@Sun.COM
1017*8044SWilliam.Kucharski@Sun.COMThis performs a @dfn{virtual} swap between your first and second hard
1018*8044SWilliam.Kucharski@Sun.COMdrive.
1019*8044SWilliam.Kucharski@Sun.COM
1020*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} This is effective only if DOS (or Windows) uses BIOS
1021*8044SWilliam.Kucharski@Sun.COMto access the swapped disks. If that OS uses a special driver for the
1022*8044SWilliam.Kucharski@Sun.COMdisks, this probably won't work.
1023*8044SWilliam.Kucharski@Sun.COM
1024*8044SWilliam.Kucharski@Sun.COMAnother problem arises if you installed more than one set of DOS/Windows
1025*8044SWilliam.Kucharski@Sun.COMonto one disk, because they could be confused if there are more than one
1026*8044SWilliam.Kucharski@Sun.COMprimary partitions for DOS/Windows. Certainly you should avoid doing
1027*8044SWilliam.Kucharski@Sun.COMthis, but there is a solution if you do want to do so. Use the partition
1028*8044SWilliam.Kucharski@Sun.COMhiding/unhiding technique.
1029*8044SWilliam.Kucharski@Sun.COM
1030*8044SWilliam.Kucharski@Sun.COMIf GRUB @dfn{hide}s a DOS (or Windows) partition (@pxref{hide}), DOS (or
1031*8044SWilliam.Kucharski@Sun.COMWindows) will ignore the partition. If GRUB @dfn{unhide}s a DOS (or
1032*8044SWilliam.Kucharski@Sun.COMWindows) partition (@pxref{unhide}), DOS (or Windows) will detect the
1033*8044SWilliam.Kucharski@Sun.COMpartition. Thus, if you have installed DOS (or Windows) on the first
1034*8044SWilliam.Kucharski@Sun.COMand the second partition of the first hard disk, and you want to boot
1035*8044SWilliam.Kucharski@Sun.COMthe copy on the first partition, do the following:
1036*8044SWilliam.Kucharski@Sun.COM
1037*8044SWilliam.Kucharski@Sun.COM@example
1038*8044SWilliam.Kucharski@Sun.COM@group
1039*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{unhide (hd0,0)}
1040*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{hide (hd0,1)}
1041*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{rootnoverify (hd0,0)}
1042*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{chainloader +1}
1043*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{makeactive}
1044*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{boot}
1045*8044SWilliam.Kucharski@Sun.COM@end group
1046*8044SWilliam.Kucharski@Sun.COM@end example
1047*8044SWilliam.Kucharski@Sun.COM
1048*8044SWilliam.Kucharski@Sun.COM
1049*8044SWilliam.Kucharski@Sun.COM@node SCO UnixWare
1050*8044SWilliam.Kucharski@Sun.COM@subsection SCO UnixWare
1051*8044SWilliam.Kucharski@Sun.COM
1052*8044SWilliam.Kucharski@Sun.COMIt is known that the signature in the boot loader for SCO UnixWare is
1053*8044SWilliam.Kucharski@Sun.COMwrong, so you will have to specify the option @option{--force} to
1054*8044SWilliam.Kucharski@Sun.COM@command{chainloader} (@pxref{chainloader}), like this:
1055*8044SWilliam.Kucharski@Sun.COM
1056*8044SWilliam.Kucharski@Sun.COM@example
1057*8044SWilliam.Kucharski@Sun.COM@group
1058*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{rootnoverify (hd1,0)}
1059*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{chainloader --force +1}
1060*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{makeactive}
1061*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{boot}
1062*8044SWilliam.Kucharski@Sun.COM@end group
1063*8044SWilliam.Kucharski@Sun.COM@end example
1064*8044SWilliam.Kucharski@Sun.COM
1065*8044SWilliam.Kucharski@Sun.COM
1066*8044SWilliam.Kucharski@Sun.COM@node QNX
1067*8044SWilliam.Kucharski@Sun.COM@subsection QNX
1068*8044SWilliam.Kucharski@Sun.COM
1069*8044SWilliam.Kucharski@Sun.COMQNX seems to use a bigger boot loader, so you need to boot it up, like
1070*8044SWilliam.Kucharski@Sun.COMthis:
1071*8044SWilliam.Kucharski@Sun.COM
1072*8044SWilliam.Kucharski@Sun.COM@example
1073*8044SWilliam.Kucharski@Sun.COM@group
1074*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{rootnoverify (hd1,1)}
1075*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{chainloader +4}
1076*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{boot}
1077*8044SWilliam.Kucharski@Sun.COM@end group
1078*8044SWilliam.Kucharski@Sun.COM@end example
1079*8044SWilliam.Kucharski@Sun.COM
1080*8044SWilliam.Kucharski@Sun.COM
1081*8044SWilliam.Kucharski@Sun.COM@node Making your system robust
1082*8044SWilliam.Kucharski@Sun.COM@section How to make your system robust
1083*8044SWilliam.Kucharski@Sun.COM
1084*8044SWilliam.Kucharski@Sun.COMWhen you test a new kernel or a new OS, it is important to make sure
1085*8044SWilliam.Kucharski@Sun.COMthat your computer can boot even if the new system is unbootable. This
1086*8044SWilliam.Kucharski@Sun.COMis crucial especially if you maintain servers or remote systems. To
1087*8044SWilliam.Kucharski@Sun.COMaccomplish this goal, you need to set up two things:
1088*8044SWilliam.Kucharski@Sun.COM
1089*8044SWilliam.Kucharski@Sun.COM@enumerate
1090*8044SWilliam.Kucharski@Sun.COM@item
1091*8044SWilliam.Kucharski@Sun.COMYou must maintain a system which is always bootable. For instance, if
1092*8044SWilliam.Kucharski@Sun.COMyou test a new kernel, you need to keep a working kernel in a
1093*8044SWilliam.Kucharski@Sun.COMdifferent place. And, it would sometimes be very nice to even have a
1094*8044SWilliam.Kucharski@Sun.COMcomplete copy of a working system in a different partition or disk.
1095*8044SWilliam.Kucharski@Sun.COM
1096*8044SWilliam.Kucharski@Sun.COM@item
1097*8044SWilliam.Kucharski@Sun.COMYou must direct GRUB to boot a working system when the new system
1098*8044SWilliam.Kucharski@Sun.COMfails. This is possible with the @dfn{fallback} system in GRUB.
1099*8044SWilliam.Kucharski@Sun.COM@end enumerate
1100*8044SWilliam.Kucharski@Sun.COM
1101*8044SWilliam.Kucharski@Sun.COMThe former requirement is very specific to each OS, so this
1102*8044SWilliam.Kucharski@Sun.COMdocumentation does not cover that topic. It is better to consult some
1103*8044SWilliam.Kucharski@Sun.COMbackup tools.
1104*8044SWilliam.Kucharski@Sun.COM
1105*8044SWilliam.Kucharski@Sun.COMSo let's see the GRUB part. There are two possibilities: one of them
1106*8044SWilliam.Kucharski@Sun.COMis quite simple but not very robust, and the other is a bit complex to
1107*8044SWilliam.Kucharski@Sun.COMset up but probably the best solution to make sure that your system
1108*8044SWilliam.Kucharski@Sun.COMcan start as long as GRUB itself is bootable.
1109*8044SWilliam.Kucharski@Sun.COM
1110*8044SWilliam.Kucharski@Sun.COM@menu
1111*8044SWilliam.Kucharski@Sun.COM* Booting once-only::
1112*8044SWilliam.Kucharski@Sun.COM* Booting fallback systems::
1113*8044SWilliam.Kucharski@Sun.COM@end menu
1114*8044SWilliam.Kucharski@Sun.COM
1115*8044SWilliam.Kucharski@Sun.COM
1116*8044SWilliam.Kucharski@Sun.COM@node Booting once-only
1117*8044SWilliam.Kucharski@Sun.COM@subsection Booting once-only
1118*8044SWilliam.Kucharski@Sun.COM
1119*8044SWilliam.Kucharski@Sun.COMYou can teach GRUB to boot an entry only at next boot time. Suppose
1120*8044SWilliam.Kucharski@Sun.COMthat your have an old kernel @file{old_kernel} and a new kernel
1121*8044SWilliam.Kucharski@Sun.COM@file{new_kernel}. You know that @file{old_kernel} can boot
1122*8044SWilliam.Kucharski@Sun.COMyour system correctly, and you want to test @file{new_kernel}.
1123*8044SWilliam.Kucharski@Sun.COM
1124*8044SWilliam.Kucharski@Sun.COMTo ensure that your system will go back to the old kernel even if the
1125*8044SWilliam.Kucharski@Sun.COMnew kernel fails (e.g. it panics), you can specify that GRUB should
1126*8044SWilliam.Kucharski@Sun.COMtry the new kernel only once and boot the old kernel after that.
1127*8044SWilliam.Kucharski@Sun.COM
1128*8044SWilliam.Kucharski@Sun.COMFirst, modify your configuration file. Here is an example:
1129*8044SWilliam.Kucharski@Sun.COM
1130*8044SWilliam.Kucharski@Sun.COM@example
1131*8044SWilliam.Kucharski@Sun.COM@group
1132*8044SWilliam.Kucharski@Sun.COMdefault saved        # This is important!!!
1133*8044SWilliam.Kucharski@Sun.COMtimeout 10
1134*8044SWilliam.Kucharski@Sun.COM
1135*8044SWilliam.Kucharski@Sun.COMtitle the old kernel
1136*8044SWilliam.Kucharski@Sun.COMroot (hd0,0)
1137*8044SWilliam.Kucharski@Sun.COMkernel /old_kernel
1138*8044SWilliam.Kucharski@Sun.COMsavedefault
1139*8044SWilliam.Kucharski@Sun.COM
1140*8044SWilliam.Kucharski@Sun.COMtitle the new kernel
1141*8044SWilliam.Kucharski@Sun.COMroot (hd0,0)
1142*8044SWilliam.Kucharski@Sun.COMkernel /new_kernel
1143*8044SWilliam.Kucharski@Sun.COMsavedefault 0         # This is important!!!
1144*8044SWilliam.Kucharski@Sun.COM@end group
1145*8044SWilliam.Kucharski@Sun.COM@end example
1146*8044SWilliam.Kucharski@Sun.COM
1147*8044SWilliam.Kucharski@Sun.COMNote that this configuration file uses @samp{default saved}
1148*8044SWilliam.Kucharski@Sun.COM(@pxref{default}) at the head and @samp{savedefault 0}
1149*8044SWilliam.Kucharski@Sun.COM(@pxref{savedefault}) in the entry for the new kernel. This means
1150*8044SWilliam.Kucharski@Sun.COMthat GRUB boots a saved entry by default, and booting the entry for the
1151*8044SWilliam.Kucharski@Sun.COMnew kernel saves @samp{0} as the saved entry.
1152*8044SWilliam.Kucharski@Sun.COM
1153*8044SWilliam.Kucharski@Sun.COMWith this configuration file, after all, GRUB always tries to boot the
1154*8044SWilliam.Kucharski@Sun.COMold kernel after it booted the new one, because @samp{0} is the entry
1155*8044SWilliam.Kucharski@Sun.COMof @code{the old kernel}.
1156*8044SWilliam.Kucharski@Sun.COM
1157*8044SWilliam.Kucharski@Sun.COMThe next step is to tell GRUB to boot the new kernel at next boot
1158*8044SWilliam.Kucharski@Sun.COMtime. For this, execute @command{grub-set-default} (@pxref{Invoking
1159*8044SWilliam.Kucharski@Sun.COMgrub-set-default}):
1160*8044SWilliam.Kucharski@Sun.COM
1161*8044SWilliam.Kucharski@Sun.COM@example
1162*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-set-default 1}
1163*8044SWilliam.Kucharski@Sun.COM@end example
1164*8044SWilliam.Kucharski@Sun.COM
1165*8044SWilliam.Kucharski@Sun.COMThis command sets the saved entry to @samp{1}, that is, to the new
1166*8044SWilliam.Kucharski@Sun.COMkernel.
1167*8044SWilliam.Kucharski@Sun.COM
1168*8044SWilliam.Kucharski@Sun.COMThis method is useful, but still not very robust, because GRUB stops
1169*8044SWilliam.Kucharski@Sun.COMbooting, if there is any error in the boot entry, such that the new
1170*8044SWilliam.Kucharski@Sun.COMkernel has an invalid executable format. Thus, it it even better to
1171*8044SWilliam.Kucharski@Sun.COMuse the @dfn{fallback} mechanism of GRUB. Look at next subsection for
1172*8044SWilliam.Kucharski@Sun.COMthis feature.
1173*8044SWilliam.Kucharski@Sun.COM
1174*8044SWilliam.Kucharski@Sun.COM
1175*8044SWilliam.Kucharski@Sun.COM@node Booting fallback systems
1176*8044SWilliam.Kucharski@Sun.COM@subsection Booting fallback systems
1177*8044SWilliam.Kucharski@Sun.COM
1178*8044SWilliam.Kucharski@Sun.COMGRUB supports a fallback mechanism of booting one or more other
1179*8044SWilliam.Kucharski@Sun.COMentries if a default boot entry fails. You can specify multiple
1180*8044SWilliam.Kucharski@Sun.COMfallback entries if you wish.
1181*8044SWilliam.Kucharski@Sun.COM
1182*8044SWilliam.Kucharski@Sun.COMSuppose that you have three systems, @samp{A}, @samp{B} and
1183*8044SWilliam.Kucharski@Sun.COM@samp{C}. @samp{A} is a system which you want to boot by
1184*8044SWilliam.Kucharski@Sun.COMdefault. @samp{B} is a backup system which is supposed to boot
1185*8044SWilliam.Kucharski@Sun.COMsafely. @samp{C} is another backup system which is used in case where
1186*8044SWilliam.Kucharski@Sun.COM@samp{B} is broken.
1187*8044SWilliam.Kucharski@Sun.COM
1188*8044SWilliam.Kucharski@Sun.COMThen you may want GRUB to boot the first system which is bootable
1189*8044SWilliam.Kucharski@Sun.COMamong @samp{A}, @samp{B} and @samp{C}. A configuration file can be
1190*8044SWilliam.Kucharski@Sun.COMwritten in this way:
1191*8044SWilliam.Kucharski@Sun.COM
1192*8044SWilliam.Kucharski@Sun.COM@example
1193*8044SWilliam.Kucharski@Sun.COM@group
1194*8044SWilliam.Kucharski@Sun.COMdefault saved        # This is important!!!
1195*8044SWilliam.Kucharski@Sun.COMtimeout 10
1196*8044SWilliam.Kucharski@Sun.COMfallback 1 2         # This is important!!!
1197*8044SWilliam.Kucharski@Sun.COM
1198*8044SWilliam.Kucharski@Sun.COMtitle A
1199*8044SWilliam.Kucharski@Sun.COMroot (hd0,0)
1200*8044SWilliam.Kucharski@Sun.COMkernel /kernel
1201*8044SWilliam.Kucharski@Sun.COMsavedefault fallback # This is important!!!
1202*8044SWilliam.Kucharski@Sun.COM
1203*8044SWilliam.Kucharski@Sun.COMtitle B
1204*8044SWilliam.Kucharski@Sun.COMroot (hd1,0)
1205*8044SWilliam.Kucharski@Sun.COMkernel /kernel
1206*8044SWilliam.Kucharski@Sun.COMsavedefault fallback # This is important!!!
1207*8044SWilliam.Kucharski@Sun.COM
1208*8044SWilliam.Kucharski@Sun.COMtitle C
1209*8044SWilliam.Kucharski@Sun.COMroot (hd2,0)
1210*8044SWilliam.Kucharski@Sun.COMkernel /kernel
1211*8044SWilliam.Kucharski@Sun.COMsavedefault
1212*8044SWilliam.Kucharski@Sun.COM@end group
1213*8044SWilliam.Kucharski@Sun.COM@end example
1214*8044SWilliam.Kucharski@Sun.COM
1215*8044SWilliam.Kucharski@Sun.COMNote that @samp{default saved} (@pxref{default}), @samp{fallback 1 2}
1216*8044SWilliam.Kucharski@Sun.COMand @samp{savedefault fallback} are used. GRUB will boot a saved entry
1217*8044SWilliam.Kucharski@Sun.COMby default and save a fallback entry as next boot entry with this
1218*8044SWilliam.Kucharski@Sun.COMconfiguration.
1219*8044SWilliam.Kucharski@Sun.COM
1220*8044SWilliam.Kucharski@Sun.COMWhen GRUB tries to boot @samp{A}, GRUB saves @samp{1} as next boot
1221*8044SWilliam.Kucharski@Sun.COMentry, because the command @command{fallback} specifies that @samp{1}
1222*8044SWilliam.Kucharski@Sun.COMis the first fallback entry. The entry @samp{1} is @samp{B}, so GRUB
1223*8044SWilliam.Kucharski@Sun.COMwill try to boot @samp{B} at next boot time.
1224*8044SWilliam.Kucharski@Sun.COM
1225*8044SWilliam.Kucharski@Sun.COMLikewise, when GRUB tries to boot @samp{B}, GRUB saves @samp{2} as
1226*8044SWilliam.Kucharski@Sun.COMnext boot entry, because @command{fallback} specifies @samp{2} as next
1227*8044SWilliam.Kucharski@Sun.COMfallback entry. This makes sure that GRUB will boot @samp{C} after
1228*8044SWilliam.Kucharski@Sun.COMbooting @samp{B}.
1229*8044SWilliam.Kucharski@Sun.COM
1230*8044SWilliam.Kucharski@Sun.COMIt is noteworthy that GRUB uses fallback entries both when GRUB
1231*8044SWilliam.Kucharski@Sun.COMitself fails in booting an entry and when @samp{A} or @samp{B} fails
1232*8044SWilliam.Kucharski@Sun.COMin starting up your system. So this solution ensures that your system
1233*8044SWilliam.Kucharski@Sun.COMis started even if GRUB cannot find your kernel or if your kernel
1234*8044SWilliam.Kucharski@Sun.COMpanics.
1235*8044SWilliam.Kucharski@Sun.COM
1236*8044SWilliam.Kucharski@Sun.COMHowever, you need to run @command{grub-set-default} (@pxref{Invoking
1237*8044SWilliam.Kucharski@Sun.COMgrub-set-default}) when @samp{A} starts correctly or you fix @samp{A}
1238*8044SWilliam.Kucharski@Sun.COMafter it crashes, since GRUB always sets next boot entry to a fallback
1239*8044SWilliam.Kucharski@Sun.COMentry. You should run this command in a startup script such as
1240*8044SWilliam.Kucharski@Sun.COM@file{rc.local} to boot @samp{A} by default:
1241*8044SWilliam.Kucharski@Sun.COM
1242*8044SWilliam.Kucharski@Sun.COM@example
1243*8044SWilliam.Kucharski@Sun.COM# @kbd{grub-set-default 0}
1244*8044SWilliam.Kucharski@Sun.COM@end example
1245*8044SWilliam.Kucharski@Sun.COM
1246*8044SWilliam.Kucharski@Sun.COMwhere @samp{0} is the number of the boot entry for the system
1247*8044SWilliam.Kucharski@Sun.COM@samp{A}.
1248*8044SWilliam.Kucharski@Sun.COM
1249*8044SWilliam.Kucharski@Sun.COMIf you want to see what is current default entry, you can look at the
1250*8044SWilliam.Kucharski@Sun.COMfile @file{/boot/grub/default} (or @file{/grub/default} in
1251*8044SWilliam.Kucharski@Sun.COMsome systems). Because this file is plain-text, you can just
1252*8044SWilliam.Kucharski@Sun.COM@command{cat} this file. But it is strongly recommended @strong{not to
1253*8044SWilliam.Kucharski@Sun.COMmodify this file directly}, because GRUB may fail in saving a default
1254*8044SWilliam.Kucharski@Sun.COMentry in this file, if you change this file in an unintended
1255*8044SWilliam.Kucharski@Sun.COMmanner. Therefore, you should use @command{grub-set-default} when you
1256*8044SWilliam.Kucharski@Sun.COMneed to change the default entry.
1257*8044SWilliam.Kucharski@Sun.COM
1258*8044SWilliam.Kucharski@Sun.COM
1259*8044SWilliam.Kucharski@Sun.COM@node Configuration
1260*8044SWilliam.Kucharski@Sun.COM@chapter Configuration
1261*8044SWilliam.Kucharski@Sun.COM
1262*8044SWilliam.Kucharski@Sun.COMYou've probably noticed that you need to type several commands to boot your
1263*8044SWilliam.Kucharski@Sun.COMOS. There's a solution to that - GRUB provides a menu interface
1264*8044SWilliam.Kucharski@Sun.COM(@pxref{Menu interface}) from which you can select an item (using arrow
1265*8044SWilliam.Kucharski@Sun.COMkeys) that will do everything to boot an OS.
1266*8044SWilliam.Kucharski@Sun.COM
1267*8044SWilliam.Kucharski@Sun.COMTo enable the menu, you need a configuration file,
1268*8044SWilliam.Kucharski@Sun.COM@file{menu.lst} under the boot directory. We'll analyze an example
1269*8044SWilliam.Kucharski@Sun.COMfile.
1270*8044SWilliam.Kucharski@Sun.COM
1271*8044SWilliam.Kucharski@Sun.COMThe file first contains some general settings, the menu interface
1272*8044SWilliam.Kucharski@Sun.COMrelated options. You can put these commands (@pxref{Menu-specific
1273*8044SWilliam.Kucharski@Sun.COMcommands}) before any of the items (starting with @command{title}
1274*8044SWilliam.Kucharski@Sun.COM(@pxref{title})).
1275*8044SWilliam.Kucharski@Sun.COM
1276*8044SWilliam.Kucharski@Sun.COM@example
1277*8044SWilliam.Kucharski@Sun.COM@group
1278*8044SWilliam.Kucharski@Sun.COM#
1279*8044SWilliam.Kucharski@Sun.COM# Sample boot menu configuration file
1280*8044SWilliam.Kucharski@Sun.COM#
1281*8044SWilliam.Kucharski@Sun.COM@end group
1282*8044SWilliam.Kucharski@Sun.COM@end example
1283*8044SWilliam.Kucharski@Sun.COM
1284*8044SWilliam.Kucharski@Sun.COMAs you may have guessed, these lines are comments. Lines starting with a
1285*8044SWilliam.Kucharski@Sun.COMhash character (@samp{#}), and blank lines, are ignored by GRUB.
1286*8044SWilliam.Kucharski@Sun.COM
1287*8044SWilliam.Kucharski@Sun.COM@example
1288*8044SWilliam.Kucharski@Sun.COM@group
1289*8044SWilliam.Kucharski@Sun.COM# By default, boot the first entry.
1290*8044SWilliam.Kucharski@Sun.COMdefault 0
1291*8044SWilliam.Kucharski@Sun.COM@end group
1292*8044SWilliam.Kucharski@Sun.COM@end example
1293*8044SWilliam.Kucharski@Sun.COM
1294*8044SWilliam.Kucharski@Sun.COMThe first entry (here, counting starts with number zero, not one!) will
1295*8044SWilliam.Kucharski@Sun.COMbe the default choice.
1296*8044SWilliam.Kucharski@Sun.COM
1297*8044SWilliam.Kucharski@Sun.COM@example
1298*8044SWilliam.Kucharski@Sun.COM@group
1299*8044SWilliam.Kucharski@Sun.COM# Boot automatically after 30 secs.
1300*8044SWilliam.Kucharski@Sun.COMtimeout 30
1301*8044SWilliam.Kucharski@Sun.COM@end group
1302*8044SWilliam.Kucharski@Sun.COM@end example
1303*8044SWilliam.Kucharski@Sun.COM
1304*8044SWilliam.Kucharski@Sun.COMAs the comment says, GRUB will boot automatically in 30 seconds, unless
1305*8044SWilliam.Kucharski@Sun.COMinterrupted with a keypress.
1306*8044SWilliam.Kucharski@Sun.COM
1307*8044SWilliam.Kucharski@Sun.COM@example
1308*8044SWilliam.Kucharski@Sun.COM@group
1309*8044SWilliam.Kucharski@Sun.COM# Fallback to the second entry.
1310*8044SWilliam.Kucharski@Sun.COMfallback 1
1311*8044SWilliam.Kucharski@Sun.COM@end group
1312*8044SWilliam.Kucharski@Sun.COM@end example
1313*8044SWilliam.Kucharski@Sun.COM
1314*8044SWilliam.Kucharski@Sun.COMIf, for any reason, the default entry doesn't work, fall back to the
1315*8044SWilliam.Kucharski@Sun.COMsecond one (this is rarely used, for obvious reasons).
1316*8044SWilliam.Kucharski@Sun.COM
1317*8044SWilliam.Kucharski@Sun.COMNote that the complete descriptions of these commands, which are menu
1318*8044SWilliam.Kucharski@Sun.COMinterface specific, can be found in @ref{Menu-specific
1319*8044SWilliam.Kucharski@Sun.COMcommands}. Other descriptions can be found in @ref{Commands}.
1320*8044SWilliam.Kucharski@Sun.COM
1321*8044SWilliam.Kucharski@Sun.COMNow, on to the actual OS definitions. You will see that each entry
1322*8044SWilliam.Kucharski@Sun.COMbegins with a special command, @command{title} (@pxref{title}), and the
1323*8044SWilliam.Kucharski@Sun.COMaction is described after it. Note that there is no command
1324*8044SWilliam.Kucharski@Sun.COM@command{boot} (@pxref{boot}) at the  end of each item. That is because
1325*8044SWilliam.Kucharski@Sun.COMGRUB automatically executes @command{boot} if it loads other commands
1326*8044SWilliam.Kucharski@Sun.COMsuccessfully.
1327*8044SWilliam.Kucharski@Sun.COM
1328*8044SWilliam.Kucharski@Sun.COMThe argument for the command @command{title} is used to display a short
1329*8044SWilliam.Kucharski@Sun.COMtitle/description of the entry in the menu. Since @command{title}
1330*8044SWilliam.Kucharski@Sun.COMdisplays the argument as is, you can write basically anything there.
1331*8044SWilliam.Kucharski@Sun.COM
1332*8044SWilliam.Kucharski@Sun.COM@example
1333*8044SWilliam.Kucharski@Sun.COM@group
1334*8044SWilliam.Kucharski@Sun.COM# For booting GNU/Hurd
1335*8044SWilliam.Kucharski@Sun.COMtitle  GNU/Hurd
1336*8044SWilliam.Kucharski@Sun.COMroot   (hd0,0)
1337*8044SWilliam.Kucharski@Sun.COMkernel /boot/gnumach.gz root=hd0s1
1338*8044SWilliam.Kucharski@Sun.COMmodule /boot/serverboot.gz
1339*8044SWilliam.Kucharski@Sun.COM@end group
1340*8044SWilliam.Kucharski@Sun.COM@end example
1341*8044SWilliam.Kucharski@Sun.COM
1342*8044SWilliam.Kucharski@Sun.COMThis boots GNU/Hurd from the first hard disk.
1343*8044SWilliam.Kucharski@Sun.COM
1344*8044SWilliam.Kucharski@Sun.COM@example
1345*8044SWilliam.Kucharski@Sun.COM@group
1346*8044SWilliam.Kucharski@Sun.COM# For booting GNU/Linux
1347*8044SWilliam.Kucharski@Sun.COMtitle  GNU/Linux
1348*8044SWilliam.Kucharski@Sun.COMkernel (hd1,0)/vmlinuz root=/dev/hdb1
1349*8044SWilliam.Kucharski@Sun.COM@end group
1350*8044SWilliam.Kucharski@Sun.COM@end example
1351*8044SWilliam.Kucharski@Sun.COM
1352*8044SWilliam.Kucharski@Sun.COMThis boots GNU/Linux, but from the second hard disk.
1353*8044SWilliam.Kucharski@Sun.COM
1354*8044SWilliam.Kucharski@Sun.COM@example
1355*8044SWilliam.Kucharski@Sun.COM@group
1356*8044SWilliam.Kucharski@Sun.COM# For booting Mach (getting kernel from floppy)
1357*8044SWilliam.Kucharski@Sun.COMtitle  Utah Mach4 multiboot
1358*8044SWilliam.Kucharski@Sun.COMroot   (hd0,2)
1359*8044SWilliam.Kucharski@Sun.COMpause  Insert the diskette now^G!!
1360*8044SWilliam.Kucharski@Sun.COMkernel (fd0)/boot/kernel root=hd0s3
1361*8044SWilliam.Kucharski@Sun.COMmodule (fd0)/boot/bootstrap
1362*8044SWilliam.Kucharski@Sun.COM@end group
1363*8044SWilliam.Kucharski@Sun.COM@end example
1364*8044SWilliam.Kucharski@Sun.COM
1365*8044SWilliam.Kucharski@Sun.COMThis boots Mach with a kernel on a floppy, but the root filesystem at
1366*8044SWilliam.Kucharski@Sun.COMhd0s3. It also contains a @command{pause} line (@pxref{pause}), which
1367*8044SWilliam.Kucharski@Sun.COMwill cause GRUB to display a prompt and delay, before actually executing
1368*8044SWilliam.Kucharski@Sun.COMthe rest of the commands and booting.
1369*8044SWilliam.Kucharski@Sun.COM
1370*8044SWilliam.Kucharski@Sun.COM@example
1371*8044SWilliam.Kucharski@Sun.COM@group
1372*8044SWilliam.Kucharski@Sun.COM# For booting FreeBSD
1373*8044SWilliam.Kucharski@Sun.COMtitle  FreeBSD
1374*8044SWilliam.Kucharski@Sun.COMroot   (hd0,2,a)
1375*8044SWilliam.Kucharski@Sun.COMkernel /boot/loader
1376*8044SWilliam.Kucharski@Sun.COM@end group
1377*8044SWilliam.Kucharski@Sun.COM@end example
1378*8044SWilliam.Kucharski@Sun.COM
1379*8044SWilliam.Kucharski@Sun.COMThis item will boot FreeBSD kernel loaded from the @samp{a} partition of
1380*8044SWilliam.Kucharski@Sun.COMthe third @sc{pc} slice of the first hard disk.
1381*8044SWilliam.Kucharski@Sun.COM
1382*8044SWilliam.Kucharski@Sun.COM@example
1383*8044SWilliam.Kucharski@Sun.COM@group
1384*8044SWilliam.Kucharski@Sun.COM# For booting OS/2
1385*8044SWilliam.Kucharski@Sun.COMtitle OS/2
1386*8044SWilliam.Kucharski@Sun.COMroot  (hd0,1)
1387*8044SWilliam.Kucharski@Sun.COMmakeactive
1388*8044SWilliam.Kucharski@Sun.COM# chainload OS/2 bootloader from the first sector
1389*8044SWilliam.Kucharski@Sun.COMchainloader +1
1390*8044SWilliam.Kucharski@Sun.COM# This is similar to "chainload", but loads a specific file
1391*8044SWilliam.Kucharski@Sun.COM#chainloader /boot/chain.os2
1392*8044SWilliam.Kucharski@Sun.COM@end group
1393*8044SWilliam.Kucharski@Sun.COM@end example
1394*8044SWilliam.Kucharski@Sun.COM
1395*8044SWilliam.Kucharski@Sun.COMThis will boot OS/2, using a chain-loader (@pxref{Chain-loading}).
1396*8044SWilliam.Kucharski@Sun.COM
1397*8044SWilliam.Kucharski@Sun.COM@example
1398*8044SWilliam.Kucharski@Sun.COM@group
1399*8044SWilliam.Kucharski@Sun.COM# For booting Windows NT or Windows95
1400*8044SWilliam.Kucharski@Sun.COMtitle Windows NT / Windows 95 boot menu
1401*8044SWilliam.Kucharski@Sun.COMroot        (hd0,0)
1402*8044SWilliam.Kucharski@Sun.COMmakeactive
1403*8044SWilliam.Kucharski@Sun.COMchainloader +1
1404*8044SWilliam.Kucharski@Sun.COM# For loading DOS if Windows NT is installed
1405*8044SWilliam.Kucharski@Sun.COM# chainload /bootsect.dos
1406*8044SWilliam.Kucharski@Sun.COM@end group
1407*8044SWilliam.Kucharski@Sun.COM@end example
1408*8044SWilliam.Kucharski@Sun.COM
1409*8044SWilliam.Kucharski@Sun.COMThe same as the above, but for Windows.
1410*8044SWilliam.Kucharski@Sun.COM
1411*8044SWilliam.Kucharski@Sun.COM@example
1412*8044SWilliam.Kucharski@Sun.COM@group
1413*8044SWilliam.Kucharski@Sun.COM# For installing GRUB into the hard disk
1414*8044SWilliam.Kucharski@Sun.COMtitle Install GRUB into the hard disk
1415*8044SWilliam.Kucharski@Sun.COMroot    (hd0,0)
1416*8044SWilliam.Kucharski@Sun.COMsetup   (hd0)
1417*8044SWilliam.Kucharski@Sun.COM@end group
1418*8044SWilliam.Kucharski@Sun.COM@end example
1419*8044SWilliam.Kucharski@Sun.COM
1420*8044SWilliam.Kucharski@Sun.COMThis will just (re)install GRUB onto the hard disk.
1421*8044SWilliam.Kucharski@Sun.COM
1422*8044SWilliam.Kucharski@Sun.COM@example
1423*8044SWilliam.Kucharski@Sun.COM# Change the colors.
1424*8044SWilliam.Kucharski@Sun.COMtitle Change the colors
1425*8044SWilliam.Kucharski@Sun.COMcolor light-green/brown blink-red/blue
1426*8044SWilliam.Kucharski@Sun.COM@end example
1427*8044SWilliam.Kucharski@Sun.COM
1428*8044SWilliam.Kucharski@Sun.COMIn the last entry, the command @command{color} is used (@pxref{color}),
1429*8044SWilliam.Kucharski@Sun.COMto change the menu colors (try it!). This command is somewhat special,
1430*8044SWilliam.Kucharski@Sun.COMbecause it can be used both in the command-line and in the menu. GRUB
1431*8044SWilliam.Kucharski@Sun.COMhas several such commands, see @ref{General commands}.
1432*8044SWilliam.Kucharski@Sun.COM
1433*8044SWilliam.Kucharski@Sun.COMWe hope that you now understand how to use the basic features of
1434*8044SWilliam.Kucharski@Sun.COMGRUB. To learn more about GRUB, see the following chapters.
1435*8044SWilliam.Kucharski@Sun.COM
1436*8044SWilliam.Kucharski@Sun.COM
1437*8044SWilliam.Kucharski@Sun.COM@node Network
1438*8044SWilliam.Kucharski@Sun.COM@chapter Downloading OS images from a network
1439*8044SWilliam.Kucharski@Sun.COM
1440*8044SWilliam.Kucharski@Sun.COMAlthough GRUB is a disk-based boot loader, it does provide network
1441*8044SWilliam.Kucharski@Sun.COMsupport. To use the network support, you need to enable at least one
1442*8044SWilliam.Kucharski@Sun.COMnetwork driver in the GRUB build process. For more information please
1443*8044SWilliam.Kucharski@Sun.COMsee @file{netboot/README.netboot} in the source distribution.
1444*8044SWilliam.Kucharski@Sun.COM
1445*8044SWilliam.Kucharski@Sun.COM@menu
1446*8044SWilliam.Kucharski@Sun.COM* General usage of network support::
1447*8044SWilliam.Kucharski@Sun.COM* Diskless::
1448*8044SWilliam.Kucharski@Sun.COM@end menu
1449*8044SWilliam.Kucharski@Sun.COM
1450*8044SWilliam.Kucharski@Sun.COM
1451*8044SWilliam.Kucharski@Sun.COM@node General usage of network support
1452*8044SWilliam.Kucharski@Sun.COM@section How to set up your network
1453*8044SWilliam.Kucharski@Sun.COM
1454*8044SWilliam.Kucharski@Sun.COMGRUB requires a file server and optionally a server that will assign an
1455*8044SWilliam.Kucharski@Sun.COMIP address to the machine on which GRUB is running. For the former, only
1456*8044SWilliam.Kucharski@Sun.COMTFTP is supported at the moment. The latter is either BOOTP, DHCP or a
1457*8044SWilliam.Kucharski@Sun.COMRARP server@footnote{RARP is not advised, since it cannot serve much
1458*8044SWilliam.Kucharski@Sun.COMinformation}. It is not necessary to run both the servers on one
1459*8044SWilliam.Kucharski@Sun.COMcomputer. How to configure these servers is beyond the scope of this
1460*8044SWilliam.Kucharski@Sun.COMdocument, so please refer to the manuals specific to those
1461*8044SWilliam.Kucharski@Sun.COMprotocols/servers.
1462*8044SWilliam.Kucharski@Sun.COM
1463*8044SWilliam.Kucharski@Sun.COMIf you decided to use a server to assign an IP address, set up the
1464*8044SWilliam.Kucharski@Sun.COMserver and run @command{bootp} (@pxref{bootp}), @command{dhcp}
1465*8044SWilliam.Kucharski@Sun.COM(@pxref{dhcp}) or @command{rarp} (@pxref{rarp}) for BOOTP, DHCP or RARP,
1466*8044SWilliam.Kucharski@Sun.COMrespectively. Each command will show an assigned IP address, a netmask,
1467*8044SWilliam.Kucharski@Sun.COMan IP address for your TFTP server and a gateway. If any of the
1468*8044SWilliam.Kucharski@Sun.COMaddresses is wrong or it causes an error, probably the configuration of
1469*8044SWilliam.Kucharski@Sun.COMyour servers isn't set up properly.
1470*8044SWilliam.Kucharski@Sun.COM
1471*8044SWilliam.Kucharski@Sun.COMOtherwise, run @command{ifconfig}, like this:
1472*8044SWilliam.Kucharski@Sun.COM
1473*8044SWilliam.Kucharski@Sun.COM@example
1474*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{ifconfig --address=192.168.110.23 --server=192.168.110.14}
1475*8044SWilliam.Kucharski@Sun.COM@end example
1476*8044SWilliam.Kucharski@Sun.COM
1477*8044SWilliam.Kucharski@Sun.COMYou can also use @command{ifconfig} in conjuction with @command{bootp},
1478*8044SWilliam.Kucharski@Sun.COM@command{dhcp} or @command{rarp} (e.g. to reassign the server address
1479*8044SWilliam.Kucharski@Sun.COMmanually). @xref{ifconfig}, for more details.
1480*8044SWilliam.Kucharski@Sun.COM
1481*8044SWilliam.Kucharski@Sun.COMFinally, download your OS images from your network. The network can be
1482*8044SWilliam.Kucharski@Sun.COMaccessed using the network drive @samp{(nd)}. Everything else is very
1483*8044SWilliam.Kucharski@Sun.COMsimilar to the normal instructions (@pxref{Booting}).
1484*8044SWilliam.Kucharski@Sun.COM
1485*8044SWilliam.Kucharski@Sun.COMHere is an example:
1486*8044SWilliam.Kucharski@Sun.COM
1487*8044SWilliam.Kucharski@Sun.COM@example
1488*8044SWilliam.Kucharski@Sun.COM@group
1489*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{bootp}
1490*8044SWilliam.Kucharski@Sun.COMProbing... [NE*000]
1491*8044SWilliam.Kucharski@Sun.COMNE2000 base ...
1492*8044SWilliam.Kucharski@Sun.COMAddress: 192.168.110.23    Netmask: 255.255.255.0
1493*8044SWilliam.Kucharski@Sun.COMServer: 192.168.110.14     Gateway: 192.168.110.1
1494*8044SWilliam.Kucharski@Sun.COM
1495*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{root (nd)}
1496*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{kernel /tftproot/gnumach.gz root=sd0s1}
1497*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{module /tftproot/serverboot.gz}
1498*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{boot}
1499*8044SWilliam.Kucharski@Sun.COM@end group
1500*8044SWilliam.Kucharski@Sun.COM@end example
1501*8044SWilliam.Kucharski@Sun.COM
1502*8044SWilliam.Kucharski@Sun.COM
1503*8044SWilliam.Kucharski@Sun.COM@node Diskless
1504*8044SWilliam.Kucharski@Sun.COM@section Booting from a network
1505*8044SWilliam.Kucharski@Sun.COM
1506*8044SWilliam.Kucharski@Sun.COMIt is sometimes very useful to boot from a network, especially when you
1507*8044SWilliam.Kucharski@Sun.COMuse a machine which has no local disk. In this case, you need to obtain
1508*8044SWilliam.Kucharski@Sun.COMa kind of Net Boot @sc{rom}, such as a PXE @sc{rom} or a free software
1509*8044SWilliam.Kucharski@Sun.COMpackage like Etherboot. Such a Boot @sc{rom} first boots the machine,
1510*8044SWilliam.Kucharski@Sun.COMsets up the network card installed into the machine, and downloads a
1511*8044SWilliam.Kucharski@Sun.COMsecond stage boot image from the network. Then, the second image will
1512*8044SWilliam.Kucharski@Sun.COMtry to boot an operating system actually from the network.
1513*8044SWilliam.Kucharski@Sun.COM
1514*8044SWilliam.Kucharski@Sun.COMGRUB provides two second stage images, @file{nbgrub} and
1515*8044SWilliam.Kucharski@Sun.COM@file{pxegrub} (@pxref{Images}). These images are the same as the
1516*8044SWilliam.Kucharski@Sun.COMnormal Stage 2, except that they set up a network automatically, and try
1517*8044SWilliam.Kucharski@Sun.COMto load a configuration file from the network, if specified. The usage
1518*8044SWilliam.Kucharski@Sun.COMis very simple: If the machine has a PXE @sc{rom}, use
1519*8044SWilliam.Kucharski@Sun.COM@file{pxegrub}. If the machine has an NBI loader such as Etherboot, use
1520*8044SWilliam.Kucharski@Sun.COM@file{nbgrub}. There is no difference between them except their
1521*8044SWilliam.Kucharski@Sun.COMformats. Since the way to load a second stage image you want to use
1522*8044SWilliam.Kucharski@Sun.COMshould be described in the manual on your Net Boot @sc{rom}, please
1523*8044SWilliam.Kucharski@Sun.COMrefer to the manual, for more information.
1524*8044SWilliam.Kucharski@Sun.COM
1525*8044SWilliam.Kucharski@Sun.COMHowever, there is one thing specific to GRUB. Namely, how to specify a
1526*8044SWilliam.Kucharski@Sun.COMconfiguration file in a BOOTP/DHCP server. For now, GRUB uses the tag
1527*8044SWilliam.Kucharski@Sun.COM@samp{150}, to get the name of a configuration file. The following is an
1528*8044SWilliam.Kucharski@Sun.COMexample with a BOOTP configuration:
1529*8044SWilliam.Kucharski@Sun.COM
1530*8044SWilliam.Kucharski@Sun.COM@example
1531*8044SWilliam.Kucharski@Sun.COM@group
1532*8044SWilliam.Kucharski@Sun.COM.allhost:hd=/tmp:bf=null:\
1533*8044SWilliam.Kucharski@Sun.COM        :ds=145.71.35.1 145.71.32.1:\
1534*8044SWilliam.Kucharski@Sun.COM        :sm=255.255.254.0:\
1535*8044SWilliam.Kucharski@Sun.COM        :gw=145.71.35.1:\
1536*8044SWilliam.Kucharski@Sun.COM        :sa=145.71.35.5:
1537*8044SWilliam.Kucharski@Sun.COM
1538*8044SWilliam.Kucharski@Sun.COMfoo:ht=1:ha=63655d0334a7:ip=145.71.35.127:\
1539*8044SWilliam.Kucharski@Sun.COM        :bf=/nbgrub:\
1540*8044SWilliam.Kucharski@Sun.COM        :tc=.allhost:\
1541*8044SWilliam.Kucharski@Sun.COM        :T150="(nd)/tftpboot/menu.lst.foo":
1542*8044SWilliam.Kucharski@Sun.COM@end group
1543*8044SWilliam.Kucharski@Sun.COM@end example
1544*8044SWilliam.Kucharski@Sun.COM
1545*8044SWilliam.Kucharski@Sun.COMNote that you should specify the drive name @code{(nd)} in the name of
1546*8044SWilliam.Kucharski@Sun.COMthe configuration file. This is because you might change the root drive
1547*8044SWilliam.Kucharski@Sun.COMbefore downloading the configuration from the TFTP server when the
1548*8044SWilliam.Kucharski@Sun.COMpreset menu feature is used (@pxref{Preset Menu}).
1549*8044SWilliam.Kucharski@Sun.COM
1550*8044SWilliam.Kucharski@Sun.COMGRUB sends the string "GRUBClient" as its vendor class identifier to
1551*8044SWilliam.Kucharski@Sun.COMthe BOOTP/DHCP server. This can be used to generate answers specific
1552*8044SWilliam.Kucharski@Sun.COMto GRUB clients on your network.
1553*8044SWilliam.Kucharski@Sun.COM
1554*8044SWilliam.Kucharski@Sun.COMSee the manual of your BOOTP/DHCP server for more information. The
1555*8044SWilliam.Kucharski@Sun.COMexact syntax should differ a little from the example.
1556*8044SWilliam.Kucharski@Sun.COM
1557*8044SWilliam.Kucharski@Sun.COM@node Serial terminal
1558*8044SWilliam.Kucharski@Sun.COM@chapter Using GRUB via a serial line
1559*8044SWilliam.Kucharski@Sun.COM
1560*8044SWilliam.Kucharski@Sun.COMThis chapter describes how to use the serial terminal support in GRUB.
1561*8044SWilliam.Kucharski@Sun.COM
1562*8044SWilliam.Kucharski@Sun.COMIf you have many computers or computers with no display/keyboard, it
1563*8044SWilliam.Kucharski@Sun.COMcould be very useful to control the computers through serial
1564*8044SWilliam.Kucharski@Sun.COMcommunications. To connect one computer with another via a serial line,
1565*8044SWilliam.Kucharski@Sun.COMyou need to prepare a null-modem (cross) serial cable, and you may need
1566*8044SWilliam.Kucharski@Sun.COMto have multiport serial boards, if your computer doesn't have extra
1567*8044SWilliam.Kucharski@Sun.COMserial ports. In addition, a terminal emulator is also required, such as
1568*8044SWilliam.Kucharski@Sun.COMminicom. Refer to a manual of your operating system, for more
1569*8044SWilliam.Kucharski@Sun.COMinformation.
1570*8044SWilliam.Kucharski@Sun.COM
1571*8044SWilliam.Kucharski@Sun.COMAs for GRUB, the instruction to set up a serial terminal is quite
1572*8044SWilliam.Kucharski@Sun.COMsimple. First of all, make sure that you haven't specified the option
1573*8044SWilliam.Kucharski@Sun.COM@option{--disable-serial} to the configure script when you built your
1574*8044SWilliam.Kucharski@Sun.COMGRUB images. If you get them in binary form, probably they have serial
1575*8044SWilliam.Kucharski@Sun.COMterminal support already.
1576*8044SWilliam.Kucharski@Sun.COM
1577*8044SWilliam.Kucharski@Sun.COMThen, initialize your serial terminal after GRUB starts up. Here is an
1578*8044SWilliam.Kucharski@Sun.COMexample:
1579*8044SWilliam.Kucharski@Sun.COM
1580*8044SWilliam.Kucharski@Sun.COM@example
1581*8044SWilliam.Kucharski@Sun.COM@group
1582*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{serial --unit=0 --speed=9600}
1583*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{terminal serial}
1584*8044SWilliam.Kucharski@Sun.COM@end group
1585*8044SWilliam.Kucharski@Sun.COM@end example
1586*8044SWilliam.Kucharski@Sun.COM
1587*8044SWilliam.Kucharski@Sun.COMThe command @command{serial} initializes the serial unit 0 with the
1588*8044SWilliam.Kucharski@Sun.COMspeed 9600bps. The serial unit 0 is usually called @samp{COM1}, so, if
1589*8044SWilliam.Kucharski@Sun.COMyou want to use COM2, you must specify @samp{--unit=1} instead. This
1590*8044SWilliam.Kucharski@Sun.COMcommand accepts many other options, so please refer to @ref{serial},
1591*8044SWilliam.Kucharski@Sun.COMfor more details.
1592*8044SWilliam.Kucharski@Sun.COM
1593*8044SWilliam.Kucharski@Sun.COMThe command @command{terminal} (@pxref{terminal}) chooses which type of
1594*8044SWilliam.Kucharski@Sun.COMterminal you want to use. In the case above, the terminal will be a
1595*8044SWilliam.Kucharski@Sun.COMserial terminal, but you can also pass @code{console} to the command,
1596*8044SWilliam.Kucharski@Sun.COMas @samp{terminal serial console}. In this case, a terminal in which
1597*8044SWilliam.Kucharski@Sun.COMyou press any key will be selected as a GRUB terminal.
1598*8044SWilliam.Kucharski@Sun.COM
1599*8044SWilliam.Kucharski@Sun.COMHowever, note that GRUB assumes that your terminal emulator is
1600*8044SWilliam.Kucharski@Sun.COMcompatible with VT100 by default. This is true for most terminal
1601*8044SWilliam.Kucharski@Sun.COMemulators nowadays, but you should pass the option @option{--dumb} to
1602*8044SWilliam.Kucharski@Sun.COMthe command if your terminal emulator is not VT100-compatible or
1603*8044SWilliam.Kucharski@Sun.COMimplements few VT100 escape sequences. If you specify this option then
1604*8044SWilliam.Kucharski@Sun.COMGRUB provides you with an alternative menu interface, because the normal
1605*8044SWilliam.Kucharski@Sun.COMmenu requires several fancy features of your terminal.
1606*8044SWilliam.Kucharski@Sun.COM
1607*8044SWilliam.Kucharski@Sun.COM
1608*8044SWilliam.Kucharski@Sun.COM@node Preset Menu
1609*8044SWilliam.Kucharski@Sun.COM@chapter Embedding a configuration file into GRUB
1610*8044SWilliam.Kucharski@Sun.COM
1611*8044SWilliam.Kucharski@Sun.COMGRUB supports a @dfn{preset menu} which is to be always loaded before
1612*8044SWilliam.Kucharski@Sun.COMstarting. The preset menu feature is useful, for example, when your
1613*8044SWilliam.Kucharski@Sun.COMcomputer has no console but a serial cable. In this case, it is
1614*8044SWilliam.Kucharski@Sun.COMcritical to set up the serial terminal as soon as possible, since you
1615*8044SWilliam.Kucharski@Sun.COMcannot see any message until the serial terminal begins to work. So it
1616*8044SWilliam.Kucharski@Sun.COMis good to run the commands @command{serial} (@pxref{serial}) and
1617*8044SWilliam.Kucharski@Sun.COM@command{terminal} (@pxref{terminal}) before anything else at the
1618*8044SWilliam.Kucharski@Sun.COMstart-up time.
1619*8044SWilliam.Kucharski@Sun.COM
1620*8044SWilliam.Kucharski@Sun.COMHow the preset menu works is slightly complicated:
1621*8044SWilliam.Kucharski@Sun.COM
1622*8044SWilliam.Kucharski@Sun.COM@enumerate
1623*8044SWilliam.Kucharski@Sun.COM@item
1624*8044SWilliam.Kucharski@Sun.COMGRUB checks if the preset menu feature is used, and loads the preset
1625*8044SWilliam.Kucharski@Sun.COMmenu, if available. This includes running commands and reading boot
1626*8044SWilliam.Kucharski@Sun.COMentries, like an ordinary configuration file.
1627*8044SWilliam.Kucharski@Sun.COM
1628*8044SWilliam.Kucharski@Sun.COM@item
1629*8044SWilliam.Kucharski@Sun.COMGRUB checks if the configuration file is available. Note that this check
1630*8044SWilliam.Kucharski@Sun.COMis performed @strong{regardless of the existence of the preset
1631*8044SWilliam.Kucharski@Sun.COMmenu}. The configuration file is loaded even if the preset menu was
1632*8044SWilliam.Kucharski@Sun.COMloaded.
1633*8044SWilliam.Kucharski@Sun.COM
1634*8044SWilliam.Kucharski@Sun.COM@item
1635*8044SWilliam.Kucharski@Sun.COMIf the preset menu includes any boot entries, they are cleared when
1636*8044SWilliam.Kucharski@Sun.COMthe configuration file is loaded. It doesn't matter whether the
1637*8044SWilliam.Kucharski@Sun.COMconfiguration file has any entries or no entry. The boot entries in the
1638*8044SWilliam.Kucharski@Sun.COMpreset menu are used only when GRUB fails in loading the configuration
1639*8044SWilliam.Kucharski@Sun.COMfile.
1640*8044SWilliam.Kucharski@Sun.COM@end enumerate
1641*8044SWilliam.Kucharski@Sun.COM
1642*8044SWilliam.Kucharski@Sun.COMTo enable the preset menu feature, you must rebuild GRUB specifying a
1643*8044SWilliam.Kucharski@Sun.COMfile to the configure script with the option
1644*8044SWilliam.Kucharski@Sun.COM@option{--enable-preset-menu}. The file has the same semantics as
1645*8044SWilliam.Kucharski@Sun.COMnormal configuration files (@pxref{Configuration}).
1646*8044SWilliam.Kucharski@Sun.COM
1647*8044SWilliam.Kucharski@Sun.COMAnother point you should take care is that the diskless support
1648*8044SWilliam.Kucharski@Sun.COM(@pxref{Diskless}) diverts the preset menu. Diskless images embed a
1649*8044SWilliam.Kucharski@Sun.COMpreset menu to execute the command @command{bootp} (@pxref{bootp})
1650*8044SWilliam.Kucharski@Sun.COMautomatically, unless you specify your own preset menu to the configure
1651*8044SWilliam.Kucharski@Sun.COMscript. This means that you must put commands to initialize a network in
1652*8044SWilliam.Kucharski@Sun.COMthe preset menu yourself, because diskless images don't set it up
1653*8044SWilliam.Kucharski@Sun.COMimplicitly, when you use the preset menu explicitly.
1654*8044SWilliam.Kucharski@Sun.COM
1655*8044SWilliam.Kucharski@Sun.COMTherefore, a typical preset menu used with diskless support would be
1656*8044SWilliam.Kucharski@Sun.COMlike this:
1657*8044SWilliam.Kucharski@Sun.COM
1658*8044SWilliam.Kucharski@Sun.COM@example
1659*8044SWilliam.Kucharski@Sun.COM@group
1660*8044SWilliam.Kucharski@Sun.COM# Set up the serial terminal, first of all.
1661*8044SWilliam.Kucharski@Sun.COMserial --unit=0 --speed=19200
1662*8044SWilliam.Kucharski@Sun.COMterminal --timeout=0 serial
1663*8044SWilliam.Kucharski@Sun.COM
1664*8044SWilliam.Kucharski@Sun.COM# Initialize the network.
1665*8044SWilliam.Kucharski@Sun.COMdhcp
1666*8044SWilliam.Kucharski@Sun.COM@end group
1667*8044SWilliam.Kucharski@Sun.COM@end example
1668*8044SWilliam.Kucharski@Sun.COM
1669*8044SWilliam.Kucharski@Sun.COM
1670*8044SWilliam.Kucharski@Sun.COM@node Security
1671*8044SWilliam.Kucharski@Sun.COM@chapter Protecting your computer from cracking
1672*8044SWilliam.Kucharski@Sun.COM
1673*8044SWilliam.Kucharski@Sun.COMYou may be interested in how to prevent ordinary users from doing
1674*8044SWilliam.Kucharski@Sun.COMwhatever they like, if you share your computer with other people. So
1675*8044SWilliam.Kucharski@Sun.COMthis chapter describes how to improve the security of GRUB.
1676*8044SWilliam.Kucharski@Sun.COM
1677*8044SWilliam.Kucharski@Sun.COMOne thing which could be a security hole is that the user can do too
1678*8044SWilliam.Kucharski@Sun.COMmany things with GRUB, because GRUB allows one to modify its configuration
1679*8044SWilliam.Kucharski@Sun.COMand run arbitrary commands at run-time. For example, the user can even
1680*8044SWilliam.Kucharski@Sun.COMread @file{/etc/passwd} in the command-line interface by the command
1681*8044SWilliam.Kucharski@Sun.COM@command{cat} (@pxref{cat}). So it is necessary to disable all the
1682*8044SWilliam.Kucharski@Sun.COMinteractive operations.
1683*8044SWilliam.Kucharski@Sun.COM
1684*8044SWilliam.Kucharski@Sun.COMThus, GRUB provides a @dfn{password} feature, so that only administrators
1685*8044SWilliam.Kucharski@Sun.COMcan start the interactive operations (i.e. editing menu entries and
1686*8044SWilliam.Kucharski@Sun.COMentering the command-line interface). To use this feature, you need to
1687*8044SWilliam.Kucharski@Sun.COMrun the command @command{password} in your configuration file
1688*8044SWilliam.Kucharski@Sun.COM(@pxref{password}), like this:
1689*8044SWilliam.Kucharski@Sun.COM
1690*8044SWilliam.Kucharski@Sun.COM@example
1691*8044SWilliam.Kucharski@Sun.COMpassword --md5 PASSWORD
1692*8044SWilliam.Kucharski@Sun.COM@end example
1693*8044SWilliam.Kucharski@Sun.COM
1694*8044SWilliam.Kucharski@Sun.COMIf this is specified, GRUB disallows any interactive control, until you
1695*8044SWilliam.Kucharski@Sun.COMpress the key @key{p} and enter a correct password.  The option
1696*8044SWilliam.Kucharski@Sun.COM@option{--md5} tells GRUB that @samp{PASSWORD} is in MD5 format.  If it
1697*8044SWilliam.Kucharski@Sun.COMis omitted, GRUB assumes the @samp{PASSWORD} is in clear text.
1698*8044SWilliam.Kucharski@Sun.COM
1699*8044SWilliam.Kucharski@Sun.COMYou can encrypt your password with the command @command{md5crypt}
1700*8044SWilliam.Kucharski@Sun.COM(@pxref{md5crypt}). For example, run the grub shell (@pxref{Invoking the
1701*8044SWilliam.Kucharski@Sun.COMgrub shell}), and enter your password:
1702*8044SWilliam.Kucharski@Sun.COM
1703*8044SWilliam.Kucharski@Sun.COM@example
1704*8044SWilliam.Kucharski@Sun.COM@group
1705*8044SWilliam.Kucharski@Sun.COMgrub> md5crypt
1706*8044SWilliam.Kucharski@Sun.COMPassword: **********
1707*8044SWilliam.Kucharski@Sun.COMEncrypted: $1$U$JK7xFegdxWH6VuppCUSIb.
1708*8044SWilliam.Kucharski@Sun.COM@end group
1709*8044SWilliam.Kucharski@Sun.COM@end example
1710*8044SWilliam.Kucharski@Sun.COM
1711*8044SWilliam.Kucharski@Sun.COMThen, cut and paste the encrypted password to your configuration file.
1712*8044SWilliam.Kucharski@Sun.COM
1713*8044SWilliam.Kucharski@Sun.COMAlso, you can specify an optional argument to @command{password}. See
1714*8044SWilliam.Kucharski@Sun.COMthis example:
1715*8044SWilliam.Kucharski@Sun.COM
1716*8044SWilliam.Kucharski@Sun.COM@example
1717*8044SWilliam.Kucharski@Sun.COMpassword PASSWORD /boot/grub/menu-admin.lst
1718*8044SWilliam.Kucharski@Sun.COM@end example
1719*8044SWilliam.Kucharski@Sun.COM
1720*8044SWilliam.Kucharski@Sun.COMIn this case, GRUB will load @file{/boot/grub/menu-admin.lst} as a
1721*8044SWilliam.Kucharski@Sun.COMconfiguration file when you enter the valid password.
1722*8044SWilliam.Kucharski@Sun.COM
1723*8044SWilliam.Kucharski@Sun.COMAnother thing which may be dangerous is that any user can choose any
1724*8044SWilliam.Kucharski@Sun.COMmenu entry. Usually, this wouldn't be problematic, but you might want to
1725*8044SWilliam.Kucharski@Sun.COMpermit only administrators to run some of your menu entries, such as an
1726*8044SWilliam.Kucharski@Sun.COMentry for booting an insecure OS like DOS.
1727*8044SWilliam.Kucharski@Sun.COM
1728*8044SWilliam.Kucharski@Sun.COMGRUB provides the command @command{lock} (@pxref{lock}). This command
1729*8044SWilliam.Kucharski@Sun.COMalways fails until you enter the valid password, so you can use it, like
1730*8044SWilliam.Kucharski@Sun.COMthis:
1731*8044SWilliam.Kucharski@Sun.COM
1732*8044SWilliam.Kucharski@Sun.COM@example
1733*8044SWilliam.Kucharski@Sun.COM@group
1734*8044SWilliam.Kucharski@Sun.COMtitle Boot DOS
1735*8044SWilliam.Kucharski@Sun.COMlock
1736*8044SWilliam.Kucharski@Sun.COMrootnoverify (hd0,1)
1737*8044SWilliam.Kucharski@Sun.COMmakeactive
1738*8044SWilliam.Kucharski@Sun.COMchainload +1
1739*8044SWilliam.Kucharski@Sun.COM@end group
1740*8044SWilliam.Kucharski@Sun.COM@end example
1741*8044SWilliam.Kucharski@Sun.COM
1742*8044SWilliam.Kucharski@Sun.COMYou should insert @command{lock} right after @command{title}, because
1743*8044SWilliam.Kucharski@Sun.COMany user can execute commands in an entry until GRUB encounters
1744*8044SWilliam.Kucharski@Sun.COM@command{lock}.
1745*8044SWilliam.Kucharski@Sun.COM
1746*8044SWilliam.Kucharski@Sun.COMYou can also use the command @command{password} instead of
1747*8044SWilliam.Kucharski@Sun.COM@command{lock}. In this case the boot process will ask for the password
1748*8044SWilliam.Kucharski@Sun.COMand stop if it was entered incorrectly.  Since the @command{password}
1749*8044SWilliam.Kucharski@Sun.COMtakes its own @var{PASSWORD} argument this is useful if you want
1750*8044SWilliam.Kucharski@Sun.COMdifferent passwords for different entries.
1751*8044SWilliam.Kucharski@Sun.COM
1752*8044SWilliam.Kucharski@Sun.COM
1753*8044SWilliam.Kucharski@Sun.COM@node Images
1754*8044SWilliam.Kucharski@Sun.COM@chapter GRUB image files
1755*8044SWilliam.Kucharski@Sun.COM
1756*8044SWilliam.Kucharski@Sun.COMGRUB consists of several images: two essential stages, optional stages
1757*8044SWilliam.Kucharski@Sun.COMcalled @dfn{Stage 1.5}, one image for bootable CD-ROM, and two network
1758*8044SWilliam.Kucharski@Sun.COMboot images. Here is a short overview of them. @xref{Internals}, for
1759*8044SWilliam.Kucharski@Sun.COMmore details.
1760*8044SWilliam.Kucharski@Sun.COM
1761*8044SWilliam.Kucharski@Sun.COM@table @file
1762*8044SWilliam.Kucharski@Sun.COM@item stage1
1763*8044SWilliam.Kucharski@Sun.COMThis is an essential image used for booting up GRUB. Usually, this is
1764*8044SWilliam.Kucharski@Sun.COMembedded in an MBR or the boot sector of a partition. Because a PC boot
1765*8044SWilliam.Kucharski@Sun.COMsector is 512 bytes, the size of this image is exactly 512 bytes.
1766*8044SWilliam.Kucharski@Sun.COM
1767*8044SWilliam.Kucharski@Sun.COMAll @file{stage1} must do is to load Stage 2 or Stage 1.5 from a local
1768*8044SWilliam.Kucharski@Sun.COMdisk. Because of the size restriction, @file{stage1} encodes the
1769*8044SWilliam.Kucharski@Sun.COMlocation of Stage 2 (or Stage 1.5) in a block list format, so it never
1770*8044SWilliam.Kucharski@Sun.COMunderstand any filesystem structure.
1771*8044SWilliam.Kucharski@Sun.COM
1772*8044SWilliam.Kucharski@Sun.COM@item stage2
1773*8044SWilliam.Kucharski@Sun.COMThis is the core image of GRUB. It does everything but booting up
1774*8044SWilliam.Kucharski@Sun.COMitself. Usually, this is put in a filesystem, but that is not required.
1775*8044SWilliam.Kucharski@Sun.COM
1776*8044SWilliam.Kucharski@Sun.COM@item e2fs_stage1_5
1777*8044SWilliam.Kucharski@Sun.COM@itemx fat_stage1_5
1778*8044SWilliam.Kucharski@Sun.COM@itemx ffs_stage1_5
1779*8044SWilliam.Kucharski@Sun.COM@itemx jfs_stage1_5
1780*8044SWilliam.Kucharski@Sun.COM@itemx minix_stage1_5
1781*8044SWilliam.Kucharski@Sun.COM@itemx reiserfs_stage1_5
1782*8044SWilliam.Kucharski@Sun.COM@itemx vstafs_stage1_5
1783*8044SWilliam.Kucharski@Sun.COM@itemx xfs_stage1_5
1784*8044SWilliam.Kucharski@Sun.COM
1785*8044SWilliam.Kucharski@Sun.COMThese are called @dfn{Stage 1.5}, because they serve as a bridge
1786*8044SWilliam.Kucharski@Sun.COMbetween @file{stage1} and @file{stage2}, that is to say, Stage 1.5 is
1787*8044SWilliam.Kucharski@Sun.COMloaded by Stage 1 and Stage 1.5 loads Stage 2. The difference between
1788*8044SWilliam.Kucharski@Sun.COM@file{stage1} and @file{*_stage1_5} is that the former doesn't
1789*8044SWilliam.Kucharski@Sun.COMunderstand any filesystem while the latter understands one filesystem
1790*8044SWilliam.Kucharski@Sun.COM(e.g. @file{e2fs_stage1_5} understands ext2fs). So you can move the
1791*8044SWilliam.Kucharski@Sun.COMStage 2 image to another location safely, even after GRUB has been
1792*8044SWilliam.Kucharski@Sun.COMinstalled.
1793*8044SWilliam.Kucharski@Sun.COM
1794*8044SWilliam.Kucharski@Sun.COMWhile Stage 2 cannot generally be embedded in a fixed area as the size
1795*8044SWilliam.Kucharski@Sun.COMis so large, Stage 1.5 can be installed into the area right after an MBR,
1796*8044SWilliam.Kucharski@Sun.COMor the boot loader area of a ReiserFS or a FFS.
1797*8044SWilliam.Kucharski@Sun.COM
1798*8044SWilliam.Kucharski@Sun.COM@item stage2_eltorito
1799*8044SWilliam.Kucharski@Sun.COMThis is a boot image for CD-ROMs using the @dfn{no emulation mode} in
1800*8044SWilliam.Kucharski@Sun.COMEl Torito specification. This is identical to Stage 2, except that
1801*8044SWilliam.Kucharski@Sun.COMthis boots up without Stage 1 and sets up a special drive @samp{(cd)}.
1802*8044SWilliam.Kucharski@Sun.COM
1803*8044SWilliam.Kucharski@Sun.COM@item nbgrub
1804*8044SWilliam.Kucharski@Sun.COMThis is a network boot image for the Network Image Proposal used by some
1805*8044SWilliam.Kucharski@Sun.COMnetwork boot loaders, such as Etherboot. This is mostly the same as
1806*8044SWilliam.Kucharski@Sun.COMStage 2, but it also sets up a network and loads a configuration file
1807*8044SWilliam.Kucharski@Sun.COMfrom the network.
1808*8044SWilliam.Kucharski@Sun.COM
1809*8044SWilliam.Kucharski@Sun.COM@item pxegrub
1810*8044SWilliam.Kucharski@Sun.COMThis is another network boot image for the Preboot Execution Environment
1811*8044SWilliam.Kucharski@Sun.COMused by several Netboot ROMs. This is identical to @file{nbgrub}, except
1812*8044SWilliam.Kucharski@Sun.COMfor the format.
1813*8044SWilliam.Kucharski@Sun.COM@end table
1814*8044SWilliam.Kucharski@Sun.COM
1815*8044SWilliam.Kucharski@Sun.COM
1816*8044SWilliam.Kucharski@Sun.COM@node Filesystem
1817*8044SWilliam.Kucharski@Sun.COM@chapter Filesystem syntax and semantics
1818*8044SWilliam.Kucharski@Sun.COM
1819*8044SWilliam.Kucharski@Sun.COMGRUB uses a special syntax for specifying disk drives which can be
1820*8044SWilliam.Kucharski@Sun.COMaccessed by BIOS. Because of BIOS limitations, GRUB cannot distinguish
1821*8044SWilliam.Kucharski@Sun.COMbetween IDE, ESDI, SCSI, or others. You must know yourself which BIOS
1822*8044SWilliam.Kucharski@Sun.COMdevice is equivalent to which OS device. Normally, that will be clear if
1823*8044SWilliam.Kucharski@Sun.COMyou see the files in a device or use the command @command{find}
1824*8044SWilliam.Kucharski@Sun.COM(@pxref{find}).
1825*8044SWilliam.Kucharski@Sun.COM
1826*8044SWilliam.Kucharski@Sun.COM@menu
1827*8044SWilliam.Kucharski@Sun.COM* Device syntax::               How to specify devices
1828*8044SWilliam.Kucharski@Sun.COM* File name syntax::            How to specify files
1829*8044SWilliam.Kucharski@Sun.COM* Block list syntax::           How to specify block lists
1830*8044SWilliam.Kucharski@Sun.COM@end menu
1831*8044SWilliam.Kucharski@Sun.COM
1832*8044SWilliam.Kucharski@Sun.COM
1833*8044SWilliam.Kucharski@Sun.COM@node Device syntax
1834*8044SWilliam.Kucharski@Sun.COM@section How to specify devices
1835*8044SWilliam.Kucharski@Sun.COM
1836*8044SWilliam.Kucharski@Sun.COMThe device syntax is like this:
1837*8044SWilliam.Kucharski@Sun.COM
1838*8044SWilliam.Kucharski@Sun.COM@example
1839*8044SWilliam.Kucharski@Sun.COM@code{(@var{device}[,@var{part-num}][,@var{bsd-subpart-letter}])}
1840*8044SWilliam.Kucharski@Sun.COM@end example
1841*8044SWilliam.Kucharski@Sun.COM
1842*8044SWilliam.Kucharski@Sun.COM@samp{[]} means the parameter is optional. @var{device} should be
1843*8044SWilliam.Kucharski@Sun.COMeither @samp{fd} or @samp{hd} followed by a digit, like @samp{fd0}.
1844*8044SWilliam.Kucharski@Sun.COMBut you can also set @var{device} to a hexadecimal or a decimal number
1845*8044SWilliam.Kucharski@Sun.COMwhich is a BIOS drive number, so the following are equivalent:
1846*8044SWilliam.Kucharski@Sun.COM
1847*8044SWilliam.Kucharski@Sun.COM@example
1848*8044SWilliam.Kucharski@Sun.COM(hd0)
1849*8044SWilliam.Kucharski@Sun.COM(0x80)
1850*8044SWilliam.Kucharski@Sun.COM(128)
1851*8044SWilliam.Kucharski@Sun.COM@end example
1852*8044SWilliam.Kucharski@Sun.COM
1853*8044SWilliam.Kucharski@Sun.COM@var{part-num} represents the partition number of @var{device}, starting
1854*8044SWilliam.Kucharski@Sun.COMfrom zero for primary partitions and from four for extended partitions,
1855*8044SWilliam.Kucharski@Sun.COMand @var{bsd-subpart-letter} represents the BSD disklabel subpartition,
1856*8044SWilliam.Kucharski@Sun.COMsuch as @samp{a} or @samp{e}.
1857*8044SWilliam.Kucharski@Sun.COM
1858*8044SWilliam.Kucharski@Sun.COMA shortcut for specifying BSD subpartitions is
1859*8044SWilliam.Kucharski@Sun.COM@code{(@var{device},@var{bsd-subpart-letter})}, in this case, GRUB
1860*8044SWilliam.Kucharski@Sun.COMsearches for the first PC partition containing a BSD disklabel, then
1861*8044SWilliam.Kucharski@Sun.COMfinds the subpartition @var{bsd-subpart-letter}. Here is an example:
1862*8044SWilliam.Kucharski@Sun.COM
1863*8044SWilliam.Kucharski@Sun.COM@example
1864*8044SWilliam.Kucharski@Sun.COM(hd0,a)
1865*8044SWilliam.Kucharski@Sun.COM@end example
1866*8044SWilliam.Kucharski@Sun.COM
1867*8044SWilliam.Kucharski@Sun.COMThe syntax @samp{(hd0)} represents using the entire disk (or the
1868*8044SWilliam.Kucharski@Sun.COMMBR when installing GRUB), while the syntax @samp{(hd0,0)}
1869*8044SWilliam.Kucharski@Sun.COMrepresents using the first partition of the disk (or the boot sector
1870*8044SWilliam.Kucharski@Sun.COMof the partition when installing GRUB).
1871*8044SWilliam.Kucharski@Sun.COM
1872*8044SWilliam.Kucharski@Sun.COMIf you enabled the network support, the special drive, @samp{(nd)}, is
1873*8044SWilliam.Kucharski@Sun.COMalso available. Before using the network drive, you must initialize the
1874*8044SWilliam.Kucharski@Sun.COMnetwork. @xref{Network}, for more information.
1875*8044SWilliam.Kucharski@Sun.COM
1876*8044SWilliam.Kucharski@Sun.COMIf you boot GRUB from a CD-ROM, @samp{(cd)} is available. @xref{Making
1877*8044SWilliam.Kucharski@Sun.COMa GRUB bootable CD-ROM}, for details.
1878*8044SWilliam.Kucharski@Sun.COM
1879*8044SWilliam.Kucharski@Sun.COM
1880*8044SWilliam.Kucharski@Sun.COM@node File name syntax
1881*8044SWilliam.Kucharski@Sun.COM@section How to specify files
1882*8044SWilliam.Kucharski@Sun.COM
1883*8044SWilliam.Kucharski@Sun.COMThere are two ways to specify files, by @dfn{absolute file name} and by
1884*8044SWilliam.Kucharski@Sun.COM@dfn{block list}.
1885*8044SWilliam.Kucharski@Sun.COM
1886*8044SWilliam.Kucharski@Sun.COMAn absolute file name resembles a Unix absolute file name, using
1887*8044SWilliam.Kucharski@Sun.COM@samp{/} for the directory separator (not @samp{\} as in DOS). One
1888*8044SWilliam.Kucharski@Sun.COMexample is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file
1889*8044SWilliam.Kucharski@Sun.COM@file{/boot/grub/menu.lst} in the first partition of the first hard
1890*8044SWilliam.Kucharski@Sun.COMdisk. If you omit the device name in an absolute file name, GRUB uses
1891*8044SWilliam.Kucharski@Sun.COMGRUB's @dfn{root device} implicitly. So if you set the root device to,
1892*8044SWilliam.Kucharski@Sun.COMsay, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then
1893*8044SWilliam.Kucharski@Sun.COM@code{/boot/kernel} is the same as @code{(hd1,0)/boot/kernel}.
1894*8044SWilliam.Kucharski@Sun.COM
1895*8044SWilliam.Kucharski@Sun.COM
1896*8044SWilliam.Kucharski@Sun.COM@node Block list syntax
1897*8044SWilliam.Kucharski@Sun.COM@section How to specify block lists
1898*8044SWilliam.Kucharski@Sun.COM
1899*8044SWilliam.Kucharski@Sun.COMA block list is used for specifying a file that doesn't appear in the
1900*8044SWilliam.Kucharski@Sun.COMfilesystem, like a chainloader. The syntax is
1901*8044SWilliam.Kucharski@Sun.COM@code{[@var{offset}]+@var{length}[,[@var{offset}]+@var{length}]@dots{}}.
1902*8044SWilliam.Kucharski@Sun.COMHere is an example:
1903*8044SWilliam.Kucharski@Sun.COM
1904*8044SWilliam.Kucharski@Sun.COM@example
1905*8044SWilliam.Kucharski@Sun.COM@code{0+100,200+1,300+300}
1906*8044SWilliam.Kucharski@Sun.COM@end example
1907*8044SWilliam.Kucharski@Sun.COM
1908*8044SWilliam.Kucharski@Sun.COMThis represents that GRUB should read blocks 0 through 99, block 200,
1909*8044SWilliam.Kucharski@Sun.COMand blocks 300 through 599. If you omit an offset, then GRUB assumes
1910*8044SWilliam.Kucharski@Sun.COMthe offset is zero.
1911*8044SWilliam.Kucharski@Sun.COM
1912*8044SWilliam.Kucharski@Sun.COMLike the file name syntax (@pxref{File name syntax}), if a blocklist
1913*8044SWilliam.Kucharski@Sun.COMdoes not contain a device name, then GRUB uses GRUB's @dfn{root
1914*8044SWilliam.Kucharski@Sun.COMdevice}. So @code{(hd0,1)+1} is the same as @code{+1} when the root
1915*8044SWilliam.Kucharski@Sun.COMdevice is @samp{(hd0,1)}.
1916*8044SWilliam.Kucharski@Sun.COM
1917*8044SWilliam.Kucharski@Sun.COM
1918*8044SWilliam.Kucharski@Sun.COM@node Interface
1919*8044SWilliam.Kucharski@Sun.COM@chapter GRUB's user interface
1920*8044SWilliam.Kucharski@Sun.COM
1921*8044SWilliam.Kucharski@Sun.COMGRUB has both a simple menu interface for choosing preset entries from a
1922*8044SWilliam.Kucharski@Sun.COMconfiguration file, and a highly flexible command-line for performing
1923*8044SWilliam.Kucharski@Sun.COMany desired combination of boot commands.
1924*8044SWilliam.Kucharski@Sun.COM
1925*8044SWilliam.Kucharski@Sun.COMGRUB looks for its configuration file as soon as it is loaded. If one
1926*8044SWilliam.Kucharski@Sun.COMis found, then the full menu interface is activated using whatever
1927*8044SWilliam.Kucharski@Sun.COMentries were found in the file. If you choose the @dfn{command-line} menu
1928*8044SWilliam.Kucharski@Sun.COMoption, or if the configuration file was not found, then GRUB drops to
1929*8044SWilliam.Kucharski@Sun.COMthe command-line interface.
1930*8044SWilliam.Kucharski@Sun.COM
1931*8044SWilliam.Kucharski@Sun.COM@menu
1932*8044SWilliam.Kucharski@Sun.COM* Command-line interface::      The flexible command-line interface
1933*8044SWilliam.Kucharski@Sun.COM* Menu interface::              The simple menu interface
1934*8044SWilliam.Kucharski@Sun.COM* Menu entry editor::           Editing a menu entry
1935*8044SWilliam.Kucharski@Sun.COM* Hidden menu interface::       The hidden menu interface
1936*8044SWilliam.Kucharski@Sun.COM@end menu
1937*8044SWilliam.Kucharski@Sun.COM
1938*8044SWilliam.Kucharski@Sun.COM
1939*8044SWilliam.Kucharski@Sun.COM@node Command-line interface
1940*8044SWilliam.Kucharski@Sun.COM@section The flexible command-line interface
1941*8044SWilliam.Kucharski@Sun.COM
1942*8044SWilliam.Kucharski@Sun.COMThe command-line interface provides a prompt and after it an editable
1943*8044SWilliam.Kucharski@Sun.COMtext area much like a command-line in Unix or DOS. Each command is
1944*8044SWilliam.Kucharski@Sun.COMimmediately executed after it is entered@footnote{However, this
1945*8044SWilliam.Kucharski@Sun.COMbehavior will be changed in the future version, in a user-invisible
1946*8044SWilliam.Kucharski@Sun.COMway.}. The commands (@pxref{Command-line and menu entry commands}) are a
1947*8044SWilliam.Kucharski@Sun.COMsubset of those available in the configuration file, used with exactly
1948*8044SWilliam.Kucharski@Sun.COMthe same syntax.
1949*8044SWilliam.Kucharski@Sun.COM
1950*8044SWilliam.Kucharski@Sun.COMCursor movement and editing of the text on the line can be done via a
1951*8044SWilliam.Kucharski@Sun.COMsubset of the functions available in the Bash shell:
1952*8044SWilliam.Kucharski@Sun.COM
1953*8044SWilliam.Kucharski@Sun.COM@table @key
1954*8044SWilliam.Kucharski@Sun.COM@item C-f
1955*8044SWilliam.Kucharski@Sun.COM@itemx PC right key
1956*8044SWilliam.Kucharski@Sun.COMMove forward one character.
1957*8044SWilliam.Kucharski@Sun.COM
1958*8044SWilliam.Kucharski@Sun.COM@item C-b
1959*8044SWilliam.Kucharski@Sun.COM@itemx PC left key
1960*8044SWilliam.Kucharski@Sun.COMMove back one character.
1961*8044SWilliam.Kucharski@Sun.COM
1962*8044SWilliam.Kucharski@Sun.COM@item C-a
1963*8044SWilliam.Kucharski@Sun.COM@itemx HOME
1964*8044SWilliam.Kucharski@Sun.COMMove to the start of the line.
1965*8044SWilliam.Kucharski@Sun.COM
1966*8044SWilliam.Kucharski@Sun.COM@item C-e
1967*8044SWilliam.Kucharski@Sun.COM@itemx END
1968*8044SWilliam.Kucharski@Sun.COMMove the the end of the line.
1969*8044SWilliam.Kucharski@Sun.COM
1970*8044SWilliam.Kucharski@Sun.COM@item C-d
1971*8044SWilliam.Kucharski@Sun.COM@itemx DEL
1972*8044SWilliam.Kucharski@Sun.COMDelete the character underneath the cursor.
1973*8044SWilliam.Kucharski@Sun.COM
1974*8044SWilliam.Kucharski@Sun.COM@item C-h
1975*8044SWilliam.Kucharski@Sun.COM@itemx BS
1976*8044SWilliam.Kucharski@Sun.COMDelete the character to the left of the cursor.
1977*8044SWilliam.Kucharski@Sun.COM
1978*8044SWilliam.Kucharski@Sun.COM@item C-k
1979*8044SWilliam.Kucharski@Sun.COMKill the text from the current cursor position to the end of the line.
1980*8044SWilliam.Kucharski@Sun.COM
1981*8044SWilliam.Kucharski@Sun.COM@item C-u
1982*8044SWilliam.Kucharski@Sun.COMKill backward from the cursor to the beginning of the line.
1983*8044SWilliam.Kucharski@Sun.COM
1984*8044SWilliam.Kucharski@Sun.COM@item C-y
1985*8044SWilliam.Kucharski@Sun.COMYank the killed text back into the buffer at the cursor.
1986*8044SWilliam.Kucharski@Sun.COM
1987*8044SWilliam.Kucharski@Sun.COM@item C-p
1988*8044SWilliam.Kucharski@Sun.COM@itemx PC up key
1989*8044SWilliam.Kucharski@Sun.COMMove up through the history list.
1990*8044SWilliam.Kucharski@Sun.COM
1991*8044SWilliam.Kucharski@Sun.COM@item C-n
1992*8044SWilliam.Kucharski@Sun.COM@itemx PC down key
1993*8044SWilliam.Kucharski@Sun.COMMove down through the history list.
1994*8044SWilliam.Kucharski@Sun.COM@end table
1995*8044SWilliam.Kucharski@Sun.COM
1996*8044SWilliam.Kucharski@Sun.COMWhen typing commands interactively, if the cursor is within or before
1997*8044SWilliam.Kucharski@Sun.COMthe first word in the command-line, pressing the @key{TAB} key (or
1998*8044SWilliam.Kucharski@Sun.COM@key{C-i}) will display a listing of the available commands, and if the
1999*8044SWilliam.Kucharski@Sun.COMcursor is after the first word, the @kbd{@key{TAB}} will provide a
2000*8044SWilliam.Kucharski@Sun.COMcompletion listing of disks, partitions, and file names depending on the
2001*8044SWilliam.Kucharski@Sun.COMcontext. Note that to obtain a list of drives, one must open a
2002*8044SWilliam.Kucharski@Sun.COMparenthesis, as @command{root (}.
2003*8044SWilliam.Kucharski@Sun.COM
2004*8044SWilliam.Kucharski@Sun.COMNote that you cannot use the completion functionality in the TFTP
2005*8044SWilliam.Kucharski@Sun.COMfilesystem. This is because TFTP doesn't support file name listing for
2006*8044SWilliam.Kucharski@Sun.COMthe security.
2007*8044SWilliam.Kucharski@Sun.COM
2008*8044SWilliam.Kucharski@Sun.COM
2009*8044SWilliam.Kucharski@Sun.COM@node Menu interface
2010*8044SWilliam.Kucharski@Sun.COM@section The simple menu interface
2011*8044SWilliam.Kucharski@Sun.COM
2012*8044SWilliam.Kucharski@Sun.COMThe menu interface is quite easy to use. Its commands are both
2013*8044SWilliam.Kucharski@Sun.COMreasonably intuitive and described on screen.
2014*8044SWilliam.Kucharski@Sun.COM
2015*8044SWilliam.Kucharski@Sun.COMBasically, the menu interface provides a list of @dfn{boot entries} to
2016*8044SWilliam.Kucharski@Sun.COMthe user to choose from. Use the arrow keys to select the entry of
2017*8044SWilliam.Kucharski@Sun.COMchoice, then press @key{RET} to run it.  An optional timeout is
2018*8044SWilliam.Kucharski@Sun.COMavailable to boot the default entry (the first one if not set), which is
2019*8044SWilliam.Kucharski@Sun.COMaborted by pressing any key.
2020*8044SWilliam.Kucharski@Sun.COM
2021*8044SWilliam.Kucharski@Sun.COMCommands are available to enter a bare command-line by pressing @key{c}
2022*8044SWilliam.Kucharski@Sun.COM(which operates exactly like the non-config-file version of GRUB, but
2023*8044SWilliam.Kucharski@Sun.COMallows one to return to the menu if desired by pressing @key{ESC}) or to
2024*8044SWilliam.Kucharski@Sun.COMedit any of the @dfn{boot entries} by pressing @key{e}.
2025*8044SWilliam.Kucharski@Sun.COM
2026*8044SWilliam.Kucharski@Sun.COMIf you protect the menu interface with a password (@pxref{Security}),
2027*8044SWilliam.Kucharski@Sun.COMall you can do is choose an entry by pressing @key{RET}, or press
2028*8044SWilliam.Kucharski@Sun.COM@key{p} to enter the password.
2029*8044SWilliam.Kucharski@Sun.COM
2030*8044SWilliam.Kucharski@Sun.COM
2031*8044SWilliam.Kucharski@Sun.COM@node Menu entry editor
2032*8044SWilliam.Kucharski@Sun.COM@section Editing a menu entry
2033*8044SWilliam.Kucharski@Sun.COM
2034*8044SWilliam.Kucharski@Sun.COMThe menu entry editor looks much like the main menu interface, but the
2035*8044SWilliam.Kucharski@Sun.COMlines in the menu are individual commands in the selected entry instead
2036*8044SWilliam.Kucharski@Sun.COMof entry names.
2037*8044SWilliam.Kucharski@Sun.COM
2038*8044SWilliam.Kucharski@Sun.COMIf an @key{ESC} is pressed in the editor, it aborts all the changes made
2039*8044SWilliam.Kucharski@Sun.COMto the configuration entry and returns to the main menu interface.
2040*8044SWilliam.Kucharski@Sun.COM
2041*8044SWilliam.Kucharski@Sun.COMWhen a particular line is selected, the editor places the user in a
2042*8044SWilliam.Kucharski@Sun.COMspecial version of the GRUB command-line to edit that line.  When the
2043*8044SWilliam.Kucharski@Sun.COMuser hits @key{RET}, GRUB replaces the line in question in the boot
2044*8044SWilliam.Kucharski@Sun.COMentry with the changes (unless it was aborted via @key{ESC},
2045*8044SWilliam.Kucharski@Sun.COMin which case the changes are thrown away).
2046*8044SWilliam.Kucharski@Sun.COM
2047*8044SWilliam.Kucharski@Sun.COMIf you want to add a new line to the menu entry, press @key{o} if adding
2048*8044SWilliam.Kucharski@Sun.COMa line after the current line or press @key{O} if before the current
2049*8044SWilliam.Kucharski@Sun.COMline.
2050*8044SWilliam.Kucharski@Sun.COM
2051*8044SWilliam.Kucharski@Sun.COMTo delete a line, hit the key @key{d}. Although GRUB unfortunately
2052*8044SWilliam.Kucharski@Sun.COMdoes not support @dfn{undo}, you can do almost the same thing by just
2053*8044SWilliam.Kucharski@Sun.COMreturning to the main menu.
2054*8044SWilliam.Kucharski@Sun.COM
2055*8044SWilliam.Kucharski@Sun.COM
2056*8044SWilliam.Kucharski@Sun.COM@node Hidden menu interface
2057*8044SWilliam.Kucharski@Sun.COM@section The hidden menu interface
2058*8044SWilliam.Kucharski@Sun.COM
2059*8044SWilliam.Kucharski@Sun.COMWhen your terminal is dumb or you request GRUB to hide the menu
2060*8044SWilliam.Kucharski@Sun.COMinterface explicitly with the command @command{hiddenmenu}
2061*8044SWilliam.Kucharski@Sun.COM(@pxref{hiddenmenu}), GRUB doesn't show the menu interface (@pxref{Menu
2062*8044SWilliam.Kucharski@Sun.COMinterface}) and automatically boots the default entry, unless
2063*8044SWilliam.Kucharski@Sun.COMinterrupted by pressing @key{ESC}.
2064*8044SWilliam.Kucharski@Sun.COM
2065*8044SWilliam.Kucharski@Sun.COMWhen you interrupt the timeout and your terminal is dumb, GRUB falls
2066*8044SWilliam.Kucharski@Sun.COMback to the command-line interface (@pxref{Command-line interface}).
2067*8044SWilliam.Kucharski@Sun.COM
2068*8044SWilliam.Kucharski@Sun.COM
2069*8044SWilliam.Kucharski@Sun.COM@node Commands
2070*8044SWilliam.Kucharski@Sun.COM@chapter The list of available commands
2071*8044SWilliam.Kucharski@Sun.COM
2072*8044SWilliam.Kucharski@Sun.COMIn this chapter, we list all commands that are available in GRUB.
2073*8044SWilliam.Kucharski@Sun.COM
2074*8044SWilliam.Kucharski@Sun.COMCommands belong to different groups. A few can only be used in
2075*8044SWilliam.Kucharski@Sun.COMthe global section of the configuration file (or ``menu''); most
2076*8044SWilliam.Kucharski@Sun.COMof them can be entered on the command-line and can be used either
2077*8044SWilliam.Kucharski@Sun.COManywhere in the menu or specifically in the menu entries.
2078*8044SWilliam.Kucharski@Sun.COM
2079*8044SWilliam.Kucharski@Sun.COM@menu
2080*8044SWilliam.Kucharski@Sun.COM* Menu-specific commands::
2081*8044SWilliam.Kucharski@Sun.COM* General commands::
2082*8044SWilliam.Kucharski@Sun.COM* Command-line and menu entry commands::
2083*8044SWilliam.Kucharski@Sun.COM@end menu
2084*8044SWilliam.Kucharski@Sun.COM
2085*8044SWilliam.Kucharski@Sun.COM
2086*8044SWilliam.Kucharski@Sun.COM@node Menu-specific commands
2087*8044SWilliam.Kucharski@Sun.COM@section The list of commands for the menu only
2088*8044SWilliam.Kucharski@Sun.COM
2089*8044SWilliam.Kucharski@Sun.COMThe semantics used in parsing the configuration file are the following:
2090*8044SWilliam.Kucharski@Sun.COM
2091*8044SWilliam.Kucharski@Sun.COM@itemize @bullet
2092*8044SWilliam.Kucharski@Sun.COM@item
2093*8044SWilliam.Kucharski@Sun.COMThe menu-specific commands have to be used before any others.
2094*8044SWilliam.Kucharski@Sun.COM
2095*8044SWilliam.Kucharski@Sun.COM@item
2096*8044SWilliam.Kucharski@Sun.COMThe files @emph{must} be in plain-text format.
2097*8044SWilliam.Kucharski@Sun.COM
2098*8044SWilliam.Kucharski@Sun.COM@item
2099*8044SWilliam.Kucharski@Sun.COM@samp{#} at the beginning of a line in a configuration file means it is
2100*8044SWilliam.Kucharski@Sun.COMonly a comment.
2101*8044SWilliam.Kucharski@Sun.COM
2102*8044SWilliam.Kucharski@Sun.COM@item
2103*8044SWilliam.Kucharski@Sun.COMOptions are separated by spaces.
2104*8044SWilliam.Kucharski@Sun.COM
2105*8044SWilliam.Kucharski@Sun.COM@item
2106*8044SWilliam.Kucharski@Sun.COMAll numbers can be either decimal or hexadecimal. A hexadecimal number
2107*8044SWilliam.Kucharski@Sun.COMmust be preceded by @samp{0x}, and is case-insensitive.
2108*8044SWilliam.Kucharski@Sun.COM
2109*8044SWilliam.Kucharski@Sun.COM@item
2110*8044SWilliam.Kucharski@Sun.COMExtra options or text at the end of the line are ignored unless otherwise
2111*8044SWilliam.Kucharski@Sun.COMspecified.
2112*8044SWilliam.Kucharski@Sun.COM
2113*8044SWilliam.Kucharski@Sun.COM@item
2114*8044SWilliam.Kucharski@Sun.COMUnrecognized commands are added to the current entry, except before entries
2115*8044SWilliam.Kucharski@Sun.COMstart, where they are ignored.
2116*8044SWilliam.Kucharski@Sun.COM@end itemize
2117*8044SWilliam.Kucharski@Sun.COM
2118*8044SWilliam.Kucharski@Sun.COMThese commands can only be used in the menu:
2119*8044SWilliam.Kucharski@Sun.COM
2120*8044SWilliam.Kucharski@Sun.COM@menu
2121*8044SWilliam.Kucharski@Sun.COM* default::                     Set the default entry
2122*8044SWilliam.Kucharski@Sun.COM* fallback::                    Set the fallback entry
2123*8044SWilliam.Kucharski@Sun.COM* hiddenmenu::                  Hide the menu interface
2124*8044SWilliam.Kucharski@Sun.COM* timeout::                     Set the timeout
2125*8044SWilliam.Kucharski@Sun.COM* title::                       Start a menu entry
2126*8044SWilliam.Kucharski@Sun.COM@end menu
2127*8044SWilliam.Kucharski@Sun.COM
2128*8044SWilliam.Kucharski@Sun.COM
2129*8044SWilliam.Kucharski@Sun.COM@node default
2130*8044SWilliam.Kucharski@Sun.COM@subsection default
2131*8044SWilliam.Kucharski@Sun.COM
2132*8044SWilliam.Kucharski@Sun.COM@deffn Command default num
2133*8044SWilliam.Kucharski@Sun.COMSet the default entry to the entry number @var{num}. Numbering starts
2134*8044SWilliam.Kucharski@Sun.COMfrom 0, and the entry number 0 is the default if the command is not
2135*8044SWilliam.Kucharski@Sun.COMused.
2136*8044SWilliam.Kucharski@Sun.COM
2137*8044SWilliam.Kucharski@Sun.COMYou can specify @samp{saved} instead of a number. In this case, the
2138*8044SWilliam.Kucharski@Sun.COMdefault entry is the entry saved with the command
2139*8044SWilliam.Kucharski@Sun.COM@command{savedefault}. @xref{savedefault}, for more information.
2140*8044SWilliam.Kucharski@Sun.COM@end deffn
2141*8044SWilliam.Kucharski@Sun.COM
2142*8044SWilliam.Kucharski@Sun.COM
2143*8044SWilliam.Kucharski@Sun.COM@node fallback
2144*8044SWilliam.Kucharski@Sun.COM@subsection fallback
2145*8044SWilliam.Kucharski@Sun.COM
2146*8044SWilliam.Kucharski@Sun.COM@deffn Command fallback num...
2147*8044SWilliam.Kucharski@Sun.COMGo into unattended boot mode: if the default boot entry has any errors,
2148*8044SWilliam.Kucharski@Sun.COMinstead of waiting for the user to do something, immediately start
2149*8044SWilliam.Kucharski@Sun.COMover using the @var{num} entry (same numbering as the @code{default}
2150*8044SWilliam.Kucharski@Sun.COMcommand (@pxref{default})). This obviously won't help if the machine was
2151*8044SWilliam.Kucharski@Sun.COMrebooted by a kernel that GRUB loaded. You can specify multiple
2152*8044SWilliam.Kucharski@Sun.COMfallback entry numbers.
2153*8044SWilliam.Kucharski@Sun.COM@end deffn
2154*8044SWilliam.Kucharski@Sun.COM
2155*8044SWilliam.Kucharski@Sun.COM
2156*8044SWilliam.Kucharski@Sun.COM@node hiddenmenu
2157*8044SWilliam.Kucharski@Sun.COM@subsection hiddenmenu
2158*8044SWilliam.Kucharski@Sun.COM
2159*8044SWilliam.Kucharski@Sun.COM@deffn Command hiddenmenu
2160*8044SWilliam.Kucharski@Sun.COMDon't display the menu. If the command is used, no menu will be
2161*8044SWilliam.Kucharski@Sun.COMdisplayed on the control terminal, and the default entry will be
2162*8044SWilliam.Kucharski@Sun.COMbooted after the timeout expired. The user can still request the
2163*8044SWilliam.Kucharski@Sun.COMmenu to be displayed by pressing @key{ESC} before the timeout
2164*8044SWilliam.Kucharski@Sun.COMexpires. See also @ref{Hidden menu interface}.
2165*8044SWilliam.Kucharski@Sun.COM@end deffn
2166*8044SWilliam.Kucharski@Sun.COM
2167*8044SWilliam.Kucharski@Sun.COM
2168*8044SWilliam.Kucharski@Sun.COM@node timeout
2169*8044SWilliam.Kucharski@Sun.COM@subsection timeout
2170*8044SWilliam.Kucharski@Sun.COM
2171*8044SWilliam.Kucharski@Sun.COM@deffn Command timeout sec
2172*8044SWilliam.Kucharski@Sun.COMSet a timeout, in @var{sec} seconds, before automatically booting the
2173*8044SWilliam.Kucharski@Sun.COMdefault entry (normally the first entry defined).
2174*8044SWilliam.Kucharski@Sun.COM@end deffn
2175*8044SWilliam.Kucharski@Sun.COM
2176*8044SWilliam.Kucharski@Sun.COM
2177*8044SWilliam.Kucharski@Sun.COM@node title
2178*8044SWilliam.Kucharski@Sun.COM@subsection title
2179*8044SWilliam.Kucharski@Sun.COM
2180*8044SWilliam.Kucharski@Sun.COM@deffn Command title name @dots{}
2181*8044SWilliam.Kucharski@Sun.COMStart a new boot entry, and set its name to the contents of the rest of
2182*8044SWilliam.Kucharski@Sun.COMthe line, starting with the first non-space character.
2183*8044SWilliam.Kucharski@Sun.COM@end deffn
2184*8044SWilliam.Kucharski@Sun.COM
2185*8044SWilliam.Kucharski@Sun.COM
2186*8044SWilliam.Kucharski@Sun.COM@node General commands
2187*8044SWilliam.Kucharski@Sun.COM@section The list of general commands
2188*8044SWilliam.Kucharski@Sun.COM
2189*8044SWilliam.Kucharski@Sun.COMCommands usable anywhere in the menu and in the command-line.
2190*8044SWilliam.Kucharski@Sun.COM
2191*8044SWilliam.Kucharski@Sun.COM@menu
2192*8044SWilliam.Kucharski@Sun.COM* bootp::                       Initialize a network device via BOOTP
2193*8044SWilliam.Kucharski@Sun.COM* color::                       Color the menu interface
2194*8044SWilliam.Kucharski@Sun.COM* device::                      Specify a file as a drive
2195*8044SWilliam.Kucharski@Sun.COM* dhcp::                        Initialize a network device via DHCP
2196*8044SWilliam.Kucharski@Sun.COM* hide::                        Hide a partition
2197*8044SWilliam.Kucharski@Sun.COM* ifconfig::                    Configure a network device manually
2198*8044SWilliam.Kucharski@Sun.COM* pager::                       Change the state of the internal pager
2199*8044SWilliam.Kucharski@Sun.COM* partnew::                     Make a primary partition
2200*8044SWilliam.Kucharski@Sun.COM* parttype::                    Change the type of a partition
2201*8044SWilliam.Kucharski@Sun.COM* password::                    Set a password for the menu interface
2202*8044SWilliam.Kucharski@Sun.COM* rarp::                        Initialize a network device via RARP
2203*8044SWilliam.Kucharski@Sun.COM* serial::                      Set up a serial device
2204*8044SWilliam.Kucharski@Sun.COM* setkey::                      Configure the key map
2205*8044SWilliam.Kucharski@Sun.COM* terminal::                    Choose a terminal
2206*8044SWilliam.Kucharski@Sun.COM* terminfo::                    Define escape sequences for a terminal
2207*8044SWilliam.Kucharski@Sun.COM* tftpserver::                  Specify a TFTP server
2208*8044SWilliam.Kucharski@Sun.COM* unhide::                      Unhide a partition
2209*8044SWilliam.Kucharski@Sun.COM@end menu
2210*8044SWilliam.Kucharski@Sun.COM
2211*8044SWilliam.Kucharski@Sun.COM
2212*8044SWilliam.Kucharski@Sun.COM@node bootp
2213*8044SWilliam.Kucharski@Sun.COM@subsection bootp
2214*8044SWilliam.Kucharski@Sun.COM
2215*8044SWilliam.Kucharski@Sun.COM@deffn Command bootp [@option{--with-configfile}]
2216*8044SWilliam.Kucharski@Sun.COMInitialize a network device via the @dfn{BOOTP} protocol. This command
2217*8044SWilliam.Kucharski@Sun.COMis only available if GRUB is compiled with netboot support. See also
2218*8044SWilliam.Kucharski@Sun.COM@ref{Network}.
2219*8044SWilliam.Kucharski@Sun.COM
2220*8044SWilliam.Kucharski@Sun.COMIf you specify @option{--with-configfile} to this command, GRUB will
2221*8044SWilliam.Kucharski@Sun.COMfetch and load a configuration file specified by your BOOTP server
2222*8044SWilliam.Kucharski@Sun.COMwith the vendor tag @samp{150}.
2223*8044SWilliam.Kucharski@Sun.COM@end deffn
2224*8044SWilliam.Kucharski@Sun.COM
2225*8044SWilliam.Kucharski@Sun.COM
2226*8044SWilliam.Kucharski@Sun.COM@node color
2227*8044SWilliam.Kucharski@Sun.COM@subsection color
2228*8044SWilliam.Kucharski@Sun.COM
2229*8044SWilliam.Kucharski@Sun.COM@deffn Command color normal [highlight]
2230*8044SWilliam.Kucharski@Sun.COMChange the menu colors. The color @var{normal} is used for most
2231*8044SWilliam.Kucharski@Sun.COMlines in the menu (@pxref{Menu interface}), and the color
2232*8044SWilliam.Kucharski@Sun.COM@var{highlight} is used to highlight the line where the cursor
2233*8044SWilliam.Kucharski@Sun.COMpoints. If you omit @var{highlight}, then the inverted color of
2234*8044SWilliam.Kucharski@Sun.COM@var{normal} is used for the highlighted line. The format of a color is
2235*8044SWilliam.Kucharski@Sun.COM@code{@var{foreground}/@var{background}}. @var{foreground} and
2236*8044SWilliam.Kucharski@Sun.COM@var{background} are symbolic color names. A symbolic color name must be
2237*8044SWilliam.Kucharski@Sun.COMone of these:
2238*8044SWilliam.Kucharski@Sun.COM
2239*8044SWilliam.Kucharski@Sun.COM@itemize @bullet
2240*8044SWilliam.Kucharski@Sun.COM@item
2241*8044SWilliam.Kucharski@Sun.COMblack
2242*8044SWilliam.Kucharski@Sun.COM
2243*8044SWilliam.Kucharski@Sun.COM@item
2244*8044SWilliam.Kucharski@Sun.COMblue
2245*8044SWilliam.Kucharski@Sun.COM
2246*8044SWilliam.Kucharski@Sun.COM@item
2247*8044SWilliam.Kucharski@Sun.COMgreen
2248*8044SWilliam.Kucharski@Sun.COM
2249*8044SWilliam.Kucharski@Sun.COM@item
2250*8044SWilliam.Kucharski@Sun.COMcyan
2251*8044SWilliam.Kucharski@Sun.COM
2252*8044SWilliam.Kucharski@Sun.COM@item
2253*8044SWilliam.Kucharski@Sun.COMred
2254*8044SWilliam.Kucharski@Sun.COM
2255*8044SWilliam.Kucharski@Sun.COM@item
2256*8044SWilliam.Kucharski@Sun.COMmagenta
2257*8044SWilliam.Kucharski@Sun.COM
2258*8044SWilliam.Kucharski@Sun.COM@item
2259*8044SWilliam.Kucharski@Sun.COMbrown
2260*8044SWilliam.Kucharski@Sun.COM
2261*8044SWilliam.Kucharski@Sun.COM@item
2262*8044SWilliam.Kucharski@Sun.COMlight-gray
2263*8044SWilliam.Kucharski@Sun.COM
2264*8044SWilliam.Kucharski@Sun.COM@strong{These below can be specified only for the foreground.}
2265*8044SWilliam.Kucharski@Sun.COM
2266*8044SWilliam.Kucharski@Sun.COM@item
2267*8044SWilliam.Kucharski@Sun.COMdark-gray
2268*8044SWilliam.Kucharski@Sun.COM
2269*8044SWilliam.Kucharski@Sun.COM@item
2270*8044SWilliam.Kucharski@Sun.COMlight-blue
2271*8044SWilliam.Kucharski@Sun.COM
2272*8044SWilliam.Kucharski@Sun.COM@item
2273*8044SWilliam.Kucharski@Sun.COMlight-green
2274*8044SWilliam.Kucharski@Sun.COM
2275*8044SWilliam.Kucharski@Sun.COM@item
2276*8044SWilliam.Kucharski@Sun.COMlight-cyan
2277*8044SWilliam.Kucharski@Sun.COM
2278*8044SWilliam.Kucharski@Sun.COM@item
2279*8044SWilliam.Kucharski@Sun.COMlight-red
2280*8044SWilliam.Kucharski@Sun.COM
2281*8044SWilliam.Kucharski@Sun.COM@item
2282*8044SWilliam.Kucharski@Sun.COMlight-magenta
2283*8044SWilliam.Kucharski@Sun.COM
2284*8044SWilliam.Kucharski@Sun.COM@item
2285*8044SWilliam.Kucharski@Sun.COMyellow
2286*8044SWilliam.Kucharski@Sun.COM
2287*8044SWilliam.Kucharski@Sun.COM@item
2288*8044SWilliam.Kucharski@Sun.COMwhite
2289*8044SWilliam.Kucharski@Sun.COM@end itemize
2290*8044SWilliam.Kucharski@Sun.COM
2291*8044SWilliam.Kucharski@Sun.COMBut only the first eight names can be used for @var{background}. You can
2292*8044SWilliam.Kucharski@Sun.COMprefix @code{blink-} to @var{foreground} if you want a blinking
2293*8044SWilliam.Kucharski@Sun.COMforeground color.
2294*8044SWilliam.Kucharski@Sun.COM
2295*8044SWilliam.Kucharski@Sun.COMThis command can be used in the configuration file and on the command
2296*8044SWilliam.Kucharski@Sun.COMline, so you may write something like this in your configuration file:
2297*8044SWilliam.Kucharski@Sun.COM
2298*8044SWilliam.Kucharski@Sun.COM@example
2299*8044SWilliam.Kucharski@Sun.COM@group
2300*8044SWilliam.Kucharski@Sun.COM# Set default colors.
2301*8044SWilliam.Kucharski@Sun.COMcolor light-gray/blue black/light-gray
2302*8044SWilliam.Kucharski@Sun.COM
2303*8044SWilliam.Kucharski@Sun.COM# Change the colors.
2304*8044SWilliam.Kucharski@Sun.COMtitle OS-BS like
2305*8044SWilliam.Kucharski@Sun.COMcolor magenta/blue black/magenta
2306*8044SWilliam.Kucharski@Sun.COM@end group
2307*8044SWilliam.Kucharski@Sun.COM@end example
2308*8044SWilliam.Kucharski@Sun.COM@end deffn
2309*8044SWilliam.Kucharski@Sun.COM
2310*8044SWilliam.Kucharski@Sun.COM
2311*8044SWilliam.Kucharski@Sun.COM@node device
2312*8044SWilliam.Kucharski@Sun.COM@subsection device
2313*8044SWilliam.Kucharski@Sun.COM
2314*8044SWilliam.Kucharski@Sun.COM@deffn Command device drive file
2315*8044SWilliam.Kucharski@Sun.COMIn the grub shell, specify the file @var{file} as the actual drive for a
2316*8044SWilliam.Kucharski@Sun.COM@sc{bios} drive @var{drive}. You can use this command to create a disk
2317*8044SWilliam.Kucharski@Sun.COMimage, and/or to fix the drives guessed by GRUB when GRUB fails to
2318*8044SWilliam.Kucharski@Sun.COMdetermine them correctly, like this:
2319*8044SWilliam.Kucharski@Sun.COM
2320*8044SWilliam.Kucharski@Sun.COM@example
2321*8044SWilliam.Kucharski@Sun.COM@group
2322*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{device (fd0) /floppy-image}
2323*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{device (hd0) /dev/sd0}
2324*8044SWilliam.Kucharski@Sun.COM@end group
2325*8044SWilliam.Kucharski@Sun.COM@end example
2326*8044SWilliam.Kucharski@Sun.COM
2327*8044SWilliam.Kucharski@Sun.COMThis command can be used only in the grub shell (@pxref{Invoking the
2328*8044SWilliam.Kucharski@Sun.COMgrub shell}).
2329*8044SWilliam.Kucharski@Sun.COM@end deffn
2330*8044SWilliam.Kucharski@Sun.COM
2331*8044SWilliam.Kucharski@Sun.COM
2332*8044SWilliam.Kucharski@Sun.COM@node dhcp
2333*8044SWilliam.Kucharski@Sun.COM@subsection dhcp
2334*8044SWilliam.Kucharski@Sun.COM
2335*8044SWilliam.Kucharski@Sun.COM@deffn Command dhcp [--with-configfile]
2336*8044SWilliam.Kucharski@Sun.COMInitialize a network device via the @dfn{DHCP} protocol. Currently,
2337*8044SWilliam.Kucharski@Sun.COMthis command is just an alias for @command{bootp}, since the two
2338*8044SWilliam.Kucharski@Sun.COMprotocols are very similar. This command is only available if GRUB is
2339*8044SWilliam.Kucharski@Sun.COMcompiled with netboot support. See also @ref{Network}.
2340*8044SWilliam.Kucharski@Sun.COM
2341*8044SWilliam.Kucharski@Sun.COMIf you specify @option{--with-configfile} to this command, GRUB will
2342*8044SWilliam.Kucharski@Sun.COMfetch and load a configuration file specified by your DHCP server
2343*8044SWilliam.Kucharski@Sun.COMwith the vendor tag @samp{150}.
2344*8044SWilliam.Kucharski@Sun.COM@end deffn
2345*8044SWilliam.Kucharski@Sun.COM
2346*8044SWilliam.Kucharski@Sun.COM
2347*8044SWilliam.Kucharski@Sun.COM@node hide
2348*8044SWilliam.Kucharski@Sun.COM@subsection hide
2349*8044SWilliam.Kucharski@Sun.COM
2350*8044SWilliam.Kucharski@Sun.COM@deffn Command hide partition
2351*8044SWilliam.Kucharski@Sun.COMHide the partition @var{partition} by setting the @dfn{hidden} bit in
2352*8044SWilliam.Kucharski@Sun.COMits partition type code. This is useful only when booting DOS or Windows
2353*8044SWilliam.Kucharski@Sun.COMand multiple primary FAT partitions exist in one disk. See also
2354*8044SWilliam.Kucharski@Sun.COM@ref{DOS/Windows}.
2355*8044SWilliam.Kucharski@Sun.COM@end deffn
2356*8044SWilliam.Kucharski@Sun.COM
2357*8044SWilliam.Kucharski@Sun.COM
2358*8044SWilliam.Kucharski@Sun.COM@node ifconfig
2359*8044SWilliam.Kucharski@Sun.COM@subsection ifconfig
2360*8044SWilliam.Kucharski@Sun.COM
2361*8044SWilliam.Kucharski@Sun.COM@deffn Command ifconfig [@option{--server=server}] [@option{--gateway=gateway}] [@option{--mask=mask}] [@option{--address=address}]
2362*8044SWilliam.Kucharski@Sun.COMConfigure the IP address, the netmask, the gateway, and the server
2363*8044SWilliam.Kucharski@Sun.COMaddress of a network device manually. The values must be in dotted
2364*8044SWilliam.Kucharski@Sun.COMdecimal format, like @samp{192.168.11.178}. The order of the options is
2365*8044SWilliam.Kucharski@Sun.COMnot important. This command shows current network configuration, if no
2366*8044SWilliam.Kucharski@Sun.COMoption is specified. See also @ref{Network}.
2367*8044SWilliam.Kucharski@Sun.COM@end deffn
2368*8044SWilliam.Kucharski@Sun.COM
2369*8044SWilliam.Kucharski@Sun.COM
2370*8044SWilliam.Kucharski@Sun.COM@node pager
2371*8044SWilliam.Kucharski@Sun.COM@subsection pager
2372*8044SWilliam.Kucharski@Sun.COM
2373*8044SWilliam.Kucharski@Sun.COM@deffn Command pager [flag]
2374*8044SWilliam.Kucharski@Sun.COMToggle or set the state of the internal pager. If @var{flag} is
2375*8044SWilliam.Kucharski@Sun.COM@samp{on}, the internal pager is enabled. If @var{flag} is @samp{off},
2376*8044SWilliam.Kucharski@Sun.COMit is disabled. If no argument is given, the state is toggled.
2377*8044SWilliam.Kucharski@Sun.COM@end deffn
2378*8044SWilliam.Kucharski@Sun.COM
2379*8044SWilliam.Kucharski@Sun.COM
2380*8044SWilliam.Kucharski@Sun.COM@node partnew
2381*8044SWilliam.Kucharski@Sun.COM@subsection partnew
2382*8044SWilliam.Kucharski@Sun.COM
2383*8044SWilliam.Kucharski@Sun.COM@deffn Command partnew part type from len
2384*8044SWilliam.Kucharski@Sun.COMCreate a new primary partition. @var{part} is a partition specification
2385*8044SWilliam.Kucharski@Sun.COMin GRUB syntax (@pxref{Naming convention}); @var{type} is the partition
2386*8044SWilliam.Kucharski@Sun.COMtype and must be a number in the range @code{0-0xff}; @var{from} is
2387*8044SWilliam.Kucharski@Sun.COMthe starting address and @var{len} is the length, both in sector units.
2388*8044SWilliam.Kucharski@Sun.COM@end deffn
2389*8044SWilliam.Kucharski@Sun.COM
2390*8044SWilliam.Kucharski@Sun.COM
2391*8044SWilliam.Kucharski@Sun.COM@node parttype
2392*8044SWilliam.Kucharski@Sun.COM@subsection parttype
2393*8044SWilliam.Kucharski@Sun.COM
2394*8044SWilliam.Kucharski@Sun.COM@deffn Command parttype part type
2395*8044SWilliam.Kucharski@Sun.COMChange the type of an existing partition.  @var{part} is a partition
2396*8044SWilliam.Kucharski@Sun.COMspecification in GRUB syntax (@pxref{Naming convention}); @var{type}
2397*8044SWilliam.Kucharski@Sun.COMis the new partition type and must be a number in the range 0-0xff.
2398*8044SWilliam.Kucharski@Sun.COM@end deffn
2399*8044SWilliam.Kucharski@Sun.COM
2400*8044SWilliam.Kucharski@Sun.COM
2401*8044SWilliam.Kucharski@Sun.COM@node password
2402*8044SWilliam.Kucharski@Sun.COM@subsection password
2403*8044SWilliam.Kucharski@Sun.COM
2404*8044SWilliam.Kucharski@Sun.COM@deffn Command password [@option{--md5}] passwd [new-config-file]
2405*8044SWilliam.Kucharski@Sun.COMIf used in the first section of a menu file, disable all interactive
2406*8044SWilliam.Kucharski@Sun.COMediting control (menu entry editor and command-line) and entries
2407*8044SWilliam.Kucharski@Sun.COMprotected by the command @command{lock}. If the password @var{passwd} is
2408*8044SWilliam.Kucharski@Sun.COMentered, it loads the @var{new-config-file} as a new config file and
2409*8044SWilliam.Kucharski@Sun.COMrestarts the GRUB Stage 2, if @var{new-config-file} is
2410*8044SWilliam.Kucharski@Sun.COMspecified. Otherwise, GRUB will just unlock the privileged instructions.
2411*8044SWilliam.Kucharski@Sun.COMYou can also use this command in the script section, in which case it
2412*8044SWilliam.Kucharski@Sun.COMwill ask for the password, before continuing.  The option
2413*8044SWilliam.Kucharski@Sun.COM@option{--md5} tells GRUB that @var{passwd} is encrypted with
2414*8044SWilliam.Kucharski@Sun.COM@command{md5crypt} (@pxref{md5crypt}).
2415*8044SWilliam.Kucharski@Sun.COM@end deffn
2416*8044SWilliam.Kucharski@Sun.COM
2417*8044SWilliam.Kucharski@Sun.COM
2418*8044SWilliam.Kucharski@Sun.COM@node rarp
2419*8044SWilliam.Kucharski@Sun.COM@subsection rarp
2420*8044SWilliam.Kucharski@Sun.COM
2421*8044SWilliam.Kucharski@Sun.COM@deffn Command rarp
2422*8044SWilliam.Kucharski@Sun.COMInitialize a network device via the @dfn{RARP} protocol.  This command
2423*8044SWilliam.Kucharski@Sun.COMis only available if GRUB is compiled with netboot support. See also
2424*8044SWilliam.Kucharski@Sun.COM@ref{Network}.
2425*8044SWilliam.Kucharski@Sun.COM@end deffn
2426*8044SWilliam.Kucharski@Sun.COM
2427*8044SWilliam.Kucharski@Sun.COM
2428*8044SWilliam.Kucharski@Sun.COM@node serial
2429*8044SWilliam.Kucharski@Sun.COM@subsection serial
2430*8044SWilliam.Kucharski@Sun.COM
2431*8044SWilliam.Kucharski@Sun.COM@deffn Command serial [@option{--unit=unit}] [@option{--port=port}] [@option{--speed=speed}] [@option{--word=word}] [@option{--parity=parity}] [@option{--stop=stop}] [@option{--device=dev}]
2432*8044SWilliam.Kucharski@Sun.COMInitialize a serial device. @var{unit} is a number in the range 0-3
2433*8044SWilliam.Kucharski@Sun.COMspecifying which serial port to use; default is 0, which corresponds to
2434*8044SWilliam.Kucharski@Sun.COMthe port often called COM1. @var{port} is the I/O port where the UART
2435*8044SWilliam.Kucharski@Sun.COMis to be found; if specified it takes precedence over @var{unit}.
2436*8044SWilliam.Kucharski@Sun.COM@var{speed} is the transmission speed; default is 9600. @var{word} and
2437*8044SWilliam.Kucharski@Sun.COM@var{stop} are the number of data bits and stop bits. Data bits must
2438*8044SWilliam.Kucharski@Sun.COMbe in the range 5-8 and stop bits must be 1 or 2. Default is 8 data
2439*8044SWilliam.Kucharski@Sun.COMbits and one stop bit. @var{parity} is one of @samp{no}, @samp{odd},
2440*8044SWilliam.Kucharski@Sun.COM@samp{even} and defaults to @samp{no}. The option @option{--device}
2441*8044SWilliam.Kucharski@Sun.COMcan only be used in the grub shell and is used to specify the
2442*8044SWilliam.Kucharski@Sun.COMtty device to be used in the host operating system (@pxref{Invoking the
2443*8044SWilliam.Kucharski@Sun.COMgrub shell}).
2444*8044SWilliam.Kucharski@Sun.COM
2445*8044SWilliam.Kucharski@Sun.COMThe serial port is not used as a communication channel unless the
2446*8044SWilliam.Kucharski@Sun.COM@command{terminal} command is used (@pxref{terminal}).
2447*8044SWilliam.Kucharski@Sun.COM
2448*8044SWilliam.Kucharski@Sun.COMThis command is only available if GRUB is compiled with serial
2449*8044SWilliam.Kucharski@Sun.COMsupport. See also @ref{Serial terminal}.
2450*8044SWilliam.Kucharski@Sun.COM@end deffn
2451*8044SWilliam.Kucharski@Sun.COM
2452*8044SWilliam.Kucharski@Sun.COM
2453*8044SWilliam.Kucharski@Sun.COM@node setkey
2454*8044SWilliam.Kucharski@Sun.COM@subsection setkey
2455*8044SWilliam.Kucharski@Sun.COM
2456*8044SWilliam.Kucharski@Sun.COM@deffn Command setkey [to_key from_key]
2457*8044SWilliam.Kucharski@Sun.COMChange the keyboard map. The key @var{from_key} is mapped to the key
2458*8044SWilliam.Kucharski@Sun.COM@var{to_key}. If no argument is specified, reset key mappings. Note that
2459*8044SWilliam.Kucharski@Sun.COMthis command @emph{does not} exchange the keys. If you want to exchange
2460*8044SWilliam.Kucharski@Sun.COMthe keys, run this command again with the arguments exchanged, like this:
2461*8044SWilliam.Kucharski@Sun.COM
2462*8044SWilliam.Kucharski@Sun.COM@example
2463*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{setkey capslock control}
2464*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{setkey control capslock}
2465*8044SWilliam.Kucharski@Sun.COM@end example
2466*8044SWilliam.Kucharski@Sun.COM
2467*8044SWilliam.Kucharski@Sun.COMA key must be an alphabet letter, a digit, or one of these symbols:
2468*8044SWilliam.Kucharski@Sun.COM@samp{escape}, @samp{exclam}, @samp{at}, @samp{numbersign},
2469*8044SWilliam.Kucharski@Sun.COM@samp{dollar}, @samp{percent}, @samp{caret}, @samp{ampersand},
2470*8044SWilliam.Kucharski@Sun.COM@samp{asterisk}, @samp{parenleft}, @samp{parenright}, @samp{minus},
2471*8044SWilliam.Kucharski@Sun.COM@samp{underscore}, @samp{equal}, @samp{plus}, @samp{backspace},
2472*8044SWilliam.Kucharski@Sun.COM@samp{tab}, @samp{bracketleft}, @samp{braceleft}, @samp{bracketright},
2473*8044SWilliam.Kucharski@Sun.COM@samp{braceright}, @samp{enter}, @samp{control}, @samp{semicolon},
2474*8044SWilliam.Kucharski@Sun.COM@samp{colon}, @samp{quote}, @samp{doublequote}, @samp{backquote},
2475*8044SWilliam.Kucharski@Sun.COM@samp{tilde}, @samp{shift}, @samp{backslash}, @samp{bar}, @samp{comma},
2476*8044SWilliam.Kucharski@Sun.COM@samp{less}, @samp{period}, @samp{greater}, @samp{slash},
2477*8044SWilliam.Kucharski@Sun.COM@samp{question}, @samp{alt}, @samp{space}, @samp{capslock}, @samp{FX}
2478*8044SWilliam.Kucharski@Sun.COM(@samp{X} is a digit), and @samp{delete}. This table describes to which
2479*8044SWilliam.Kucharski@Sun.COMcharacter each of the symbols corresponds:
2480*8044SWilliam.Kucharski@Sun.COM
2481*8044SWilliam.Kucharski@Sun.COM@table @samp
2482*8044SWilliam.Kucharski@Sun.COM@item exclam
2483*8044SWilliam.Kucharski@Sun.COM@samp{!}
2484*8044SWilliam.Kucharski@Sun.COM
2485*8044SWilliam.Kucharski@Sun.COM@item at
2486*8044SWilliam.Kucharski@Sun.COM@samp{@@}
2487*8044SWilliam.Kucharski@Sun.COM
2488*8044SWilliam.Kucharski@Sun.COM@item numbersign
2489*8044SWilliam.Kucharski@Sun.COM@samp{#}
2490*8044SWilliam.Kucharski@Sun.COM
2491*8044SWilliam.Kucharski@Sun.COM@item dollar
2492*8044SWilliam.Kucharski@Sun.COM@samp{$}
2493*8044SWilliam.Kucharski@Sun.COM
2494*8044SWilliam.Kucharski@Sun.COM@item percent
2495*8044SWilliam.Kucharski@Sun.COM@samp{%}
2496*8044SWilliam.Kucharski@Sun.COM
2497*8044SWilliam.Kucharski@Sun.COM@item caret
2498*8044SWilliam.Kucharski@Sun.COM@samp{^}
2499*8044SWilliam.Kucharski@Sun.COM
2500*8044SWilliam.Kucharski@Sun.COM@item ampersand
2501*8044SWilliam.Kucharski@Sun.COM@samp{&}
2502*8044SWilliam.Kucharski@Sun.COM
2503*8044SWilliam.Kucharski@Sun.COM@item asterisk
2504*8044SWilliam.Kucharski@Sun.COM@samp{*}
2505*8044SWilliam.Kucharski@Sun.COM
2506*8044SWilliam.Kucharski@Sun.COM@item parenleft
2507*8044SWilliam.Kucharski@Sun.COM@samp{(}
2508*8044SWilliam.Kucharski@Sun.COM
2509*8044SWilliam.Kucharski@Sun.COM@item parenright
2510*8044SWilliam.Kucharski@Sun.COM@samp{)}
2511*8044SWilliam.Kucharski@Sun.COM
2512*8044SWilliam.Kucharski@Sun.COM@item minus
2513*8044SWilliam.Kucharski@Sun.COM@samp{-}
2514*8044SWilliam.Kucharski@Sun.COM
2515*8044SWilliam.Kucharski@Sun.COM@item underscore
2516*8044SWilliam.Kucharski@Sun.COM@samp{_}
2517*8044SWilliam.Kucharski@Sun.COM
2518*8044SWilliam.Kucharski@Sun.COM@item equal
2519*8044SWilliam.Kucharski@Sun.COM@samp{=}
2520*8044SWilliam.Kucharski@Sun.COM
2521*8044SWilliam.Kucharski@Sun.COM@item plus
2522*8044SWilliam.Kucharski@Sun.COM@samp{+}
2523*8044SWilliam.Kucharski@Sun.COM
2524*8044SWilliam.Kucharski@Sun.COM@item bracketleft
2525*8044SWilliam.Kucharski@Sun.COM@samp{[}
2526*8044SWilliam.Kucharski@Sun.COM
2527*8044SWilliam.Kucharski@Sun.COM@item braceleft
2528*8044SWilliam.Kucharski@Sun.COM@samp{@{}
2529*8044SWilliam.Kucharski@Sun.COM
2530*8044SWilliam.Kucharski@Sun.COM@item bracketright
2531*8044SWilliam.Kucharski@Sun.COM@samp{]}
2532*8044SWilliam.Kucharski@Sun.COM
2533*8044SWilliam.Kucharski@Sun.COM@item braceright
2534*8044SWilliam.Kucharski@Sun.COM@samp{@}}
2535*8044SWilliam.Kucharski@Sun.COM
2536*8044SWilliam.Kucharski@Sun.COM@item semicolon
2537*8044SWilliam.Kucharski@Sun.COM@samp{;}
2538*8044SWilliam.Kucharski@Sun.COM
2539*8044SWilliam.Kucharski@Sun.COM@item colon
2540*8044SWilliam.Kucharski@Sun.COM@samp{:}
2541*8044SWilliam.Kucharski@Sun.COM
2542*8044SWilliam.Kucharski@Sun.COM@item quote
2543*8044SWilliam.Kucharski@Sun.COM@samp{'}
2544*8044SWilliam.Kucharski@Sun.COM
2545*8044SWilliam.Kucharski@Sun.COM@item doublequote
2546*8044SWilliam.Kucharski@Sun.COM@samp{"}
2547*8044SWilliam.Kucharski@Sun.COM
2548*8044SWilliam.Kucharski@Sun.COM@item backquote
2549*8044SWilliam.Kucharski@Sun.COM@samp{`}
2550*8044SWilliam.Kucharski@Sun.COM
2551*8044SWilliam.Kucharski@Sun.COM@item tilde
2552*8044SWilliam.Kucharski@Sun.COM@samp{~}
2553*8044SWilliam.Kucharski@Sun.COM
2554*8044SWilliam.Kucharski@Sun.COM@item backslash
2555*8044SWilliam.Kucharski@Sun.COM@samp{\}
2556*8044SWilliam.Kucharski@Sun.COM
2557*8044SWilliam.Kucharski@Sun.COM@item bar
2558*8044SWilliam.Kucharski@Sun.COM@samp{|}
2559*8044SWilliam.Kucharski@Sun.COM
2560*8044SWilliam.Kucharski@Sun.COM@item comma
2561*8044SWilliam.Kucharski@Sun.COM@samp{,}
2562*8044SWilliam.Kucharski@Sun.COM
2563*8044SWilliam.Kucharski@Sun.COM@item less
2564*8044SWilliam.Kucharski@Sun.COM@samp{<}
2565*8044SWilliam.Kucharski@Sun.COM
2566*8044SWilliam.Kucharski@Sun.COM@item period
2567*8044SWilliam.Kucharski@Sun.COM@samp{.}
2568*8044SWilliam.Kucharski@Sun.COM
2569*8044SWilliam.Kucharski@Sun.COM@item greater
2570*8044SWilliam.Kucharski@Sun.COM@samp{>}
2571*8044SWilliam.Kucharski@Sun.COM
2572*8044SWilliam.Kucharski@Sun.COM@item slash
2573*8044SWilliam.Kucharski@Sun.COM@samp{/}
2574*8044SWilliam.Kucharski@Sun.COM
2575*8044SWilliam.Kucharski@Sun.COM@item question
2576*8044SWilliam.Kucharski@Sun.COM@samp{?}
2577*8044SWilliam.Kucharski@Sun.COM
2578*8044SWilliam.Kucharski@Sun.COM@item space
2579*8044SWilliam.Kucharski@Sun.COM@samp{ }
2580*8044SWilliam.Kucharski@Sun.COM@end table
2581*8044SWilliam.Kucharski@Sun.COM@end deffn
2582*8044SWilliam.Kucharski@Sun.COM
2583*8044SWilliam.Kucharski@Sun.COM
2584*8044SWilliam.Kucharski@Sun.COM@node terminal
2585*8044SWilliam.Kucharski@Sun.COM@subsection terminal
2586*8044SWilliam.Kucharski@Sun.COM
2587*8044SWilliam.Kucharski@Sun.COM@deffn Command terminal [@option{--dumb}] [@option{--no-echo}] [@option{--no-edit}] [@option{--timeout=secs}] [@option{--lines=lines}] [@option{--silent}] [@option{console}] [@option{serial}] [@option{hercules}]
2588*8044SWilliam.Kucharski@Sun.COMSelect a terminal for user interaction. The terminal is assumed to be
2589*8044SWilliam.Kucharski@Sun.COMVT100-compatible unless @option{--dumb} is specified. If both
2590*8044SWilliam.Kucharski@Sun.COM@option{console} and @option{serial} are specified, then GRUB will use
2591*8044SWilliam.Kucharski@Sun.COMthe one where a key is entered first or the first when the timeout
2592*8044SWilliam.Kucharski@Sun.COMexpires. If neither are specified, the current setting is
2593*8044SWilliam.Kucharski@Sun.COMreported. This command is only available if GRUB is compiled with serial
2594*8044SWilliam.Kucharski@Sun.COMsupport. See also @ref{Serial terminal}.
2595*8044SWilliam.Kucharski@Sun.COM
2596*8044SWilliam.Kucharski@Sun.COMThis may not make sense for most users, but GRUB supports Hercules
2597*8044SWilliam.Kucharski@Sun.COMconsole as well. Hercules console is usable like the ordinary console,
2598*8044SWilliam.Kucharski@Sun.COMand the usage is quite similar to that for serial terminals: specify
2599*8044SWilliam.Kucharski@Sun.COM@option{hercules} as the argument.
2600*8044SWilliam.Kucharski@Sun.COM
2601*8044SWilliam.Kucharski@Sun.COMThe option @option{--lines} defines the number of lines in your
2602*8044SWilliam.Kucharski@Sun.COMterminal, and it is used for the internal pager function. If you don't
2603*8044SWilliam.Kucharski@Sun.COMspecify this option, the number is assumed as 24.
2604*8044SWilliam.Kucharski@Sun.COM
2605*8044SWilliam.Kucharski@Sun.COMThe option @option{--silent} suppresses the message to prompt you to
2606*8044SWilliam.Kucharski@Sun.COMhit any key. This might be useful if your system has no terminal
2607*8044SWilliam.Kucharski@Sun.COMdevice.
2608*8044SWilliam.Kucharski@Sun.COM
2609*8044SWilliam.Kucharski@Sun.COMThe option @option{--no-echo} has GRUB not to echo back input
2610*8044SWilliam.Kucharski@Sun.COMcharacters. This implies the option @option{--no-edit}.
2611*8044SWilliam.Kucharski@Sun.COM
2612*8044SWilliam.Kucharski@Sun.COMThe option @option{--no-edit} disables the BASH-like editing feature.
2613*8044SWilliam.Kucharski@Sun.COM@end deffn
2614*8044SWilliam.Kucharski@Sun.COM
2615*8044SWilliam.Kucharski@Sun.COM
2616*8044SWilliam.Kucharski@Sun.COM@node terminfo
2617*8044SWilliam.Kucharski@Sun.COM@subsection terminfo
2618*8044SWilliam.Kucharski@Sun.COM
2619*8044SWilliam.Kucharski@Sun.COM@deffn Command terminfo @option{--name=name} @option{--cursor-address=seq} [@option{--clear-screen=seq}] [@option{--enter-standout-mode=seq}] [@option{--exit-standout-mode=seq}]
2620*8044SWilliam.Kucharski@Sun.COMDefine the capabilities of your terminal. Use this command to define
2621*8044SWilliam.Kucharski@Sun.COMescape sequences, if it is not vt100-compatible. You may use @samp{\e}
2622*8044SWilliam.Kucharski@Sun.COMfor @key{ESC} and @samp{^X} for a control character.
2623*8044SWilliam.Kucharski@Sun.COM
2624*8044SWilliam.Kucharski@Sun.COMYou can use the utility @command{grub-terminfo} to generate
2625*8044SWilliam.Kucharski@Sun.COMappropriate arguments to this command. @xref{Invoking grub-terminfo}.
2626*8044SWilliam.Kucharski@Sun.COM
2627*8044SWilliam.Kucharski@Sun.COMIf no option is specified, the current settings are printed.
2628*8044SWilliam.Kucharski@Sun.COM@end deffn
2629*8044SWilliam.Kucharski@Sun.COM
2630*8044SWilliam.Kucharski@Sun.COM
2631*8044SWilliam.Kucharski@Sun.COM@node tftpserver
2632*8044SWilliam.Kucharski@Sun.COM@subsection tftpserver
2633*8044SWilliam.Kucharski@Sun.COM
2634*8044SWilliam.Kucharski@Sun.COM@deffn Command tftpserver ipaddr
2635*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} This command exists only for backward
2636*8044SWilliam.Kucharski@Sun.COMcompatibility. Use @command{ifconfig} (@pxref{ifconfig}) instead.
2637*8044SWilliam.Kucharski@Sun.COM
2638*8044SWilliam.Kucharski@Sun.COMOverride a TFTP server address returned by a BOOTP/DHCP/RARP server. The
2639*8044SWilliam.Kucharski@Sun.COMargument @var{ipaddr} must be in dotted decimal format, like
2640*8044SWilliam.Kucharski@Sun.COM@samp{192.168.0.15}.  This command is only available if GRUB is compiled
2641*8044SWilliam.Kucharski@Sun.COMwith netboot support. See also @ref{Network}.
2642*8044SWilliam.Kucharski@Sun.COM@end deffn
2643*8044SWilliam.Kucharski@Sun.COM
2644*8044SWilliam.Kucharski@Sun.COM
2645*8044SWilliam.Kucharski@Sun.COM@node unhide
2646*8044SWilliam.Kucharski@Sun.COM@subsection unhide
2647*8044SWilliam.Kucharski@Sun.COM
2648*8044SWilliam.Kucharski@Sun.COM@deffn Command unhide partition
2649*8044SWilliam.Kucharski@Sun.COMUnhide the partition @var{partition} by clearing the @dfn{hidden} bit in
2650*8044SWilliam.Kucharski@Sun.COMits partition type code. This is useful only when booting DOS or Windows
2651*8044SWilliam.Kucharski@Sun.COMand multiple primary partitions exist on one disk. See also
2652*8044SWilliam.Kucharski@Sun.COM@ref{DOS/Windows}.
2653*8044SWilliam.Kucharski@Sun.COM@end deffn
2654*8044SWilliam.Kucharski@Sun.COM
2655*8044SWilliam.Kucharski@Sun.COM
2656*8044SWilliam.Kucharski@Sun.COM@node Command-line and menu entry commands
2657*8044SWilliam.Kucharski@Sun.COM@section The list of command-line and menu entry commands
2658*8044SWilliam.Kucharski@Sun.COM
2659*8044SWilliam.Kucharski@Sun.COMThese commands are usable in the command-line and in menu entries.  If
2660*8044SWilliam.Kucharski@Sun.COMyou forget a command, you can run the command @command{help}
2661*8044SWilliam.Kucharski@Sun.COM(@pxref{help}).
2662*8044SWilliam.Kucharski@Sun.COM
2663*8044SWilliam.Kucharski@Sun.COM@menu
2664*8044SWilliam.Kucharski@Sun.COM* blocklist::                   Get the block list notation of a file
2665*8044SWilliam.Kucharski@Sun.COM* boot::                        Start up your operating system
2666*8044SWilliam.Kucharski@Sun.COM* cat::                         Show the contents of a file
2667*8044SWilliam.Kucharski@Sun.COM* chainloader::                 Chain-load another boot loader
2668*8044SWilliam.Kucharski@Sun.COM* cmp::                         Compare two files
2669*8044SWilliam.Kucharski@Sun.COM* configfile::                  Load a configuration file
2670*8044SWilliam.Kucharski@Sun.COM* debug::                       Toggle the debug flag
2671*8044SWilliam.Kucharski@Sun.COM* displayapm::                  Display APM information
2672*8044SWilliam.Kucharski@Sun.COM* displaymem::                  Display memory configuration
2673*8044SWilliam.Kucharski@Sun.COM* embed::                       Embed Stage 1.5
2674*8044SWilliam.Kucharski@Sun.COM* find::                        Find a file
2675*8044SWilliam.Kucharski@Sun.COM* fstest::                      Test a filesystem
2676*8044SWilliam.Kucharski@Sun.COM* geometry::                    Manipulate the geometry of a drive
2677*8044SWilliam.Kucharski@Sun.COM* halt::                        Shut down your computer
2678*8044SWilliam.Kucharski@Sun.COM* help::                        Show help messages
2679*8044SWilliam.Kucharski@Sun.COM* impsprobe::                   Probe SMP
2680*8044SWilliam.Kucharski@Sun.COM* initrd::                      Load an initrd
2681*8044SWilliam.Kucharski@Sun.COM* install::                     Install GRUB
2682*8044SWilliam.Kucharski@Sun.COM* ioprobe::                     Probe I/O ports used for a drive
2683*8044SWilliam.Kucharski@Sun.COM* kernel::                      Load a kernel
2684*8044SWilliam.Kucharski@Sun.COM* lock::                        Lock a menu entry
2685*8044SWilliam.Kucharski@Sun.COM* makeactive::                  Make a partition active
2686*8044SWilliam.Kucharski@Sun.COM* map::                         Map a drive to another
2687*8044SWilliam.Kucharski@Sun.COM* md5crypt::                    Encrypt a password in MD5 format
2688*8044SWilliam.Kucharski@Sun.COM* module::                      Load a module
2689*8044SWilliam.Kucharski@Sun.COM* modulenounzip::               Load a module without decompression
2690*8044SWilliam.Kucharski@Sun.COM* pause::                       Wait for a key press
2691*8044SWilliam.Kucharski@Sun.COM* quit::                        Exit from the grub shell
2692*8044SWilliam.Kucharski@Sun.COM* reboot::                      Reboot your computer
2693*8044SWilliam.Kucharski@Sun.COM* read::                        Read data from memory
2694*8044SWilliam.Kucharski@Sun.COM* root::                        Set GRUB's root device
2695*8044SWilliam.Kucharski@Sun.COM* rootnoverify::                Set GRUB's root device without mounting
2696*8044SWilliam.Kucharski@Sun.COM* savedefault::                 Save current entry as the default entry
2697*8044SWilliam.Kucharski@Sun.COM* setup::                       Set up GRUB's installation automatically
2698*8044SWilliam.Kucharski@Sun.COM* testload::                    Load a file for testing a filesystem
2699*8044SWilliam.Kucharski@Sun.COM* testvbe::                     Test VESA BIOS EXTENSION
2700*8044SWilliam.Kucharski@Sun.COM* uppermem::                    Set the upper memory size
2701*8044SWilliam.Kucharski@Sun.COM* vbeprobe::                    Probe VESA BIOS EXTENSION
2702*8044SWilliam.Kucharski@Sun.COM@end menu
2703*8044SWilliam.Kucharski@Sun.COM
2704*8044SWilliam.Kucharski@Sun.COM
2705*8044SWilliam.Kucharski@Sun.COM@node blocklist
2706*8044SWilliam.Kucharski@Sun.COM@subsection blocklist
2707*8044SWilliam.Kucharski@Sun.COM
2708*8044SWilliam.Kucharski@Sun.COM@deffn Command blocklist file
2709*8044SWilliam.Kucharski@Sun.COMPrint the block list notation of the file @var{file}. @xref{Block list
2710*8044SWilliam.Kucharski@Sun.COMsyntax}.
2711*8044SWilliam.Kucharski@Sun.COM@end deffn
2712*8044SWilliam.Kucharski@Sun.COM
2713*8044SWilliam.Kucharski@Sun.COM
2714*8044SWilliam.Kucharski@Sun.COM@node boot
2715*8044SWilliam.Kucharski@Sun.COM@subsection boot
2716*8044SWilliam.Kucharski@Sun.COM
2717*8044SWilliam.Kucharski@Sun.COM@deffn Command boot
2718*8044SWilliam.Kucharski@Sun.COMBoot the OS or chain-loader which has been loaded. Only necessary if
2719*8044SWilliam.Kucharski@Sun.COMrunning the fully interactive command-line (it is implicit at the end of
2720*8044SWilliam.Kucharski@Sun.COMa menu entry).
2721*8044SWilliam.Kucharski@Sun.COM@end deffn
2722*8044SWilliam.Kucharski@Sun.COM
2723*8044SWilliam.Kucharski@Sun.COM
2724*8044SWilliam.Kucharski@Sun.COM@node cat
2725*8044SWilliam.Kucharski@Sun.COM@subsection cat
2726*8044SWilliam.Kucharski@Sun.COM
2727*8044SWilliam.Kucharski@Sun.COM@deffn Command cat file
2728*8044SWilliam.Kucharski@Sun.COMDisplay the contents of the file @var{file}. This command may be useful
2729*8044SWilliam.Kucharski@Sun.COMto remind you of your OS's root partition:
2730*8044SWilliam.Kucharski@Sun.COM
2731*8044SWilliam.Kucharski@Sun.COM@example
2732*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{cat /etc/fstab}
2733*8044SWilliam.Kucharski@Sun.COM@end example
2734*8044SWilliam.Kucharski@Sun.COM@end deffn
2735*8044SWilliam.Kucharski@Sun.COM
2736*8044SWilliam.Kucharski@Sun.COM
2737*8044SWilliam.Kucharski@Sun.COM@node chainloader
2738*8044SWilliam.Kucharski@Sun.COM@subsection chainloader
2739*8044SWilliam.Kucharski@Sun.COM
2740*8044SWilliam.Kucharski@Sun.COM@deffn Command chainloader [@option{--force}] file
2741*8044SWilliam.Kucharski@Sun.COMLoad @var{file} as a chain-loader. Like any other file loaded by the
2742*8044SWilliam.Kucharski@Sun.COMfilesystem code, it can use the blocklist notation to grab the first
2743*8044SWilliam.Kucharski@Sun.COMsector of the current partition with @samp{+1}. If you specify the
2744*8044SWilliam.Kucharski@Sun.COMoption @option{--force}, then load @var{file} forcibly, whether it has a
2745*8044SWilliam.Kucharski@Sun.COMcorrect signature or not. This is required when you want to load a
2746*8044SWilliam.Kucharski@Sun.COMdefective boot loader, such as SCO UnixWare 7.1 (@pxref{SCO UnixWare}).
2747*8044SWilliam.Kucharski@Sun.COM@end deffn
2748*8044SWilliam.Kucharski@Sun.COM
2749*8044SWilliam.Kucharski@Sun.COM
2750*8044SWilliam.Kucharski@Sun.COM@node cmp
2751*8044SWilliam.Kucharski@Sun.COM@subsection cmp
2752*8044SWilliam.Kucharski@Sun.COM
2753*8044SWilliam.Kucharski@Sun.COM@deffn Command cmp file1 file2
2754*8044SWilliam.Kucharski@Sun.COMCompare the file @var{file1} with the file @var{file2}. If they differ
2755*8044SWilliam.Kucharski@Sun.COMin size, print the sizes like this:
2756*8044SWilliam.Kucharski@Sun.COM
2757*8044SWilliam.Kucharski@Sun.COM@example
2758*8044SWilliam.Kucharski@Sun.COMDiffer in size: 0x1234 [foo], 0x4321 [bar]
2759*8044SWilliam.Kucharski@Sun.COM@end example
2760*8044SWilliam.Kucharski@Sun.COM
2761*8044SWilliam.Kucharski@Sun.COMIf the sizes are equal but the bytes at an offset differ, then print the
2762*8044SWilliam.Kucharski@Sun.COMbytes like this:
2763*8044SWilliam.Kucharski@Sun.COM
2764*8044SWilliam.Kucharski@Sun.COM@example
2765*8044SWilliam.Kucharski@Sun.COMDiffer at the offset 777: 0xbe [foo], 0xef [bar]
2766*8044SWilliam.Kucharski@Sun.COM@end example
2767*8044SWilliam.Kucharski@Sun.COM
2768*8044SWilliam.Kucharski@Sun.COMIf they are completely identical, nothing will be printed.
2769*8044SWilliam.Kucharski@Sun.COM@end deffn
2770*8044SWilliam.Kucharski@Sun.COM
2771*8044SWilliam.Kucharski@Sun.COM
2772*8044SWilliam.Kucharski@Sun.COM@node configfile
2773*8044SWilliam.Kucharski@Sun.COM@subsection configfile
2774*8044SWilliam.Kucharski@Sun.COM
2775*8044SWilliam.Kucharski@Sun.COM@deffn Command configfile file
2776*8044SWilliam.Kucharski@Sun.COMLoad @var{file} as a configuration file.
2777*8044SWilliam.Kucharski@Sun.COM@end deffn
2778*8044SWilliam.Kucharski@Sun.COM
2779*8044SWilliam.Kucharski@Sun.COM
2780*8044SWilliam.Kucharski@Sun.COM@node debug
2781*8044SWilliam.Kucharski@Sun.COM@subsection debug
2782*8044SWilliam.Kucharski@Sun.COM
2783*8044SWilliam.Kucharski@Sun.COM@deffn Command debug
2784*8044SWilliam.Kucharski@Sun.COMToggle debug mode (by default it is off). When debug mode is on, some
2785*8044SWilliam.Kucharski@Sun.COMextra messages are printed to show disk activity. This global debug flag
2786*8044SWilliam.Kucharski@Sun.COMis mainly useful for GRUB developers when testing new code.
2787*8044SWilliam.Kucharski@Sun.COM@end deffn
2788*8044SWilliam.Kucharski@Sun.COM
2789*8044SWilliam.Kucharski@Sun.COM
2790*8044SWilliam.Kucharski@Sun.COM@node displayapm
2791*8044SWilliam.Kucharski@Sun.COM@subsection displayapm
2792*8044SWilliam.Kucharski@Sun.COM
2793*8044SWilliam.Kucharski@Sun.COM@deffn Command displayapm
2794*8044SWilliam.Kucharski@Sun.COMDisplay APM BIOS information.
2795*8044SWilliam.Kucharski@Sun.COM@end deffn
2796*8044SWilliam.Kucharski@Sun.COM
2797*8044SWilliam.Kucharski@Sun.COM
2798*8044SWilliam.Kucharski@Sun.COM@node displaymem
2799*8044SWilliam.Kucharski@Sun.COM@subsection displaymem
2800*8044SWilliam.Kucharski@Sun.COM
2801*8044SWilliam.Kucharski@Sun.COM@deffn Command displaymem
2802*8044SWilliam.Kucharski@Sun.COMDisplay what GRUB thinks the system address space map of the machine is,
2803*8044SWilliam.Kucharski@Sun.COMincluding all regions of physical @sc{ram} installed. GRUB's
2804*8044SWilliam.Kucharski@Sun.COM@dfn{upper/lower memory} display uses the standard BIOS interface for
2805*8044SWilliam.Kucharski@Sun.COMthe available memory in the first megabyte, or @dfn{lower memory}, and a
2806*8044SWilliam.Kucharski@Sun.COMsynthesized number from various BIOS interfaces of the memory starting
2807*8044SWilliam.Kucharski@Sun.COMat 1MB and going up to the first chipset hole for @dfn{upper memory}
2808*8044SWilliam.Kucharski@Sun.COM(the standard PC @dfn{upper memory} interface is limited to reporting a
2809*8044SWilliam.Kucharski@Sun.COMmaximum of 64MB).
2810*8044SWilliam.Kucharski@Sun.COM@end deffn
2811*8044SWilliam.Kucharski@Sun.COM
2812*8044SWilliam.Kucharski@Sun.COM
2813*8044SWilliam.Kucharski@Sun.COM@node embed
2814*8044SWilliam.Kucharski@Sun.COM@subsection embed
2815*8044SWilliam.Kucharski@Sun.COM
2816*8044SWilliam.Kucharski@Sun.COM@deffn Command embed stage1_5 device
2817*8044SWilliam.Kucharski@Sun.COMEmbed the Stage 1.5 @var{stage1_5} in the sectors after the MBR if
2818*8044SWilliam.Kucharski@Sun.COM@var{device} is a drive, or in the @dfn{boot loader} area if @var{device}
2819*8044SWilliam.Kucharski@Sun.COMis a FFS partition or a ReiserFS partition.@footnote{The latter feature
2820*8044SWilliam.Kucharski@Sun.COMhas not been implemented yet.} Print the number of sectors which
2821*8044SWilliam.Kucharski@Sun.COM@var{stage1_5} occupies, if successful.
2822*8044SWilliam.Kucharski@Sun.COM
2823*8044SWilliam.Kucharski@Sun.COMUsually, you don't need to run this command directly. @xref{setup}.
2824*8044SWilliam.Kucharski@Sun.COM@end deffn
2825*8044SWilliam.Kucharski@Sun.COM
2826*8044SWilliam.Kucharski@Sun.COM
2827*8044SWilliam.Kucharski@Sun.COM@node find
2828*8044SWilliam.Kucharski@Sun.COM@subsection find
2829*8044SWilliam.Kucharski@Sun.COM
2830*8044SWilliam.Kucharski@Sun.COM@deffn Command find filename
2831*8044SWilliam.Kucharski@Sun.COMSearch for the file name @var{filename} in all mountable partitions
2832*8044SWilliam.Kucharski@Sun.COMand print the list of the devices which contain the file. The file
2833*8044SWilliam.Kucharski@Sun.COMname @var{filename} should be an absolute file name like
2834*8044SWilliam.Kucharski@Sun.COM@code{/boot/grub/stage1}.
2835*8044SWilliam.Kucharski@Sun.COM@end deffn
2836*8044SWilliam.Kucharski@Sun.COM
2837*8044SWilliam.Kucharski@Sun.COM
2838*8044SWilliam.Kucharski@Sun.COM@node fstest
2839*8044SWilliam.Kucharski@Sun.COM@subsection fstest
2840*8044SWilliam.Kucharski@Sun.COM
2841*8044SWilliam.Kucharski@Sun.COM@deffn Command fstest
2842*8044SWilliam.Kucharski@Sun.COMToggle filesystem test mode.
2843*8044SWilliam.Kucharski@Sun.COMFilesystem test mode, when turned on, prints out data corresponding to
2844*8044SWilliam.Kucharski@Sun.COMall the device reads and what values are being sent to the low-level
2845*8044SWilliam.Kucharski@Sun.COMroutines. The format is @samp{<@var{partition-offset-sector},
2846*8044SWilliam.Kucharski@Sun.COM@var{byte-offset}, @var{byte-length}>} for high-level reads inside a
2847*8044SWilliam.Kucharski@Sun.COMpartition, and @samp{[@var{disk-offset-sector}]} for low-level sector
2848*8044SWilliam.Kucharski@Sun.COMrequests from the disk.
2849*8044SWilliam.Kucharski@Sun.COMFilesystem test mode is turned off by any use of the @command{install}
2850*8044SWilliam.Kucharski@Sun.COM(@pxref{install}) or @command{testload} (@pxref{testload}) commands.
2851*8044SWilliam.Kucharski@Sun.COM@end deffn
2852*8044SWilliam.Kucharski@Sun.COM
2853*8044SWilliam.Kucharski@Sun.COM
2854*8044SWilliam.Kucharski@Sun.COM@node geometry
2855*8044SWilliam.Kucharski@Sun.COM@subsection geometry
2856*8044SWilliam.Kucharski@Sun.COM
2857*8044SWilliam.Kucharski@Sun.COM@deffn Command geometry drive [cylinder head sector [total_sector]]
2858*8044SWilliam.Kucharski@Sun.COMPrint the information for the drive @var{drive}. In the grub shell, you
2859*8044SWilliam.Kucharski@Sun.COMcan set the geometry of the drive arbitrarily. The number of
2860*8044SWilliam.Kucharski@Sun.COMcylinders, the number of heads, the number of sectors and the number of
2861*8044SWilliam.Kucharski@Sun.COMtotal sectors are set to CYLINDER, HEAD, SECTOR and TOTAL_SECTOR,
2862*8044SWilliam.Kucharski@Sun.COMrespectively. If you omit TOTAL_SECTOR, then it will be calculated
2863*8044SWilliam.Kucharski@Sun.COMbased on the C/H/S values automatically.
2864*8044SWilliam.Kucharski@Sun.COM@end deffn
2865*8044SWilliam.Kucharski@Sun.COM
2866*8044SWilliam.Kucharski@Sun.COM
2867*8044SWilliam.Kucharski@Sun.COM@node halt
2868*8044SWilliam.Kucharski@Sun.COM@subsection halt
2869*8044SWilliam.Kucharski@Sun.COM
2870*8044SWilliam.Kucharski@Sun.COM@deffn Command halt @option{--no-apm}
2871*8044SWilliam.Kucharski@Sun.COMThe command halts the computer. If the @option{--no-apm} option
2872*8044SWilliam.Kucharski@Sun.COMis specified, no APM BIOS call is performed. Otherwise, the computer
2873*8044SWilliam.Kucharski@Sun.COMis shut down using APM.
2874*8044SWilliam.Kucharski@Sun.COM@end deffn
2875*8044SWilliam.Kucharski@Sun.COM
2876*8044SWilliam.Kucharski@Sun.COM
2877*8044SWilliam.Kucharski@Sun.COM@node help
2878*8044SWilliam.Kucharski@Sun.COM@subsection help
2879*8044SWilliam.Kucharski@Sun.COM
2880*8044SWilliam.Kucharski@Sun.COM@deffn Command help @option{--all} [pattern @dots{}]
2881*8044SWilliam.Kucharski@Sun.COMDisplay helpful information about builtin commands. If you do not
2882*8044SWilliam.Kucharski@Sun.COMspecify @var{pattern}, this command shows short descriptions of most of
2883*8044SWilliam.Kucharski@Sun.COMavailable commands. If you specify the option @option{--all} to this
2884*8044SWilliam.Kucharski@Sun.COMcommand, short descriptions of rarely used commands (such as
2885*8044SWilliam.Kucharski@Sun.COM@ref{testload}) are displayed as well.
2886*8044SWilliam.Kucharski@Sun.COM
2887*8044SWilliam.Kucharski@Sun.COMIf you specify any @var{patterns}, it displays longer information
2888*8044SWilliam.Kucharski@Sun.COMabout each of the commands which match those @var{patterns}.
2889*8044SWilliam.Kucharski@Sun.COM@end deffn
2890*8044SWilliam.Kucharski@Sun.COM
2891*8044SWilliam.Kucharski@Sun.COM
2892*8044SWilliam.Kucharski@Sun.COM@node impsprobe
2893*8044SWilliam.Kucharski@Sun.COM@subsection impsprobe
2894*8044SWilliam.Kucharski@Sun.COM
2895*8044SWilliam.Kucharski@Sun.COM@deffn Command impsprobe
2896*8044SWilliam.Kucharski@Sun.COMProbe the Intel Multiprocessor Specification 1.1 or 1.4 configuration
2897*8044SWilliam.Kucharski@Sun.COMtable and boot the various CPUs which are found into a tight loop. This
2898*8044SWilliam.Kucharski@Sun.COMcommand can be used only in the Stage 2, but not in the grub shell.
2899*8044SWilliam.Kucharski@Sun.COM@end deffn
2900*8044SWilliam.Kucharski@Sun.COM
2901*8044SWilliam.Kucharski@Sun.COM
2902*8044SWilliam.Kucharski@Sun.COM@node initrd
2903*8044SWilliam.Kucharski@Sun.COM@subsection initrd
2904*8044SWilliam.Kucharski@Sun.COM
2905*8044SWilliam.Kucharski@Sun.COM@deffn Command initrd file @dots{}
2906*8044SWilliam.Kucharski@Sun.COMLoad an initial ramdisk for a Linux format boot image and set the
2907*8044SWilliam.Kucharski@Sun.COMappropriate parameters in the Linux setup area in memory. See also
2908*8044SWilliam.Kucharski@Sun.COM@ref{GNU/Linux}.
2909*8044SWilliam.Kucharski@Sun.COM@end deffn
2910*8044SWilliam.Kucharski@Sun.COM
2911*8044SWilliam.Kucharski@Sun.COM
2912*8044SWilliam.Kucharski@Sun.COM@node install
2913*8044SWilliam.Kucharski@Sun.COM@subsection install
2914*8044SWilliam.Kucharski@Sun.COM
2915*8044SWilliam.Kucharski@Sun.COM@deffn Command install [@option{--force-lba}] [@option{--stage2=os_stage2_file}] stage1_file [@option{d}] dest_dev stage2_file [addr] [@option{p}] [config_file] [real_config_file]
2916*8044SWilliam.Kucharski@Sun.COMThis command is fairly complex, and you should not use this command
2917*8044SWilliam.Kucharski@Sun.COMunless you are familiar with GRUB. Use @command{setup} (@pxref{setup})
2918*8044SWilliam.Kucharski@Sun.COMinstead.
2919*8044SWilliam.Kucharski@Sun.COM
2920*8044SWilliam.Kucharski@Sun.COMIn short, it will perform a full install presuming the Stage 2 or Stage
2921*8044SWilliam.Kucharski@Sun.COM1.5@footnote{They're loaded the same way, so we will refer to the Stage
2922*8044SWilliam.Kucharski@Sun.COM1.5 as a Stage 2 from now on.} is in its final install location.
2923*8044SWilliam.Kucharski@Sun.COM
2924*8044SWilliam.Kucharski@Sun.COMIn slightly more detail, it will load @var{stage1_file}, validate that
2925*8044SWilliam.Kucharski@Sun.COMit is a GRUB Stage 1 of the right version number, install in it a
2926*8044SWilliam.Kucharski@Sun.COMblocklist for loading @var{stage2_file} as a Stage 2. If the option
2927*8044SWilliam.Kucharski@Sun.COM@option{d} is present, the Stage 1 will always look for the actual
2928*8044SWilliam.Kucharski@Sun.COMdisk @var{stage2_file} was installed on, rather than using the booting
2929*8044SWilliam.Kucharski@Sun.COMdrive. The Stage 2 will be loaded at address @var{addr}, which must be
2930*8044SWilliam.Kucharski@Sun.COM@samp{0x8000} for a true Stage 2, and @samp{0x2000} for a Stage 1.5. If
2931*8044SWilliam.Kucharski@Sun.COM@var{addr} is not present, GRUB will determine the address
2932*8044SWilliam.Kucharski@Sun.COMautomatically. It then writes the completed Stage 1 to the first block
2933*8044SWilliam.Kucharski@Sun.COMof the device @var{dest_dev}. If the options @option{p} or
2934*8044SWilliam.Kucharski@Sun.COM@var{config_file} are present, then it reads the first block of stage2,
2935*8044SWilliam.Kucharski@Sun.COMmodifies it with the values of the partition @var{stage2_file} was found
2936*8044SWilliam.Kucharski@Sun.COMon (for @option{p}) or places the string @var{config_file} into the area
2937*8044SWilliam.Kucharski@Sun.COMtelling the stage2 where to look for a configuration file at boot
2938*8044SWilliam.Kucharski@Sun.COMtime. Likewise, if @var{real_config_file} is present and
2939*8044SWilliam.Kucharski@Sun.COM@var{stage2_file} is a Stage 1.5, then the Stage 2 @var{config_file} is
2940*8044SWilliam.Kucharski@Sun.COMpatched with the configuration file name @var{real_config_file}. This
2941*8044SWilliam.Kucharski@Sun.COMcommand preserves the DOS BPB (and for hard disks, the partition table)
2942*8044SWilliam.Kucharski@Sun.COMof the sector the Stage 1 is to be installed into.
2943*8044SWilliam.Kucharski@Sun.COM
2944*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} Several buggy BIOSes don't pass a booting drive
2945*8044SWilliam.Kucharski@Sun.COMproperly when booting from a hard disk drive. Therefore, you will
2946*8044SWilliam.Kucharski@Sun.COMunfortunately have to specify the option @option{d}, whether your
2947*8044SWilliam.Kucharski@Sun.COMStage2 resides at the booting drive or not, if you have such a
2948*8044SWilliam.Kucharski@Sun.COMBIOS. We know these are defective in this way:
2949*8044SWilliam.Kucharski@Sun.COM
2950*8044SWilliam.Kucharski@Sun.COM@table @asis
2951*8044SWilliam.Kucharski@Sun.COM@item
2952*8044SWilliam.Kucharski@Sun.COMFujitsu LifeBook 400 BIOS version 31J0103A
2953*8044SWilliam.Kucharski@Sun.COM
2954*8044SWilliam.Kucharski@Sun.COM@item
2955*8044SWilliam.Kucharski@Sun.COMHP Vectra XU 6/200 BIOS version GG.06.11
2956*8044SWilliam.Kucharski@Sun.COM@end table
2957*8044SWilliam.Kucharski@Sun.COM
2958*8044SWilliam.Kucharski@Sun.COM@strong{Caution2:} A number of BIOSes don't return a correct LBA support
2959*8044SWilliam.Kucharski@Sun.COMbitmap even if they do have the support. So GRUB provides a solution to
2960*8044SWilliam.Kucharski@Sun.COMignore the wrong bitmap, that is, the option @option{--force-lba}. Don't
2961*8044SWilliam.Kucharski@Sun.COMuse this option if you know that your BIOS doesn't have LBA support.
2962*8044SWilliam.Kucharski@Sun.COM
2963*8044SWilliam.Kucharski@Sun.COM@strong{Caution3:} You must specify the option @option{--stage2} in the
2964*8044SWilliam.Kucharski@Sun.COMgrub shell, if you cannot unmount the filesystem where your stage2 file
2965*8044SWilliam.Kucharski@Sun.COMresides. The argument should be the file name in your operating system.
2966*8044SWilliam.Kucharski@Sun.COM@end deffn
2967*8044SWilliam.Kucharski@Sun.COM
2968*8044SWilliam.Kucharski@Sun.COM
2969*8044SWilliam.Kucharski@Sun.COM@node ioprobe
2970*8044SWilliam.Kucharski@Sun.COM@subsection ioprobe
2971*8044SWilliam.Kucharski@Sun.COM
2972*8044SWilliam.Kucharski@Sun.COM@deffn Command ioprobe drive
2973*8044SWilliam.Kucharski@Sun.COMProbe I/O ports used for the drive @var{drive}. This command will list
2974*8044SWilliam.Kucharski@Sun.COMthe I/O ports on the screen. For technical information,
2975*8044SWilliam.Kucharski@Sun.COM@xref{Internals}.
2976*8044SWilliam.Kucharski@Sun.COM@end deffn
2977*8044SWilliam.Kucharski@Sun.COM
2978*8044SWilliam.Kucharski@Sun.COM
2979*8044SWilliam.Kucharski@Sun.COM@node kernel
2980*8044SWilliam.Kucharski@Sun.COM@subsection kernel
2981*8044SWilliam.Kucharski@Sun.COM
2982*8044SWilliam.Kucharski@Sun.COM@deffn Command kernel [@option{--type=type}] [@option{--no-mem-option}] file @dots{}
2983*8044SWilliam.Kucharski@Sun.COMAttempt to load the primary boot image (Multiboot a.out or @sc{elf},
2984*8044SWilliam.Kucharski@Sun.COMLinux zImage or bzImage, FreeBSD a.out, NetBSD a.out, etc.) from
2985*8044SWilliam.Kucharski@Sun.COM@var{file}. The rest of the line is passed verbatim as the @dfn{kernel
2986*8044SWilliam.Kucharski@Sun.COMcommand-line}. Any modules must be reloaded after using this command.
2987*8044SWilliam.Kucharski@Sun.COM
2988*8044SWilliam.Kucharski@Sun.COMThis command also accepts the option @option{--type} so that you can
2989*8044SWilliam.Kucharski@Sun.COMspecify the kernel type of @var{file} explicitly. The argument
2990*8044SWilliam.Kucharski@Sun.COM@var{type} must be one of these: @samp{netbsd}, @samp{freebsd},
2991*8044SWilliam.Kucharski@Sun.COM@samp{openbsd}, @samp{linux}, @samp{biglinux}, and
2992*8044SWilliam.Kucharski@Sun.COM@samp{multiboot}. However, you need to specify it only if you want to
2993*8044SWilliam.Kucharski@Sun.COMload a NetBSD @sc{elf} kernel, because GRUB can automatically determine
2994*8044SWilliam.Kucharski@Sun.COMa kernel type in the other cases, quite safely.
2995*8044SWilliam.Kucharski@Sun.COM
2996*8044SWilliam.Kucharski@Sun.COMThe option @option{--no-mem-option} is effective only for Linux. If the
2997*8044SWilliam.Kucharski@Sun.COMoption is specified, GRUB doesn't pass the option @option{mem=} to the
2998*8044SWilliam.Kucharski@Sun.COMkernel.  This option is implied for Linux kernels 2.4.18 and newer.
2999*8044SWilliam.Kucharski@Sun.COM@end deffn
3000*8044SWilliam.Kucharski@Sun.COM
3001*8044SWilliam.Kucharski@Sun.COM
3002*8044SWilliam.Kucharski@Sun.COM@node lock
3003*8044SWilliam.Kucharski@Sun.COM@subsection lock
3004*8044SWilliam.Kucharski@Sun.COM
3005*8044SWilliam.Kucharski@Sun.COM@deffn Command lock
3006*8044SWilliam.Kucharski@Sun.COMPrevent normal users from executing arbitrary menu entries. You must use
3007*8044SWilliam.Kucharski@Sun.COMthe command @command{password} if you really want this command to be
3008*8044SWilliam.Kucharski@Sun.COMuseful (@pxref{password}).
3009*8044SWilliam.Kucharski@Sun.COM
3010*8044SWilliam.Kucharski@Sun.COMThis command is used in a menu, as shown in this example:
3011*8044SWilliam.Kucharski@Sun.COM
3012*8044SWilliam.Kucharski@Sun.COM@example
3013*8044SWilliam.Kucharski@Sun.COM@group
3014*8044SWilliam.Kucharski@Sun.COMtitle This entry is too dangerous to be executed by normal users
3015*8044SWilliam.Kucharski@Sun.COMlock
3016*8044SWilliam.Kucharski@Sun.COMroot (hd0,a)
3017*8044SWilliam.Kucharski@Sun.COMkernel /no-security-os
3018*8044SWilliam.Kucharski@Sun.COM@end group
3019*8044SWilliam.Kucharski@Sun.COM@end example
3020*8044SWilliam.Kucharski@Sun.COM
3021*8044SWilliam.Kucharski@Sun.COMSee also @ref{Security}.
3022*8044SWilliam.Kucharski@Sun.COM@end deffn
3023*8044SWilliam.Kucharski@Sun.COM
3024*8044SWilliam.Kucharski@Sun.COM
3025*8044SWilliam.Kucharski@Sun.COM@node makeactive
3026*8044SWilliam.Kucharski@Sun.COM@subsection makeactive
3027*8044SWilliam.Kucharski@Sun.COM
3028*8044SWilliam.Kucharski@Sun.COM@deffn Command makeactive
3029*8044SWilliam.Kucharski@Sun.COMSet the active partition on the root disk to GRUB's root device.
3030*8044SWilliam.Kucharski@Sun.COMThis command is limited to @emph{primary} PC partitions on a hard disk.
3031*8044SWilliam.Kucharski@Sun.COM@end deffn
3032*8044SWilliam.Kucharski@Sun.COM
3033*8044SWilliam.Kucharski@Sun.COM
3034*8044SWilliam.Kucharski@Sun.COM@node map
3035*8044SWilliam.Kucharski@Sun.COM@subsection map
3036*8044SWilliam.Kucharski@Sun.COM
3037*8044SWilliam.Kucharski@Sun.COM@deffn Command map to_drive from_drive
3038*8044SWilliam.Kucharski@Sun.COMMap the drive @var{from_drive} to the drive @var{to_drive}. This is
3039*8044SWilliam.Kucharski@Sun.COMnecessary when you chain-load some operating systems, such as DOS, if
3040*8044SWilliam.Kucharski@Sun.COMsuch an OS resides at a non-first drive. Here is an example:
3041*8044SWilliam.Kucharski@Sun.COM
3042*8044SWilliam.Kucharski@Sun.COM@example
3043*8044SWilliam.Kucharski@Sun.COM@group
3044*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{map (hd0) (hd1)}
3045*8044SWilliam.Kucharski@Sun.COMgrub> @kbd{map (hd1) (hd0)}
3046*8044SWilliam.Kucharski@Sun.COM@end group
3047*8044SWilliam.Kucharski@Sun.COM@end example
3048*8044SWilliam.Kucharski@Sun.COM
3049*8044SWilliam.Kucharski@Sun.COMThe example exchanges the order between the first hard disk and the
3050*8044SWilliam.Kucharski@Sun.COMsecond hard disk. See also @ref{DOS/Windows}.
3051*8044SWilliam.Kucharski@Sun.COM@end deffn
3052*8044SWilliam.Kucharski@Sun.COM
3053*8044SWilliam.Kucharski@Sun.COM
3054*8044SWilliam.Kucharski@Sun.COM@node md5crypt
3055*8044SWilliam.Kucharski@Sun.COM@subsection md5crypt
3056*8044SWilliam.Kucharski@Sun.COM
3057*8044SWilliam.Kucharski@Sun.COM@deffn Command md5crypt
3058*8044SWilliam.Kucharski@Sun.COMPrompt to enter a password, and encrypt it in MD5 format. The encrypted
3059*8044SWilliam.Kucharski@Sun.COMpassword can be used with the command @command{password}
3060*8044SWilliam.Kucharski@Sun.COM(@pxref{password}). See also @ref{Security}.
3061*8044SWilliam.Kucharski@Sun.COM@end deffn
3062*8044SWilliam.Kucharski@Sun.COM
3063*8044SWilliam.Kucharski@Sun.COM
3064*8044SWilliam.Kucharski@Sun.COM@node module
3065*8044SWilliam.Kucharski@Sun.COM@subsection module
3066*8044SWilliam.Kucharski@Sun.COM
3067*8044SWilliam.Kucharski@Sun.COM@deffn Command module file @dots{}
3068*8044SWilliam.Kucharski@Sun.COMLoad a boot module @var{file} for a Multiboot format boot image (no
3069*8044SWilliam.Kucharski@Sun.COMinterpretation of the file contents are made, so the user of this
3070*8044SWilliam.Kucharski@Sun.COMcommand must know what the kernel in question expects). The rest of the
3071*8044SWilliam.Kucharski@Sun.COMline is passed as the @dfn{module command-line}, like the
3072*8044SWilliam.Kucharski@Sun.COM@command{kernel} command. You must load a Multiboot kernel image before
3073*8044SWilliam.Kucharski@Sun.COMloading any module. See also @ref{modulenounzip}.
3074*8044SWilliam.Kucharski@Sun.COM@end deffn
3075*8044SWilliam.Kucharski@Sun.COM
3076*8044SWilliam.Kucharski@Sun.COM
3077*8044SWilliam.Kucharski@Sun.COM@node modulenounzip
3078*8044SWilliam.Kucharski@Sun.COM@subsection modulenounzip
3079*8044SWilliam.Kucharski@Sun.COM
3080*8044SWilliam.Kucharski@Sun.COM@deffn Command modulenounzip file @dots{}
3081*8044SWilliam.Kucharski@Sun.COMThe same as @command{module} (@pxref{module}), except that automatic
3082*8044SWilliam.Kucharski@Sun.COMdecompression is disabled.
3083*8044SWilliam.Kucharski@Sun.COM@end deffn
3084*8044SWilliam.Kucharski@Sun.COM
3085*8044SWilliam.Kucharski@Sun.COM
3086*8044SWilliam.Kucharski@Sun.COM@node pause
3087*8044SWilliam.Kucharski@Sun.COM@subsection pause
3088*8044SWilliam.Kucharski@Sun.COM
3089*8044SWilliam.Kucharski@Sun.COM@deffn Command pause message @dots{}
3090*8044SWilliam.Kucharski@Sun.COMPrint the @var{message}, then wait until a key is pressed. Note that
3091*8044SWilliam.Kucharski@Sun.COMplacing @key{^G} (ASCII code 7) in the message will cause the speaker to
3092*8044SWilliam.Kucharski@Sun.COMemit the standard beep sound, which is useful when prompting the user to
3093*8044SWilliam.Kucharski@Sun.COMchange floppies.
3094*8044SWilliam.Kucharski@Sun.COM@end deffn
3095*8044SWilliam.Kucharski@Sun.COM
3096*8044SWilliam.Kucharski@Sun.COM
3097*8044SWilliam.Kucharski@Sun.COM@node quit
3098*8044SWilliam.Kucharski@Sun.COM@subsection quit
3099*8044SWilliam.Kucharski@Sun.COM
3100*8044SWilliam.Kucharski@Sun.COM@deffn Command quit
3101*8044SWilliam.Kucharski@Sun.COMExit from the grub shell @command{grub} (@pxref{Invoking the grub
3102*8044SWilliam.Kucharski@Sun.COMshell}). This command can be used only in the grub shell.
3103*8044SWilliam.Kucharski@Sun.COM@end deffn
3104*8044SWilliam.Kucharski@Sun.COM
3105*8044SWilliam.Kucharski@Sun.COM
3106*8044SWilliam.Kucharski@Sun.COM@node reboot
3107*8044SWilliam.Kucharski@Sun.COM@subsection reboot
3108*8044SWilliam.Kucharski@Sun.COM
3109*8044SWilliam.Kucharski@Sun.COM@deffn Command reboot
3110*8044SWilliam.Kucharski@Sun.COMReboot the computer.
3111*8044SWilliam.Kucharski@Sun.COM@end deffn
3112*8044SWilliam.Kucharski@Sun.COM
3113*8044SWilliam.Kucharski@Sun.COM
3114*8044SWilliam.Kucharski@Sun.COM@node read
3115*8044SWilliam.Kucharski@Sun.COM@subsection read
3116*8044SWilliam.Kucharski@Sun.COM
3117*8044SWilliam.Kucharski@Sun.COM@deffn Command read addr
3118*8044SWilliam.Kucharski@Sun.COMRead a 32-bit value from memory at address @var{addr} and display it in
3119*8044SWilliam.Kucharski@Sun.COMhex format.
3120*8044SWilliam.Kucharski@Sun.COM@end deffn
3121*8044SWilliam.Kucharski@Sun.COM
3122*8044SWilliam.Kucharski@Sun.COM
3123*8044SWilliam.Kucharski@Sun.COM@node root
3124*8044SWilliam.Kucharski@Sun.COM@subsection root
3125*8044SWilliam.Kucharski@Sun.COM
3126*8044SWilliam.Kucharski@Sun.COM@deffn Command root device [hdbias]
3127*8044SWilliam.Kucharski@Sun.COMSet the current @dfn{root device} to the device @var{device}, then
3128*8044SWilliam.Kucharski@Sun.COMattempt to mount it to get the partition size (for passing the partition
3129*8044SWilliam.Kucharski@Sun.COMdescriptor in @code{ES:ESI}, used by some chain-loaded boot loaders), the
3130*8044SWilliam.Kucharski@Sun.COMBSD drive-type (for booting BSD kernels using their native boot format),
3131*8044SWilliam.Kucharski@Sun.COMand correctly determine the PC partition where a BSD sub-partition is
3132*8044SWilliam.Kucharski@Sun.COMlocated. The optional @var{hdbias} parameter is a number to tell a BSD
3133*8044SWilliam.Kucharski@Sun.COMkernel how many BIOS drive numbers are on controllers before the current
3134*8044SWilliam.Kucharski@Sun.COMone. For example, if there is an IDE disk and a SCSI disk, and your
3135*8044SWilliam.Kucharski@Sun.COMFreeBSD root partition is on the SCSI disk, then use a @samp{1} for
3136*8044SWilliam.Kucharski@Sun.COM@var{hdbias}.
3137*8044SWilliam.Kucharski@Sun.COM
3138*8044SWilliam.Kucharski@Sun.COMSee also @ref{rootnoverify}.
3139*8044SWilliam.Kucharski@Sun.COM@end deffn
3140*8044SWilliam.Kucharski@Sun.COM
3141*8044SWilliam.Kucharski@Sun.COM
3142*8044SWilliam.Kucharski@Sun.COM@node rootnoverify
3143*8044SWilliam.Kucharski@Sun.COM@subsection rootnoverify
3144*8044SWilliam.Kucharski@Sun.COM
3145*8044SWilliam.Kucharski@Sun.COM@deffn Command rootnoverify device [hdbias]
3146*8044SWilliam.Kucharski@Sun.COMSimilar to @command{root} (@pxref{root}), but don't attempt to mount the
3147*8044SWilliam.Kucharski@Sun.COMpartition. This is useful for when an OS is outside of the area of the
3148*8044SWilliam.Kucharski@Sun.COMdisk that GRUB can read, but setting the correct root device is still
3149*8044SWilliam.Kucharski@Sun.COMdesired. Note that the items mentioned in @command{root} above which
3150*8044SWilliam.Kucharski@Sun.COMderived from attempting the mount will @emph{not} work correctly.
3151*8044SWilliam.Kucharski@Sun.COM@end deffn
3152*8044SWilliam.Kucharski@Sun.COM
3153*8044SWilliam.Kucharski@Sun.COM
3154*8044SWilliam.Kucharski@Sun.COM@node savedefault
3155*8044SWilliam.Kucharski@Sun.COM@subsection savedefault
3156*8044SWilliam.Kucharski@Sun.COM
3157*8044SWilliam.Kucharski@Sun.COM@deffn Command savedefault num
3158*8044SWilliam.Kucharski@Sun.COMSave the current menu entry or @var{num} if specified as a default
3159*8044SWilliam.Kucharski@Sun.COMentry. Here is an example:
3160*8044SWilliam.Kucharski@Sun.COM
3161*8044SWilliam.Kucharski@Sun.COM@example
3162*8044SWilliam.Kucharski@Sun.COM@group
3163*8044SWilliam.Kucharski@Sun.COMdefault saved
3164*8044SWilliam.Kucharski@Sun.COMtimeout 10
3165*8044SWilliam.Kucharski@Sun.COM
3166*8044SWilliam.Kucharski@Sun.COMtitle GNU/Linux
3167*8044SWilliam.Kucharski@Sun.COMroot (hd0,0)
3168*8044SWilliam.Kucharski@Sun.COMkernel /boot/vmlinuz root=/dev/sda1 vga=ext
3169*8044SWilliam.Kucharski@Sun.COMinitrd /boot/initrd
3170*8044SWilliam.Kucharski@Sun.COMsavedefault
3171*8044SWilliam.Kucharski@Sun.COM
3172*8044SWilliam.Kucharski@Sun.COMtitle FreeBSD
3173*8044SWilliam.Kucharski@Sun.COMroot (hd0,a)
3174*8044SWilliam.Kucharski@Sun.COMkernel /boot/loader
3175*8044SWilliam.Kucharski@Sun.COMsavedefault
3176*8044SWilliam.Kucharski@Sun.COM@end group
3177*8044SWilliam.Kucharski@Sun.COM@end example
3178*8044SWilliam.Kucharski@Sun.COM
3179*8044SWilliam.Kucharski@Sun.COMWith this configuration, GRUB will choose the entry booted previously as
3180*8044SWilliam.Kucharski@Sun.COMthe default entry.
3181*8044SWilliam.Kucharski@Sun.COM
3182*8044SWilliam.Kucharski@Sun.COMYou can specify @samp{fallback} instead of a number. Then, next
3183*8044SWilliam.Kucharski@Sun.COMfallback entry is saved. Next fallback entry is chosen from fallback
3184*8044SWilliam.Kucharski@Sun.COMentries. Normally, this will be the first entry in fallback ones.
3185*8044SWilliam.Kucharski@Sun.COM
3186*8044SWilliam.Kucharski@Sun.COMSee also @ref{default} and @ref{Invoking grub-set-default}.
3187*8044SWilliam.Kucharski@Sun.COM@end deffn
3188*8044SWilliam.Kucharski@Sun.COM
3189*8044SWilliam.Kucharski@Sun.COM
3190*8044SWilliam.Kucharski@Sun.COM@node setup
3191*8044SWilliam.Kucharski@Sun.COM@subsection setup
3192*8044SWilliam.Kucharski@Sun.COM
3193*8044SWilliam.Kucharski@Sun.COM@deffn Command setup [@option{--force-lba}] [@option{--stage2=os_stage2_file}] [@option{--prefix=dir}] install_device [image_device]
3194*8044SWilliam.Kucharski@Sun.COMSet up the installation of GRUB automatically. This command uses the
3195*8044SWilliam.Kucharski@Sun.COMmore flexible command @command{install} (@pxref{install}) in the backend
3196*8044SWilliam.Kucharski@Sun.COMand installs GRUB into the device @var{install_device}. If
3197*8044SWilliam.Kucharski@Sun.COM@var{image_device} is specified, then find the GRUB images
3198*8044SWilliam.Kucharski@Sun.COM(@pxref{Images}) in the device @var{image_device}, otherwise use the
3199*8044SWilliam.Kucharski@Sun.COMcurrent @dfn{root device}, which can be set by the command
3200*8044SWilliam.Kucharski@Sun.COM@command{root}. If @var{install_device} is a hard disk, then embed a
3201*8044SWilliam.Kucharski@Sun.COMStage 1.5 in the disk if possible.
3202*8044SWilliam.Kucharski@Sun.COM
3203*8044SWilliam.Kucharski@Sun.COMThe option @option{--prefix} specifies the directory under which GRUB
3204*8044SWilliam.Kucharski@Sun.COMimages are put. If it is not specified, GRUB automatically searches them
3205*8044SWilliam.Kucharski@Sun.COMin @file{/boot/grub} and @file{/grub}.
3206*8044SWilliam.Kucharski@Sun.COM
3207*8044SWilliam.Kucharski@Sun.COMThe options @option{--force-lba} and @option{--stage2} are just passed
3208*8044SWilliam.Kucharski@Sun.COMto @command{install} if specified. @xref{install}, for more
3209*8044SWilliam.Kucharski@Sun.COMinformation.
3210*8044SWilliam.Kucharski@Sun.COM@end deffn
3211*8044SWilliam.Kucharski@Sun.COM
3212*8044SWilliam.Kucharski@Sun.COM
3213*8044SWilliam.Kucharski@Sun.COM@node testload
3214*8044SWilliam.Kucharski@Sun.COM@subsection testload
3215*8044SWilliam.Kucharski@Sun.COM
3216*8044SWilliam.Kucharski@Sun.COM@deffn Command testload file
3217*8044SWilliam.Kucharski@Sun.COMRead the entire contents of @var{file} in several different ways and
3218*8044SWilliam.Kucharski@Sun.COMcompare them, to test the filesystem code. The output is somewhat
3219*8044SWilliam.Kucharski@Sun.COMcryptic, but if no errors are reported and the final @samp{i=@var{X},
3220*8044SWilliam.Kucharski@Sun.COMfilepos=@var{Y}} reading has @var{X} and @var{Y} equal, then it is
3221*8044SWilliam.Kucharski@Sun.COMdefinitely consistent, and very likely works correctly subject to a
3222*8044SWilliam.Kucharski@Sun.COMconsistent offset error. If this test succeeds, then a good next step is
3223*8044SWilliam.Kucharski@Sun.COMto try loading a kernel.
3224*8044SWilliam.Kucharski@Sun.COM@end deffn
3225*8044SWilliam.Kucharski@Sun.COM
3226*8044SWilliam.Kucharski@Sun.COM
3227*8044SWilliam.Kucharski@Sun.COM@node testvbe
3228*8044SWilliam.Kucharski@Sun.COM@subsection testvbe
3229*8044SWilliam.Kucharski@Sun.COM
3230*8044SWilliam.Kucharski@Sun.COM@deffn Command testvbe mode
3231*8044SWilliam.Kucharski@Sun.COMTest the VESA BIOS EXTENSION mode @var{mode}. This command will switch
3232*8044SWilliam.Kucharski@Sun.COMyour video card to the graphics mode, and show an endless animation. Hit
3233*8044SWilliam.Kucharski@Sun.COMany key to return. See also @ref{vbeprobe}.
3234*8044SWilliam.Kucharski@Sun.COM@end deffn
3235*8044SWilliam.Kucharski@Sun.COM
3236*8044SWilliam.Kucharski@Sun.COM
3237*8044SWilliam.Kucharski@Sun.COM@node uppermem
3238*8044SWilliam.Kucharski@Sun.COM@subsection uppermem
3239*8044SWilliam.Kucharski@Sun.COM
3240*8044SWilliam.Kucharski@Sun.COM@deffn Command uppermem kbytes
3241*8044SWilliam.Kucharski@Sun.COMForce GRUB to assume that only @var{kbytes} kilobytes of upper memory
3242*8044SWilliam.Kucharski@Sun.COMare installed. Any system address range maps are discarded.
3243*8044SWilliam.Kucharski@Sun.COM
3244*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} This should be used with great caution, and should
3245*8044SWilliam.Kucharski@Sun.COMonly be necessary on some old machines. GRUB's BIOS probe can pick up
3246*8044SWilliam.Kucharski@Sun.COMall @sc{ram} on all new machines the author has ever heard of. It can
3247*8044SWilliam.Kucharski@Sun.COMalso be used for debugging purposes to lie to an OS.
3248*8044SWilliam.Kucharski@Sun.COM@end deffn
3249*8044SWilliam.Kucharski@Sun.COM
3250*8044SWilliam.Kucharski@Sun.COM
3251*8044SWilliam.Kucharski@Sun.COM@node vbeprobe
3252*8044SWilliam.Kucharski@Sun.COM@subsection vbeprobe
3253*8044SWilliam.Kucharski@Sun.COM
3254*8044SWilliam.Kucharski@Sun.COM@deffn Command vbeprobe [mode]
3255*8044SWilliam.Kucharski@Sun.COMProbe VESA BIOS EXTENSION information. If the mode @var{mode} is
3256*8044SWilliam.Kucharski@Sun.COMspecified, show only the information about @var{mode}. Otherwise, this
3257*8044SWilliam.Kucharski@Sun.COMcommand lists up available VBE modes on the screen. See also
3258*8044SWilliam.Kucharski@Sun.COM@ref{testvbe}.
3259*8044SWilliam.Kucharski@Sun.COM@end deffn
3260*8044SWilliam.Kucharski@Sun.COM
3261*8044SWilliam.Kucharski@Sun.COM
3262*8044SWilliam.Kucharski@Sun.COM@node Troubleshooting
3263*8044SWilliam.Kucharski@Sun.COM@chapter Error messages reported by GRUB
3264*8044SWilliam.Kucharski@Sun.COM
3265*8044SWilliam.Kucharski@Sun.COMThis chapter describes error messages reported by GRUB when you
3266*8044SWilliam.Kucharski@Sun.COMencounter trouble. @xref{Invoking the grub shell}, if your problem is
3267*8044SWilliam.Kucharski@Sun.COMspecific to the grub shell.
3268*8044SWilliam.Kucharski@Sun.COM
3269*8044SWilliam.Kucharski@Sun.COM@menu
3270*8044SWilliam.Kucharski@Sun.COM* Stage1 errors::               Errors reported by the Stage 1
3271*8044SWilliam.Kucharski@Sun.COM* Stage1.5 errors::             Errors reported by the Stage 1.5
3272*8044SWilliam.Kucharski@Sun.COM* Stage2 errors::               Errors reported by the Stage 2
3273*8044SWilliam.Kucharski@Sun.COM@end menu
3274*8044SWilliam.Kucharski@Sun.COM
3275*8044SWilliam.Kucharski@Sun.COM
3276*8044SWilliam.Kucharski@Sun.COM@node Stage1 errors
3277*8044SWilliam.Kucharski@Sun.COM@section Errors reported by the Stage 1
3278*8044SWilliam.Kucharski@Sun.COM
3279*8044SWilliam.Kucharski@Sun.COMThe general way that the Stage 1 handles errors is to print an error
3280*8044SWilliam.Kucharski@Sun.COMstring and then halt. Pressing @kbd{@key{CTRL}-@key{ALT}-@key{DEL}} will
3281*8044SWilliam.Kucharski@Sun.COMreboot.
3282*8044SWilliam.Kucharski@Sun.COM
3283*8044SWilliam.Kucharski@Sun.COMThe following is a comprehensive list of error messages for the Stage 1:
3284*8044SWilliam.Kucharski@Sun.COM
3285*8044SWilliam.Kucharski@Sun.COM@table @asis
3286*8044SWilliam.Kucharski@Sun.COM@item Hard Disk Error
3287*8044SWilliam.Kucharski@Sun.COMThe stage2 or stage1.5 is being read from a hard disk, and the attempt
3288*8044SWilliam.Kucharski@Sun.COMto determine the size and geometry of the hard disk failed.
3289*8044SWilliam.Kucharski@Sun.COM
3290*8044SWilliam.Kucharski@Sun.COM@item Floppy Error
3291*8044SWilliam.Kucharski@Sun.COMThe stage2 or stage1.5 is being read from a floppy disk, and the attempt
3292*8044SWilliam.Kucharski@Sun.COMto determine the size and geometry of the floppy disk failed. It's listed
3293*8044SWilliam.Kucharski@Sun.COMas a separate error since the probe sequence is different than for hard
3294*8044SWilliam.Kucharski@Sun.COMdisks.
3295*8044SWilliam.Kucharski@Sun.COM
3296*8044SWilliam.Kucharski@Sun.COM@item Read Error
3297*8044SWilliam.Kucharski@Sun.COMA disk read error happened while trying to read the stage2 or stage1.5.
3298*8044SWilliam.Kucharski@Sun.COM
3299*8044SWilliam.Kucharski@Sun.COM@item Geom Error
3300*8044SWilliam.Kucharski@Sun.COMThe location of the stage2 or stage1.5 is not in the portion of the disk
3301*8044SWilliam.Kucharski@Sun.COMsupported directly by the BIOS read calls.  This could occur because the
3302*8044SWilliam.Kucharski@Sun.COMBIOS translated geometry has been changed by the user or the disk is
3303*8044SWilliam.Kucharski@Sun.COMmoved to another machine or controller after installation, or GRUB was
3304*8044SWilliam.Kucharski@Sun.COMnot installed using itself (if it was, the Stage 2 version of this error
3305*8044SWilliam.Kucharski@Sun.COMwould have been seen during that process and it would not have completed
3306*8044SWilliam.Kucharski@Sun.COMthe install).
3307*8044SWilliam.Kucharski@Sun.COM@end table
3308*8044SWilliam.Kucharski@Sun.COM
3309*8044SWilliam.Kucharski@Sun.COM
3310*8044SWilliam.Kucharski@Sun.COM@node Stage1.5 errors
3311*8044SWilliam.Kucharski@Sun.COM@section Errors reported by the Stage 1.5
3312*8044SWilliam.Kucharski@Sun.COM
3313*8044SWilliam.Kucharski@Sun.COMThe general way that the Stage 1.5 handles errors is to print an error
3314*8044SWilliam.Kucharski@Sun.COMnumber in the form @code{Error @var{num}} and then halt. Pressing
3315*8044SWilliam.Kucharski@Sun.COM@kbd{@key{CTRL}-@key{ALT}-@key{DEL}} will reboot.
3316*8044SWilliam.Kucharski@Sun.COM
3317*8044SWilliam.Kucharski@Sun.COMThe error numbers correspond to the errors reported by Stage
3318*8044SWilliam.Kucharski@Sun.COM2. @xref{Stage2 errors}.
3319*8044SWilliam.Kucharski@Sun.COM
3320*8044SWilliam.Kucharski@Sun.COM
3321*8044SWilliam.Kucharski@Sun.COM@node Stage2 errors
3322*8044SWilliam.Kucharski@Sun.COM@section Errors reported by the Stage 2
3323*8044SWilliam.Kucharski@Sun.COM
3324*8044SWilliam.Kucharski@Sun.COMThe general way that the Stage 2 handles errors is to abort the
3325*8044SWilliam.Kucharski@Sun.COMoperation in question, print an error string, then (if possible) either
3326*8044SWilliam.Kucharski@Sun.COMcontinue based on the fact that an error occurred or wait for the user to
3327*8044SWilliam.Kucharski@Sun.COMdeal with the error.
3328*8044SWilliam.Kucharski@Sun.COM
3329*8044SWilliam.Kucharski@Sun.COMThe following is a comprehensive list of error messages for the Stage 2
3330*8044SWilliam.Kucharski@Sun.COM(error numbers for the Stage 1.5 are listed before the colon in each
3331*8044SWilliam.Kucharski@Sun.COMdescription):
3332*8044SWilliam.Kucharski@Sun.COM
3333*8044SWilliam.Kucharski@Sun.COM@table @asis
3334*8044SWilliam.Kucharski@Sun.COM@item 1 : Filename must be either an absolute filename or blocklist
3335*8044SWilliam.Kucharski@Sun.COMThis error is returned if a file name is requested which doesn't fit the
3336*8044SWilliam.Kucharski@Sun.COMsyntax/rules listed in the @ref{Filesystem}.
3337*8044SWilliam.Kucharski@Sun.COM
3338*8044SWilliam.Kucharski@Sun.COM@item 2 : Bad file or directory type
3339*8044SWilliam.Kucharski@Sun.COMThis error is returned if a file requested is not a regular file, but
3340*8044SWilliam.Kucharski@Sun.COMsomething like a symbolic link, directory, or FIFO.
3341*8044SWilliam.Kucharski@Sun.COM
3342*8044SWilliam.Kucharski@Sun.COM@item 3 : Bad or corrupt data while decompressing file
3343*8044SWilliam.Kucharski@Sun.COMThis error is returned if the run-length decompression code gets an
3344*8044SWilliam.Kucharski@Sun.COMinternal error. This is usually from a corrupt file.
3345*8044SWilliam.Kucharski@Sun.COM
3346*8044SWilliam.Kucharski@Sun.COM@item 4 : Bad or incompatible header in compressed file
3347*8044SWilliam.Kucharski@Sun.COMThis error is returned if the file header for a supposedly compressed
3348*8044SWilliam.Kucharski@Sun.COMfile is bad.
3349*8044SWilliam.Kucharski@Sun.COM
3350*8044SWilliam.Kucharski@Sun.COM@item 5 : Partition table invalid or corrupt
3351*8044SWilliam.Kucharski@Sun.COMThis error is returned if the sanity checks on the integrity of the
3352*8044SWilliam.Kucharski@Sun.COMpartition table fail. This is a bad sign.
3353*8044SWilliam.Kucharski@Sun.COM
3354*8044SWilliam.Kucharski@Sun.COM@item 6 : Mismatched or corrupt version of stage1/stage2
3355*8044SWilliam.Kucharski@Sun.COMThis error is returned if the install command points to incompatible
3356*8044SWilliam.Kucharski@Sun.COMor corrupt versions of the stage1 or stage2. It can't detect corruption
3357*8044SWilliam.Kucharski@Sun.COMin general, but this is a sanity check on the version numbers, which
3358*8044SWilliam.Kucharski@Sun.COMshould be correct.
3359*8044SWilliam.Kucharski@Sun.COM
3360*8044SWilliam.Kucharski@Sun.COM@item 7 : Loading below 1MB is not supported
3361*8044SWilliam.Kucharski@Sun.COMThis error is returned if the lowest address in a kernel is below the
3362*8044SWilliam.Kucharski@Sun.COM1MB boundary. The Linux zImage format is a special case and can be
3363*8044SWilliam.Kucharski@Sun.COMhandled since it has a fixed loading address and maximum size.
3364*8044SWilliam.Kucharski@Sun.COM
3365*8044SWilliam.Kucharski@Sun.COM@item 8 : Kernel must be loaded before booting
3366*8044SWilliam.Kucharski@Sun.COMThis error is returned if GRUB is told to execute the boot sequence
3367*8044SWilliam.Kucharski@Sun.COMwithout having a kernel to start.
3368*8044SWilliam.Kucharski@Sun.COM
3369*8044SWilliam.Kucharski@Sun.COM@item 9 : Unknown boot failure
3370*8044SWilliam.Kucharski@Sun.COMThis error is returned if the boot attempt did not succeed for reasons
3371*8044SWilliam.Kucharski@Sun.COMwhich are unknown.
3372*8044SWilliam.Kucharski@Sun.COM
3373*8044SWilliam.Kucharski@Sun.COM@item 10 : Unsupported Multiboot features requested
3374*8044SWilliam.Kucharski@Sun.COMThis error is returned when the Multiboot features word in the Multiboot
3375*8044SWilliam.Kucharski@Sun.COMheader requires a feature that is not recognized. The point of this is
3376*8044SWilliam.Kucharski@Sun.COMthat the kernel requires special handling which GRUB is probably
3377*8044SWilliam.Kucharski@Sun.COMunable to provide.
3378*8044SWilliam.Kucharski@Sun.COM
3379*8044SWilliam.Kucharski@Sun.COM@item 11 : Unrecognized device string
3380*8044SWilliam.Kucharski@Sun.COMThis error is returned if a device string was expected, and the string
3381*8044SWilliam.Kucharski@Sun.COMencountered didn't fit the syntax/rules listed in the @ref{Filesystem}.
3382*8044SWilliam.Kucharski@Sun.COM
3383*8044SWilliam.Kucharski@Sun.COM@item 12 : Invalid device requested
3384*8044SWilliam.Kucharski@Sun.COMThis error is returned if a device string is recognizable but does not
3385*8044SWilliam.Kucharski@Sun.COMfall under the other device errors.
3386*8044SWilliam.Kucharski@Sun.COM
3387*8044SWilliam.Kucharski@Sun.COM@item 13 : Invalid or unsupported executable format
3388*8044SWilliam.Kucharski@Sun.COMThis error is returned if the kernel image being loaded is not
3389*8044SWilliam.Kucharski@Sun.COMrecognized as Multiboot or one of the supported native formats (Linux
3390*8044SWilliam.Kucharski@Sun.COMzImage or bzImage, FreeBSD, or NetBSD).
3391*8044SWilliam.Kucharski@Sun.COM
3392*8044SWilliam.Kucharski@Sun.COM@item 14 : Filesystem compatibility error, cannot read whole file
3393*8044SWilliam.Kucharski@Sun.COMSome of the filesystem reading code in GRUB has limits on the length of
3394*8044SWilliam.Kucharski@Sun.COMthe files it can read. This error is returned when the user runs into
3395*8044SWilliam.Kucharski@Sun.COMsuch a limit.
3396*8044SWilliam.Kucharski@Sun.COM
3397*8044SWilliam.Kucharski@Sun.COM@item 15 : File not found
3398*8044SWilliam.Kucharski@Sun.COMThis error is returned if the specified file name cannot be found, but
3399*8044SWilliam.Kucharski@Sun.COMeverything else (like the disk/partition info) is OK.
3400*8044SWilliam.Kucharski@Sun.COM
3401*8044SWilliam.Kucharski@Sun.COM@item 16 : Inconsistent filesystem structure
3402*8044SWilliam.Kucharski@Sun.COMThis error is returned by the filesystem code to denote an internal
3403*8044SWilliam.Kucharski@Sun.COMerror caused by the sanity checks of the filesystem structure on disk
3404*8044SWilliam.Kucharski@Sun.COMnot matching what it expects. This is usually caused by a corrupt
3405*8044SWilliam.Kucharski@Sun.COMfilesystem or bugs in the code handling it in GRUB.
3406*8044SWilliam.Kucharski@Sun.COM
3407*8044SWilliam.Kucharski@Sun.COM@item 17 : Cannot mount selected partition
3408*8044SWilliam.Kucharski@Sun.COMThis error is returned if the partition requested exists, but the
3409*8044SWilliam.Kucharski@Sun.COMfilesystem type cannot be recognized by GRUB.
3410*8044SWilliam.Kucharski@Sun.COM
3411*8044SWilliam.Kucharski@Sun.COM@item 18 : Selected cylinder exceeds maximum supported by BIOS
3412*8044SWilliam.Kucharski@Sun.COMThis error is returned when a read is attempted at a linear block
3413*8044SWilliam.Kucharski@Sun.COMaddress beyond the end of the BIOS translated area. This generally
3414*8044SWilliam.Kucharski@Sun.COMhappens if your disk is larger than the BIOS can handle (512MB for
3415*8044SWilliam.Kucharski@Sun.COM(E)IDE disks on older machines or larger than 8GB in general).
3416*8044SWilliam.Kucharski@Sun.COM
3417*8044SWilliam.Kucharski@Sun.COM@item 19 : Linux kernel must be loaded before initrd
3418*8044SWilliam.Kucharski@Sun.COMThis error is returned if the initrd command is used before loading a
3419*8044SWilliam.Kucharski@Sun.COMLinux kernel.
3420*8044SWilliam.Kucharski@Sun.COM
3421*8044SWilliam.Kucharski@Sun.COM@item 20 : Multiboot kernel must be loaded before modules
3422*8044SWilliam.Kucharski@Sun.COMThis error is returned if the module load command is used before loading
3423*8044SWilliam.Kucharski@Sun.COMa Multiboot kernel. It only makes sense in this case anyway, as GRUB has
3424*8044SWilliam.Kucharski@Sun.COMno idea how to communicate the presence of such modules to a
3425*8044SWilliam.Kucharski@Sun.COMnon-Multiboot-aware kernel.
3426*8044SWilliam.Kucharski@Sun.COM
3427*8044SWilliam.Kucharski@Sun.COM@item 21 : Selected disk does not exist
3428*8044SWilliam.Kucharski@Sun.COMThis error is returned if the device part of a device- or full file name
3429*8044SWilliam.Kucharski@Sun.COMrefers to a disk or BIOS device that is not present or not recognized by
3430*8044SWilliam.Kucharski@Sun.COMthe BIOS in the system.
3431*8044SWilliam.Kucharski@Sun.COM
3432*8044SWilliam.Kucharski@Sun.COM@item 22 : No such partition
3433*8044SWilliam.Kucharski@Sun.COMThis error is returned if a partition is requested in the device part of
3434*8044SWilliam.Kucharski@Sun.COMa device- or full file name which isn't on the selected disk.
3435*8044SWilliam.Kucharski@Sun.COM
3436*8044SWilliam.Kucharski@Sun.COM@item 23 : Error while parsing number
3437*8044SWilliam.Kucharski@Sun.COMThis error is returned if GRUB was expecting to read a number and
3438*8044SWilliam.Kucharski@Sun.COMencountered bad data.
3439*8044SWilliam.Kucharski@Sun.COM
3440*8044SWilliam.Kucharski@Sun.COM@item 24 : Attempt to access block outside partition
3441*8044SWilliam.Kucharski@Sun.COMThis error is returned if a linear block address is outside of the disk
3442*8044SWilliam.Kucharski@Sun.COMpartition. This generally happens because of a corrupt filesystem on the
3443*8044SWilliam.Kucharski@Sun.COMdisk or a bug in the code handling it in GRUB (it's a great debugging
3444*8044SWilliam.Kucharski@Sun.COMtool).
3445*8044SWilliam.Kucharski@Sun.COM
3446*8044SWilliam.Kucharski@Sun.COM@item 25 : Disk read error
3447*8044SWilliam.Kucharski@Sun.COMThis error is returned if there is a disk read error when trying to
3448*8044SWilliam.Kucharski@Sun.COMprobe or read data from a particular disk.
3449*8044SWilliam.Kucharski@Sun.COM
3450*8044SWilliam.Kucharski@Sun.COM@item 26 : Too many symbolic links
3451*8044SWilliam.Kucharski@Sun.COMThis error is returned if the link count is beyond the maximum
3452*8044SWilliam.Kucharski@Sun.COM(currently 5), possibly the symbolic links are looped.
3453*8044SWilliam.Kucharski@Sun.COM
3454*8044SWilliam.Kucharski@Sun.COM@item 27 : Unrecognized command
3455*8044SWilliam.Kucharski@Sun.COMThis error is returned if an unrecognized command is entered on the
3456*8044SWilliam.Kucharski@Sun.COMcommand-line or in a boot sequence section of a configuration file and
3457*8044SWilliam.Kucharski@Sun.COMthat entry is selected.
3458*8044SWilliam.Kucharski@Sun.COM
3459*8044SWilliam.Kucharski@Sun.COM@item 28 : Selected item cannot fit into memory
3460*8044SWilliam.Kucharski@Sun.COMThis error is returned if a kernel, module, or raw file load command is
3461*8044SWilliam.Kucharski@Sun.COMeither trying to load its data such that it won't fit into memory or it
3462*8044SWilliam.Kucharski@Sun.COMis simply too big.
3463*8044SWilliam.Kucharski@Sun.COM
3464*8044SWilliam.Kucharski@Sun.COM@item 29 : Disk write error
3465*8044SWilliam.Kucharski@Sun.COMThis error is returned if there is a disk write error when trying to
3466*8044SWilliam.Kucharski@Sun.COMwrite to a particular disk. This would generally only occur during an
3467*8044SWilliam.Kucharski@Sun.COMinstall of set active partition command.
3468*8044SWilliam.Kucharski@Sun.COM
3469*8044SWilliam.Kucharski@Sun.COM@item 30 : Invalid argument
3470*8044SWilliam.Kucharski@Sun.COMThis error is returned if an argument specified to a command is invalid.
3471*8044SWilliam.Kucharski@Sun.COM
3472*8044SWilliam.Kucharski@Sun.COM@item 31 : File is not sector aligned
3473*8044SWilliam.Kucharski@Sun.COMThis error may occur only when you access a ReiserFS partition by
3474*8044SWilliam.Kucharski@Sun.COMblock-lists (e.g. the command @command{install}). In this case, you
3475*8044SWilliam.Kucharski@Sun.COMshould mount the partition with the @samp{-o notail} option.
3476*8044SWilliam.Kucharski@Sun.COM
3477*8044SWilliam.Kucharski@Sun.COM@item 32 : Must be authenticated
3478*8044SWilliam.Kucharski@Sun.COMThis error is returned if you try to run a locked entry. You should
3479*8044SWilliam.Kucharski@Sun.COMenter a correct password before running such an entry.
3480*8044SWilliam.Kucharski@Sun.COM
3481*8044SWilliam.Kucharski@Sun.COM@item 33 : Serial device not configured
3482*8044SWilliam.Kucharski@Sun.COMThis error is returned if you try to change your terminal to a serial
3483*8044SWilliam.Kucharski@Sun.COMone before initializing any serial device.
3484*8044SWilliam.Kucharski@Sun.COM
3485*8044SWilliam.Kucharski@Sun.COM@item 34 : No spare sectors on the disk
3486*8044SWilliam.Kucharski@Sun.COMThis error is returned if a disk doesn't have enough spare space. This
3487*8044SWilliam.Kucharski@Sun.COMhappens when you try to embed Stage 1.5 into the unused sectors after
3488*8044SWilliam.Kucharski@Sun.COMthe MBR, but the first partition starts right after the MBR or they are
3489*8044SWilliam.Kucharski@Sun.COMused by EZ-BIOS.
3490*8044SWilliam.Kucharski@Sun.COM@end table
3491*8044SWilliam.Kucharski@Sun.COM
3492*8044SWilliam.Kucharski@Sun.COM
3493*8044SWilliam.Kucharski@Sun.COM@node Invoking the grub shell
3494*8044SWilliam.Kucharski@Sun.COM@chapter Invoking the grub shell
3495*8044SWilliam.Kucharski@Sun.COM
3496*8044SWilliam.Kucharski@Sun.COMThis chapter documents the grub shell @command{grub}. Note that the grub
3497*8044SWilliam.Kucharski@Sun.COMshell is an emulator; it doesn't run under the native environment, so it
3498*8044SWilliam.Kucharski@Sun.COMsometimes does something wrong. Therefore, you shouldn't trust it too
3499*8044SWilliam.Kucharski@Sun.COMmuch. If there is anything wrong with it, don't hesitate to try the
3500*8044SWilliam.Kucharski@Sun.COMnative GRUB environment, especially when it guesses a wrong map between
3501*8044SWilliam.Kucharski@Sun.COMBIOS drives and OS devices.
3502*8044SWilliam.Kucharski@Sun.COM
3503*8044SWilliam.Kucharski@Sun.COM@menu
3504*8044SWilliam.Kucharski@Sun.COM* Basic usage::                 How to use the grub shell
3505*8044SWilliam.Kucharski@Sun.COM* Installation under UNIX::     How to install GRUB via @command{grub}
3506*8044SWilliam.Kucharski@Sun.COM* Device map::                  The map between BIOS drives and OS devices
3507*8044SWilliam.Kucharski@Sun.COM@end menu
3508*8044SWilliam.Kucharski@Sun.COM
3509*8044SWilliam.Kucharski@Sun.COM
3510*8044SWilliam.Kucharski@Sun.COM@node Basic usage
3511*8044SWilliam.Kucharski@Sun.COM@section Introduction into the grub shell
3512*8044SWilliam.Kucharski@Sun.COM
3513*8044SWilliam.Kucharski@Sun.COMYou can use the command @command{grub} for installing GRUB under your
3514*8044SWilliam.Kucharski@Sun.COMoperating systems and for a testbed when you add a new feature into GRUB
3515*8044SWilliam.Kucharski@Sun.COMor when fixing a bug. @command{grub} is almost the same as the Stage 2,
3516*8044SWilliam.Kucharski@Sun.COMand, in fact, it shares the source code with the Stage 2 and you can use
3517*8044SWilliam.Kucharski@Sun.COMthe same commands (@pxref{Commands}) in @command{grub}. It is emulated by
3518*8044SWilliam.Kucharski@Sun.COMreplacing BIOS calls with UNIX system calls and libc functions.
3519*8044SWilliam.Kucharski@Sun.COM
3520*8044SWilliam.Kucharski@Sun.COMThe command @command{grub} accepts the following options:
3521*8044SWilliam.Kucharski@Sun.COM
3522*8044SWilliam.Kucharski@Sun.COM@table @option
3523*8044SWilliam.Kucharski@Sun.COM@item --help
3524*8044SWilliam.Kucharski@Sun.COMPrint a summary of the command-line options and exit.
3525*8044SWilliam.Kucharski@Sun.COM
3526*8044SWilliam.Kucharski@Sun.COM@item --version
3527*8044SWilliam.Kucharski@Sun.COMPrint the version number of GRUB and exit.
3528*8044SWilliam.Kucharski@Sun.COM
3529*8044SWilliam.Kucharski@Sun.COM@item --verbose
3530*8044SWilliam.Kucharski@Sun.COMPrint some verbose messages for debugging purpose.
3531*8044SWilliam.Kucharski@Sun.COM
3532*8044SWilliam.Kucharski@Sun.COM@item --device-map=@var{file}
3533*8044SWilliam.Kucharski@Sun.COMUse the device map file @var{file}. The format is described in
3534*8044SWilliam.Kucharski@Sun.COM@ref{Device map}.
3535*8044SWilliam.Kucharski@Sun.COM
3536*8044SWilliam.Kucharski@Sun.COM@item --no-floppy
3537*8044SWilliam.Kucharski@Sun.COMDo not probe any floppy drive. This option has no effect if the option
3538*8044SWilliam.Kucharski@Sun.COM@option{--device-map} is specified (@pxref{Device map}).
3539*8044SWilliam.Kucharski@Sun.COM
3540*8044SWilliam.Kucharski@Sun.COM@item --probe-second-floppy
3541*8044SWilliam.Kucharski@Sun.COMProbe the second floppy drive. If this option is not specified, the grub
3542*8044SWilliam.Kucharski@Sun.COMshell does not probe it, as that sometimes takes a long time. If you
3543*8044SWilliam.Kucharski@Sun.COMspecify the device map file (@pxref{Device map}), the grub shell just
3544*8044SWilliam.Kucharski@Sun.COMignores this option.
3545*8044SWilliam.Kucharski@Sun.COM
3546*8044SWilliam.Kucharski@Sun.COM@item --config-file=@var{file}
3547*8044SWilliam.Kucharski@Sun.COMRead the configuration file @var{file} instead of
3548*8044SWilliam.Kucharski@Sun.COM@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB
3549*8044SWilliam.Kucharski@Sun.COMsyntax. See @ref{Filesystem}, for more information.
3550*8044SWilliam.Kucharski@Sun.COM
3551*8044SWilliam.Kucharski@Sun.COM@item --boot-drive=@var{drive}
3552*8044SWilliam.Kucharski@Sun.COMSet the stage2 @var{boot_drive} to @var{drive}. This argument should be
3553*8044SWilliam.Kucharski@Sun.COMan integer (decimal, octal or hexadecimal).
3554*8044SWilliam.Kucharski@Sun.COM
3555*8044SWilliam.Kucharski@Sun.COM@item --install-partition=@var{par}
3556*8044SWilliam.Kucharski@Sun.COMSet the stage2 @var{install_partition} to @var{par}. This argument
3557*8044SWilliam.Kucharski@Sun.COMshould be an integer (decimal, octal or hexadecimal).
3558*8044SWilliam.Kucharski@Sun.COM
3559*8044SWilliam.Kucharski@Sun.COM@item --no-config-file
3560*8044SWilliam.Kucharski@Sun.COMDo not use the configuration file even if it can be read.
3561*8044SWilliam.Kucharski@Sun.COM
3562*8044SWilliam.Kucharski@Sun.COM@item --no-curses
3563*8044SWilliam.Kucharski@Sun.COMDo not use the screen handling interface by the curses even if it is
3564*8044SWilliam.Kucharski@Sun.COMavailable.
3565*8044SWilliam.Kucharski@Sun.COM
3566*8044SWilliam.Kucharski@Sun.COM@item --batch
3567*8044SWilliam.Kucharski@Sun.COMThis option has the same meaning as @samp{--no-config-file --no-curses}.
3568*8044SWilliam.Kucharski@Sun.COM
3569*8044SWilliam.Kucharski@Sun.COM@item --read-only
3570*8044SWilliam.Kucharski@Sun.COMDisable writing to any disk.
3571*8044SWilliam.Kucharski@Sun.COM
3572*8044SWilliam.Kucharski@Sun.COM@item --hold
3573*8044SWilliam.Kucharski@Sun.COMWait until a debugger will attach. This option is useful when you want
3574*8044SWilliam.Kucharski@Sun.COMto debug the startup code.
3575*8044SWilliam.Kucharski@Sun.COM@end table
3576*8044SWilliam.Kucharski@Sun.COM
3577*8044SWilliam.Kucharski@Sun.COM
3578*8044SWilliam.Kucharski@Sun.COM@node Installation under UNIX
3579*8044SWilliam.Kucharski@Sun.COM@section How to install GRUB via @command{grub}
3580*8044SWilliam.Kucharski@Sun.COM
3581*8044SWilliam.Kucharski@Sun.COMThe installation procedure is the same as under the @dfn{native} Stage
3582*8044SWilliam.Kucharski@Sun.COM2. @xref{Installation}, for more information. The command
3583*8044SWilliam.Kucharski@Sun.COM@command{grub}-specific information is described here.
3584*8044SWilliam.Kucharski@Sun.COM
3585*8044SWilliam.Kucharski@Sun.COMWhat you should be careful about is @dfn{buffer cache}. @command{grub}
3586*8044SWilliam.Kucharski@Sun.COMmakes use of raw devices instead of filesystems that your operating
3587*8044SWilliam.Kucharski@Sun.COMsystems serve, so there exists a potential problem that some cache
3588*8044SWilliam.Kucharski@Sun.COMinconsistency may corrupt your filesystems. What we recommend is:
3589*8044SWilliam.Kucharski@Sun.COM
3590*8044SWilliam.Kucharski@Sun.COM@itemize @bullet
3591*8044SWilliam.Kucharski@Sun.COM@item
3592*8044SWilliam.Kucharski@Sun.COMIf you can unmount drives to which GRUB may write any amount of data,
3593*8044SWilliam.Kucharski@Sun.COMunmount them before running @command{grub}.
3594*8044SWilliam.Kucharski@Sun.COM
3595*8044SWilliam.Kucharski@Sun.COM@item
3596*8044SWilliam.Kucharski@Sun.COMIf a drive cannot be unmounted but can be mounted with the read-only
3597*8044SWilliam.Kucharski@Sun.COMflag, mount it in read-only mode. That should be secure.
3598*8044SWilliam.Kucharski@Sun.COM
3599*8044SWilliam.Kucharski@Sun.COM@item
3600*8044SWilliam.Kucharski@Sun.COMIf a drive must be mounted with the read-write flag, make sure that no
3601*8044SWilliam.Kucharski@Sun.COMactivity is being done on it while the command @command{grub} is
3602*8044SWilliam.Kucharski@Sun.COMrunning.
3603*8044SWilliam.Kucharski@Sun.COM
3604*8044SWilliam.Kucharski@Sun.COM@item
3605*8044SWilliam.Kucharski@Sun.COMReboot your operating system as soon as possible. This is probably not
3606*8044SWilliam.Kucharski@Sun.COMrequired if you follow the rules above, but reboot is the most secure
3607*8044SWilliam.Kucharski@Sun.COMway.
3608*8044SWilliam.Kucharski@Sun.COM@end itemize
3609*8044SWilliam.Kucharski@Sun.COM
3610*8044SWilliam.Kucharski@Sun.COMIn addition, enter the command @command{quit} when you finish the
3611*8044SWilliam.Kucharski@Sun.COMinstallation. That is @emph{very important} because @command{quit} makes
3612*8044SWilliam.Kucharski@Sun.COMthe buffer cache consistent. Do not push @key{C-c}.
3613*8044SWilliam.Kucharski@Sun.COM
3614*8044SWilliam.Kucharski@Sun.COMIf you want to install GRUB non-interactively, specify @samp{--batch}
3615*8044SWilliam.Kucharski@Sun.COMoption in the command-line. This is a simple example:
3616*8044SWilliam.Kucharski@Sun.COM
3617*8044SWilliam.Kucharski@Sun.COM@example
3618*8044SWilliam.Kucharski@Sun.COM@group
3619*8044SWilliam.Kucharski@Sun.COM#!/bin/sh
3620*8044SWilliam.Kucharski@Sun.COM
3621*8044SWilliam.Kucharski@Sun.COM# Use /usr/sbin/grub if you are on an older system.
3622*8044SWilliam.Kucharski@Sun.COM/sbin/grub --batch <<EOT 1>/dev/null 2>/dev/null
3623*8044SWilliam.Kucharski@Sun.COMroot (hd0,0)
3624*8044SWilliam.Kucharski@Sun.COMsetup (hd0)
3625*8044SWilliam.Kucharski@Sun.COMquit
3626*8044SWilliam.Kucharski@Sun.COMEOT
3627*8044SWilliam.Kucharski@Sun.COM@end group
3628*8044SWilliam.Kucharski@Sun.COM@end example
3629*8044SWilliam.Kucharski@Sun.COM
3630*8044SWilliam.Kucharski@Sun.COM
3631*8044SWilliam.Kucharski@Sun.COM@node Device map
3632*8044SWilliam.Kucharski@Sun.COM@section The map between BIOS drives and OS devices
3633*8044SWilliam.Kucharski@Sun.COM
3634*8044SWilliam.Kucharski@Sun.COMWhen you specify the option @option{--device-map} (@pxref{Basic usage}),
3635*8044SWilliam.Kucharski@Sun.COMthe grub shell creates the @dfn{device map file} automatically unless it
3636*8044SWilliam.Kucharski@Sun.COMalready exists. The file name @file{/boot/grub/device.map} is preferred.
3637*8044SWilliam.Kucharski@Sun.COM
3638*8044SWilliam.Kucharski@Sun.COMIf the device map file exists, the grub shell reads it to map BIOS
3639*8044SWilliam.Kucharski@Sun.COMdrives to OS devices. This file consists of lines like this:
3640*8044SWilliam.Kucharski@Sun.COM
3641*8044SWilliam.Kucharski@Sun.COM@example
3642*8044SWilliam.Kucharski@Sun.COM@var{device} @var{file}
3643*8044SWilliam.Kucharski@Sun.COM@end example
3644*8044SWilliam.Kucharski@Sun.COM
3645*8044SWilliam.Kucharski@Sun.COM@var{device} is a drive specified in the GRUB syntax (@pxref{Device
3646*8044SWilliam.Kucharski@Sun.COMsyntax}), and @var{file} is an OS file, which is normally a device
3647*8044SWilliam.Kucharski@Sun.COMfile.
3648*8044SWilliam.Kucharski@Sun.COM
3649*8044SWilliam.Kucharski@Sun.COMThe reason why the grub shell gives you the device map file is that it
3650*8044SWilliam.Kucharski@Sun.COMcannot guess the map between BIOS drives and OS devices correctly in
3651*8044SWilliam.Kucharski@Sun.COMsome environments. For example, if you exchange the boot sequence
3652*8044SWilliam.Kucharski@Sun.COMbetween IDE and SCSI in your BIOS, it gets the order wrong.
3653*8044SWilliam.Kucharski@Sun.COM
3654*8044SWilliam.Kucharski@Sun.COMThus, edit the file if the grub shell makes a mistake. You can put any
3655*8044SWilliam.Kucharski@Sun.COMcomments in the file if needed, as the grub shell assumes that a line is
3656*8044SWilliam.Kucharski@Sun.COMjust a comment if the first character is @samp{#}.
3657*8044SWilliam.Kucharski@Sun.COM
3658*8044SWilliam.Kucharski@Sun.COM
3659*8044SWilliam.Kucharski@Sun.COM@node Invoking grub-install
3660*8044SWilliam.Kucharski@Sun.COM@chapter Invoking grub-install
3661*8044SWilliam.Kucharski@Sun.COM
3662*8044SWilliam.Kucharski@Sun.COMThe program @command{grub-install} installs GRUB on your drive using the
3663*8044SWilliam.Kucharski@Sun.COMgrub shell (@pxref{Invoking the grub shell}). You must specify the
3664*8044SWilliam.Kucharski@Sun.COMdevice name on which you want to install GRUB, like this:
3665*8044SWilliam.Kucharski@Sun.COM
3666*8044SWilliam.Kucharski@Sun.COM@example
3667*8044SWilliam.Kucharski@Sun.COMgrub-install @var{install_device}
3668*8044SWilliam.Kucharski@Sun.COM@end example
3669*8044SWilliam.Kucharski@Sun.COM
3670*8044SWilliam.Kucharski@Sun.COMThe device name @var{install_device} is an OS device name or a GRUB
3671*8044SWilliam.Kucharski@Sun.COMdevice name.
3672*8044SWilliam.Kucharski@Sun.COM
3673*8044SWilliam.Kucharski@Sun.COM@command{grub-install} accepts the following options:
3674*8044SWilliam.Kucharski@Sun.COM
3675*8044SWilliam.Kucharski@Sun.COM@table @option
3676*8044SWilliam.Kucharski@Sun.COM@item --help
3677*8044SWilliam.Kucharski@Sun.COMPrint a summary of the command-line options and exit.
3678*8044SWilliam.Kucharski@Sun.COM
3679*8044SWilliam.Kucharski@Sun.COM@item --version
3680*8044SWilliam.Kucharski@Sun.COMPrint the version number of GRUB and exit.
3681*8044SWilliam.Kucharski@Sun.COM
3682*8044SWilliam.Kucharski@Sun.COM@item --force-lba
3683*8044SWilliam.Kucharski@Sun.COMForce GRUB to use LBA mode even for a buggy BIOS. Use this option only
3684*8044SWilliam.Kucharski@Sun.COMif your BIOS doesn't work properly in LBA mode even though it supports
3685*8044SWilliam.Kucharski@Sun.COMLBA mode.
3686*8044SWilliam.Kucharski@Sun.COM
3687*8044SWilliam.Kucharski@Sun.COM@item --root-directory=@var{dir}
3688*8044SWilliam.Kucharski@Sun.COMInstall GRUB images under the directory @var{dir} instead of the root
3689*8044SWilliam.Kucharski@Sun.COMdirectory. This option is useful when you want to install GRUB into a
3690*8044SWilliam.Kucharski@Sun.COMseparate partition or a removable disk. Here is an example in which
3691*8044SWilliam.Kucharski@Sun.COMyou have a separate @dfn{boot} partition which is mounted on
3692*8044SWilliam.Kucharski@Sun.COM@file{/boot}:
3693*8044SWilliam.Kucharski@Sun.COM
3694*8044SWilliam.Kucharski@Sun.COM@example
3695*8044SWilliam.Kucharski@Sun.COM@kbd{grub-install --root-directory=/boot hd0}
3696*8044SWilliam.Kucharski@Sun.COM@end example
3697*8044SWilliam.Kucharski@Sun.COM
3698*8044SWilliam.Kucharski@Sun.COM@item --grub-shell=@var{file}
3699*8044SWilliam.Kucharski@Sun.COMUse @var{file} as the grub shell. You can append arbitrary options to
3700*8044SWilliam.Kucharski@Sun.COM@var{file} after the file name, like this:
3701*8044SWilliam.Kucharski@Sun.COM
3702*8044SWilliam.Kucharski@Sun.COM@example
3703*8044SWilliam.Kucharski@Sun.COM@kbd{grub-install --grub-shell="grub --read-only" /dev/fd0}
3704*8044SWilliam.Kucharski@Sun.COM@end example
3705*8044SWilliam.Kucharski@Sun.COM
3706*8044SWilliam.Kucharski@Sun.COM@item --recheck
3707*8044SWilliam.Kucharski@Sun.COMRecheck the device map, even if @file{/boot/grub/device.map} already
3708*8044SWilliam.Kucharski@Sun.COMexists. You should use this option whenever you add/remove a disk
3709*8044SWilliam.Kucharski@Sun.COMinto/from your computer.
3710*8044SWilliam.Kucharski@Sun.COM@end table
3711*8044SWilliam.Kucharski@Sun.COM
3712*8044SWilliam.Kucharski@Sun.COM
3713*8044SWilliam.Kucharski@Sun.COM@node Invoking grub-md5-crypt
3714*8044SWilliam.Kucharski@Sun.COM@chapter Invoking grub-md5-crypt
3715*8044SWilliam.Kucharski@Sun.COM
3716*8044SWilliam.Kucharski@Sun.COMThe program @command{grub-md5-crypt} encrypts a password in MD5 format.
3717*8044SWilliam.Kucharski@Sun.COMThis is just a frontend of the grub shell (@pxref{Invoking the grub
3718*8044SWilliam.Kucharski@Sun.COMshell}). Passwords encrypted by this program can be used with the
3719*8044SWilliam.Kucharski@Sun.COMcommand @command{password} (@pxref{password}).
3720*8044SWilliam.Kucharski@Sun.COM
3721*8044SWilliam.Kucharski@Sun.COM@command{grub-md5-crypt} accepts the following options:
3722*8044SWilliam.Kucharski@Sun.COM
3723*8044SWilliam.Kucharski@Sun.COM@table @option
3724*8044SWilliam.Kucharski@Sun.COM@item --help
3725*8044SWilliam.Kucharski@Sun.COMPrint a summary of the command-line options and exit.
3726*8044SWilliam.Kucharski@Sun.COM
3727*8044SWilliam.Kucharski@Sun.COM@item --version
3728*8044SWilliam.Kucharski@Sun.COMPrint the version information and exit.
3729*8044SWilliam.Kucharski@Sun.COM
3730*8044SWilliam.Kucharski@Sun.COM@item --grub-shell=@var{file}
3731*8044SWilliam.Kucharski@Sun.COMUse @var{file} as the grub shell.
3732*8044SWilliam.Kucharski@Sun.COM@end table
3733*8044SWilliam.Kucharski@Sun.COM
3734*8044SWilliam.Kucharski@Sun.COM
3735*8044SWilliam.Kucharski@Sun.COM@node Invoking grub-terminfo
3736*8044SWilliam.Kucharski@Sun.COM@chapter Invoking grub-terminfo
3737*8044SWilliam.Kucharski@Sun.COM
3738*8044SWilliam.Kucharski@Sun.COMThe program @command{grub-terminfo} generates a terminfo command from
3739*8044SWilliam.Kucharski@Sun.COMa terminfo name (@pxref{terminfo}). The result can be used in the
3740*8044SWilliam.Kucharski@Sun.COMconfiguration file, to define escape sequences. Because GRUB assumes
3741*8044SWilliam.Kucharski@Sun.COMthat your terminal is vt100-compatible by default, this would be
3742*8044SWilliam.Kucharski@Sun.COMuseful only if your terminal is uncommon (such as vt52).
3743*8044SWilliam.Kucharski@Sun.COM
3744*8044SWilliam.Kucharski@Sun.COM@command{grub-terminfo} accepts the following options:
3745*8044SWilliam.Kucharski@Sun.COM
3746*8044SWilliam.Kucharski@Sun.COM@table @option
3747*8044SWilliam.Kucharski@Sun.COM@item --help
3748*8044SWilliam.Kucharski@Sun.COMPrint a summary of the command-line options and exit.
3749*8044SWilliam.Kucharski@Sun.COM
3750*8044SWilliam.Kucharski@Sun.COM@item --version
3751*8044SWilliam.Kucharski@Sun.COMPrint the version information and exit.
3752*8044SWilliam.Kucharski@Sun.COM@end table
3753*8044SWilliam.Kucharski@Sun.COM
3754*8044SWilliam.Kucharski@Sun.COMYou must specify one argument to this command. For example:
3755*8044SWilliam.Kucharski@Sun.COM
3756*8044SWilliam.Kucharski@Sun.COM@example
3757*8044SWilliam.Kucharski@Sun.COM@kbd{grub-terminfo vt52}
3758*8044SWilliam.Kucharski@Sun.COM@end example
3759*8044SWilliam.Kucharski@Sun.COM
3760*8044SWilliam.Kucharski@Sun.COM
3761*8044SWilliam.Kucharski@Sun.COM@node Invoking grub-set-default
3762*8044SWilliam.Kucharski@Sun.COM@chapter Invoking grub-set-default
3763*8044SWilliam.Kucharski@Sun.COM
3764*8044SWilliam.Kucharski@Sun.COMThe program @command{grub-set-default} sets the default boot entry for
3765*8044SWilliam.Kucharski@Sun.COMGRUB. This automatically creates a file named @file{default} under
3766*8044SWilliam.Kucharski@Sun.COMyour GRUB directory (i.e. @file{/boot/grub}), if it is not
3767*8044SWilliam.Kucharski@Sun.COMpresent. This file is used to determine the default boot entry when
3768*8044SWilliam.Kucharski@Sun.COMGRUB boots up your system when you use @samp{default saved} in your
3769*8044SWilliam.Kucharski@Sun.COMconfiguration file (@pxref{default}), and to save next default boot
3770*8044SWilliam.Kucharski@Sun.COMentry when you use @samp{savedefault} in a boot entry
3771*8044SWilliam.Kucharski@Sun.COM(@pxref{savedefault}).
3772*8044SWilliam.Kucharski@Sun.COM
3773*8044SWilliam.Kucharski@Sun.COM@command{grub-set-default} accepts the following options:
3774*8044SWilliam.Kucharski@Sun.COM
3775*8044SWilliam.Kucharski@Sun.COM@table @option
3776*8044SWilliam.Kucharski@Sun.COM@item --help
3777*8044SWilliam.Kucharski@Sun.COMPrint a summary of the command-line options and exit.
3778*8044SWilliam.Kucharski@Sun.COM
3779*8044SWilliam.Kucharski@Sun.COM@item --version
3780*8044SWilliam.Kucharski@Sun.COMPrint the version information and exit.
3781*8044SWilliam.Kucharski@Sun.COM
3782*8044SWilliam.Kucharski@Sun.COM@item --root-directory=@var{dir}
3783*8044SWilliam.Kucharski@Sun.COMUse the directory @var{dir} instead of the root directory
3784*8044SWilliam.Kucharski@Sun.COM(i.e. @file{/}) to define the location of the default file. This
3785*8044SWilliam.Kucharski@Sun.COMis useful when you mount a disk which is used for another system.
3786*8044SWilliam.Kucharski@Sun.COM@end table
3787*8044SWilliam.Kucharski@Sun.COM
3788*8044SWilliam.Kucharski@Sun.COMYou must specify a single argument to @command{grub-set-default}. This
3789*8044SWilliam.Kucharski@Sun.COMargument is normally the number of a default boot entry. For example,
3790*8044SWilliam.Kucharski@Sun.COMif you have this configuration file:
3791*8044SWilliam.Kucharski@Sun.COM
3792*8044SWilliam.Kucharski@Sun.COM@example
3793*8044SWilliam.Kucharski@Sun.COM@group
3794*8044SWilliam.Kucharski@Sun.COMdefault saved
3795*8044SWilliam.Kucharski@Sun.COMtimeout 10
3796*8044SWilliam.Kucharski@Sun.COM
3797*8044SWilliam.Kucharski@Sun.COMtitle GNU/Hurd
3798*8044SWilliam.Kucharski@Sun.COMroot (hd0,0)
3799*8044SWilliam.Kucharski@Sun.COM...
3800*8044SWilliam.Kucharski@Sun.COM
3801*8044SWilliam.Kucharski@Sun.COMtitle GNU/Linux
3802*8044SWilliam.Kucharski@Sun.COMroot (hd0,1)
3803*8044SWilliam.Kucharski@Sun.COM...
3804*8044SWilliam.Kucharski@Sun.COM@end group
3805*8044SWilliam.Kucharski@Sun.COM@end example
3806*8044SWilliam.Kucharski@Sun.COM
3807*8044SWilliam.Kucharski@Sun.COMand if you want to set the next default boot entry to GNU/Linux, you
3808*8044SWilliam.Kucharski@Sun.COMmay execute this command:
3809*8044SWilliam.Kucharski@Sun.COM
3810*8044SWilliam.Kucharski@Sun.COM@example
3811*8044SWilliam.Kucharski@Sun.COM@kbd{grub-set-default 1}
3812*8044SWilliam.Kucharski@Sun.COM@end example
3813*8044SWilliam.Kucharski@Sun.COM
3814*8044SWilliam.Kucharski@Sun.COMBecause the entry for GNU/Linux is @samp{1}. Note that entries are
3815*8044SWilliam.Kucharski@Sun.COMcounted from zero. So, if you want to specify GNU/Hurd here, then you
3816*8044SWilliam.Kucharski@Sun.COMshould specify @samp{0}.
3817*8044SWilliam.Kucharski@Sun.COM
3818*8044SWilliam.Kucharski@Sun.COMThis feature is very useful if you want to test a new kernel or to
3819*8044SWilliam.Kucharski@Sun.COMmake your system quite robust. @xref{Making your system robust}, for
3820*8044SWilliam.Kucharski@Sun.COMmore hints about how to set up a robust system.
3821*8044SWilliam.Kucharski@Sun.COM
3822*8044SWilliam.Kucharski@Sun.COM
3823*8044SWilliam.Kucharski@Sun.COM@node Invoking mbchk
3824*8044SWilliam.Kucharski@Sun.COM@chapter Invoking mbchk
3825*8044SWilliam.Kucharski@Sun.COM
3826*8044SWilliam.Kucharski@Sun.COMThe program @command{mbchk} checks for the format of a Multiboot
3827*8044SWilliam.Kucharski@Sun.COMkernel. We recommend using this program before booting your own kernel
3828*8044SWilliam.Kucharski@Sun.COMby GRUB.
3829*8044SWilliam.Kucharski@Sun.COM
3830*8044SWilliam.Kucharski@Sun.COM@command{mbchk} accepts the following options:
3831*8044SWilliam.Kucharski@Sun.COM
3832*8044SWilliam.Kucharski@Sun.COM@table @option
3833*8044SWilliam.Kucharski@Sun.COM@item --help
3834*8044SWilliam.Kucharski@Sun.COMPrint a summary of the command-line options and exit.
3835*8044SWilliam.Kucharski@Sun.COM
3836*8044SWilliam.Kucharski@Sun.COM@item --version
3837*8044SWilliam.Kucharski@Sun.COMPrint the version number of GRUB and exit.
3838*8044SWilliam.Kucharski@Sun.COM
3839*8044SWilliam.Kucharski@Sun.COM@item --quiet
3840*8044SWilliam.Kucharski@Sun.COMSuppress all normal output.
3841*8044SWilliam.Kucharski@Sun.COM@end table
3842*8044SWilliam.Kucharski@Sun.COM
3843*8044SWilliam.Kucharski@Sun.COM
3844*8044SWilliam.Kucharski@Sun.COM@node Obtaining and Building GRUB
3845*8044SWilliam.Kucharski@Sun.COM@appendix How to obtain and build GRUB
3846*8044SWilliam.Kucharski@Sun.COM
3847*8044SWilliam.Kucharski@Sun.COM@quotation
3848*8044SWilliam.Kucharski@Sun.COM@strong{Caution:} GRUB requires binutils-2.9.1.0.23 or later because the
3849*8044SWilliam.Kucharski@Sun.COMGNU assembler has been changed so that it can produce real 16bits
3850*8044SWilliam.Kucharski@Sun.COMmachine code between 2.9.1 and 2.9.1.0.x. See
3851*8044SWilliam.Kucharski@Sun.COM@uref{http://sources.redhat.com/binutils/}, to obtain information on
3852*8044SWilliam.Kucharski@Sun.COMhow to get the latest version.
3853*8044SWilliam.Kucharski@Sun.COM@end quotation
3854*8044SWilliam.Kucharski@Sun.COM
3855*8044SWilliam.Kucharski@Sun.COMGRUB is available from the GNU alpha archive site
3856*8044SWilliam.Kucharski@Sun.COM@uref{ftp://alpha.gnu.org/gnu/grub} or any of its mirrors. The file
3857*8044SWilliam.Kucharski@Sun.COMwill be named grub-version.tar.gz. The current version is
3858*8044SWilliam.Kucharski@Sun.COM@value{VERSION}, so the file you should grab is:
3859*8044SWilliam.Kucharski@Sun.COM
3860*8044SWilliam.Kucharski@Sun.COM@uref{ftp://alpha.gnu.org/gnu/grub/grub-@value{VERSION}.tar.gz}
3861*8044SWilliam.Kucharski@Sun.COM
3862*8044SWilliam.Kucharski@Sun.COMTo unbundle GRUB use the instruction:
3863*8044SWilliam.Kucharski@Sun.COM
3864*8044SWilliam.Kucharski@Sun.COM@example
3865*8044SWilliam.Kucharski@Sun.COM@kbd{zcat grub-@value{VERSION}.tar.gz | tar xvf -}
3866*8044SWilliam.Kucharski@Sun.COM@end example
3867*8044SWilliam.Kucharski@Sun.COM
3868*8044SWilliam.Kucharski@Sun.COMwhich will create a directory called @file{grub-@value{VERSION}} with
3869*8044SWilliam.Kucharski@Sun.COMall the sources. You can look at the file @file{INSTALL} for detailed
3870*8044SWilliam.Kucharski@Sun.COMinstructions on how to build and install GRUB, but you should be able to
3871*8044SWilliam.Kucharski@Sun.COMjust do:
3872*8044SWilliam.Kucharski@Sun.COM
3873*8044SWilliam.Kucharski@Sun.COM@example
3874*8044SWilliam.Kucharski@Sun.COM@group
3875*8044SWilliam.Kucharski@Sun.COM@kbd{cd grub-@value{VERSION}}
3876*8044SWilliam.Kucharski@Sun.COM@kbd{./configure}
3877*8044SWilliam.Kucharski@Sun.COM@kbd{make install}
3878*8044SWilliam.Kucharski@Sun.COM@end group
3879*8044SWilliam.Kucharski@Sun.COM@end example
3880*8044SWilliam.Kucharski@Sun.COM
3881*8044SWilliam.Kucharski@Sun.COMThis will install the grub shell @file{grub} (@pxref{Invoking the grub
3882*8044SWilliam.Kucharski@Sun.COMshell}), the Multiboot checker @file{mbchk} (@pxref{Invoking mbchk}),
3883*8044SWilliam.Kucharski@Sun.COMand the GRUB images. This will also install the GRUB manual.
3884*8044SWilliam.Kucharski@Sun.COM
3885*8044SWilliam.Kucharski@Sun.COMAlso, the latest version is available from the CVS. See
3886*8044SWilliam.Kucharski@Sun.COM@uref{http://savannah.gnu.org/cvs/?group=grub} for more information.
3887*8044SWilliam.Kucharski@Sun.COM
3888*8044SWilliam.Kucharski@Sun.COM
3889*8044SWilliam.Kucharski@Sun.COM@node Reporting bugs
3890*8044SWilliam.Kucharski@Sun.COM@appendix Reporting bugs
3891*8044SWilliam.Kucharski@Sun.COM
3892*8044SWilliam.Kucharski@Sun.COMThese are the guideline for how to report bugs. Take a look at this
3893*8044SWilliam.Kucharski@Sun.COMlist below before you submit bugs:
3894*8044SWilliam.Kucharski@Sun.COM
3895*8044SWilliam.Kucharski@Sun.COM@enumerate
3896*8044SWilliam.Kucharski@Sun.COM@item
3897*8044SWilliam.Kucharski@Sun.COMBefore getting unsettled, read this manual through and through. Also,
3898*8044SWilliam.Kucharski@Sun.COMsee the @uref{http://www.gnu.org/software/grub/grub-faq.html, GNU GRUB FAQ}.
3899*8044SWilliam.Kucharski@Sun.COM
3900*8044SWilliam.Kucharski@Sun.COM@item
3901*8044SWilliam.Kucharski@Sun.COMAlways mention the information on your GRUB. The version number and the
3902*8044SWilliam.Kucharski@Sun.COMconfiguration are quite important. If you build it yourself, write the
3903*8044SWilliam.Kucharski@Sun.COMoptions specified to the configure script and your operating system,
3904*8044SWilliam.Kucharski@Sun.COMincluding the versions of gcc and binutils.
3905*8044SWilliam.Kucharski@Sun.COM
3906*8044SWilliam.Kucharski@Sun.COM@item
3907*8044SWilliam.Kucharski@Sun.COMIf you have trouble with the installation, inform us of how you
3908*8044SWilliam.Kucharski@Sun.COMinstalled GRUB. Don't omit error messages, if any. Just @samp{GRUB hangs
3909*8044SWilliam.Kucharski@Sun.COMup when it boots} is not enough.
3910*8044SWilliam.Kucharski@Sun.COM
3911*8044SWilliam.Kucharski@Sun.COMThe information on your hardware is also essential. These are especially
3912*8044SWilliam.Kucharski@Sun.COMimportant: the geometries and the partition tables of your hard disk
3913*8044SWilliam.Kucharski@Sun.COMdrives and your BIOS.
3914*8044SWilliam.Kucharski@Sun.COM
3915*8044SWilliam.Kucharski@Sun.COM@item
3916*8044SWilliam.Kucharski@Sun.COMIf GRUB cannot boot your operating system, write down
3917*8044SWilliam.Kucharski@Sun.COM@emph{everything} you see on the screen. Don't paraphrase them, like
3918*8044SWilliam.Kucharski@Sun.COM@samp{The foo OS crashes with GRUB, even though it can boot with the
3919*8044SWilliam.Kucharski@Sun.COMbar boot loader just fine}. Mention the commands you executed, the
3920*8044SWilliam.Kucharski@Sun.COMmessages printed by them, and information on your operating system
3921*8044SWilliam.Kucharski@Sun.COMincluding the version number.
3922*8044SWilliam.Kucharski@Sun.COM
3923*8044SWilliam.Kucharski@Sun.COM@item
3924*8044SWilliam.Kucharski@Sun.COMExplain what you wanted to do. It is very useful to know your purpose
3925*8044SWilliam.Kucharski@Sun.COMand your wish, and how GRUB didn't satisfy you.
3926*8044SWilliam.Kucharski@Sun.COM
3927*8044SWilliam.Kucharski@Sun.COM@item
3928*8044SWilliam.Kucharski@Sun.COMIf you can investigate the problem yourself, please do. That will give
3929*8044SWilliam.Kucharski@Sun.COMyou and us much more information on the problem. Attaching a patch is
3930*8044SWilliam.Kucharski@Sun.COMeven better.
3931*8044SWilliam.Kucharski@Sun.COM
3932*8044SWilliam.Kucharski@Sun.COMWhen you attach a patch, make the patch in unified diff format, and
3933*8044SWilliam.Kucharski@Sun.COMwrite ChangeLog entries. But, even when you make a patch, don't forget
3934*8044SWilliam.Kucharski@Sun.COMto explain the problem, so that we can understand what your patch is
3935*8044SWilliam.Kucharski@Sun.COMfor.
3936*8044SWilliam.Kucharski@Sun.COM
3937*8044SWilliam.Kucharski@Sun.COM@item
3938*8044SWilliam.Kucharski@Sun.COMWrite down anything that you think might be related. Please understand
3939*8044SWilliam.Kucharski@Sun.COMthat we often need to reproduce the same problem you encounterred in our
3940*8044SWilliam.Kucharski@Sun.COMenvironment. So your information should be sufficient for us to do the
3941*8044SWilliam.Kucharski@Sun.COMsame thing---Don't forget that we cannot see your computer directly. If
3942*8044SWilliam.Kucharski@Sun.COMyou are not sure whether to state a fact or leave it out, state it!
3943*8044SWilliam.Kucharski@Sun.COMReporting too many things is much better than omitting something
3944*8044SWilliam.Kucharski@Sun.COMimportant.
3945*8044SWilliam.Kucharski@Sun.COM@end enumerate
3946*8044SWilliam.Kucharski@Sun.COM
3947*8044SWilliam.Kucharski@Sun.COMIf you follow the guideline above, submit a report to the
3948*8044SWilliam.Kucharski@Sun.COM@uref{http://savannah.gnu.org/bugs/?group=grub, Bug Tracking System}.
3949*8044SWilliam.Kucharski@Sun.COMAlternatively, you can submit a report via electronic mail to
3950*8044SWilliam.Kucharski@Sun.COM@email{bug-grub@@gnu.org}, but we strongly recommend that you use the
3951*8044SWilliam.Kucharski@Sun.COMBug Tracking System, because e-mail can be passed over easily.
3952*8044SWilliam.Kucharski@Sun.COM
3953*8044SWilliam.Kucharski@Sun.COMOnce we get your report, we will try to fix the bugs.
3954*8044SWilliam.Kucharski@Sun.COM
3955*8044SWilliam.Kucharski@Sun.COM
3956*8044SWilliam.Kucharski@Sun.COM@node Future
3957*8044SWilliam.Kucharski@Sun.COM@appendix Where GRUB will go
3958*8044SWilliam.Kucharski@Sun.COM
3959*8044SWilliam.Kucharski@Sun.COMWe started the next generation of GRUB, GRUB 2. This will include
3960*8044SWilliam.Kucharski@Sun.COMinternationalization, dynamic module loading, real memory management,
3961*8044SWilliam.Kucharski@Sun.COMmultiple architecture support, a scripting language, and many other
3962*8044SWilliam.Kucharski@Sun.COMnice feature. If you are interested in the development of GRUB 2, take
3963*8044SWilliam.Kucharski@Sun.COMa look at @uref{http://www.gnu.org/software/grub/grub.html, the
3964*8044SWilliam.Kucharski@Sun.COMhomepage}.
3965*8044SWilliam.Kucharski@Sun.COM
3966*8044SWilliam.Kucharski@Sun.COM
3967*8044SWilliam.Kucharski@Sun.COM@c Separate the programming guide.
3968*8044SWilliam.Kucharski@Sun.COM@include internals.texi
3969*8044SWilliam.Kucharski@Sun.COM
3970*8044SWilliam.Kucharski@Sun.COM
3971*8044SWilliam.Kucharski@Sun.COM@node Index
3972*8044SWilliam.Kucharski@Sun.COM@unnumbered Index
3973*8044SWilliam.Kucharski@Sun.COM
3974*8044SWilliam.Kucharski@Sun.COM@c Currently, we use only the Concept Index.
3975*8044SWilliam.Kucharski@Sun.COM@printindex cp
3976*8044SWilliam.Kucharski@Sun.COM
3977*8044SWilliam.Kucharski@Sun.COM
3978*8044SWilliam.Kucharski@Sun.COM@bye
3979*8044SWilliam.Kucharski@Sun.COM
3980*8044SWilliam.Kucharski@Sun.COMSome notes:
3981*8044SWilliam.Kucharski@Sun.COM
3982*8044SWilliam.Kucharski@Sun.COM  This is the second attempt to rewrite the manual. The status is
3983*8044SWilliam.Kucharski@Sun.COMmostly complete, but I need to check the spelling by ispell, and add
3984*8044SWilliam.Kucharski@Sun.COMmore indices. Perhaps I also have to let some English native speakers
3985*8044SWilliam.Kucharski@Sun.COMproofread this manual through. My English is syntactically almost
3986*8044SWilliam.Kucharski@Sun.COMperfect, but sometimes (often?) awful in the nuance. Hehe, I can't be an
3987*8044SWilliam.Kucharski@Sun.COMEnglish poet for now.
3988