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