Indentation fix, cleanup.
[AROS.git] / arch / all-pc / boot / grub2-aros / docs / grub.info
blob9208a0863b940253706b92731acc0e5d52d488de
1 This is grub.info, produced by makeinfo version 5.1 from grub.texi.
3 This manual is for GNU GRUB (version 2.02~beta2, 1 February 2015).
5    Copyright (C)
6 1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012,2013 Free
7 Software Foundation, Inc.
9      Permission is granted to copy, distribute and/or modify this
10      document under the terms of the GNU Free Documentation License,
11      Version 1.2 or any later version published by the Free Software
12      Foundation; with no Invariant Sections.
13 INFO-DIR-SECTION Kernel
14 START-INFO-DIR-ENTRY
15 * GRUB: (grub).                 The GRand Unified Bootloader
16 * grub-install: (grub)Invoking grub-install.    Install GRUB on your drive
17 * grub-mkconfig: (grub)Invoking grub-mkconfig.  Generate GRUB configuration
18 * grub-mkpasswd-pbkdf2: (grub)Invoking grub-mkpasswd-pbkdf2.
19 * grub-mkrelpath: (grub)Invoking grub-mkrelpath.
20 * grub-mkrescue: (grub)Invoking grub-mkrescue.  Make a GRUB rescue image
21 * grub-mount: (grub)Invoking grub-mount.        Mount a file system using GRUB
22 * grub-probe: (grub)Invoking grub-probe.        Probe device information
23 * grub-script-check: (grub)Invoking grub-script-check.
24 END-INFO-DIR-ENTRY
26 \x1f
27 File: grub.info,  Node: Top,  Next: Introduction,  Up: (dir)
29 GNU GRUB manual
30 ***************
32 This is the documentation of GNU GRUB, the GRand Unified Bootloader, a
33 flexible and powerful boot loader program for a wide range of
34 architectures.
36    This edition documents version 2.02~beta2.
38    This manual is for GNU GRUB (version 2.02~beta2, 1 February 2015).
40    Copyright (C)
41 1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012,2013 Free
42 Software Foundation, Inc.
44      Permission is granted to copy, distribute and/or modify this
45      document under the terms of the GNU Free Documentation License,
46      Version 1.2 or any later version published by the Free Software
47      Foundation; with no Invariant Sections.
49 * Menu:
51 * Introduction::                Capturing the spirit of GRUB
52 * Naming convention::           Names of your drives in GRUB
53 * OS-specific notes about grub tools:: 
54                                 Some notes about OS-specific behaviour of GRUB
55                                 tools
56 * Installation::                Installing GRUB on your drive
57 * Booting::                     How to boot different operating systems
58 * Configuration::               Writing your own configuration file
59 * Theme file format::           Format of GRUB theme files
60 * Network::                     Downloading OS images from a network
61 * Serial terminal::             Using GRUB via a serial line
62 * Vendor power-on keys::        Changing GRUB behaviour on vendor power-on keys
63 * Images::                      GRUB image files
64 * Core image size limitation::  GRUB image files size limitations
65 * Filesystem::                  Filesystem syntax and semantics
66 * Interface::                   The menu and the command-line
67 * Environment::                 GRUB environment variables
68 * Commands::                    The list of available builtin commands
69 * Internationalisation::        Topics relating to language support
70 * Security::                    Authentication, authorisation, and signatures
71 * Platform limitations::        The list of platform-specific limitations
72 * Platform-specific operations:: Platform-specific operations
73 * Supported kernels::           The list of supported kernels
74 * Troubleshooting::             Error messages produced by GRUB
75 * Invoking grub-install::       How to use the GRUB installer
76 * Invoking grub-mkconfig::      Generate a GRUB configuration file
77 * Invoking grub-mkpasswd-pbkdf2::
78                                 Generate GRUB password hashes
79 * Invoking grub-mkrelpath::     Make system path relative to its root
80 * Invoking grub-mkrescue::      Make a GRUB rescue image
81 * Invoking grub-mount::         Mount a file system using GRUB
82 * Invoking grub-probe::         Probe device information for GRUB
83 * Invoking grub-script-check::  Check GRUB script file for syntax errors
84 * Obtaining and Building GRUB:: How to obtain and build GRUB
85 * Reporting bugs::              Where you should send a bug report
86 * Future::                      Some future plans on GRUB
87 * Copying This Manual::         Copying This Manual
88 * Index::
90 \x1f
91 File: grub.info,  Node: Introduction,  Next: Naming convention,  Prev: Top,  Up: Top
93 1 Introduction to GRUB
94 **********************
96 * Menu:
98 * Overview::                    What exactly GRUB is and how to use it
99 * History::                     From maggot to house fly
100 * Changes from GRUB Legacy::    Differences from previous versions
101 * Features::                    GRUB features
102 * Role of a boot loader::       The role of a boot loader
104 \x1f
105 File: grub.info,  Node: Overview,  Next: History,  Up: Introduction
107 1.1 Overview
108 ============
110 Briefly, a "boot loader" is the first software program that runs when a
111 computer starts.  It is responsible for loading and transferring control
112 to an operating system "kernel" software (such as Linux or GNU Mach).
113 The kernel, in turn, initializes the rest of the operating system (e.g.
114 a GNU system).
116    GNU GRUB is a very powerful boot loader, which can load a wide
117 variety of free operating systems, as well as proprietary operating
118 systems with chain-loading(1) (*note Overview-Footnote-1::).  GRUB is
119 designed to address the complexity of booting a personal computer; both
120 the program and this manual are tightly bound to that computer platform,
121 although porting to other platforms may be addressed in the future.
123    One of the important features in GRUB is flexibility; GRUB
124 understands filesystems and kernel executable formats, so you can load
125 an arbitrary operating system the way you like, without recording the
126 physical position of your kernel on the disk.  Thus you can load the
127 kernel just by specifying its file name and the drive and partition
128 where the kernel resides.
130    When booting with GRUB, you can use either a command-line interface
131 (*note Command-line interface::), or a menu interface (*note Menu
132 interface::).  Using the command-line interface, you type the drive
133 specification and file name of the kernel manually.  In the menu
134 interface, you just select an OS using the arrow keys.  The menu is
135 based on a configuration file which you prepare beforehand (*note
136 Configuration::).  While in the menu, you can switch to the command-line
137 mode, and vice-versa.  You can even edit menu entries before using them.
139    In the following chapters, you will learn how to specify a drive, a
140 partition, and a file name (*note Naming convention::) to GRUB, how to
141 install GRUB on your drive (*note Installation::), and how to boot your
142 OSes (*note Booting::), step by step.
144 \x1f
145 File: grub.info,  Node: Overview-Footnotes,  Up: Overview
147    (1) "chain-load" is the mechanism for loading unsupported operating
148 systems by loading another boot loader.  It is typically used for
149 loading DOS or Windows.
151 \x1f
152 File: grub.info,  Node: History,  Next: Changes from GRUB Legacy,  Prev: Overview,  Up: Introduction
154 1.2 History of GRUB
155 ===================
157 GRUB originated in 1995 when Erich Boleyn was trying to boot the GNU
158 Hurd with the University of Utah's Mach 4 microkernel (now known as GNU
159 Mach).  Erich and Brian Ford designed the Multiboot Specification (*note
160 Multiboot Specification: (multiboot)Top.), because they were determined
161 not to add to the large number of mutually-incompatible PC boot methods.
163    Erich then began modifying the FreeBSD boot loader so that it would
164 understand Multiboot.  He soon realized that it would be a lot easier to
165 write his own boot loader from scratch than to keep working on the
166 FreeBSD boot loader, and so GRUB was born.
168    Erich added many features to GRUB, but other priorities prevented him
169 from keeping up with the demands of its quickly-expanding user base.  In
170 1999, Gordon Matzigkeit and Yoshinori K. Okuji adopted GRUB as an
171 official GNU package, and opened its development by making the latest
172 sources available via anonymous CVS. *Note Obtaining and Building
173 GRUB::, for more information.
175    Over the next few years, GRUB was extended to meet many needs, but it
176 quickly became clear that its design was not keeping up with the
177 extensions being made to it, and we reached the point where it was very
178 difficult to make any further changes without breaking existing
179 features.  Around 2002, Yoshinori K. Okuji started work on PUPA
180 (Preliminary Universal Programming Architecture for GNU GRUB), aiming to
181 rewrite the core of GRUB to make it cleaner, safer, more robust, and
182 more powerful.  PUPA was eventually renamed to GRUB 2, and the original
183 version of GRUB was renamed to GRUB Legacy.  Small amounts of
184 maintenance continued to be done on GRUB Legacy, but the last release
185 (0.97) was made in 2005 and at the time of writing it seems unlikely
186 that there will be another.
188    By around 2007, GNU/Linux distributions started to use GRUB 2 to
189 limited extents, and by the end of 2009 multiple major distributions
190 were installing it by default.
192 \x1f
193 File: grub.info,  Node: Changes from GRUB Legacy,  Next: Features,  Prev: History,  Up: Introduction
195 1.3 Differences from previous versions
196 ======================================
198 GRUB 2 is a rewrite of GRUB (*note History::), although it shares many
199 characteristics with the previous version, now known as GRUB Legacy.
200 Users of GRUB Legacy may need some guidance to find their way around
201 this new version.
203    * The configuration file has a new name ('grub.cfg' rather than
204      'menu.lst' or 'grub.conf'), new syntax (*note Configuration::) and
205      many new commands (*note Commands::).  Configuration cannot be
206      copied over directly, although most GRUB Legacy users should not
207      find the syntax too surprising.
209    * 'grub.cfg' is typically automatically generated by 'grub-mkconfig'
210      (*note Simple configuration::).  This makes it easier to handle
211      versioned kernel upgrades.
213    * Partition numbers in GRUB device names now start at 1, not 0 (*note
214      Naming convention::).
216    * The configuration file is now written in something closer to a full
217      scripting language: variables, conditionals, and loops are
218      available.
220    * A small amount of persistent storage is available across reboots,
221      using the 'save_env' and 'load_env' commands in GRUB and the
222      'grub-editenv' utility.  This is not available in all
223      configurations (*note Environment block::).
225    * GRUB 2 has more reliable ways to find its own files and those of
226      target kernels on multiple-disk systems, and has commands (*note
227      search::) to find devices using file system labels or Universally
228      Unique Identifiers (UUIDs).
230    * GRUB 2 is available for several other types of system in addition
231      to the PC BIOS systems supported by GRUB Legacy: PC EFI, PC
232      coreboot, PowerPC, SPARC, and MIPS Lemote Yeeloong are all
233      supported.
235    * Many more file systems are supported, including but not limited to
236      ext4, HFS+, and NTFS.
238    * GRUB 2 can read files directly from LVM and RAID devices.
240    * A graphical terminal and a graphical menu system are available.
242    * GRUB 2's interface can be translated, including menu entry names.
244    * The image files (*note Images::) that make up GRUB have been
245      reorganised; Stage 1, Stage 1.5, and Stage 2 are no more.
247    * GRUB 2 puts many facilities in dynamically loaded modules, allowing
248      the core image to be smaller, and allowing the core image to be
249      built in more flexible ways.
251 \x1f
252 File: grub.info,  Node: Features,  Next: Role of a boot loader,  Prev: Changes from GRUB Legacy,  Up: Introduction
254 1.4 GRUB features
255 =================
257 The primary requirement for GRUB is that it be compliant with the
258 "Multiboot Specification", which is described in *note Multiboot
259 Specification: (multiboot)Top.
261    The other goals, listed in approximate order of importance, are:
263    * Basic functions must be straightforward for end-users.
265    * Rich functionality to support kernel experts and designers.
267    * Backward compatibility for booting FreeBSD, NetBSD, OpenBSD, and
268      Linux.  Proprietary kernels (such as DOS, Windows NT, and OS/2) are
269      supported via a chain-loading function.
271    Except for specific compatibility modes (chain-loading and the Linux
272 "piggyback" format), all kernels will be started in much the same state
273 as in the Multiboot Specification.  Only kernels loaded at 1 megabyte or
274 above are presently supported.  Any attempt to load below that boundary
275 will simply result in immediate failure and an error message reporting
276 the problem.
278    In addition to the requirements above, GRUB has the following
279 features (note that the Multiboot Specification doesn't require all the
280 features that GRUB supports):
282 Recognize multiple executable formats
283      Support many of the "a.out" variants plus "ELF". Symbol tables are
284      also loaded.
286 Support non-Multiboot kernels
287      Support many of the various free 32-bit kernels that lack Multiboot
288      compliance (primarily FreeBSD, NetBSD(1) (*note
289      Features-Footnote-1::), OpenBSD, and Linux).  Chain-loading of
290      other boot loaders is also supported.
292 Load multiples modules
293      Fully support the Multiboot feature of loading multiple modules.
295 Load a configuration file
296      Support a human-readable text configuration file with preset boot
297      commands.  You can also load another configuration file dynamically
298      and embed a preset configuration file in a GRUB image file.  The
299      list of commands (*note Commands::) are a superset of those
300      supported on the command-line.  An example configuration file is
301      provided in *note Configuration::.
303 Provide a menu interface
304      A menu interface listing preset boot commands, with a programmable
305      timeout, is available.  There is no fixed limit on the number of
306      boot entries, and the current implementation has space for several
307      hundred.
309 Have a flexible command-line interface
310      A fairly flexible command-line interface, accessible from the menu,
311      is available to edit any preset commands, or write a new boot
312      command set from scratch.  If no configuration file is present,
313      GRUB drops to the command-line.
315      The list of commands (*note Commands::) are a subset of those
316      supported for configuration files.  Editing commands closely
317      resembles the Bash command-line (*note Bash: (features)Command Line
318      Editing.), with <TAB>-completion of commands, devices, partitions,
319      and files in a directory depending on context.
321 Support multiple filesystem types
322      Support multiple filesystem types transparently, plus a useful
323      explicit blocklist notation.  The currently supported filesystem
324      types are "Amiga Fast FileSystem (AFFS)", "AtheOS fs", "BeFS",
325      "BtrFS" (including raid0, raid1, raid10, gzip and lzo), "cpio"
326      (little- and big-endian bin, odc and newc variants), "Linux
327      ext2/ext3/ext4", "DOS FAT12/FAT16/FAT32", "exFAT", "HFS", "HFS+",
328      "ISO9660" (including Joliet, Rock-ridge and multi-chunk files),
329      "JFS", "Minix fs" (versions 1, 2 and 3), "nilfs2", "NTFS"
330      (including compression), "ReiserFS", "ROMFS", "Amiga Smart
331      FileSystem (SFS)", "Squash4", "tar", "UDF", "BSD UFS/UFS2", "XFS",
332      and "ZFS" (including lzjb, gzip, zle, mirror, stripe, raidz1/2/3
333      and encryption in AES-CCM and AES-GCM). *Note Filesystem::, for
334      more information.
336 Support automatic decompression
337      Can decompress files which were compressed by 'gzip' or 'xz'(2)
338      (*note Features-Footnote-2::).  This function is both automatic and
339      transparent to the user (i.e.  all functions operate upon the
340      uncompressed contents of the specified files).  This greatly
341      reduces a file size and loading time, a particularly great benefit
342      for floppies.(3)  (*note Features-Footnote-3::)
344      It is conceivable that some kernel modules should be loaded in a
345      compressed state, so a different module-loading command can be
346      specified to avoid uncompressing the modules.
348 Access data on any installed device
349      Support reading data from any or all floppies or hard disk(s)
350      recognized by the BIOS, independent of the setting of the root
351      device.
353 Be independent of drive geometry translations
354      Unlike many other boot loaders, GRUB makes the particular drive
355      translation irrelevant.  A drive installed and running with one
356      translation may be converted to another translation without any
357      adverse effects or changes in GRUB's configuration.
359 Detect all installed RAM
360      GRUB can generally find all the installed RAM on a PC-compatible
361      machine.  It uses an advanced BIOS query technique for finding all
362      memory regions.  As described on the Multiboot Specification (*note
363      Multiboot Specification: (multiboot)Top.), not all kernels make use
364      of this information, but GRUB provides it for those who do.
366 Support Logical Block Address mode
367      In traditional disk calls (called "CHS mode"), there is a geometry
368      translation problem, that is, the BIOS cannot access over 1024
369      cylinders, so the accessible space is limited to at least 508 MB
370      and to at most 8GB. GRUB can't universally solve this problem, as
371      there is no standard interface used in all machines.  However,
372      several newer machines have the new interface, Logical Block
373      Address ("LBA") mode.  GRUB automatically detects if LBA mode is
374      available and uses it if available.  In LBA mode, GRUB can access
375      the entire disk.
377 Support network booting
378      GRUB is basically a disk-based boot loader but also has network
379      support.  You can load OS images from a network by using the "TFTP"
380      protocol.
382 Support remote terminals
383      To support computers with no console, GRUB provides remote terminal
384      support, so that you can control GRUB from a remote host.  Only
385      serial terminal support is implemented at the moment.
387 \x1f
388 File: grub.info,  Node: Features-Footnotes,  Up: Features
390    (1) The NetBSD/i386 kernel is Multiboot-compliant, but lacks support
391 for Multiboot modules.
393    (2) Only CRC32 data integrity check is supported (xz default is CRC64
394 so one should use -check=crc32 option).  LZMA BCJ filters are supported.
396    (3) There are a few pathological cases where loading a very badly
397 organized ELF kernel might take longer, but in practice this never
398 happen.
400 \x1f
401 File: grub.info,  Node: Role of a boot loader,  Prev: Features,  Up: Introduction
403 1.5 The role of a boot loader
404 =============================
406 The following is a quotation from Gordon Matzigkeit, a GRUB fanatic:
408      Some people like to acknowledge both the operating system and
409      kernel when they talk about their computers, so they might say they
410      use "GNU/Linux" or "GNU/Hurd".  Other people seem to think that the
411      kernel is the most important part of the system, so they like to
412      call their GNU operating systems "Linux systems."
414      I, personally, believe that this is a grave injustice, because the
415      _boot loader_ is the most important software of all.  I used to
416      refer to the above systems as either "LILO"(1) (*note Role of a
417      boot loader-Footnote-1::) or "GRUB" systems.
419      Unfortunately, nobody ever understood what I was talking about; now
420      I just use the word "GNU" as a pseudonym for GRUB.
422      So, if you ever hear people talking about their alleged "GNU"
423      systems, remember that they are actually paying homage to the best
424      boot loader around... GRUB!
426    We, the GRUB maintainers, do not (usually) encourage Gordon's level
427 of fanaticism, but it helps to remember that boot loaders deserve
428 recognition.  We hope that you enjoy using GNU GRUB as much as we did
429 writing it.
431 \x1f
432 File: grub.info,  Node: Role of a boot loader-Footnotes,  Up: Role of a boot loader
434    (1) The LInux LOader, a boot loader that everybody uses, but nobody
435 likes.
437 \x1f
438 File: grub.info,  Node: Naming convention,  Next: OS-specific notes about grub tools,  Prev: Introduction,  Up: Top
440 2 Naming convention
441 *******************
443 The device syntax used in GRUB is a wee bit different from what you may
444 have seen before in your operating system(s), and you need to know it so
445 that you can specify a drive/partition.
447    Look at the following examples and explanations:
449      (fd0)
451    First of all, GRUB requires that the device name be enclosed with '('
452 and ')'.  The 'fd' part means that it is a floppy disk.  The number '0'
453 is the drive number, which is counted from _zero_.  This expression
454 means that GRUB will use the whole floppy disk.
456      (hd0,msdos2)
458    Here, 'hd' means it is a hard disk drive.  The first integer '0'
459 indicates the drive number, that is, the first hard disk, the string
460 'msdos' indicates the partition scheme, while the second integer, '2',
461 indicates the partition number (or the PC slice number in the BSD
462 terminology).  The partition numbers are counted from _one_, not from
463 zero (as was the case in previous versions of GRUB). This expression
464 means the second partition of the first hard disk drive.  In this case,
465 GRUB uses one partition of the disk, instead of the whole disk.
467      (hd0,msdos5)
469    This specifies the first "extended partition" of the first hard disk
470 drive.  Note that the partition numbers for extended partitions are
471 counted from '5', regardless of the actual number of primary partitions
472 on your hard disk.
474      (hd1,msdos1,bsd1)
476    This means the BSD 'a' partition on first PC slice number of the
477 second hard disk.
479    Of course, to actually access the disks or partitions with GRUB, you
480 need to use the device specification in a command, like 'set root=(fd0)'
481 or 'parttool (hd0,msdos3) hidden-'.  To help you find out which number
482 specifies a partition you want, the GRUB command-line (*note
483 Command-line interface::) options have argument completion.  This means
484 that, for example, you only need to type
486      set root=(
488    followed by a <TAB>, and GRUB will display the list of drives,
489 partitions, or file names.  So it should be quite easy to determine the
490 name of your target partition, even with minimal knowledge of the
491 syntax.
493    Note that GRUB does _not_ distinguish IDE from SCSI - it simply
494 counts the drive numbers from zero, regardless of their type.  Normally,
495 any IDE drive number is less than any SCSI drive number, although that
496 is not true if you change the boot sequence by swapping IDE and SCSI
497 drives in your BIOS.
499    Now the question is, how to specify a file?  Again, consider an
500 example:
502      (hd0,msdos1)/vmlinuz
504    This specifies the file named 'vmlinuz', found on the first partition
505 of the first hard disk drive.  Note that the argument completion works
506 with file names, too.
508    That was easy, admit it.  Now read the next chapter, to find out how
509 to actually install GRUB on your drive.
511 \x1f
512 File: grub.info,  Node: OS-specific notes about grub tools,  Next: Installation,  Prev: Naming convention,  Up: Top
514 3 OS-specific notes about grub tools
515 ************************************
517 On OS which have device nodes similar to Unix-like OS GRUB tools use the
518 OS name.  E.g.  for GNU/Linux:
520      # grub-install /dev/sda
522    On AROS we use another syntax.  For volumes:
524      //:<volume name>
526    E.g.
528      //:DH0
530    For disks we use syntax:
531      //:<driver name>/unit/flags
533    E.g.
535      # grub-install //:ata.device/0/0
537    On Windows we use UNC path.  For volumes it's typically
539      \\?\Volume{<GUID>}
540      \\?\<drive letter>:
542    E.g.
544      \\?\Volume{17f34d50-cf64-4b02-800e-51d79c3aa2ff}
545      \\?\C:
547    For disks it's
549      \\?\PhysicalDrive<number>
551    E.g.
553      # grub-install \\?\PhysicalDrive0
555    Beware that you may need to further escape the backslashes depending
556 on your shell.
558    When compiled with cygwin support then cygwin drive names are
559 automatically when needed.  E.g.
561      # grub-install /dev/sda
563 \x1f
564 File: grub.info,  Node: Installation,  Next: Booting,  Prev: OS-specific notes about grub tools,  Up: Top
566 4 Installation
567 **************
569 In order to install GRUB as your boot loader, you need to first install
570 the GRUB system and utilities under your UNIX-like operating system
571 (*note Obtaining and Building GRUB::).  You can do this either from the
572 source tarball, or as a package for your OS.
574    After you have done that, you need to install the boot loader on a
575 drive (floppy or hard disk) by using the utility 'grub-install' (*note
576 Invoking grub-install::) on a UNIX-like OS.
578    GRUB comes with boot images, which are normally put in the directory
579 '/usr/lib/grub/<cpu>-<platform>' (for BIOS-based machines
580 '/usr/lib/grub/i386-pc').  Hereafter, the directory where GRUB images
581 are initially placed (normally '/usr/lib/grub/<cpu>-<platform>') will be
582 called the "image directory", and the directory where the boot loader
583 needs to find them (usually '/boot') will be called the "boot
584 directory".
586 * Menu:
588 * Installing GRUB using grub-install::
589 * Making a GRUB bootable CD-ROM::
590 * Device map::
591 * BIOS installation::
593 \x1f
594 File: grub.info,  Node: Installing GRUB using grub-install,  Next: Making a GRUB bootable CD-ROM,  Up: Installation
596 4.1 Installing GRUB using grub-install
597 ======================================
599 For information on where GRUB should be installed on PC BIOS platforms,
600 *note BIOS installation::.
602    In order to install GRUB under a UNIX-like OS (such as GNU), invoke
603 the program 'grub-install' (*note Invoking grub-install::) as the
604 superuser ("root").
606    The usage is basically very simple.  You only need to specify one
607 argument to the program, namely, where to install the boot loader.  The
608 argument has to be either a device file (like '/dev/hda').  For example,
609 under Linux the following will install GRUB into the MBR of the first
610 IDE disk:
612      # grub-install /dev/sda
614    Likewise, under GNU/Hurd, this has the same effect:
616      # grub-install /dev/hd0
618    But all the above examples assume that GRUB should put images under
619 the '/boot' directory.  If you want GRUB to put images under a directory
620 other than '/boot', you need to specify the option '--boot-directory'.
621 The typical usage is that you create a GRUB boot floppy with a
622 filesystem.  Here is an example:
624      # mke2fs /dev/fd0
625      # mount -t ext2 /dev/fd0 /mnt
626      # mkdir /mnt/boot
627      # grub-install --boot-directory=/mnt/boot /dev/fd0
628      # umount /mnt
630    Some BIOSes have a bug of exposing the first partition of a USB drive
631 as a floppy instead of exposing the USB drive as a hard disk (they call
632 it "USB-FDD" boot).  In such cases, you need to install like this:
634      # losetup /dev/loop0 /dev/sdb1
635      # mount /dev/loop0 /mnt/usb
636      # grub-install --boot-directory=/mnt/usb/bugbios --force --allow-floppy /dev/loop0
638    This install doesn't conflict with standard install as long as they
639 are in separate directories.
641    Note that 'grub-install' is actually just a shell script and the real
642 task is done by other tools such as 'grub-mkimage'.  Therefore, you may
643 run those commands directly to install GRUB, without using
644 'grub-install'.  Don't do that, however, unless you are very familiar
645 with the internals of GRUB. Installing a boot loader on a running OS may
646 be extremely dangerous.
648    On EFI systems for fixed disk install you have to mount EFI System
649 Partition.  If you mount it at '/boot/efi' then you don't need any
650 special arguments:
652      # grub-install
654    Otherwise you need to specify where your EFI System partition is
655 mounted:
657      # grub-install --efi-directory=/mnt/efi
659    For removable installs you have to use '--removable' and specify both
660 '--boot-directory' and '--efi-directory':
662      # grub-install --efi-directory=/mnt/usb --boot-directory=/mnt/usb/boot --removable
664 \x1f
665 File: grub.info,  Node: Making a GRUB bootable CD-ROM,  Next: Device map,  Prev: Installing GRUB using grub-install,  Up: Installation
667 4.2 Making a GRUB bootable CD-ROM
668 =================================
670 GRUB supports the "no emulation mode" in the El Torito specification(1)
671 (*note Making a GRUB bootable CD-ROM-Footnote-1::).  This means that you
672 can use the whole CD-ROM from GRUB and you don't have to make a floppy
673 or hard disk image file, which can cause compatibility problems.
675    For booting from a CD-ROM, GRUB uses a special image called
676 'cdboot.img', which is concatenated with 'core.img'.  The 'core.img'
677 used for this should be built with at least the 'iso9660' and 'biosdisk'
678 modules.  Your bootable CD-ROM will usually also need to include a
679 configuration file 'grub.cfg' and some other GRUB modules.
681    To make a simple generic GRUB rescue CD, you can use the
682 'grub-mkrescue' program (*note Invoking grub-mkrescue::):
684      $ grub-mkrescue -o grub.iso
686    You will often need to include other files in your image.  To do
687 this, first make a top directory for the bootable image, say, 'iso':
689      $ mkdir iso
691    Make a directory for GRUB:
693      $ mkdir -p iso/boot/grub
695    If desired, make the config file 'grub.cfg' under 'iso/boot/grub'
696 (*note Configuration::), and copy any files and directories for the disc
697 to the directory 'iso/'.
699    Finally, make the image:
701      $ grub-mkrescue -o grub.iso iso
703    This produces a file named 'grub.iso', which then can be burned into
704 a CD (or a DVD), or written to a USB mass storage device.
706    The root device will be set up appropriately on entering your
707 'grub.cfg' configuration file, so you can refer to file names on the CD
708 without needing to use an explicit device name.  This makes it easier to
709 produce rescue images that will work on both optical drives and USB mass
710 storage devices.
712 \x1f
713 File: grub.info,  Node: Making a GRUB bootable CD-ROM-Footnotes,  Up: Making a GRUB bootable CD-ROM
715    (1) El Torito is a specification for bootable CD using BIOS
716 functions.
718 \x1f
719 File: grub.info,  Node: Device map,  Next: BIOS installation,  Prev: Making a GRUB bootable CD-ROM,  Up: Installation
721 4.3 The map between BIOS drives and OS devices
722 ==============================================
724 If the device map file exists, the GRUB utilities ('grub-probe', etc.)
725 read it to map BIOS drives to OS devices.  This file consists of lines
726 like this:
728      (DEVICE) FILE
730    DEVICE is a drive specified in the GRUB syntax (*note Device
731 syntax::), and FILE is an OS file, which is normally a device file.
733    Historically, the device map file was used because GRUB device names
734 had to be used in the configuration file, and they were derived from
735 BIOS drive numbers.  The map between BIOS drives and OS devices cannot
736 always be guessed correctly: for example, GRUB will get the order wrong
737 if you exchange the boot sequence between IDE and SCSI in your BIOS.
739    Unfortunately, even OS device names are not always stable.  Modern
740 versions of the Linux kernel may probe drives in a different order from
741 boot to boot, and the prefix ('/dev/hd*' versus '/dev/sd*') may change
742 depending on the driver subsystem in use.  As a result, the device map
743 file required frequent editing on some systems.
745    GRUB avoids this problem nowadays by using UUIDs or file system
746 labels when generating 'grub.cfg', and we advise that you do the same
747 for any custom menu entries you write.  If the device map file does not
748 exist, then the GRUB utilities will assume a temporary device map on the
749 fly.  This is often good enough, particularly in the common case of
750 single-disk systems.
752    However, the device map file is not entirely obsolete yet, and it is
753 used for overriding when current environment is different from the one
754 on boot.  Most common case is if you use a partition or logical volume
755 as a disk for virtual machine.  You can put any comments in the file if
756 needed, as the GRUB utilities assume that a line is just a comment if
757 the first character is '#'.
759 \x1f
760 File: grub.info,  Node: BIOS installation,  Prev: Device map,  Up: Installation
762 4.4 BIOS installation
763 =====================
768 The partition table format traditionally used on PC BIOS platforms is
769 called the Master Boot Record (MBR) format; this is the format that
770 allows up to four primary partitions and additional logical partitions.
771 With this partition table format, there are two ways to install GRUB: it
772 can be embedded in the area between the MBR and the first partition
773 (called by various names, such as the "boot track", "MBR gap", or
774 "embedding area", and which is usually at least 31 KiB), or the core
775 image can be installed in a file system and a list of the blocks that
776 make it up can be stored in the first sector of that partition.
778    Each of these has different problems.  There is no way to reserve
779 space in the embedding area with complete safety, and some proprietary
780 software is known to use it to make it difficult for users to work
781 around licensing restrictions; and systems are sometimes partitioned
782 without leaving enough space before the first partition.  On the other
783 hand, installing to a filesystem means that GRUB is vulnerable to its
784 blocks being moved around by filesystem features such as tail packing,
785 or even by aggressive fsck implementations, so this approach is quite
786 fragile; and this approach can only be used if the '/boot' filesystem is
787 on the same disk that the BIOS boots from, so that GRUB does not have to
788 rely on guessing BIOS drive numbers.
790    The GRUB development team generally recommends embedding GRUB before
791 the first partition, unless you have special requirements.  You must
792 ensure that the first partition starts at least 31 KiB (63 sectors) from
793 the start of the disk; on modern disks, it is often a performance
794 advantage to align partitions on larger boundaries anyway, so the first
795 partition might start 1 MiB from the start of the disk.
800 Some newer systems use the GUID Partition Table (GPT) format.  This was
801 specified as part of the Extensible Firmware Interface (EFI), but it can
802 also be used on BIOS platforms if system software supports it; for
803 example, GRUB and GNU/Linux can be used in this configuration.  With
804 this format, it is possible to reserve a whole partition for GRUB,
805 called the BIOS Boot Partition.  GRUB can then be embedded into that
806 partition without the risk of being overwritten by other software and
807 without being contained in a filesystem which might move its blocks
808 around.
810    When creating a BIOS Boot Partition on a GPT system, you should make
811 sure that it is at least 31 KiB in size.  (GPT-formatted disks are not
812 usually particularly small, so we recommend that you make it larger than
813 the bare minimum, such as 1 MiB, to allow plenty of room for growth.)
814 You must also make sure that it has the proper partition type.  Using
815 GNU Parted, you can set this using a command such as the following:
817      # parted /dev/DISK set PARTITION-NUMBER bios_grub on
819    If you are using gdisk, set the partition type to '0xEF02'.  With
820 partitioning programs that require setting the GUID directly, it should
821 be '21686148-6449-6e6f-744e656564454649'.
823    *Caution:* Be very careful which partition you select!  When GRUB
824 finds a BIOS Boot Partition during installation, it will automatically
825 overwrite part of it.  Make sure that the partition does not contain any
826 other data.
828 \x1f
829 File: grub.info,  Node: Booting,  Next: Configuration,  Prev: Installation,  Up: Top
831 5 Booting
832 *********
834 GRUB can load Multiboot-compliant kernels in a consistent way, but for
835 some free operating systems you need to use some OS-specific magic.
837 * Menu:
839 * General boot methods::        How to boot OSes with GRUB generally
840 * Loopback booting::            Notes on booting from loopbacks
841 * OS-specific notes::           Notes on some operating systems
843 \x1f
844 File: grub.info,  Node: General boot methods,  Next: Loopback booting,  Up: Booting
846 5.1 How to boot operating systems
847 =================================
849 GRUB has two distinct boot methods.  One of the two is to load an
850 operating system directly, and the other is to chain-load another boot
851 loader which then will load an operating system actually.  Generally
852 speaking, the former is more desirable, because you don't need to
853 install or maintain other boot loaders and GRUB is flexible enough to
854 load an operating system from an arbitrary disk/partition.  However, the
855 latter is sometimes required, since GRUB doesn't support all the
856 existing operating systems natively.
858 * Menu:
860 * Loading an operating system directly::
861 * Chain-loading::
863 \x1f
864 File: grub.info,  Node: Loading an operating system directly,  Next: Chain-loading,  Up: General boot methods
866 5.1.1 How to boot an OS directly with GRUB
867 ------------------------------------------
869 Multiboot (*note Multiboot Specification: (multiboot)Top.) is the native
870 format supported by GRUB. For the sake of convenience, there is also
871 support for Linux, FreeBSD, NetBSD and OpenBSD. If you want to boot
872 other operating systems, you will have to chain-load them (*note
873 Chain-loading::).
875    FIXME: this section is incomplete.
877   1. Run the command 'boot' (*note boot::).
879    However, DOS and Windows have some deficiencies, so you might have to
880 use more complicated instructions.  *Note DOS/Windows::, for more
881 information.
883 \x1f
884 File: grub.info,  Node: Chain-loading,  Prev: Loading an operating system directly,  Up: General boot methods
886 5.1.2 Chain-loading an OS
887 -------------------------
889 Operating systems that do not support Multiboot and do not have specific
890 support in GRUB (specific support is available for Linux, FreeBSD,
891 NetBSD and OpenBSD) must be chain-loaded, which involves loading another
892 boot loader and jumping to it in real mode.
894    The 'chainloader' command (*note chainloader::) is used to set this
895 up.  It is normally also necessary to load some GRUB modules and set the
896 appropriate root device.  Putting this together, we get something like
897 this, for a Windows system on the first partition of the first hard
898 disk:
900 menuentry "Windows" {
901         insmod chain
902         insmod ntfs
903         set root=(hd0,1)
904         chainloader +1
907    On systems with multiple hard disks, an additional workaround may be
908 required.  *Note DOS/Windows::.
910    Chain-loading is only supported on PC BIOS and EFI platforms.
912 \x1f
913 File: grub.info,  Node: Loopback booting,  Next: OS-specific notes,  Prev: General boot methods,  Up: Booting
915 5.2 Loopback booting
916 ====================
918 GRUB is able to read from an image (be it one of CD or HDD) stored on
919 any of its accessible storages (refer to *note loopback:: command).
920 However the OS itself should be able to find its root.  This usually
921 involves running a userspace program running before the real root is
922 discovered.  This is achieved by GRUB loading a specially made small
923 image and passing it as ramdisk to the kernel.  This is achieved by
924 commands 'kfreebsd_module', 'knetbsd_module_elf', 'kopenbsd_ramdisk',
925 'initrd' (*note initrd::), 'initrd16' (*note initrd::),
926 'multiboot_module', 'multiboot2_module' or 'xnu_ramdisk' depending on
927 the loader.  Note that for knetbsd the image must be put inside
928 miniroot.kmod and the whole miniroot.kmod has to be loaded.  In kopenbsd
929 payload this is disabled by default.  Aditionally behaviour of initial
930 ramdisk depends on command line options.  Several distributors provide
931 the image for this purpose or it's integrated in their standard ramdisk
932 and activated by special option.  Consult your kernel and distribution
933 manual for more details.  Other loaders like appleloader, chainloader
934 (BIOS, EFI, coreboot), freedos, ntldr and plan9 provide no possibility
935 of loading initial ramdisk and as far as author is aware the payloads in
936 question don't support either initial ramdisk or discovering loopback
937 boot in other way and as such not bootable this way.  Please consider
938 alternative boot methods like copying all files from the image to actual
939 partition.  Consult your OS documentation for more details
941 \x1f
942 File: grub.info,  Node: OS-specific notes,  Prev: Loopback booting,  Up: Booting
944 5.3 Some caveats on OS-specific issues
945 ======================================
947 Here, we describe some caveats on several operating systems.
949 * Menu:
951 * GNU/Hurd::
952 * GNU/Linux::
953 * NetBSD::
954 * DOS/Windows::
956 \x1f
957 File: grub.info,  Node: GNU/Hurd,  Next: GNU/Linux,  Up: OS-specific notes
959 5.3.1 GNU/Hurd
960 --------------
962 Since GNU/Hurd is Multiboot-compliant, it is easy to boot it; there is
963 nothing special about it.  But do not forget that you have to specify a
964 root partition to the kernel.
966   1. Set GRUB's root device to the same drive as GNU/Hurd's.  The
967      command 'search --set=root --file /boot/gnumach.gz' or similar may
968      help you (*note search::).
970   2. Load the kernel and the modules, like this:
972           grub> multiboot /boot/gnumach.gz root=device:hd0s1
973           grub> module  /hurd/ext2fs.static ext2fs --readonly \
974                              --multiboot-command-line='${kernel-command-line}' \
975                              --host-priv-port='${host-port}' \
976                              --device-master-port='${device-port}' \
977                              --exec-server-task='${exec-task}' -T typed '${root}' \
978                              '$(task-create)' '$(task-resume)'
979           grub> module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
981   3. Finally, run the command 'boot' (*note boot::).
983 \x1f
984 File: grub.info,  Node: GNU/Linux,  Next: NetBSD,  Prev: GNU/Hurd,  Up: OS-specific notes
986 5.3.2 GNU/Linux
987 ---------------
989 It is relatively easy to boot GNU/Linux from GRUB, because it somewhat
990 resembles to boot a Multiboot-compliant OS.
992   1. Set GRUB's root device to the same drive as GNU/Linux's.  The
993      command 'search --set=root --file /vmlinuz' or similar may help you
994      (*note search::).
996   2. Load the kernel using the command 'linux' (*note linux::):
998           grub> linux /vmlinuz root=/dev/sda1
1000      If you need to specify some kernel parameters, just append them to
1001      the command.  For example, to set 'acpi' to 'off', do this:
1003           grub> linux /vmlinuz root=/dev/sda1 acpi=off
1005      See the documentation in the Linux source tree for complete
1006      information on the available options.
1008      With 'linux' GRUB uses 32-bit protocol.  Some BIOS services like
1009      APM or EDD aren't available with this protocol.  In this case you
1010      need to use 'linux16'
1012           grub> linux16 /vmlinuz root=/dev/sda1 acpi=off
1014   3. If you use an initrd, execute the command 'initrd' (*note initrd::)
1015      after 'linux':
1017           grub> initrd /initrd
1019      If you used 'linux16' you need to use 'initrd16':
1021           grub> initrd16 /initrd
1023   4. Finally, run the command 'boot' (*note boot::).
1025    *Caution:* If you use an initrd and specify the 'mem=' option to the
1026 kernel to let it use less than actual memory size, you will also have to
1027 specify the same memory size to GRUB. To let GRUB know the size, run the
1028 command 'uppermem' _before_ loading the kernel.  *Note uppermem::, for
1029 more information.
1031 \x1f
1032 File: grub.info,  Node: NetBSD,  Next: DOS/Windows,  Prev: GNU/Linux,  Up: OS-specific notes
1034 5.3.3 NetBSD
1035 ------------
1037 Booting a NetBSD kernel from GRUB is also relatively easy: first set
1038 GRUB's root device, then load the kernel and the modules, and finally
1039 run 'boot'.
1041   1. Set GRUB's root device to the partition holding the NetBSD root
1042      file system.  For a disk with a NetBSD disk label, this is usually
1043      the first partition (a:).  In that case, and assuming that the
1044      partition is on the first hard disk, set GRUB's root device as
1045      follows:
1047           grub> insmod part_bsd
1048           grub> set root=(hd0,netbsd1)
1050      For a disk with a GUID Partition Table (GPT), and assuming that the
1051      NetBSD root partition is the third GPT partition, do this:
1053           grub> insmod part_gpt
1054           grub> set root=(hd0,gpt3)
1056   2. Load the kernel using the command 'knetbsd':
1058           grub> knetbsd /netbsd
1060      Various options may be given to 'knetbsd'.  These options are, for
1061      the most part, the same as in the NetBSD boot loader.  For
1062      instance, to boot the system in single-user mode and with verbose
1063      messages, do this:
1065           grub> knetbsd /netbsd -s -v
1067   3. If needed, load kernel modules with the command
1068      'knetbsd_module_elf'.  A typical example is the module for the root
1069      file system:
1071           grub> knetbsd_module_elf /stand/amd64/6.0/modules/ffs/ffs.kmod
1073   4. Finally, run the command 'boot' (*note boot::).
1075 \x1f
1076 File: grub.info,  Node: DOS/Windows,  Prev: NetBSD,  Up: OS-specific notes
1078 5.3.4 DOS/Windows
1079 -----------------
1081 GRUB cannot boot DOS or Windows directly, so you must chain-load them
1082 (*note Chain-loading::).  However, their boot loaders have some critical
1083 deficiencies, so it may not work to just chain-load them.  To overcome
1084 the problems, GRUB provides you with two helper functions.
1086    If you have installed DOS (or Windows) on a non-first hard disk, you
1087 have to use the disk swapping technique, because that OS cannot boot
1088 from any disks but the first one.  The workaround used in GRUB is the
1089 command 'drivemap' (*note drivemap::), like this:
1091      drivemap -s (hd0) (hd1)
1093    This performs a "virtual" swap between your first and second hard
1094 drive.
1096    *Caution:* This is effective only if DOS (or Windows) uses BIOS to
1097 access the swapped disks.  If that OS uses a special driver for the
1098 disks, this probably won't work.
1100    Another problem arises if you installed more than one set of
1101 DOS/Windows onto one disk, because they could be confused if there are
1102 more than one primary partitions for DOS/Windows.  Certainly you should
1103 avoid doing this, but there is a solution if you do want to do so.  Use
1104 the partition hiding/unhiding technique.
1106    If GRUB "hides" a DOS (or Windows) partition (*note parttool::), DOS
1107 (or Windows) will ignore the partition.  If GRUB "unhides" a DOS (or
1108 Windows) partition, DOS (or Windows) will detect the partition.  Thus,
1109 if you have installed DOS (or Windows) on the first and the second
1110 partition of the first hard disk, and you want to boot the copy on the
1111 first partition, do the following:
1113      parttool (hd0,1) hidden-
1114      parttool (hd0,2) hidden+
1115      set root=(hd0,1)
1116      chainloader +1
1117      parttool ${root} boot+
1118      boot
1120 \x1f
1121 File: grub.info,  Node: Configuration,  Next: Theme file format,  Prev: Booting,  Up: Top
1123 6 Writing your own configuration file
1124 *************************************
1126 GRUB is configured using 'grub.cfg', usually located under '/boot/grub'.
1127 This file is quite flexible, but most users will not need to write the
1128 whole thing by hand.
1130 * Menu:
1132 * Simple configuration::        Recommended for most users
1133 * Shell-like scripting::        For power users and developers
1134 * Multi-boot manual config::    For non-standard multi-OS scenarios
1135 * Embedded configuration::      Embedding a configuration file into GRUB
1137 \x1f
1138 File: grub.info,  Node: Simple configuration,  Next: Shell-like scripting,  Up: Configuration
1140 6.1 Simple configuration handling
1141 =================================
1143 The program 'grub-mkconfig' (*note Invoking grub-mkconfig::) generates
1144 'grub.cfg' files suitable for most cases.  It is suitable for use when
1145 upgrading a distribution, and will discover available kernels and
1146 attempt to generate menu entries for them.
1148    'grub-mkconfig' does have some limitations.  While adding extra
1149 custom menu entries to the end of the list can be done by editing
1150 '/etc/grub.d/40_custom' or creating '/boot/grub/custom.cfg', changing
1151 the order of menu entries or changing their titles may require making
1152 complex changes to shell scripts stored in '/etc/grub.d/'.  This may be
1153 improved in the future.  In the meantime, those who feel that it would
1154 be easier to write 'grub.cfg' directly are encouraged to do so (*note
1155 Booting::, and *note Shell-like scripting::), and to disable any system
1156 provided by their distribution to automatically run 'grub-mkconfig'.
1158    The file '/etc/default/grub' controls the operation of
1159 'grub-mkconfig'.  It is sourced by a shell script, and so must be valid
1160 POSIX shell input; normally, it will just be a sequence of 'KEY=value'
1161 lines, but if the value contains spaces or other special characters then
1162 it must be quoted.  For example:
1164      GRUB_TERMINAL_INPUT="console serial"
1166    Valid keys in '/etc/default/grub' are as follows:
1168 'GRUB_DEFAULT'
1169      The default menu entry.  This may be a number, in which case it
1170      identifies the Nth entry in the generated menu counted from zero,
1171      or the title of a menu entry, or the special string 'saved'.  Using
1172      the id may be useful if you want to set a menu entry as the default
1173      even though there may be a variable number of entries before it.
1175      For example, if you have:
1177      menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux {
1178         ...
1179      }
1181      then you can make this the default using:
1183           GRUB_DEFAULT=example-gnu-linux
1185      Previously it was documented the way to use entry title.  While
1186      this still works it's not recommended since titles often contain
1187      unstable device names and may be translated
1189      If you set this to 'saved', then the default menu entry will be
1190      that saved by 'GRUB_SAVEDEFAULT' or 'grub-set-default'.  This
1191      relies on the environment block, which may not be available in all
1192      situations (*note Environment block::).
1194      The default is '0'.
1196 'GRUB_SAVEDEFAULT'
1197      If this option is set to 'true', then, when an entry is selected,
1198      save it as a new default entry for use by future runs of GRUB. This
1199      is only useful if 'GRUB_DEFAULT=saved'; it is a separate option
1200      because 'GRUB_DEFAULT=saved' is useful without this option, in
1201      conjunction with 'grub-set-default'.  Unset by default.  This
1202      option relies on the environment block, which may not be available
1203      in all situations (*note Environment block::).
1205 'GRUB_TIMEOUT'
1206      Boot the default entry this many seconds after the menu is
1207      displayed, unless a key is pressed.  The default is '5'.  Set to
1208      '0' to boot immediately without displaying the menu, or to '-1' to
1209      wait indefinitely.
1211      If 'GRUB_TIMEOUT_STYLE' is set to 'countdown' or 'hidden', the
1212      timeout is instead counted before the menu is displayed.
1214 'GRUB_TIMEOUT_STYLE'
1215      If this option is unset or set to 'menu', then GRUB will display
1216      the menu and then wait for the timeout set by 'GRUB_TIMEOUT' to
1217      expire before booting the default entry.  Pressing a key interrupts
1218      the timeout.
1220      If this option is set to 'countdown' or 'hidden', then, before
1221      displaying the menu, GRUB will wait for the timeout set by
1222      'GRUB_TIMEOUT' to expire.  If <ESC> is pressed during that time, it
1223      will display the menu and wait for input.  If a hotkey associated
1224      with a menu entry is pressed, it will boot the associated menu
1225      entry immediately.  If the timeout expires before either of these
1226      happens, it will boot the default entry.  In the 'countdown' case,
1227      it will show a one-line indication of the remaining time.
1229 'GRUB_DEFAULT_BUTTON'
1230 'GRUB_TIMEOUT_BUTTON'
1231 'GRUB_TIMEOUT_STYLE_BUTTON'
1232 'GRUB_BUTTON_CMOS_ADDRESS'
1233      Variants of the corresponding variables without the '_BUTTON'
1234      suffix, used to support vendor-specific power buttons.  *Note
1235      Vendor power-on keys::.
1237 'GRUB_DISTRIBUTOR'
1238      Set by distributors of GRUB to their identifying name.  This is
1239      used to generate more informative menu entry titles.
1241 'GRUB_TERMINAL_INPUT'
1242      Select the terminal input device.  You may select multiple devices
1243      here, separated by spaces.
1245      Valid terminal input names depend on the platform, but may include
1246      'console' (native platform console), 'serial' (serial terminal),
1247      'serial_<port>' (serial terminal with explicit port selection),
1248      'at_keyboard' (PC AT keyboard), or 'usb_keyboard' (USB keyboard
1249      using the HID Boot Protocol, for cases where the firmware does not
1250      handle this).
1252      The default is to use the platform's native terminal input.
1254 'GRUB_TERMINAL_OUTPUT'
1255      Select the terminal output device.  You may select multiple devices
1256      here, separated by spaces.
1258      Valid terminal output names depend on the platform, but may include
1259      'console' (native platform console), 'serial' (serial terminal),
1260      'serial_<port>' (serial terminal with explicit port selection),
1261      'gfxterm' (graphics-mode output), 'vga_text' (VGA text output),
1262      'mda_text' (MDA text output), 'morse' (Morse-coding using system
1263      beeper) or 'spkmodem' (simple data protocol using system speaker).
1265      'spkmodem' is useful when no serial port is available.  Connect the
1266      output of sending system (where GRUB is running) to line-in of
1267      receiving system (usually developer machine).  On receiving system
1268      compile 'spkmodem-recv' from 'util/spkmodem-recv.c' and run:
1270           parecord --channels=1 --rate=48000 --format=s16le | ./spkmodem-recv
1272      The default is to use the platform's native terminal output.
1274 'GRUB_TERMINAL'
1275      If this option is set, it overrides both 'GRUB_TERMINAL_INPUT' and
1276      'GRUB_TERMINAL_OUTPUT' to the same value.
1278 'GRUB_SERIAL_COMMAND'
1279      A command to configure the serial port when using the serial
1280      console.  *Note serial::.  Defaults to 'serial'.
1282 'GRUB_CMDLINE_LINUX'
1283      Command-line arguments to add to menu entries for the Linux kernel.
1285 'GRUB_CMDLINE_LINUX_DEFAULT'
1286      Unless 'GRUB_DISABLE_RECOVERY' is set to 'true', two menu entries
1287      will be generated for each Linux kernel: one default entry and one
1288      entry for recovery mode.  This option lists command-line arguments
1289      to add only to the default menu entry, after those listed in
1290      'GRUB_CMDLINE_LINUX'.
1292 'GRUB_CMDLINE_NETBSD'
1293 'GRUB_CMDLINE_NETBSD_DEFAULT'
1294      As 'GRUB_CMDLINE_LINUX' and 'GRUB_CMDLINE_LINUX_DEFAULT', but for
1295      NetBSD.
1297 'GRUB_CMDLINE_GNUMACH'
1298      As 'GRUB_CMDLINE_LINUX', but for GNU Mach.
1300 'GRUB_CMDLINE_XEN'
1301 'GRUB_CMDLINE_XEN_DEFAULT'
1302      The values of these options are passed to Xen hypervisor Xen menu
1303      entries, for all respectively normal entries.
1305 'GRUB_CMDLINE_LINUX_XEN_REPLACE'
1306 'GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT'
1307      The values of these options replace the values of
1308      'GRUB_CMDLINE_LINUX' and 'GRUB_CMDLINE_LINUX_DEFAULT' for Linux and
1309      Xen menu entries.
1311 'GRUB_DISABLE_LINUX_UUID'
1312      Normally, 'grub-mkconfig' will generate menu entries that use
1313      universally-unique identifiers (UUIDs) to identify the root
1314      filesystem to the Linux kernel, using a 'root=UUID=...' kernel
1315      parameter.  This is usually more reliable, but in some cases it may
1316      not be appropriate.  To disable the use of UUIDs, set this option
1317      to 'true'.
1319 'GRUB_DISABLE_RECOVERY'
1320      If this option is set to 'true', disable the generation of recovery
1321      mode menu entries.
1323 'GRUB_VIDEO_BACKEND'
1324      If graphical video support is required, either because the
1325      'gfxterm' graphical terminal is in use or because
1326      'GRUB_GFXPAYLOAD_LINUX' is set, then 'grub-mkconfig' will normally
1327      load all available GRUB video drivers and use the one most
1328      appropriate for your hardware.  If you need to override this for
1329      some reason, then you can set this option.
1331      After 'grub-install' has been run, the available video drivers are
1332      listed in '/boot/grub/video.lst'.
1334 'GRUB_GFXMODE'
1335      Set the resolution used on the 'gfxterm' graphical terminal.  Note
1336      that you can only use modes which your graphics card supports via
1337      VESA BIOS Extensions (VBE), so for example native LCD panel
1338      resolutions may not be available.  The default is 'auto', which
1339      tries to select a preferred resolution.  *Note gfxmode::.
1341 'GRUB_BACKGROUND'
1342      Set a background image for use with the 'gfxterm' graphical
1343      terminal.  The value of this option must be a file readable by GRUB
1344      at boot time, and it must end with '.png', '.tga', '.jpg', or
1345      '.jpeg'.  The image will be scaled if necessary to fit the screen.
1347 'GRUB_THEME'
1348      Set a theme for use with the 'gfxterm' graphical terminal.
1350 'GRUB_GFXPAYLOAD_LINUX'
1351      Set to 'text' to force the Linux kernel to boot in normal text
1352      mode, 'keep' to preserve the graphics mode set using
1353      'GRUB_GFXMODE', 'WIDTHxHEIGHT'['xDEPTH'] to set a particular
1354      graphics mode, or a sequence of these separated by commas or
1355      semicolons to try several modes in sequence.  *Note gfxpayload::.
1357      Depending on your kernel, your distribution, your graphics card,
1358      and the phase of the moon, note that using this option may cause
1359      GNU/Linux to suffer from various display problems, particularly
1360      during the early part of the boot sequence.  If you have problems,
1361      set this option to 'text' and GRUB will tell Linux to boot in
1362      normal text mode.
1364 'GRUB_DISABLE_OS_PROBER'
1365      Normally, 'grub-mkconfig' will try to use the external 'os-prober'
1366      program, if installed, to discover other operating systems
1367      installed on the same system and generate appropriate menu entries
1368      for them.  Set this option to 'true' to disable this.
1370 'GRUB_OS_PROBER_SKIP_LIST'
1371      List of space-separated FS UUIDs of filesystems to be ignored from
1372      os-prober output.  For efi chainloaders it's <UUID>@<EFI FILE>
1374 'GRUB_DISABLE_SUBMENU'
1375      Normally, 'grub-mkconfig' will generate top level menu entry for
1376      the kernel with highest version number and put all other found
1377      kernels or alternative menu entries for recovery mode in submenu.
1378      For entries returned by 'os-prober' first entry will be put on top
1379      level and all others in submenu.  If this option is set to 'y',
1380      flat menu with all entries on top level will be generated instead.
1381      Changing this option will require changing existing values of
1382      'GRUB_DEFAULT', 'fallback' (*note fallback::) and 'default' (*note
1383      default::) environment variables as well as saved default entry
1384      using 'grub-set-default' and value used with 'grub-reboot'.
1386 'GRUB_ENABLE_CRYPTODISK'
1387      If set to 'y', 'grub-mkconfig' and 'grub-install' will check for
1388      encrypted disks and generate additional commands needed to access
1389      them during boot.  Note that in this case unattended boot is not
1390      possible because GRUB will wait for passphrase to unlock encrypted
1391      container.
1393 'GRUB_INIT_TUNE'
1394      Play a tune on the speaker when GRUB starts.  This is particularly
1395      useful for users unable to see the screen.  The value of this
1396      option is passed directly to *note play::.
1398 'GRUB_BADRAM'
1399      If this option is set, GRUB will issue a *note badram:: command to
1400      filter out specified regions of RAM.
1402 'GRUB_PRELOAD_MODULES'
1403      This option may be set to a list of GRUB module names separated by
1404      spaces.  Each module will be loaded as early as possible, at the
1405      start of 'grub.cfg'.
1407    The following options are still accepted for compatibility with
1408 existing configurations, but have better replacements:
1410 'GRUB_HIDDEN_TIMEOUT'
1411      Wait this many seconds before displaying the menu.  If <ESC> is
1412      pressed during that time, display the menu and wait for input
1413      according to 'GRUB_TIMEOUT'.  If a hotkey associated with a menu
1414      entry is pressed, boot the associated menu entry immediately.  If
1415      the timeout expires before either of these happens, display the
1416      menu for the number of seconds specified in 'GRUB_TIMEOUT' before
1417      booting the default entry.
1419      If you set 'GRUB_HIDDEN_TIMEOUT', you should also set
1420      'GRUB_TIMEOUT=0' so that the menu is not displayed at all unless
1421      <ESC> is pressed.
1423      This option is unset by default, and is deprecated in favour of the
1424      less confusing 'GRUB_TIMEOUT_STYLE=countdown' or
1425      'GRUB_TIMEOUT_STYLE=hidden'.
1427 'GRUB_HIDDEN_TIMEOUT_QUIET'
1428      In conjunction with 'GRUB_HIDDEN_TIMEOUT', set this to 'true' to
1429      suppress the verbose countdown while waiting for a key to be
1430      pressed before displaying the menu.
1432      This option is unset by default, and is deprecated in favour of the
1433      less confusing 'GRUB_TIMEOUT_STYLE=countdown'.
1435 'GRUB_HIDDEN_TIMEOUT_BUTTON'
1436      Variant of 'GRUB_HIDDEN_TIMEOUT', used to support vendor-specific
1437      power buttons.  *Note Vendor power-on keys::.
1439      This option is unset by default, and is deprecated in favour of the
1440      less confusing 'GRUB_TIMEOUT_STYLE=countdown' or
1441      'GRUB_TIMEOUT_STYLE=hidden'.
1443    For more detailed customisation of 'grub-mkconfig''s output, you may
1444 edit the scripts in '/etc/grub.d' directly.  '/etc/grub.d/40_custom' is
1445 particularly useful for adding entire custom menu entries; simply type
1446 the menu entries you want to add at the end of that file, making sure to
1447 leave at least the first two lines intact.
1449 \x1f
1450 File: grub.info,  Node: Shell-like scripting,  Next: Multi-boot manual config,  Prev: Simple configuration,  Up: Configuration
1452 6.2 Writing full configuration files directly
1453 =============================================
1455 'grub.cfg' is written in GRUB's built-in scripting language, which has a
1456 syntax quite similar to that of GNU Bash and other Bourne shell
1457 derivatives.
1459 Words
1460 =====
1462 A "word" is a sequence of characters considered as a single unit by
1463 GRUB. Words are separated by "metacharacters", which are the following
1464 plus space, tab, and newline:
1466      { } | & $ ; < >
1468    Quoting may be used to include metacharacters in words; see below.
1470 Reserved words
1471 ==============
1473 Reserved words have a special meaning to GRUB. The following words are
1474 recognised as reserved when unquoted and either the first word of a
1475 simple command or the third word of a 'for' command:
1477      ! [[ ]] { }
1478      case do done elif else esac fi for function
1479      if in menuentry select then time until while
1481    Not all of these reserved words have a useful purpose yet; some are
1482 reserved for future expansion.
1484 Quoting
1485 =======
1487 Quoting is used to remove the special meaning of certain characters or
1488 words.  It can be used to treat metacharacters as part of a word, to
1489 prevent reserved words from being recognised as such, and to prevent
1490 variable expansion.
1492    There are three quoting mechanisms: the escape character, single
1493 quotes, and double quotes.
1495    A non-quoted backslash (\) is the "escape character".  It preserves
1496 the literal value of the next character that follows, with the exception
1497 of newline.
1499    Enclosing characters in single quotes preserves the literal value of
1500 each character within the quotes.  A single quote may not occur between
1501 single quotes, even when preceded by a backslash.
1503    Enclosing characters in double quotes preserves the literal value of
1504 all characters within the quotes, with the exception of '$' and '\'.
1505 The '$' character retains its special meaning within double quotes.  The
1506 backslash retains its special meaning only when followed by one of the
1507 following characters: '$', '"', '\', or newline.  A backslash-newline
1508 pair is treated as a line continuation (that is, it is removed from the
1509 input stream and effectively ignored(1) (*note Shell-like
1510 scripting-Footnote-1::)).  A double quote may be quoted within double
1511 quotes by preceding it with a backslash.
1513 Variable expansion
1514 ==================
1516 The '$' character introduces variable expansion.  The variable name to
1517 be expanded may be enclosed in braces, which are optional but serve to
1518 protect the variable to be expanded from characters immediately
1519 following it which could be interpreted as part of the name.
1521    Normal variable names begin with an alphabetic character, followed by
1522 zero or more alphanumeric characters.  These names refer to entries in
1523 the GRUB environment (*note Environment::).
1525    Positional variable names consist of one or more digits.  They
1526 represent parameters passed to function calls, with '$1' representing
1527 the first parameter, and so on.
1529    The special variable name '?' expands to the exit status of the most
1530 recently executed command.  When positional variable names are active,
1531 other special variable names '@', '*' and '#' are defined and they
1532 expand to all positional parameters with necessary quoting, positional
1533 parameters without any quoting, and positional parameter count
1534 respectively.
1536 Comments
1537 ========
1539 A word beginning with '#' causes that word and all remaining characters
1540 on that line to be ignored.
1542 Simple commands
1543 ===============
1545 A "simple command" is a sequence of words separated by spaces or tabs
1546 and terminated by a semicolon or a newline.  The first word specifies
1547 the command to be executed.  The remaining words are passed as arguments
1548 to the invoked command.
1550    The return value of a simple command is its exit status.  If the
1551 reserved word '!' precedes the command, then the return value is instead
1552 the logical negation of the command's exit status.
1554 Compound commands
1555 =================
1557 A "compound command" is one of the following:
1559 for NAME in WORD ...; do LIST; done
1560      The list of words following 'in' is expanded, generating a list of
1561      items.  The variable NAME is set to each element of this list in
1562      turn, and LIST is executed each time.  The return value is the exit
1563      status of the last command that executes.  If the expansion of the
1564      items following 'in' results in an empty list, no commands are
1565      executed, and the return status is 0.
1567 if LIST; then LIST; [elif LIST; then LIST;] ... [else LIST;] fi
1568      The 'if' LIST is executed.  If its exit status is zero, the 'then'
1569      LIST is executed.  Otherwise, each 'elif' LIST is executed in turn,
1570      and if its exit status is zero, the corresponding 'then' LIST is
1571      executed and the command completes.  Otherwise, the 'else' LIST is
1572      executed, if present.  The exit status is the exit status of the
1573      last command executed, or zero if no condition tested true.
1575 while COND; do LIST; done
1576 until COND; do LIST; done
1577      The 'while' command continuously executes the 'do' LIST as long as
1578      the last command in COND returns an exit status of zero.  The
1579      'until' command is identical to the 'while' command, except that
1580      the test is negated; the 'do' LIST is executed as long as the last
1581      command in COND returns a non-zero exit status.  The exit status of
1582      the 'while' and 'until' commands is the exit status of the last
1583      'do' LIST command executed, or zero if none was executed.
1585 function NAME { COMMAND; ... }
1586      This defines a function named NAME.  The "body" of the function is
1587      the list of commands within braces, each of which must be
1588      terminated with a semicolon or a newline.  This list of commands
1589      will be executed whenever NAME is specified as the name of a simple
1590      command.  Function definitions do not affect the exit status in
1591      '$?'.  When executed, the exit status of a function is the exit
1592      status of the last command executed in the body.
1594 menuentry TITLE ['--class=class' ...] ['--users=users'] ['--unrestricted'] ['--hotkey=key'] ['--id=id'] { COMMAND; ... }
1595      *Note menuentry::.
1597 Built-in Commands
1598 =================
1600 Some built-in commands are also provided by GRUB script to help script
1601 writers perform actions that are otherwise not possible.  For example,
1602 these include commands to jump out of a loop without fully completing
1603 it, etc.
1605 break ['n']
1606      Exit from within a 'for', 'while', or 'until' loop.  If 'n' is
1607      specified, break 'n' levels.  'n' must be greater than or equal to
1608      1.  If 'n' is greater than the number of enclosing loops, all
1609      enclosing loops are exited.  The return value is 0 unless 'n' is
1610      not greater than or equal to 1.
1612 continue ['n']
1613      Resume the next iteration of the enclosing 'for', 'while' or
1614      'until' loop.  If 'n' is specified, resume at the 'n'th enclosing
1615      loop.  'n' must be greater than or equal to 1.  If 'n' is greater
1616      than the number of enclosing loops, the last enclosing loop (the
1617      "top-level" loop) is resumed.  The return value is 0 unless 'n' is
1618      not greater than or equal to 1.
1620 return ['n']
1621      Causes a function to exit with the return value specified by 'n'.
1622      If 'n' is omitted, the return status is that of the last command
1623      executed in the function body.  If used outside a function the
1624      return status is false.
1626 setparams ['arg'] ...
1627      Replace positional parameters starting with '$1' with arguments to
1628      'setparams'.
1630 shift ['n']
1631      The positional parameters from 'n'+1 ... are renamed to '$1'....
1632      Parameters represented by the numbers '$#' down to '$#'-'n'+1 are
1633      unset.  'n' must be a non-negative number less than or equal to
1634      '$#'.  If 'n' is 0, no parameters are changed.  If 'n' is not
1635      given, it is assumed to be 1.  If 'n' is greater than '$#', the
1636      positional parameters are not changed.  The return status is
1637      greater than zero if 'n' is greater than '$#' or less than zero;
1638      otherwise 0.
1640 \x1f
1641 File: grub.info,  Node: Shell-like scripting-Footnotes,  Up: Shell-like scripting
1643    (1) Currently a backslash-newline pair within a variable name is not
1644 handled properly, so use this feature with some care.
1646 \x1f
1647 File: grub.info,  Node: Multi-boot manual config,  Next: Embedded configuration,  Prev: Shell-like scripting,  Up: Configuration
1649 6.3 Multi-boot manual config
1650 ============================
1652 Currently autogenerating config files for multi-boot environments
1653 depends on os-prober and has several shortcomings.  While fixing it is
1654 scheduled for the next release, meanwhile you can make use of the power
1655 of GRUB syntax and do it yourself.  A possible configuration is detailed
1656 here, feel free to adjust to your needs.
1658    First create a separate GRUB partition, big enough to hold GRUB. Some
1659 of the following entries show how to load OS installer images from this
1660 same partition, for that you obviously need to make the partition large
1661 enough to hold those images as well.  Mount this partition on/mnt/boot
1662 and disable GRUB in all OSes and manually install self-compiled latest
1663 GRUB with:
1665    'grub-install --boot-directory=/mnt/boot /dev/sda'
1667    In all the OSes install GRUB tools but disable installing GRUB in
1668 bootsector, so you'll have menu.lst and grub.cfg available for use.
1669 Also disable os-prober use by setting:
1671    'GRUB_DISABLE_OS_PROBER=true'
1673    in /etc/default/grub
1675    Then write a grub.cfg (/mnt/boot/grub/grub.cfg):
1678      menuentry "OS using grub2" {
1679         insmod xfs
1680         search --set=root --label OS1 --hint hd0,msdos8
1681         configfile /boot/grub/grub.cfg
1682      }
1684      menuentry "OS using grub2-legacy" {
1685         insmod ext2
1686         search --set=root --label OS2 --hint hd0,msdos6
1687         legacy_configfile /boot/grub/menu.lst
1688      }
1690      menuentry "Windows XP" {
1691         insmod ntfs
1692         search --set=root --label WINDOWS_XP --hint hd0,msdos1
1693         ntldr /ntldr
1694      }
1696      menuentry "Windows 7" {
1697         insmod ntfs
1698         search --set=root --label WINDOWS_7 --hint hd0,msdos2
1699         ntldr /bootmgr
1700      }
1702      menuentry "FreeBSD" {
1703                insmod zfs
1704                search --set=root --label freepool --hint hd0,msdos7
1705                kfreebsd /freebsd@/boot/kernel/kernel
1706                kfreebsd_module_elf /freebsd@/boot/kernel/opensolaris.ko
1707                kfreebsd_module_elf /freebsd@/boot/kernel/zfs.ko
1708                kfreebsd_module /freebsd@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
1709                set kFreeBSD.vfs.root.mountfrom=zfs:freepool/freebsd
1710                set kFreeBSD.hw.psm.synaptics_support=1
1711      }
1713      menuentry "experimental GRUB" {
1714                search --set=root --label GRUB --hint hd0,msdos5
1715                multiboot /experimental/grub/i386-pc/core.img
1716      }
1718      menuentry "Fedora 16 installer" {
1719                search --set=root --label GRUB --hint hd0,msdos5
1720                linux /fedora/vmlinuz lang=en_US keymap=sg resolution=1280x800
1721                initrd /fedora/initrd.img
1722      }
1724      menuentry "Fedora rawhide installer" {
1725                search --set=root --label GRUB --hint hd0,msdos5
1726                linux /fedora/vmlinuz repo=ftp://mirror.switch.ch/mirror/fedora/linux/development/rawhide/x86_64 lang=en_US keymap=sg resolution=1280x800
1727                initrd /fedora/initrd.img
1728      }
1730      menuentry "Debian sid installer" {
1731                search --set=root --label GRUB --hint hd0,msdos5
1732                linux /debian/dists/sid/main/installer-amd64/current/images/hd-media/vmlinuz
1733                initrd /debian/dists/sid/main/installer-amd64/current/images/hd-media/initrd.gz
1734      }
1736    Notes:
1737    * Argument to search after -label is FS LABEL. You can also use UUIDs
1738      with -fs-uuid UUID instead of -label LABEL. You could also use
1739      direct 'root=hd0,msdosX' but this is not recommended due to device
1740      name instability.
1742 \x1f
1743 File: grub.info,  Node: Embedded configuration,  Prev: Multi-boot manual config,  Up: Configuration
1745 6.4 Embedding a configuration file into GRUB
1746 ============================================
1748 GRUB supports embedding a configuration file directly into the core
1749 image, so that it is loaded before entering normal mode.  This is
1750 useful, for example, when it is not straightforward to find the real
1751 configuration file, or when you need to debug problems with loading that
1752 file.  'grub-install' uses this feature when it is not using BIOS disk
1753 functions or when installing to a different disk from the one containing
1754 '/boot/grub', in which case it needs to use the 'search' command (*note
1755 search::) to find '/boot/grub'.
1757    To embed a configuration file, use the '-c' option to 'grub-mkimage'.
1758 The file is copied into the core image, so it may reside anywhere on the
1759 file system, and may be removed after running 'grub-mkimage'.
1761    After the embedded configuration file (if any) is executed, GRUB will
1762 load the 'normal' module (*note normal::), which will then read the real
1763 configuration file from '$prefix/grub.cfg'.  By this point, the 'root'
1764 variable will also have been set to the root device name.  For example,
1765 'prefix' might be set to '(hd0,1)/boot/grub', and 'root' might be set to
1766 'hd0,1'.  Thus, in most cases, the embedded configuration file only
1767 needs to set the 'prefix' and 'root' variables, and then drop through to
1768 GRUB's normal processing.  A typical example of this might look like
1769 this:
1771      search.fs_uuid 01234567-89ab-cdef-0123-456789abcdef root
1772      set prefix=($root)/boot/grub
1774    (The 'search_fs_uuid' module must be included in the core image for
1775 this example to work.)
1777    In more complex cases, it may be useful to read other configuration
1778 files directly from the embedded configuration file.  This allows such
1779 things as reading files not called 'grub.cfg', or reading files from a
1780 directory other than that where GRUB's loadable modules are installed.
1781 To do this, include the 'configfile' and 'normal' modules in the core
1782 image, and embed a configuration file that uses the 'configfile' command
1783 to load another file.  The following example of this also requires the
1784 'echo', 'search_label', and 'test' modules to be included in the core
1785 image:
1787      search.fs_label grub root
1788      if [ -e /boot/grub/example/test1.cfg ]; then
1789          set prefix=($root)/boot/grub
1790          configfile /boot/grub/example/test1.cfg
1791      else
1792          if [ -e /boot/grub/example/test2.cfg ]; then
1793              set prefix=($root)/boot/grub
1794              configfile /boot/grub/example/test2.cfg
1795          else
1796              echo "Could not find an example configuration file!"
1797          fi
1798      fi
1800    The embedded configuration file may not contain menu entries
1801 directly, but may only read them from elsewhere using 'configfile'.
1803 \x1f
1804 File: grub.info,  Node: Theme file format,  Next: Network,  Prev: Configuration,  Up: Top
1806 7 Theme file format
1807 *******************
1809 7.1 Introduction
1810 ================
1812 The GRUB graphical menu supports themes that can customize the layout
1813 and appearance of the GRUB boot menu.  The theme is configured through a
1814 plain text file that specifies the layout of the various GUI components
1815 (including the boot menu, timeout progress bar, and text messages) as
1816 well as the appearance using colors, fonts, and images.  Example is
1817 available in docs/example_theme.txt
1819 7.2 Theme Elements
1820 ==================
1822 7.2.1 Colors
1823 ------------
1825 Colors can be specified in several ways:
1827    * HTML-style "#RRGGBB" or "#RGB" format, where *R*, *G*, and *B* are
1828      hexadecimal digits (e.g., "#8899FF")
1829    * as comma-separated decimal RGB values (e.g., "128, 128, 255")
1830    * with "SVG 1.0 color names" (e.g., "cornflowerblue") which must be
1831      specified in lowercase.
1833 7.2.2 Fonts
1834 -----------
1836 The fonts GRUB uses "PFF2 font format" bitmap fonts.  Fonts are
1837 specified with full font names.  Currently there is no provision for a
1838 preference list of fonts, or deriving one font from another.  Fonts are
1839 loaded with the "loadfont" command in GRUB (*note loadfont::).  To see
1840 the list of loaded fonts, execute the "lsfonts" command (*note
1841 lsfonts::).  If there are too many fonts to fit on screen, do "set
1842 pager=1" before executing "lsfonts".
1844 7.2.3 Progress Bar
1845 ------------------
1847 Figure 7.1
1849 Figure 7.2
1851 Progress bars are used to display the remaining time before GRUB boots
1852 the default menu entry.  To create a progress bar that will display the
1853 remaining time before automatic boot, simply create a "progress_bar"
1854 component with the id "__timeout__".  This indicates to GRUB that the
1855 progress bar should be updated as time passes, and it should be made
1856 invisible if the countdown to automatic boot is interrupted by the user.
1858    Progress bars may optionally have text displayed on them.  This text
1859 is controlled by variable "text" which contains a printf template with
1860 the only argument %d is the number of seconds remaining.  Additionally
1861 special values "@TIMEOUT_NOTIFICATION_SHORT@",
1862 "@TIMEOUT_NOTIFICATION_MIDDLE@", "@TIMEOUT_NOTIFICATION_LONG@" are
1863 replaced with standard and translated templates.
1865 7.2.4 Circular Progress Indicator
1866 ---------------------------------
1868 The circular progress indicator functions similarly to the progress bar.
1869 When given an id of "__timeout__", GRUB updates the circular progress
1870 indicator's value to indicate the time remaining.  For the circular
1871 progress indicator, there are two images used to render it: the *center*
1872 image, and the *tick* image.  The center image is rendered in the center
1873 of the component, while the tick image is used to render each mark along
1874 the circumference of the indicator.
1876 7.2.5 Labels
1877 ------------
1879 Text labels can be placed on the boot screen.  The font, color, and
1880 horizontal alignment can be specified for labels.  If a label is given
1881 the id "__timeout__", then the "text" property for that label is also
1882 updated with a message informing the user of the number of seconds
1883 remaining until automatic boot.  This is useful in case you want the
1884 text displayed somewhere else instead of directly on the progress bar.
1886 7.2.6 Boot Menu
1887 ---------------
1889 The boot menu where GRUB displays the menu entries from the "grub.cfg"
1890 file.  It is a list of items, where each item has a title and an
1891 optional icon.  The icon is selected based on the *classes* specified
1892 for the menu entry.  If there is a PNG file named "myclass.png" in the
1893 "grub/themes/icons" directory, it will be displayed for items which have
1894 the class *myclass*.  The boot menu can be customized in several ways,
1895 such as the font and color used for the menu entry title, and by
1896 specifying styled boxes for the menu itself and for the selected item
1897 highlight.
1899 7.2.7 Styled Boxes
1900 ------------------
1902 One of the most important features for customizing the layout is the use
1903 of *styled boxes*.  A styled box is composed of 9 rectangular (and
1904 potentially empty) regions, which are used to seamlessly draw the styled
1905 box on screen:
1907 Northwest (nw)         North (n)              Northeast (ne)
1908 West (w)               Center (c)             East (e)
1909 Southwest (sw)         South (s)              Southeast (se)
1911    To support any size of box on screen, the center slice and the slices
1912 for the top, bottom, and sides are all scaled to the correct size for
1913 the component on screen, using the following rules:
1915   1. The edge slices (north, south, east, and west) are scaled in the
1916      direction of the edge they are adjacent to.  For instance, the west
1917      slice is scaled vertically.
1918   2. The corner slices (northwest, northeast, southeast, and southwest)
1919      are not scaled.
1920   3. The center slice is scaled to fill the remaining space in the
1921      middle.
1923    As an example of how an image might be sliced up, consider the styled
1924 box used for a terminal view.
1926 Figure 7.3
1928 7.2.8 Creating Styled Box Images
1929 --------------------------------
1931 The Inkscape_ scalable vector graphics editor is a very useful tool for
1932 creating styled box images.  One process that works well for slicing a
1933 drawing into the necessary image slices is:
1935   1. Create or open the drawing you'd like use.
1936   2. Create a new layer on the top of the layer stack.  Make it visible.
1937      Select this layer as the current layer.
1938   3. Draw 9 rectangles on your drawing where you'd like the slices to
1939      be.  Clear the fill option, and set the stroke to 1 pixel wide
1940      solid stroke.  The corners of the slices must meet precisely; if it
1941      is off by a single pixel, it will probably be evident when the
1942      styled box is rendered in the GRUB menu.  You should probably go to
1943      File | Document Properties | Grids and enable a grid or create a
1944      guide (click on one of the rulers next to the drawing and drag over
1945      the drawing; release the mouse button to place the guide) to help
1946      place the rectangles precisely.
1947   4. Right click on the center slice rectangle and choose Object
1948      Properties.  Change the "Id" to "slice_c" and click Set.  Repeat
1949      this for the remaining 8 rectangles, giving them Id values of
1950      "slice_n", "slice_ne", "slice_e", and so on according to the
1951      location.
1952   5. Save the drawing.
1953   6. Select all the slice rectangles.  With the slice layer selected,
1954      you can simply press Ctrl+A to select all rectangles.  The status
1955      bar should indicate that 9 rectangles are selected.
1956   7. Click the layer hide icon for the slice layer in the layer palette.
1957      The rectangles will remain selected, even though they are hidden.
1958   8. Choose File | Export Bitmap and check the *Batch export 9 selected
1959      objects* box.  Make sure that *Hide all except selected* is
1960      unchecked.  click *Export*.  This will create PNG files in the same
1961      directory as the drawing, named after the slices.  These can now be
1962      used for a styled box in a GRUB theme.
1964 7.3 Theme File Manual
1965 =====================
1967 The theme file is a plain text file.  Lines that begin with "#" are
1968 ignored and considered comments.  (Note: This may not be the case if the
1969 previous line ended where a value was expected.)
1971    The theme file contains two types of statements:
1972   1. Global properties.
1973   2. Component construction.
1975 7.3.1 Global Properties
1976 -----------------------
1978 7.3.2 Format
1979 ------------
1981 Global properties are specified with the simple format:
1982    * name1: value1
1983    * name2: "value which may contain spaces"
1984    * name3: #88F
1986    In this example, name3 is assigned a color value.
1988 7.3.3 Global Property List
1989 --------------------------
1991 title-text             Specifies the text to display at the top
1992                        center of the screen as a title.
1993 title-font             Defines the font used for the title
1994                        message at the top of the screen.
1995 title-color            Defines the color of the title message.
1996 message-font           Currently unused.  Left for backward
1997                        compatibility.
1998 message-color          Currently unused.  Left for backward
1999                        compatibility.
2000 message-bg-color       Currently unused.  Left for backward
2001                        compatibility.
2002 desktop-image          Specifies the image to use as the
2003                        background.  It will be scaled to fit the
2004                        screen size or proportionally scaled
2005                        depending on the scale method.
2006 desktop-image-scale-methodSpecifies the scaling method for the
2007                        *desktop-image*.  Options are "stretch",
2008                        "crop", "padding", "fitwidth",
2009                        "fitheight".  "stretch" for fitting the
2010                        screen size.  Otherwise it is
2011                        proportional scaling of a part of
2012                        *desktop-image* to the part of the
2013                        screen.  "crop" part of the
2014                        *desktop-image* will be proportionally
2015                        scaled to fit the screen sizes.
2016                        "padding" the entire *desktop-image* will
2017                        be contained on the screen.  "fitwidth"
2018                        for fitting the *desktop-image*'s width
2019                        with screen width.  "fitheight" for
2020                        fitting the *desktop-image*'s height with
2021                        the screen height.  Default is "stretch".
2022 desktop-image-h-align  Specifies the horizontal alignment of the
2023                        *desktop-image* if
2024                        *desktop-image-scale-method* isn't equeal
2025                        to "stretch".  Options are "left",
2026                        "center", "right".  Default is "center".
2027 desktop-image-v-align  Specifies the vertical alignment of the
2028                        *desktop-image* if
2029                        *desktop-image-scale-method* isn't equeal
2030                        to "stretch".  Options are "top",
2031                        "center", "bottom".  Default is "center".
2032 desktop-color          Specifies the color for the background if
2033                        *desktop-image* is not specified.
2034 terminal-box           Specifies the file name pattern for the
2035                        styled box slices used for the command
2036                        line terminal window.  For example,
2037                        "terminal-box: terminal_*.png" will use
2038                        the images "terminal_c.png" as the center
2039                        area, "terminal_n.png" as the north (top)
2040                        edge, "terminal_nw.png" as the northwest
2041                        (upper left) corner, and so on.  If the
2042                        image for any slice is not found, it will
2043                        simply be left empty.
2044 terminal-border        Specifies the border width of the
2045                        terminal window.
2046 terminal-left          Specifies the left coordinate of the
2047                        terminal window.
2048 terminal-top           Specifies the top coordinate of the
2049                        terminal window.
2050 terminal-width         Specifies the width of the terminal
2051                        window.
2052 terminal-height        Specifies the height of the terminal
2053                        window.
2055 7.3.4 Component Construction
2056 ----------------------------
2058 Greater customizability comes is provided by components.  A tree of
2059 components forms the user interface.  *Containers* are components that
2060 can contain other components, and there is always a single root
2061 component which is an instance of a *canvas* container.
2063    Components are created in the theme file by prefixing the type of
2064 component with a '+' sign:
2066    ' + label { text="GRUB" font="aqui 11" color="#8FF" } '
2068    properties of a component are specified as "name = value" (whitespace
2069 surrounding tokens is optional and is ignored) where *value* may be:
2070    * a single word (e.g., "align = center", "color = #FF8080"),
2071    * a quoted string (e.g., "text = "Hello, World!""), or
2072    * a tuple (e.g., "preferred_size = (120, 80)").
2074 7.3.5 Component List
2075 --------------------
2077 The following is a list of the components and the properties they
2078 support.
2080    * label A label displays a line of text.
2082      Properties:
2083      id             Set to "__timeout__" to display the time elapsed
2084                     to an automatical boot of the default entry.
2085      text           The text to display.  If "id" is set to
2086                     "__timeout__" and no "text" property is set then
2087                     the amount of seconds will be shown.  If set to
2088                     "@KEYMAP_SHORT@", "@KEYMAP_MIDDLE@" or
2089                     "@KEYMAP_LONG@" then predefined hotkey
2090                     information will be shown.
2091      font           The font to use for text display.
2092      color          The color of the text.
2093      align          The horizontal alignment of the text within the
2094                     component.  Options are "left", "center" and
2095                     "right".
2096      visible        Set to "false" to hide the label.
2098    * image A component that displays an image.  The image is scaled to
2099      fit the component.
2101      Properties:
2103      file           The full path to the image file to load.
2105    * progress_bar Displays a horizontally oriented progress bar.  It can
2106      be rendered using simple solid filled rectangles, or using a pair
2107      of pixmap styled boxes.
2109      Properties:
2111      id             Set to "__timeout__" to display the time elapsed
2112                     to an automatical boot of the default entry.
2113      fg_color       The foreground color for plain solid color
2114                     rendering.
2115      bg_color       The background color for plain solid color
2116                     rendering.
2117      border_color   The border color for plain solid color
2118                     rendering.
2119      text_color     The text color.
2120      bar_style      The styled box specification for the frame of
2121                     the progress bar.  Example:
2122                     "progress_frame_*.png" If the value is equal to
2123                     "highlight_style" then no styled boxes will be
2124                     shown.
2125      highlight_styleThe styled box specification for the highlighted
2126                     region of the progress bar.  This box will be
2127                     used to paint just the highlighted region of the
2128                     bar, and will be increased in size as the bar
2129                     nears completion.  Example: "progress_hl_*.png".
2130                     If the value is equal to "bar_style" then no
2131                     styled boxes will be shown.
2132      highlight_overlayIf this option is set to "true" then the
2133                     highlight box side slices (every slice except
2134                     the center slice) will overlay the frame box
2135                     side slices.  And the center slice of the
2136                     highlight box can move all the way (from top to
2137                     bottom), being drawn on the center slice of the
2138                     frame box.  That way we can make a progress bar
2139                     with round-shaped edges so there won't be a free
2140                     space from the highlight to the frame in top and
2141                     bottom scrollbar positions.  Default is "false".
2142      font           The font to use for progress bar.
2143      text           The text to display on the progress bar.  If the
2144                     progress bar's ID is set to "__timeout__" and
2145                     the value of this property is set to
2146                     "@TIMEOUT_NOTIFICATION_SHORT@",
2147                     "@TIMEOUT_NOTIFICATION_MIDDLE@" or
2148                     "@TIMEOUT_NOTIFICATION_LONG@", then GRUB will
2149                     update this property with an informative message
2150                     as the timeout approaches.
2152    * circular_progress Displays a circular progress indicator.  The
2153      appearance of this component is determined by two images: the
2154      *center* image and the *tick* image.  The center image is generally
2155      larger and will be drawn in the center of the component.  Around
2156      the circumference of a circle within the component, the tick image
2157      will be drawn a certain number of times, depending on the
2158      properties of the component.
2160      Properties:
2162      id                     Set to "__timeout__" to display the time
2163                             elapsed to an automatical boot of the
2164                             default entry.
2165      center_bitmap          The file name of the image to draw in the
2166                             center of the component.
2167      tick_bitmap            The file name of the image to draw for
2168                             the tick marks.
2169      num_ticks              The number of ticks that make up a full
2170                             circle.
2171      ticks_disappear        Boolean value indicating whether tick
2172                             marks should progressively appear, or
2173                             progressively disappear as *value*
2174                             approaches *end*.  Specify "true" or
2175                             "false".  Default is "false".
2176      start_angle            The position of the first tick mark to
2177                             appear or disappear.  Measured in
2178                             "parrots", 1 "parrot" = 1 / 256 of the
2179                             full circle.  Use values "xxx deg" or
2180                             "xxx \xc2\xb0" to set the angle in
2181                             degrees.
2183    * boot_menu Displays the GRUB boot menu.  It allows selecting items
2184      and executing them.
2186      Properties:
2188      item_font                     The font to use for the menu item
2189                                    titles.
2190      selected_item_font            The font to use for the selected
2191                                    menu item, or "inherit" (the
2192                                    default) to use "item_font" for
2193                                    the selected menu item as well.
2194      item_color                    The color to use for the menu item
2195                                    titles.
2196      selected_item_color           The color to use for the selected
2197                                    menu item, or "inherit" (the
2198                                    default) to use "item_color" for
2199                                    the selected menu item as well.
2200      icon_width                    The width of menu item icons.
2201                                    Icons are scaled to the specified
2202                                    size.
2203      icon_height                   The height of menu item icons.
2204      item_height                   The height of each menu item in
2205                                    pixels.
2206      item_padding                  The amount of space in pixels to
2207                                    leave on each side of the menu
2208                                    item contents.
2209      item_icon_space               The space between an item's icon
2210                                    and the title text, in pixels.
2211      item_spacing                  The amount of space to leave
2212                                    between menu items, in pixels.
2213      menu_pixmap_style             The image file pattern for the
2214                                    menu frame styled box.  Example:
2215                                    "menu_*.png" (this will use images
2216                                    such as "menu_c.png",
2217                                    "menu_w.png", 'menu_nw.png", etc.)
2218      item_pixmap_style             The image file pattern for the
2219                                    item styled box.
2220      selected_item_pixmap_style    The image file pattern for the
2221                                    selected item highlight styled
2222                                    box.
2223      scrollbar                     Boolean value indicating whether
2224                                    the scroll bar should be drawn if
2225                                    the frame and thumb styled boxes
2226                                    are configured.
2227      scrollbar_frame               The image file pattern for the
2228                                    entire scroll bar.  Example:
2229                                    "scrollbar_*.png"
2230      scrollbar_thumb               The image file pattern for the
2231                                    scroll bar thumb (the part of the
2232                                    scroll bar that moves as scrolling
2233                                    occurs).  Example:
2234                                    "scrollbar_thumb_*.png"
2235      scrollbar_thumb_overlay       If this option is set to "true"
2236                                    then the scrollbar thumb side
2237                                    slices (every slice except the
2238                                    center slice) will overlay the
2239                                    scrollbar frame side slices.  And
2240                                    the center slice of the
2241                                    scrollbar_thumb can move all the
2242                                    way (from top to bottom), being
2243                                    drawn on the center slice of the
2244                                    scrollbar frame.  That way we can
2245                                    make a scrollbar with round-shaped
2246                                    edges so there won't be a free
2247                                    space from the thumb to the frame
2248                                    in top and bottom scrollbar
2249                                    positions.  Default is "false".
2250      scrollbar_slice               The menu frame styled box's slice
2251                                    in which the scrollbar will be
2252                                    drawn.  Possible values are
2253                                    "west", "center", "east"
2254                                    (default).  "west" - the scrollbar
2255                                    will be drawn in the west slice
2256                                    (right-aligned).  "east" - the
2257                                    scrollbar will be drawn in the
2258                                    east slice (left-aligned).
2259                                    "center" - the scrollbar will be
2260                                    drawn in the center slice.  Note:
2261                                    in case of "center" slice: a) If
2262                                    the scrollbar should be drawn then
2263                                    boot menu entry's width is
2264                                    decreased by the scrollbar's width
2265                                    and the scrollbar is drawn at the
2266                                    right side of the center slice.
2267                                    b) If the scrollbar won't be drawn
2268                                    then the boot menu entry's width
2269                                    is the width of the center slice.
2270                                    c) We don't necessary need the
2271                                    menu pixmap box to display the
2272                                    scrollbar.
2273      scrollbar_left_pad            The left scrollbar padding in
2274                                    pixels.  Unused if
2275                                    "scrollbar_slice" is "west".
2276      scrollbar_right_pad           The right scrollbar padding in
2277                                    pixels.  Unused if
2278                                    "scrollbar_slice" is "east".
2279      scrollbar_top_pad             The top scrollbar padding in
2280                                    pixels.
2281      scrollbar_bottom_pad          The bottom scrollbar padding in
2282                                    pixels.
2283      visible                       Set to "false" to hide the boot
2284                                    menu.
2286    * canvas Canvas is a container that allows manual placement of
2287      components within it.  It does not alter the positions of its child
2288      components.  It assigns all child components their preferred sizes.
2290    * hbox The *hbox* container lays out its children from left to right,
2291      giving each one its preferred width.  The height of each child is
2292      set to the maximum of the preferred heights of all children.
2294    * vbox The *vbox* container lays out its children from top to bottom,
2295      giving each one its preferred height.  The width of each child is
2296      set to the maximum of the preferred widths of all children.
2298 7.3.6 Common properties
2299 -----------------------
2301 The following properties are supported by all components:
2302 'left'
2303      The distance from the left border of container to left border of
2304      the object in either of three formats:
2305      x              Value in pixels
2306      p%             Percentage
2307      p%+x           mixture of both
2308 'top'
2309      The distance from the left border of container to left border of
2310      the object in same format.
2311 'width'
2312      The width of object in same format.
2313 'height'
2314      The height of object in same format.
2315 'id'
2316      The identifier for the component.  This can be any arbitrary
2317      string.  The ID can be used by scripts to refer to various
2318      components in the GUI component tree.  Currently, there is one
2319      special ID value that GRUB recognizes:
2321      "__timeout__"  Component with this ID will be updated by GRUB
2322                     and will indicate time elapsed to an automatical
2323                     boot of the default entry.  Affected components:
2324                     "label", "circular_progress", "progress_bar".
2326 \x1f
2327 File: grub.info,  Node: Network,  Next: Serial terminal,  Prev: Theme file format,  Up: Top
2329 8 Booting GRUB from the network
2330 *******************************
2332 The following instructions don't work for *-emu, i386-qemu,
2333 i386-coreboot, i386-multiboot, mips_loongson, mips-arc and
2334 mips_qemu_mips
2336    To generate a netbootable directory, run:
2338      grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/<platform>
2340    E.g.  for i386-pc:
2342      grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/i386-pc
2344    Then follow instructions printed out by grub-mknetdir on configuring
2345 your DHCP server.
2347    After GRUB has started, files on the TFTP server will be accessible
2348 via the '(tftp)' device.
2350    The server IP address can be controlled by changing the '(tftp)'
2351 device name to '(tftp,SERVER-IP)'.  Note that this should be changed
2352 both in the prefix and in any references to the device name in the
2353 configuration file.
2355    GRUB provides several environment variables which may be used to
2356 inspect or change the behaviour of the PXE device.  In the following
2357 description <INTERFACE> is placeholder for the name of network interface
2358 (platform dependent):
2360 'net_<INTERFACE>_ip'
2361      The network interface's IP address.  Read-only.
2363 'net_<INTERFACE>_mac'
2364      The network interface's MAC address.  Read-only.
2366 'net_<INTERFACE>_hostname'
2367      The client host name provided by DHCP. Read-only.
2369 'net_<INTERFACE>_domain'
2370      The client domain name provided by DHCP. Read-only.
2372 'net_<INTERFACE>_rootpath'
2373      The path to the client's root disk provided by DHCP. Read-only.
2375 'net_<INTERFACE>_extensionspath'
2376      The path to additional DHCP vendor extensions provided by DHCP.
2377      Read-only.
2379 'net_<INTERFACE>_boot_file'
2380      The boot file name provided by DHCP. Read-only.
2382 'net_<INTERFACE>_dhcp_server_name'
2383      The name of the DHCP server responsible for these boot parameters.
2384      Read-only.
2386 'net_default_interface'
2387      Initially set to name of network interface that was used to load
2388      grub.  Read-write, although setting it affects only interpretation
2389      of 'net_default_ip' and 'net_default_mac'
2391 'net_default_ip'
2392      The IP address of default interface.  Read-only.  This is alias for
2393      the 'net_${net_default_interface}_ip'.
2395 'net_default_mac'
2396      The default interface's MAC address.  Read-only.  This is alias for
2397      the 'net_${net_default_interface}_mac'.
2399 'net_default_server'
2400      The default server used by network drives (*note Device syntax::).
2401      Read-write, although setting this is only useful before opening a
2402      network device.
2404 \x1f
2405 File: grub.info,  Node: Serial terminal,  Next: Vendor power-on keys,  Prev: Network,  Up: Top
2407 9 Using GRUB via a serial line
2408 ******************************
2410 This chapter describes how to use the serial terminal support in GRUB.
2412    If you have many computers or computers with no display/keyboard, it
2413 could be very useful to control the computers through serial
2414 communications.  To connect one computer with another via a serial line,
2415 you need to prepare a null-modem (cross) serial cable, and you may need
2416 to have multiport serial boards, if your computer doesn't have extra
2417 serial ports.  In addition, a terminal emulator is also required, such
2418 as minicom.  Refer to a manual of your operating system, for more
2419 information.
2421    As for GRUB, the instruction to set up a serial terminal is quite
2422 simple.  Here is an example:
2424      grub> serial --unit=0 --speed=9600
2425      grub> terminal_input serial; terminal_output serial
2427    The command 'serial' initializes the serial unit 0 with the speed
2428 9600bps.  The serial unit 0 is usually called 'COM1', so, if you want to
2429 use COM2, you must specify '--unit=1' instead.  This command accepts
2430 many other options, so please refer to *note serial::, for more details.
2432    The commands 'terminal_input' (*note terminal_input::) and
2433 'terminal_output' (*note terminal_output::) choose which type of
2434 terminal you want to use.  In the case above, the terminal will be a
2435 serial terminal, but you can also pass 'console' to the command, as
2436 'terminal_input serial console'.  In this case, a terminal in which you
2437 press any key will be selected as a GRUB terminal.  In the example
2438 above, note that you need to put both commands on the same command line,
2439 as you will lose the ability to type commands on the console after the
2440 first command.
2442    However, note that GRUB assumes that your terminal emulator is
2443 compatible with VT100 by default.  This is true for most terminal
2444 emulators nowadays, but you should pass the option '--dumb' to the
2445 command if your terminal emulator is not VT100-compatible or implements
2446 few VT100 escape sequences.  If you specify this option then GRUB
2447 provides you with an alternative menu interface, because the normal menu
2448 requires several fancy features of your terminal.
2450 \x1f
2451 File: grub.info,  Node: Vendor power-on keys,  Next: Images,  Prev: Serial terminal,  Up: Top
2453 10 Using GRUB with vendor power-on keys
2454 ***************************************
2456 Some laptop vendors provide an additional power-on button which boots
2457 another OS. GRUB supports such buttons with the 'GRUB_TIMEOUT_BUTTON',
2458 'GRUB_TIMEOUT_STYLE_BUTTON', 'GRUB_DEFAULT_BUTTON', and
2459 'GRUB_BUTTON_CMOS_ADDRESS' variables in default/grub (*note Simple
2460 configuration::).  'GRUB_TIMEOUT_BUTTON', 'GRUB_TIMEOUT_STYLE_BUTTON',
2461 and 'GRUB_DEFAULT_BUTTON' are used instead of the corresponding
2462 variables without the '_BUTTON' suffix when powered on using the special
2463 button.  'GRUB_BUTTON_CMOS_ADDRESS' is vendor-specific and partially
2464 model-specific.  Values known to the GRUB team are:
2466 <Dell XPS M1330M>
2467      121:3
2468 <Dell XPS M1530>
2469      85:3
2470 <Dell Latitude E4300>
2471      85:3
2472 <Asus EeePC 1005PE>
2473      84:1 (unconfirmed)
2475    To take full advantage of this function, install GRUB into the MBR
2476 (*note Installing GRUB using grub-install::).
2478    If you have a laptop which has a similar feature and not in the above
2479 list could you figure your address and contribute?  To discover the
2480 address do the following:
2481    * boot normally
2482    *      sudo modprobe nvram
2483           sudo cat /dev/nvram | xxd > normal_button.txt
2484    * boot using vendor button
2485    *      sudo modprobe nvram
2486           sudo cat /dev/nvram | xxd > normal_vendor.txt
2488    Then compare these text files and find where a bit was toggled.  E.g.
2489 in case of Dell XPS it was:
2490      byte 0x47: 20 --> 28
2491    It's a bit number 3 as seen from following table:
2492 0              01
2493 1              02
2494 2              04
2495 3              08
2496 4              10
2497 5              20
2498 6              40
2499 7              80
2501    0x47 is decimal 71.  Linux nvram implementation cuts first 14 bytes
2502 of CMOS. So the real byte address in CMOS is 71+14=85 So complete
2503 address is 85:3
2505 \x1f
2506 File: grub.info,  Node: Images,  Next: Core image size limitation,  Prev: Vendor power-on keys,  Up: Top
2508 11 GRUB image files
2509 *******************
2511 GRUB consists of several images: a variety of bootstrap images for
2512 starting GRUB in various ways, a kernel image, and a set of modules
2513 which are combined with the kernel image to form a core image.  Here is
2514 a short overview of them.
2516 'boot.img'
2517      On PC BIOS systems, this image is the first part of GRUB to start.
2518      It is written to a master boot record (MBR) or to the boot sector
2519      of a partition.  Because a PC boot sector is 512 bytes, the size of
2520      this image is exactly 512 bytes.
2522      The sole function of 'boot.img' is to read the first sector of the
2523      core image from a local disk and jump to it.  Because of the size
2524      restriction, 'boot.img' cannot understand any file system
2525      structure, so 'grub-install' hardcodes the location of the first
2526      sector of the core image into 'boot.img' when installing GRUB.
2528 'diskboot.img'
2529      This image is used as the first sector of the core image when
2530      booting from a hard disk.  It reads the rest of the core image into
2531      memory and starts the kernel.  Since file system handling is not
2532      yet available, it encodes the location of the core image using a
2533      block list format.
2535 'cdboot.img'
2536      This image is used as the first sector of the core image when
2537      booting from a CD-ROM drive.  It performs a similar function to
2538      'diskboot.img'.
2540 'pxeboot.img'
2541      This image is used as the start of the core image when booting from
2542      the network using PXE. *Note Network::.
2544 'lnxboot.img'
2545      This image may be placed at the start of the core image in order to
2546      make GRUB look enough like a Linux kernel that it can be booted by
2547      LILO using an 'image=' section.
2549 'kernel.img'
2550      This image contains GRUB's basic run-time facilities: frameworks
2551      for device and file handling, environment variables, the rescue
2552      mode command-line parser, and so on.  It is rarely used directly,
2553      but is built into all core images.
2555 'core.img'
2556      This is the core image of GRUB. It is built dynamically from the
2557      kernel image and an arbitrary list of modules by the 'grub-mkimage'
2558      program.  Usually, it contains enough modules to access
2559      '/boot/grub', and loads everything else (including menu handling,
2560      the ability to load target operating systems, and so on) from the
2561      file system at run-time.  The modular design allows the core image
2562      to be kept small, since the areas of disk where it must be
2563      installed are often as small as 32KB.
2565      *Note BIOS installation::, for details on where the core image can
2566      be installed on PC systems.
2568 '*.mod'
2569      Everything else in GRUB resides in dynamically loadable modules.
2570      These are often loaded automatically, or built into the core image
2571      if they are essential, but may also be loaded manually using the
2572      'insmod' command (*note insmod::).
2574 For GRUB Legacy users
2575 =====================
2577 GRUB 2 has a different design from GRUB Legacy, and so correspondences
2578 with the images it used cannot be exact.  Nevertheless, GRUB Legacy
2579 users often ask questions in the terms they are familiar with, and so
2580 here is a brief guide to how GRUB 2's images relate to that.
2582 'stage1'
2583      Stage 1 from GRUB Legacy was very similar to 'boot.img' in GRUB 2,
2584      and they serve the same function.
2586 '*_stage1_5'
2587      In GRUB Legacy, Stage 1.5's function was to include enough
2588      filesystem code to allow the much larger Stage 2 to be read from an
2589      ordinary filesystem.  In this respect, its function was similar to
2590      'core.img' in GRUB 2.  However, 'core.img' is much more capable
2591      than Stage 1.5 was; since it offers a rescue shell, it is sometimes
2592      possible to recover manually in the event that it is unable to load
2593      any other modules, for example if partition numbers have changed.
2594      'core.img' is built in a more flexible way, allowing GRUB 2 to
2595      support reading modules from advanced disk types such as LVM and
2596      RAID.
2598      GRUB Legacy could run with only Stage 1 and Stage 2 in some limited
2599      configurations, while GRUB 2 requires 'core.img' and cannot work
2600      without it.
2602 'stage2'
2603      GRUB 2 has no single Stage 2 image.  Instead, it loads modules from
2604      '/boot/grub' at run-time.
2606 'stage2_eltorito'
2607      In GRUB 2, images for booting from CD-ROM drives are now
2608      constructed using 'cdboot.img' and 'core.img', making sure that the
2609      core image contains the 'iso9660' module.  It is usually best to
2610      use the 'grub-mkrescue' program for this.
2612 'nbgrub'
2613      There is as yet no equivalent for 'nbgrub' in GRUB 2; it was used
2614      by Etherboot and some other network boot loaders.
2616 'pxegrub'
2617      In GRUB 2, images for PXE network booting are now constructed using
2618      'pxeboot.img' and 'core.img', making sure that the core image
2619      contains the 'pxe' and 'pxecmd' modules.  *Note Network::.
2621 \x1f
2622 File: grub.info,  Node: Core image size limitation,  Next: Filesystem,  Prev: Images,  Up: Top
2624 12 Core image size limitation
2625 *****************************
2627 Heavily limited platforms:
2628    * i386-pc (normal and PXE): the core image size (compressed) is
2629      limited by 458240 bytes.  kernel.img (.text + .data + .bss,
2630      uncompressed) is limited by 392704 bytes.  module size
2631      (uncompressed) + kernel.img (.text + .data, uncompressed) is
2632      limited by the size of contiguous chunk at 1M address.
2633    * sparc64-ieee1275: kernel.img (.text + .data + .bss) + modules +
2634      256K (stack) + 2M (heap) is limited by space available at 0x4400.
2635      On most platforms it's just 3 or 4M since ieee1275 maps only so
2636      much.
2637    * i386-ieee1275: kernel.img (.text + .data + .bss) + modules is
2638      limited by memory available at 0x10000, at most 596K
2640    Lightly limited platforms:
2642    * *-xen: limited only by adress space and RAM size.
2643    * i386-qemu: kernel.img (.text + .data + .bss) is limited by 392704
2644      bytes.  (core.img would be limited by ROM size but it's unlimited
2645      on qemu
2646    * All EFI platforms: limited by contiguous RAM size and possibly
2647      firmware bugs
2648    * Coreboot and multiboot.  kernel.img (.text + .data + .bss) is
2649      limited by 392704 bytes.  module size is limited by the size of
2650      contiguous chunk at 1M address.
2651    * mipsel-loongson (ELF), mips(el)-qemu_mips (ELF): if uncompressed:
2652      kernel.img (.text + .data) + modules is limited by the space from
2653      80200000 forward if compressed: kernel.img (.text + .data,
2654      uncompressed) + modules (uncompressed) + (modules + kernel.img
2655      (.text + .data)) (compressed) + decompressor is limited by the
2656      space from 80200000 forward
2657    * mipsel-loongson (Flash), mips(el)-qemu_mips (Flash): kernel.img
2658      (.text + .data) + modules is limited by the space from 80200000
2659      forward core.img (final) is limited by flash size (512K on yeeloong
2660      and fulooong)
2661    * mips-arc: if uncompressed: kernel.img (.text + .data) is limited by
2662      the space from 8bd00000 forward modules + dummy decompressor is
2663      limited by the space from 8bd00000 backward if compressed:
2664      kernel.img (.text + .data, uncompressed) is limited by the space
2665      from 8bd00000 forward modules (uncompressed) + (modules +
2666      kernel.img (.text + .data)) (compressed, aligned to 1M) + 1M
2667      (decompressor + scratch space) is limited by the space from
2668      8bd00000 backward
2669    * powerpc-ieee1275: kernel.img (.text + .data + .bss) + modules is
2670      limited by space available at 0x200000
2672 \x1f
2673 File: grub.info,  Node: Filesystem,  Next: Interface,  Prev: Core image size limitation,  Up: Top
2675 13 Filesystem syntax and semantics
2676 **********************************
2678 GRUB uses a special syntax for specifying disk drives which can be
2679 accessed by BIOS. Because of BIOS limitations, GRUB cannot distinguish
2680 between IDE, ESDI, SCSI, or others.  You must know yourself which BIOS
2681 device is equivalent to which OS device.  Normally, that will be clear
2682 if you see the files in a device or use the command 'search' (*note
2683 search::).
2685 * Menu:
2687 * Device syntax::               How to specify devices
2688 * File name syntax::            How to specify files
2689 * Block list syntax::           How to specify block lists
2691 \x1f
2692 File: grub.info,  Node: Device syntax,  Next: File name syntax,  Up: Filesystem
2694 13.1 How to specify devices
2695 ===========================
2697 The device syntax is like this:
2699      (DEVICE[,PARTMAP-NAME1PART-NUM1[,PARTMAP-NAME2PART-NUM2[,...]]])
2701    '[]' means the parameter is optional.  DEVICE depends on the disk
2702 driver in use.  BIOS and EFI disks use either 'fd' or 'hd' followed by a
2703 digit, like 'fd0', or 'cd'.  AHCI, PATA (ata), crypto, USB use the name
2704 of driver followed by a number.  Memdisk and host are limited to one
2705 disk and so it's refered just by driver name.  RAID (md), ofdisk
2706 (ieee1275 and nand), LVM (lvm), LDM, virtio (vdsk) and arcdisk (arc) use
2707 intrinsic name of disk prefixed by driver name.  Additionally just
2708 "nand" refers to the disk aliased as "nand".  Conflicts are solved by
2709 suffixing a number if necessarry.  Commas need to be escaped.  Loopback
2710 uses whatever name specified to 'loopback' command.  Hostdisk uses names
2711 specified in device.map as long as it's of the form [fhc]d[0-9]* or
2712 hostdisk/<OS DEVICE>.  For crypto and RAID (md) additionally you can use
2713 the syntax <driver name>uuid/<uuid>.  For LVM additionally you can use
2714 the syntax lvmid/<volume-group-uuid>/<volume-uuid>.
2716      (fd0)
2717      (hd0)
2718      (cd)
2719      (ahci0)
2720      (ata0)
2721      (crypto0)
2722      (usb0)
2723      (cryptouuid/123456789abcdef0123456789abcdef0)
2724      (mduuid/123456789abcdef0123456789abcdef0)
2725      (lvm/system-root)
2726      (lvmid/F1ikgD-2RES-306G-il9M-7iwa-4NKW-EbV1NV/eLGuCQ-L4Ka-XUgR-sjtJ-ffch-bajr-fCNfz5)
2727      (md/myraid)
2728      (md/0)
2729      (ieee1275/disk2)
2730      (ieee1275//pci@1f\,0/ide@d/disk@2)
2731      (nand)
2732      (memdisk)
2733      (host)
2734      (myloop)
2735      (hostdisk//dev/sda)
2737    PART-NUM represents the partition number of DEVICE, starting from
2738 one.  PARTNAME is optional but is recommended since disk may have
2739 several top-level partmaps.  Specifying third and later component you
2740 can access to subpartitions.
2742    The syntax '(hd0)' represents using the entire disk (or the MBR when
2743 installing GRUB), while the syntax '(hd0,1)' represents using the first
2744 partition of the disk (or the boot sector of the partition when
2745 installing GRUB).
2747      (hd0,msdos1)
2748      (hd0,msdos1,msdos5)
2749      (hd0,msdos1,bsd3)
2750      (hd0,netbsd1)
2751      (hd0,gpt1)
2752      (hd0,1,3)
2754    If you enabled the network support, the special drives
2755 '(PROTOCOL[,SERVER])' are also available.  Supported protocols are
2756 'http' and 'tftp'.  If SERVER is omitted, value of environment variable
2757 'net_default_server' is used.  Before using the network drive, you must
2758 initialize the network.  *Note Network::, for more information.
2760    If you boot GRUB from a CD-ROM, '(cd)' is available.  *Note Making a
2761 GRUB bootable CD-ROM::, for details.
2763 \x1f
2764 File: grub.info,  Node: File name syntax,  Next: Block list syntax,  Prev: Device syntax,  Up: Filesystem
2766 13.2 How to specify files
2767 =========================
2769 There are two ways to specify files, by "absolute file name" and by
2770 "block list".
2772    An absolute file name resembles a Unix absolute file name, using '/'
2773 for the directory separator (not '\' as in DOS). One example is
2774 '(hd0,1)/boot/grub/grub.cfg'.  This means the file '/boot/grub/grub.cfg'
2775 in the first partition of the first hard disk.  If you omit the device
2776 name in an absolute file name, GRUB uses GRUB's "root device"
2777 implicitly.  So if you set the root device to, say, '(hd1,1)' by the
2778 command 'set root=(hd1,1)' (*note set::), then '/boot/kernel' is the
2779 same as '(hd1,1)/boot/kernel'.
2781    On ZFS filesystem the first path component must be
2782 VOLUME'@'[SNAPSHOT].  So '/rootvol@snap-129/boot/grub/grub.cfg' refers
2783 to file '/boot/grub/grub.cfg' in snapshot of volume 'rootvol' with name
2784 'snap-129'.  Trailing '@' after volume name is mandatory even if
2785 snapshot name is omitted.
2787 \x1f
2788 File: grub.info,  Node: Block list syntax,  Prev: File name syntax,  Up: Filesystem
2790 13.3 How to specify block lists
2791 ===============================
2793 A block list is used for specifying a file that doesn't appear in the
2794 filesystem, like a chainloader.  The syntax is
2795 '[OFFSET]+LENGTH[,[OFFSET]+LENGTH]...'.  Here is an example:
2797      0+100,200+1,300+300
2799    This represents that GRUB should read blocks 0 through 99, block 200,
2800 and blocks 300 through 599.  If you omit an offset, then GRUB assumes
2801 the offset is zero.
2803    Like the file name syntax (*note File name syntax::), if a blocklist
2804 does not contain a device name, then GRUB uses GRUB's "root device".  So
2805 '(hd0,2)+1' is the same as '+1' when the root device is '(hd0,2)'.
2807 \x1f
2808 File: grub.info,  Node: Interface,  Next: Environment,  Prev: Filesystem,  Up: Top
2810 14 GRUB's user interface
2811 ************************
2813 GRUB has both a simple menu interface for choosing preset entries from a
2814 configuration file, and a highly flexible command-line for performing
2815 any desired combination of boot commands.
2817    GRUB looks for its configuration file as soon as it is loaded.  If
2818 one is found, then the full menu interface is activated using whatever
2819 entries were found in the file.  If you choose the "command-line" menu
2820 option, or if the configuration file was not found, then GRUB drops to
2821 the command-line interface.
2823 * Menu:
2825 * Command-line interface::      The flexible command-line interface
2826 * Menu interface::              The simple menu interface
2827 * Menu entry editor::           Editing a menu entry
2829 \x1f
2830 File: grub.info,  Node: Command-line interface,  Next: Menu interface,  Up: Interface
2832 14.1 The flexible command-line interface
2833 ========================================
2835 The command-line interface provides a prompt and after it an editable
2836 text area much like a command-line in Unix or DOS. Each command is
2837 immediately executed after it is entered(1) (*note Command-line
2838 interface-Footnote-1::).  The commands (*note Command-line and menu
2839 entry commands::) are a subset of those available in the configuration
2840 file, used with exactly the same syntax.
2842    Cursor movement and editing of the text on the line can be done via a
2843 subset of the functions available in the Bash shell:
2845 <C-f>
2846 <PC right key>
2847      Move forward one character.
2849 <C-b>
2850 <PC left key>
2851      Move back one character.
2853 <C-a>
2854 <HOME>
2855      Move to the start of the line.
2857 <C-e>
2858 <END>
2859      Move the the end of the line.
2861 <C-d>
2862 <DEL>
2863      Delete the character underneath the cursor.
2865 <C-h>
2866 <BS>
2867      Delete the character to the left of the cursor.
2869 <C-k>
2870      Kill the text from the current cursor position to the end of the
2871      line.
2873 <C-u>
2874      Kill backward from the cursor to the beginning of the line.
2876 <C-y>
2877      Yank the killed text back into the buffer at the cursor.
2879 <C-p>
2880 <PC up key>
2881      Move up through the history list.
2883 <C-n>
2884 <PC down key>
2885      Move down through the history list.
2887    When typing commands interactively, if the cursor is within or before
2888 the first word in the command-line, pressing the <TAB> key (or <C-i>)
2889 will display a listing of the available commands, and if the cursor is
2890 after the first word, the '<TAB>' will provide a completion listing of
2891 disks, partitions, and file names depending on the context.  Note that
2892 to obtain a list of drives, one must open a parenthesis, as 'root ('.
2894    Note that you cannot use the completion functionality in the TFTP
2895 filesystem.  This is because TFTP doesn't support file name listing for
2896 the security.
2898 \x1f
2899 File: grub.info,  Node: Command-line interface-Footnotes,  Up: Command-line interface
2901    (1) However, this behavior will be changed in the future version, in
2902 a user-invisible way.
2904 \x1f
2905 File: grub.info,  Node: Menu interface,  Next: Menu entry editor,  Prev: Command-line interface,  Up: Interface
2907 14.2 The simple menu interface
2908 ==============================
2910 The menu interface is quite easy to use.  Its commands are both
2911 reasonably intuitive and described on screen.
2913    Basically, the menu interface provides a list of "boot entries" to
2914 the user to choose from.  Use the arrow keys to select the entry of
2915 choice, then press <RET> to run it.  An optional timeout is available to
2916 boot the default entry (the first one if not set), which is aborted by
2917 pressing any key.
2919    Commands are available to enter a bare command-line by pressing <c>
2920 (which operates exactly like the non-config-file version of GRUB, but
2921 allows one to return to the menu if desired by pressing <ESC>) or to
2922 edit any of the "boot entries" by pressing <e>.
2924    If you protect the menu interface with a password (*note Security::),
2925 all you can do is choose an entry by pressing <RET>, or press <p> to
2926 enter the password.
2928 \x1f
2929 File: grub.info,  Node: Menu entry editor,  Prev: Menu interface,  Up: Interface
2931 14.3 Editing a menu entry
2932 =========================
2934 The menu entry editor looks much like the main menu interface, but the
2935 lines in the menu are individual commands in the selected entry instead
2936 of entry names.
2938    If an <ESC> is pressed in the editor, it aborts all the changes made
2939 to the configuration entry and returns to the main menu interface.
2941    Each line in the menu entry can be edited freely, and you can add new
2942 lines by pressing <RET> at the end of a line.  To boot the edited entry,
2943 press <Ctrl-x>.
2945    Although GRUB unfortunately does not support "undo", you can do
2946 almost the same thing by just returning to the main menu using <ESC>.
2948 \x1f
2949 File: grub.info,  Node: Environment,  Next: Commands,  Prev: Interface,  Up: Top
2951 15 GRUB environment variables
2952 *****************************
2954 GRUB supports environment variables which are rather like those offered
2955 by all Unix-like systems.  Environment variables have a name, which is
2956 unique and is usually a short identifier, and a value, which is an
2957 arbitrary string of characters.  They may be set (*note set::), unset
2958 (*note unset::), or looked up (*note Shell-like scripting::) by name.
2960    A number of environment variables have special meanings to various
2961 parts of GRUB. Others may be used freely in GRUB configuration files.
2963 * Menu:
2965 * Special environment variables::
2966 * Environment block::
2968 \x1f
2969 File: grub.info,  Node: Special environment variables,  Next: Environment block,  Up: Environment
2971 15.1 Special environment variables
2972 ==================================
2974 These variables have special meaning to GRUB.
2976 * Menu:
2978 * biosnum::
2979 * check_signatures::
2980 * chosen::
2981 * cmdpath::
2982 * color_highlight::
2983 * color_normal::
2984 * debug::
2985 * default::
2986 * fallback::
2987 * gfxmode::
2988 * gfxpayload::
2989 * gfxterm_font::
2990 * grub_cpu::
2991 * grub_platform::
2992 * icondir::
2993 * lang::
2994 * locale_dir::
2995 * menu_color_highlight::
2996 * menu_color_normal::
2997 * net_<INTERFACE>_boot_file::
2998 * net_<INTERFACE>_dhcp_server_name::
2999 * net_<INTERFACE>_domain::
3000 * net_<INTERFACE>_extensionspath::
3001 * net_<INTERFACE>_hostname::
3002 * net_<INTERFACE>_ip::
3003 * net_<INTERFACE>_mac::
3004 * net_<INTERFACE>_rootpath::
3005 * net_default_interface::
3006 * net_default_ip::
3007 * net_default_mac::
3008 * net_default_server::
3009 * pager::
3010 * prefix::
3011 * pxe_blksize::
3012 * pxe_default_gateway::
3013 * pxe_default_server::
3014 * root::
3015 * superusers::
3016 * theme::
3017 * timeout::
3018 * timeout_style::
3020 \x1f
3021 File: grub.info,  Node: biosnum,  Next: check_signatures,  Up: Special environment variables
3023 15.1.1 biosnum
3024 --------------
3026 When chain-loading another boot loader (*note Chain-loading::), GRUB may
3027 need to know what BIOS drive number corresponds to the root device
3028 (*note root::) so that it can set up registers properly.  If the BIOSNUM
3029 variable is set, it overrides GRUB's own means of guessing this.
3031    For an alternative approach which also changes BIOS drive mappings
3032 for the chain-loaded system, *note drivemap::.
3034 \x1f
3035 File: grub.info,  Node: check_signatures,  Next: chosen,  Prev: biosnum,  Up: Special environment variables
3037 15.1.2 check_signatures
3038 -----------------------
3040 This variable controls whether GRUB enforces digital signature
3041 validation on loaded files.  *Note Using digital signatures::.
3043 \x1f
3044 File: grub.info,  Node: chosen,  Next: cmdpath,  Prev: check_signatures,  Up: Special environment variables
3046 15.1.3 chosen
3047 -------------
3049 When executing a menu entry, GRUB sets the CHOSEN variable to the title
3050 of the entry being executed.
3052    If the menu entry is in one or more submenus, then CHOSEN is set to
3053 the titles of each of the submenus starting from the top level followed
3054 by the title of the menu entry itself, separated by '>'.
3056 \x1f
3057 File: grub.info,  Node: cmdpath,  Next: color_highlight,  Prev: chosen,  Up: Special environment variables
3059 15.1.4 cmdpath
3060 --------------
3062 The location from which 'core.img' was loaded as an absolute directory
3063 name (*note File name syntax::).  This is set by GRUB at startup based
3064 on information returned by platform firmware.  Not every platform
3065 provides this information and some may return only device without path
3066 name.
3068 \x1f
3069 File: grub.info,  Node: color_highlight,  Next: color_normal,  Prev: cmdpath,  Up: Special environment variables
3071 15.1.5 color_highlight
3072 ----------------------
3074 This variable contains the "highlight" foreground and background
3075 terminal colors, separated by a slash ('/').  Setting this variable
3076 changes those colors.  For the available color names, *note
3077 color_normal::.
3079    The default is 'black/light-gray'.
3081 \x1f
3082 File: grub.info,  Node: color_normal,  Next: debug,  Prev: color_highlight,  Up: Special environment variables
3084 15.1.6 color_normal
3085 -------------------
3087 This variable contains the "normal" foreground and background terminal
3088 colors, separated by a slash ('/').  Setting this variable changes those
3089 colors.  Each color must be a name from the following list:
3091    * black
3092    * blue
3093    * green
3094    * cyan
3095    * red
3096    * magenta
3097    * brown
3098    * light-gray
3099    * dark-gray
3100    * light-blue
3101    * light-green
3102    * light-cyan
3103    * light-red
3104    * light-magenta
3105    * yellow
3106    * white
3108    The default is 'light-gray/black'.
3110    The color support support varies from terminal to terminal.
3112    'morse' has no color support at all.
3114    'mda_text' color support is limited to highlighting by black/white
3115 reversal.
3117    'console' on ARC, EMU and IEEE1275, 'serial_*' and 'spkmodem' are
3118 governed by terminfo and support only 8 colors if in modes 'vt100-color'
3119 (default for console on emu), 'arc' (default for console on ARC),
3120 'ieee1275' (default for console on IEEE1275).  When in mode 'vt100' then
3121 the color support is limited to highlighting by black/white reversal.
3122 When in mode 'dumb' there is no color support.
3124    When console supports no colors this setting is ignored.  When
3125 console supports 8 colors, then the colors from the second half of the
3126 previous list are mapped to the matching colors of first half.
3128    'console' on EFI and BIOS and 'vga_text' support all 16 colors.
3130    'gfxterm' supports all 16 colors and would be theoretically
3131 extendable to support whole rgb24 palette but currently there is no
3132 compelling reason to go beyond the current 16 colors.
3134 \x1f
3135 File: grub.info,  Node: debug,  Next: default,  Prev: color_normal,  Up: Special environment variables
3137 15.1.7 debug
3138 ------------
3140 This variable may be set to enable debugging output from various
3141 components of GRUB. The value is a list of debug facility names
3142 separated by whitespace or ',', or 'all' to enable all available
3143 debugging output.  The facility names are the first argument to
3144 grub_dprintf.  Consult source for more details.
3146 \x1f
3147 File: grub.info,  Node: default,  Next: fallback,  Prev: debug,  Up: Special environment variables
3149 15.1.8 default
3150 --------------
3152 If this variable is set, it identifies a menu entry that should be
3153 selected by default, possibly after a timeout (*note timeout::).  The
3154 entry may be identified by number or by id.
3156    For example, if you have:
3158 menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux {
3159         ...
3162    then you can make this the default using:
3164      default=example-gnu-linux
3166    If the entry is in a submenu, then it must be identified using the
3167 titles of each of the submenus starting from the top level followed by
3168 the number or title of the menu entry itself, separated by '>'.  For
3169 example, take the following menu structure:
3171      Submenu 1
3172        Menu Entry 1
3173        Menu Entry 2
3174      Submenu 2
3175        Submenu 3
3176          Menu Entry 3
3177          Menu Entry 4
3178        Menu Entry 5
3180    "Menu Entry 3" would then be identified as 'Submenu 2>Submenu 3>Menu
3181 Entry 3'.
3183    This variable is often set by 'GRUB_DEFAULT' (*note Simple
3184 configuration::), 'grub-set-default', or 'grub-reboot'.
3186 \x1f
3187 File: grub.info,  Node: fallback,  Next: gfxmode,  Prev: default,  Up: Special environment variables
3189 15.1.9 fallback
3190 ---------------
3192 If this variable is set, it identifies a menu entry that should be
3193 selected if the default menu entry fails to boot.  Entries are
3194 identified in the same way as for 'default' (*note default::).
3196 \x1f
3197 File: grub.info,  Node: gfxmode,  Next: gfxpayload,  Prev: fallback,  Up: Special environment variables
3199 15.1.10 gfxmode
3200 ---------------
3202 If this variable is set, it sets the resolution used on the 'gfxterm'
3203 graphical terminal.  Note that you can only use modes which your
3204 graphics card supports via VESA BIOS Extensions (VBE), so for example
3205 native LCD panel resolutions may not be available.  The default is
3206 'auto', which selects a platform-specific default that should look
3207 reasonable.  Supported modes can be listed by 'videoinfo' command in
3208 GRUB.
3210    The resolution may be specified as a sequence of one or more modes,
3211 separated by commas (',') or semicolons (';'); each will be tried in
3212 turn until one is found.  Each mode should be either 'auto',
3213 'WIDTHxHEIGHT', or 'WIDTHxHEIGHTxDEPTH'.
3215 \x1f
3216 File: grub.info,  Node: gfxpayload,  Next: gfxterm_font,  Prev: gfxmode,  Up: Special environment variables
3218 15.1.11 gfxpayload
3219 ------------------
3221 If this variable is set, it controls the video mode in which the Linux
3222 kernel starts up, replacing the 'vga=' boot option (*note linux::).  It
3223 may be set to 'text' to force the Linux kernel to boot in normal text
3224 mode, 'keep' to preserve the graphics mode set using 'gfxmode', or any
3225 of the permitted values for 'gfxmode' to set a particular graphics mode
3226 (*note gfxmode::).
3228    Depending on your kernel, your distribution, your graphics card, and
3229 the phase of the moon, note that using this option may cause GNU/Linux
3230 to suffer from various display problems, particularly during the early
3231 part of the boot sequence.  If you have problems, set this variable to
3232 'text' and GRUB will tell Linux to boot in normal text mode.
3234    The default is platform-specific.  On platforms with a native text
3235 mode (such as PC BIOS platforms), the default is 'text'.  Otherwise the
3236 default may be 'auto' or a specific video mode.
3238    This variable is often set by 'GRUB_GFXPAYLOAD_LINUX' (*note Simple
3239 configuration::).
3241 \x1f
3242 File: grub.info,  Node: gfxterm_font,  Next: grub_cpu,  Prev: gfxpayload,  Up: Special environment variables
3244 15.1.12 gfxterm_font
3245 --------------------
3247 If this variable is set, it names a font to use for text on the
3248 'gfxterm' graphical terminal.  Otherwise, 'gfxterm' may use any
3249 available font.
3251 \x1f
3252 File: grub.info,  Node: grub_cpu,  Next: grub_platform,  Prev: gfxterm_font,  Up: Special environment variables
3254 15.1.13 grub_cpu
3255 ----------------
3257 In normal mode (*note normal::), GRUB sets the 'grub_cpu' variable to
3258 the CPU type for which GRUB was built (e.g.  'i386' or 'powerpc').
3260 \x1f
3261 File: grub.info,  Node: grub_platform,  Next: icondir,  Prev: grub_cpu,  Up: Special environment variables
3263 15.1.14 grub_platform
3264 ---------------------
3266 In normal mode (*note normal::), GRUB sets the 'grub_platform' variable
3267 to the platform for which GRUB was built (e.g.  'pc' or 'efi').
3269 \x1f
3270 File: grub.info,  Node: icondir,  Next: lang,  Prev: grub_platform,  Up: Special environment variables
3272 15.1.15 icondir
3273 ---------------
3275 If this variable is set, it names a directory in which the GRUB
3276 graphical menu should look for icons after looking in the theme's
3277 'icons' directory.  *Note Theme file format::.
3279 \x1f
3280 File: grub.info,  Node: lang,  Next: locale_dir,  Prev: icondir,  Up: Special environment variables
3282 15.1.16 lang
3283 ------------
3285 If this variable is set, it names the language code that the 'gettext'
3286 command (*note gettext::) uses to translate strings.  For example,
3287 French would be named as 'fr', and Simplified Chinese as 'zh_CN'.
3289    'grub-mkconfig' (*note Simple configuration::) will try to set a
3290 reasonable default for this variable based on the system locale.
3292 \x1f
3293 File: grub.info,  Node: locale_dir,  Next: menu_color_highlight,  Prev: lang,  Up: Special environment variables
3295 15.1.17 locale_dir
3296 ------------------
3298 If this variable is set, it names the directory where translation files
3299 may be found (*note gettext::), usually '/boot/grub/locale'.  Otherwise,
3300 internationalization is disabled.
3302    'grub-mkconfig' (*note Simple configuration::) will set a reasonable
3303 default for this variable if internationalization is needed and any
3304 translation files are available.
3306 \x1f
3307 File: grub.info,  Node: menu_color_highlight,  Next: menu_color_normal,  Prev: locale_dir,  Up: Special environment variables
3309 15.1.18 menu_color_highlight
3310 ----------------------------
3312 This variable contains the foreground and background colors to be used
3313 for the highlighted menu entry, separated by a slash ('/').  Setting
3314 this variable changes those colors.  For the available color names,
3315 *note color_normal::.
3317    The default is the value of 'color_highlight' (*note
3318 color_highlight::).
3320 \x1f
3321 File: grub.info,  Node: menu_color_normal,  Next: net_<INTERFACE>_boot_file,  Prev: menu_color_highlight,  Up: Special environment variables
3323 15.1.19 menu_color_normal
3324 -------------------------
3326 This variable contains the foreground and background colors to be used
3327 for non-highlighted menu entries, separated by a slash ('/').  Setting
3328 this variable changes those colors.  For the available color names,
3329 *note color_normal::.
3331    The default is the value of 'color_normal' (*note color_normal::).
3333 \x1f
3334 File: grub.info,  Node: net_<INTERFACE>_boot_file,  Next: net_<INTERFACE>_dhcp_server_name,  Prev: menu_color_normal,  Up: Special environment variables
3336 15.1.20 net_<INTERFACE>_boot_file
3337 ---------------------------------
3339 *Note Network::.
3341 \x1f
3342 File: grub.info,  Node: net_<INTERFACE>_dhcp_server_name,  Next: net_<INTERFACE>_domain,  Prev: net_<INTERFACE>_boot_file,  Up: Special environment variables
3344 15.1.21 net_<INTERFACE>_dhcp_server_name
3345 ----------------------------------------
3347 *Note Network::.
3349 \x1f
3350 File: grub.info,  Node: net_<INTERFACE>_domain,  Next: net_<INTERFACE>_extensionspath,  Prev: net_<INTERFACE>_dhcp_server_name,  Up: Special environment variables
3352 15.1.22 net_<INTERFACE>_domain
3353 ------------------------------
3355 *Note Network::.
3357 \x1f
3358 File: grub.info,  Node: net_<INTERFACE>_extensionspath,  Next: net_<INTERFACE>_hostname,  Prev: net_<INTERFACE>_domain,  Up: Special environment variables
3360 15.1.23 net_<INTERFACE>_extensionspath
3361 --------------------------------------
3363 *Note Network::.
3365 \x1f
3366 File: grub.info,  Node: net_<INTERFACE>_hostname,  Next: net_<INTERFACE>_ip,  Prev: net_<INTERFACE>_extensionspath,  Up: Special environment variables
3368 15.1.24 net_<INTERFACE>_hostname
3369 --------------------------------
3371 *Note Network::.
3373 \x1f
3374 File: grub.info,  Node: net_<INTERFACE>_ip,  Next: net_<INTERFACE>_mac,  Prev: net_<INTERFACE>_hostname,  Up: Special environment variables
3376 15.1.25 net_<INTERFACE>_ip
3377 --------------------------
3379 *Note Network::.
3381 \x1f
3382 File: grub.info,  Node: net_<INTERFACE>_mac,  Next: net_<INTERFACE>_rootpath,  Prev: net_<INTERFACE>_ip,  Up: Special environment variables
3384 15.1.26 net_<INTERFACE>_mac
3385 ---------------------------
3387 *Note Network::.
3389 \x1f
3390 File: grub.info,  Node: net_<INTERFACE>_rootpath,  Next: net_default_interface,  Prev: net_<INTERFACE>_mac,  Up: Special environment variables
3392 15.1.27 net_<INTERFACE>_rootpath
3393 --------------------------------
3395 *Note Network::.
3397 \x1f
3398 File: grub.info,  Node: net_default_interface,  Next: net_default_ip,  Prev: net_<INTERFACE>_rootpath,  Up: Special environment variables
3400 15.1.28 net_default_interface
3401 -----------------------------
3403 *Note Network::.
3405 \x1f
3406 File: grub.info,  Node: net_default_ip,  Next: net_default_mac,  Prev: net_default_interface,  Up: Special environment variables
3408 15.1.29 net_default_ip
3409 ----------------------
3411 *Note Network::.
3413 \x1f
3414 File: grub.info,  Node: net_default_mac,  Next: net_default_server,  Prev: net_default_ip,  Up: Special environment variables
3416 15.1.30 net_default_mac
3417 -----------------------
3419 *Note Network::.
3421 \x1f
3422 File: grub.info,  Node: net_default_server,  Next: pager,  Prev: net_default_mac,  Up: Special environment variables
3424 15.1.31 net_default_server
3425 --------------------------
3427 *Note Network::.
3429 \x1f
3430 File: grub.info,  Node: pager,  Next: prefix,  Prev: net_default_server,  Up: Special environment variables
3432 15.1.32 pager
3433 -------------
3435 If set to '1', pause output after each screenful and wait for keyboard
3436 input.  The default is not to pause output.
3438 \x1f
3439 File: grub.info,  Node: prefix,  Next: pxe_blksize,  Prev: pager,  Up: Special environment variables
3441 15.1.33 prefix
3442 --------------
3444 The location of the '/boot/grub' directory as an absolute file name
3445 (*note File name syntax::).  This is normally set by GRUB at startup
3446 based on information provided by 'grub-install'.  GRUB modules are
3447 dynamically loaded from this directory, so it must be set correctly in
3448 order for many parts of GRUB to work.
3450 \x1f
3451 File: grub.info,  Node: pxe_blksize,  Next: pxe_default_gateway,  Prev: prefix,  Up: Special environment variables
3453 15.1.34 pxe_blksize
3454 -------------------
3456 *Note Network::.
3458 \x1f
3459 File: grub.info,  Node: pxe_default_gateway,  Next: pxe_default_server,  Prev: pxe_blksize,  Up: Special environment variables
3461 15.1.35 pxe_default_gateway
3462 ---------------------------
3464 *Note Network::.
3466 \x1f
3467 File: grub.info,  Node: pxe_default_server,  Next: root,  Prev: pxe_default_gateway,  Up: Special environment variables
3469 15.1.36 pxe_default_server
3470 --------------------------
3472 *Note Network::.
3474 \x1f
3475 File: grub.info,  Node: root,  Next: superusers,  Prev: pxe_default_server,  Up: Special environment variables
3477 15.1.37 root
3478 ------------
3480 The root device name (*note Device syntax::).  Any file names that do
3481 not specify an explicit device name are read from this device.  The
3482 default is normally set by GRUB at startup based on the value of
3483 'prefix' (*note prefix::).
3485    For example, if GRUB was installed to the first partition of the
3486 first hard disk, then 'prefix' might be set to '(hd0,msdos1)/boot/grub'
3487 and 'root' to 'hd0,msdos1'.
3489 \x1f
3490 File: grub.info,  Node: superusers,  Next: theme,  Prev: root,  Up: Special environment variables
3492 15.1.38 superusers
3493 ------------------
3495 This variable may be set to a list of superuser names to enable
3496 authentication support.  *Note Security::.
3498 \x1f
3499 File: grub.info,  Node: theme,  Next: timeout,  Prev: superusers,  Up: Special environment variables
3501 15.1.39 theme
3502 -------------
3504 This variable may be set to a directory containing a GRUB graphical menu
3505 theme.  *Note Theme file format::.
3507    This variable is often set by 'GRUB_THEME' (*note Simple
3508 configuration::).
3510 \x1f
3511 File: grub.info,  Node: timeout,  Next: timeout_style,  Prev: theme,  Up: Special environment variables
3513 15.1.40 timeout
3514 ---------------
3516 If this variable is set, it specifies the time in seconds to wait for
3517 keyboard input before booting the default menu entry.  A timeout of '0'
3518 means to boot the default entry immediately without displaying the menu;
3519 a timeout of '-1' (or unset) means to wait indefinitely.
3521    If 'timeout_style' (*note timeout_style::) is set to 'countdown' or
3522 'hidden', the timeout is instead counted before the menu is displayed.
3524    This variable is often set by 'GRUB_TIMEOUT' (*note Simple
3525 configuration::).
3527 \x1f
3528 File: grub.info,  Node: timeout_style,  Prev: timeout,  Up: Special environment variables
3530 15.1.41 timeout_style
3531 ---------------------
3533 This variable may be set to 'menu', 'countdown', or 'hidden' to control
3534 the way in which the timeout (*note timeout::) interacts with displaying
3535 the menu.  See the documentation of 'GRUB_TIMEOUT_STYLE' (*note Simple
3536 configuration::) for details.
3538 \x1f
3539 File: grub.info,  Node: Environment block,  Prev: Special environment variables,  Up: Environment
3541 15.2 The GRUB environment block
3542 ===============================
3544 It is often useful to be able to remember a small amount of information
3545 from one boot to the next.  For example, you might want to set the
3546 default menu entry based on what was selected the last time.  GRUB
3547 deliberately does not implement support for writing files in order to
3548 minimise the possibility of the boot loader being responsible for file
3549 system corruption, so a GRUB configuration file cannot just create a
3550 file in the ordinary way.  However, GRUB provides an "environment block"
3551 which can be used to save a small amount of state.
3553    The environment block is a preallocated 1024-byte file, which
3554 normally lives in '/boot/grub/grubenv' (although you should not assume
3555 this).  At boot time, the 'load_env' command (*note load_env::) loads
3556 environment variables from it, and the 'save_env' (*note save_env::)
3557 command saves environment variables to it.  From a running system, the
3558 'grub-editenv' utility can be used to edit the environment block.
3560    For safety reasons, this storage is only available when installed on
3561 a plain disk (no LVM or RAID), using a non-checksumming filesystem (no
3562 ZFS), and using BIOS or EFI functions (no ATA, USB or IEEE1275).
3564    'grub-mkconfig' uses this facility to implement 'GRUB_SAVEDEFAULT'
3565 (*note Simple configuration::).
3567 \x1f
3568 File: grub.info,  Node: Commands,  Next: Internationalisation,  Prev: Environment,  Up: Top
3570 16 The list of available commands
3571 *********************************
3573 In this chapter, we list all commands that are available in GRUB.
3575    Commands belong to different groups.  A few can only be used in the
3576 global section of the configuration file (or "menu"); most of them can
3577 be entered on the command-line and can be used either anywhere in the
3578 menu or specifically in the menu entries.
3580    In rescue mode, only the 'insmod' (*note insmod::), 'ls' (*note
3581 ls::), 'set' (*note set::), and 'unset' (*note unset::) commands are
3582 normally available.  If you end up in rescue mode and do not know what
3583 to do, then *note GRUB only offers a rescue shell::.
3585 * Menu:
3587 * Menu-specific commands::
3588 * General commands::
3589 * Command-line and menu entry commands::
3590 * Networking commands::
3592 \x1f
3593 File: grub.info,  Node: Menu-specific commands,  Next: General commands,  Up: Commands
3595 16.1 The list of commands for the menu only
3596 ===========================================
3598 The semantics used in parsing the configuration file are the following:
3600    * The files _must_ be in plain-text format.
3602    * '#' at the beginning of a line in a configuration file means it is
3603      only a comment.
3605    * Options are separated by spaces.
3607    * All numbers can be either decimal or hexadecimal.  A hexadecimal
3608      number must be preceded by '0x', and is case-insensitive.
3610    These commands can only be used in the menu:
3612 * Menu:
3614 * menuentry::                   Start a menu entry
3615 * submenu::                     Group menu entries
3617 \x1f
3618 File: grub.info,  Node: menuentry,  Next: submenu,  Up: Menu-specific commands
3620 16.1.1 menuentry
3621 ----------------
3623  -- Command: menuentry TITLE ['--class=class' ...] ['--users=users']
3624           ['--unrestricted'] ['--hotkey=key'] ['--id=id'] [ARG ...] {
3625           COMMAND; ... }
3626      This defines a GRUB menu entry named TITLE.  When this entry is
3627      selected from the menu, GRUB will set the CHOSEN environment
3628      variable to value of '--id' if '--id' is given, execute the list of
3629      commands given within braces, and if the last command in the list
3630      returned successfully and a kernel was loaded it will execute the
3631      'boot' command.
3633      The '--class' option may be used any number of times to group menu
3634      entries into classes.  Menu themes may display different classes
3635      using different styles.
3637      The '--users' option grants specific users access to specific menu
3638      entries.  *Note Security::.
3640      The '--unrestricted' option grants all users access to specific
3641      menu entries.  *Note Security::.
3643      The '--hotkey' option associates a hotkey with a menu entry.  KEY
3644      may be a single letter, or one of the aliases 'backspace', 'tab',
3645      or 'delete'.
3647      The '--id' may be used to associate unique identifier with a menu
3648      entry.  ID is string of ASCII aphanumeric characters, underscore
3649      and hyphen and should not start with a digit.
3651      All other arguments including TITLE are passed as positional
3652      parameters when list of commands is executed with TITLE always
3653      assigned to '$1'.
3655 \x1f
3656 File: grub.info,  Node: submenu,  Prev: menuentry,  Up: Menu-specific commands
3658 16.1.2 submenu
3659 --------------
3661  -- Command: submenu TITLE ['--class=class' ...] ['--users=users']
3662           ['--unrestricted'] ['--hotkey=key'] ['--id=id'] { MENU ENTRIES
3663           ... }
3664      This defines a submenu.  An entry called TITLE will be added to the
3665      menu; when that entry is selected, a new menu will be displayed
3666      showing all the entries within this submenu.
3668      All options are the same as in the 'menuentry' command (*note
3669      menuentry::).
3671 \x1f
3672 File: grub.info,  Node: General commands,  Next: Command-line and menu entry commands,  Prev: Menu-specific commands,  Up: Commands
3674 16.2 The list of general commands
3675 =================================
3677 Commands usable anywhere in the menu and in the command-line.
3679 * Menu:
3681 * serial::                      Set up a serial device
3682 * terminal_input::              Manage input terminals
3683 * terminal_output::             Manage output terminals
3684 * terminfo::                    Define terminal type
3686 \x1f
3687 File: grub.info,  Node: serial,  Next: terminal_input,  Up: General commands
3689 16.2.1 serial
3690 -------------
3692  -- Command: serial ['--unit=unit'] ['--port=port'] ['--speed=speed']
3693           ['--word=word'] ['--parity=parity'] ['--stop=stop']
3694      Initialize a serial device.  UNIT is a number in the range 0-3
3695      specifying which serial port to use; default is 0, which
3696      corresponds to the port often called COM1.  PORT is the I/O port
3697      where the UART is to be found; if specified it takes precedence
3698      over UNIT.  SPEED is the transmission speed; default is 9600.  WORD
3699      and STOP are the number of data bits and stop bits.  Data bits must
3700      be in the range 5-8 and stop bits must be 1 or 2.  Default is 8
3701      data bits and one stop bit.  PARITY is one of 'no', 'odd', 'even'
3702      and defaults to 'no'.
3704      The serial port is not used as a communication channel unless the
3705      'terminal_input' or 'terminal_output' command is used (*note
3706      terminal_input::, *note terminal_output::).
3708      See also *note Serial terminal::.
3710 \x1f
3711 File: grub.info,  Node: terminal_input,  Next: terminal_output,  Prev: serial,  Up: General commands
3713 16.2.2 terminal_input
3714 ---------------------
3716  -- Command: terminal_input ['--append'|'--remove'] [terminal1]
3717           [terminal2] ...
3718      List or select an input terminal.
3720      With no arguments, list the active and available input terminals.
3722      With '--append', add the named terminals to the list of active
3723      input terminals; any of these may be used to provide input to GRUB.
3725      With '--remove', remove the named terminals from the active list.
3727      With no options but a list of terminal names, make only the listed
3728      terminal names active.
3730 \x1f
3731 File: grub.info,  Node: terminal_output,  Next: terminfo,  Prev: terminal_input,  Up: General commands
3733 16.2.3 terminal_output
3734 ----------------------
3736  -- Command: terminal_output ['--append'|'--remove'] [terminal1]
3737           [terminal2] ...
3738      List or select an output terminal.
3740      With no arguments, list the active and available output terminals.
3742      With '--append', add the named terminals to the list of active
3743      output terminals; all of these will receive output from GRUB.
3745      With '--remove', remove the named terminals from the active list.
3747      With no options but a list of terminal names, make only the listed
3748      terminal names active.
3750 \x1f
3751 File: grub.info,  Node: terminfo,  Prev: terminal_output,  Up: General commands
3753 16.2.4 terminfo
3754 ---------------
3756  -- Command: terminfo [-a|-u|-v] [term]
3757      Define the capabilities of your terminal by giving the name of an
3758      entry in the terminfo database, which should correspond roughly to
3759      a 'TERM' environment variable in Unix.
3761      The currently available terminal types are 'vt100', 'vt100-color',
3762      'ieee1275', and 'dumb'.  If you need other terminal types, please
3763      contact us to discuss the best way to include support for these in
3764      GRUB.
3766      The '-a' ('--ascii'), '-u' ('--utf8'), and '-v' ('--visual-utf8')
3767      options control how non-ASCII text is displayed.  '-a' specifies an
3768      ASCII-only terminal; '-u' specifies logically-ordered UTF-8; and
3769      '-v' specifies "visually-ordered UTF-8" (in other words, arranged
3770      such that a terminal emulator without bidirectional text support
3771      will display right-to-left text in the proper order; this is not
3772      really proper UTF-8, but a workaround).
3774      If no option or terminal type is specified, the current terminal
3775      type is printed.
3777 \x1f
3778 File: grub.info,  Node: Command-line and menu entry commands,  Next: Networking commands,  Prev: General commands,  Up: Commands
3780 16.3 The list of command-line and menu entry commands
3781 =====================================================
3783 These commands are usable in the command-line and in menu entries.  If
3784 you forget a command, you can run the command 'help' (*note help::).
3786 * Menu:
3788 * [::                           Check file types and compare values
3789 * acpi::                        Load ACPI tables
3790 * authenticate::                Check whether user is in user list
3791 * background_color::            Set background color for active terminal
3792 * background_image::            Load background image for active terminal
3793 * badram::                      Filter out bad regions of RAM
3794 * blocklist::                   Print a block list
3795 * boot::                        Start up your operating system
3796 * cat::                         Show the contents of a file
3797 * chainloader::                 Chain-load another boot loader
3798 * clear::                       Clear the screen
3799 * cmosclean::                   Clear bit in CMOS
3800 * cmosdump::                    Dump CMOS contents
3801 * cmostest::                    Test bit in CMOS
3802 * cmp::                         Compare two files
3803 * configfile::                  Load a configuration file
3804 * cpuid::                       Check for CPU features
3805 * crc::                         Compute or check CRC32 checksums
3806 * cryptomount::                 Mount a crypto device
3807 * date::                        Display or set current date and time
3808 * devicetree::                  Load a device tree blob
3809 * distrust::                    Remove a pubkey from trusted keys
3810 * drivemap::                    Map a drive to another
3811 * echo::                        Display a line of text
3812 * eval::                        Evaluate agruments as GRUB commands
3813 * export::                      Export an environment variable
3814 * false::                       Do nothing, unsuccessfully
3815 * gettext::                     Translate a string
3816 * gptsync::                     Fill an MBR based on GPT entries
3817 * halt::                        Shut down your computer
3818 * hashsum::                     Compute or check hash checksum
3819 * help::                        Show help messages
3820 * initrd::                      Load a Linux initrd
3821 * initrd16::                    Load a Linux initrd (16-bit mode)
3822 * insmod::                      Insert a module
3823 * keystatus::                   Check key modifier status
3824 * linux::                       Load a Linux kernel
3825 * linux16::                     Load a Linux kernel (16-bit mode)
3826 * list_env::                    List variables in environment block
3827 * list_trusted::                List trusted public keys
3828 * load_env::                    Load variables from environment block
3829 * loadfont::                    Load font files
3830 * loopback::                    Make a device from a filesystem image
3831 * ls::                          List devices or files
3832 * lsfonts::                     List loaded fonts
3833 * lsmod::                       Show loaded modules
3834 * md5sum::                      Compute or check MD5 hash
3835 * module::                      Load module for multiboot kernel
3836 * multiboot::                   Load multiboot compliant kernel
3837 * nativedisk::                  Switch to native disk drivers
3838 * normal::                      Enter normal mode
3839 * normal_exit::                 Exit from normal mode
3840 * parttool::                    Modify partition table entries
3841 * password::                    Set a clear-text password
3842 * password_pbkdf2::             Set a hashed password
3843 * play::                        Play a tune
3844 * probe::                       Retrieve device info
3845 * pxe_unload::                  Unload the PXE environment
3846 * read::                        Read user input
3847 * reboot::                      Reboot your computer
3848 * regexp::                      Test if regular expression matches string
3849 * rmmod::                       Remove a module
3850 * save_env::                    Save variables to environment block
3851 * search::                      Search devices by file, label, or UUID
3852 * sendkey::                     Emulate keystrokes
3853 * set::                         Set an environment variable
3854 * sha1sum::                     Compute or check SHA1 hash
3855 * sha256sum::                   Compute or check SHA256 hash
3856 * sha512sum::                   Compute or check SHA512 hash
3857 * sleep::                       Wait for a specified number of seconds
3858 * source::                      Read a configuration file in same context
3859 * test::                        Check file types and compare values
3860 * true::                        Do nothing, successfully
3861 * trust::                       Add public key to list of trusted keys
3862 * unset::                       Unset an environment variable
3863 * uppermem::                    Set the upper memory size
3864 * verify_detached::             Verify detached digital signature
3865 * videoinfo::                   List available video modes
3867 \x1f
3868 File: grub.info,  Node: [,  Next: acpi,  Up: Command-line and menu entry commands
3870 16.3.1 [
3871 --------
3873  -- Command: '[' expression ']'
3874      Alias for 'test EXPRESSION' (*note test::).
3876 \x1f
3877 File: grub.info,  Node: acpi,  Next: authenticate,  Prev: [,  Up: Command-line and menu entry commands
3879 16.3.2 acpi
3880 -----------
3882  -- Command: acpi ['-1'|'-2']
3883           ['--exclude=table1,...'|'--load-only=table1,...']
3884           ['--oemid=id'] ['--oemtable=table'] ['--oemtablerev=rev']
3885           ['--oemtablecreator=creator'] ['--oemtablecreatorrev=rev']
3886           ['--no-ebda'] filename ...
3887      Modern BIOS systems normally implement the Advanced Configuration
3888      and Power Interface (ACPI), and define various tables that describe
3889      the interface between an ACPI-compliant operating system and the
3890      firmware.  In some cases, the tables provided by default only work
3891      well with certain operating systems, and it may be necessary to
3892      replace some of them.
3894      Normally, this command will replace the Root System Description
3895      Pointer (RSDP) in the Extended BIOS Data Area to point to the new
3896      tables.  If the '--no-ebda' option is used, the new tables will be
3897      known only to GRUB, but may be used by GRUB's EFI emulation.
3899 \x1f
3900 File: grub.info,  Node: authenticate,  Next: background_color,  Prev: acpi,  Up: Command-line and menu entry commands
3902 16.3.3 authenticate
3903 -------------------
3905  -- Command: authenticate [userlist]
3906      Check whether user is in USERLIST or listed in the value of
3907      variable 'superusers'.  See *note superusers:: for valid user list
3908      format.  If 'superusers' is empty, this command returns true.
3909      *Note Security::.
3911 \x1f
3912 File: grub.info,  Node: background_color,  Next: background_image,  Prev: authenticate,  Up: Command-line and menu entry commands
3914 16.3.4 background_color
3915 -----------------------
3917  -- Command: background_color color
3918      Set background color for active terminal.  For valid color
3919      specifications see *note Colors: Theme file format.  Background
3920      color can be changed only when using 'gfxterm' for terminal output.
3922      This command sets color of empty areas without text.  Text
3923      background color is controlled by environment variables
3924      COLOR_NORMAL, COLOR_HIGHLIGHT, MENU_COLOR_NORMAL,
3925      MENU_COLOR_HIGHLIGHT.  *Note Special environment variables::.
3927 \x1f
3928 File: grub.info,  Node: background_image,  Next: badram,  Prev: background_color,  Up: Command-line and menu entry commands
3930 16.3.5 background_image
3931 -----------------------
3933  -- Command: background_image [['--mode' 'stretch'|'normal'] file]
3934      Load background image for active terminal from FILE.  Image is
3935      stretched to fill up entire screen unless option '--mode' 'normal'
3936      is given.  Without arguments remove currently loaded background
3937      image.  Background image can be changed only when using 'gfxterm'
3938      for terminal output.
3940 \x1f
3941 File: grub.info,  Node: badram,  Next: blocklist,  Prev: background_image,  Up: Command-line and menu entry commands
3943 16.3.6 badram
3944 -------------
3946  -- Command: badram addr,mask[,addr,mask...]
3947      Filter out bad RAM.
3949    This command notifies the memory manager that specified regions of
3950 RAM ought to be filtered out (usually, because they're damaged).  This
3951 remains in effect after a payload kernel has been loaded by GRUB, as
3952 long as the loaded kernel obtains its memory map from GRUB. Kernels that
3953 support this include Linux, GNU Mach, the kernel of FreeBSD and
3954 Multiboot kernels in general.
3956    Syntax is the same as provided by the Memtest86+ utility
3957 (http://www.memtest.org/): a list of address/mask pairs.  Given a
3958 page-aligned address and a base address / mask pair, if all the bits of
3959 the page-aligned address that are enabled by the mask match with the
3960 base address, it means this page is to be filtered.  This syntax makes
3961 it easy to represent patterns that are often result of memory damage,
3962 due to physical distribution of memory cells.
3964 \x1f
3965 File: grub.info,  Node: blocklist,  Next: boot,  Prev: badram,  Up: Command-line and menu entry commands
3967 16.3.7 blocklist
3968 ----------------
3970  -- Command: blocklist file
3971      Print a block list (*note Block list syntax::) for FILE.
3973 \x1f
3974 File: grub.info,  Node: boot,  Next: cat,  Prev: blocklist,  Up: Command-line and menu entry commands
3976 16.3.8 boot
3977 -----------
3979  -- Command: boot
3980      Boot the OS or chain-loader which has been loaded.  Only necessary
3981      if running the fully interactive command-line (it is implicit at
3982      the end of a menu entry).
3984 \x1f
3985 File: grub.info,  Node: cat,  Next: chainloader,  Prev: boot,  Up: Command-line and menu entry commands
3987 16.3.9 cat
3988 ----------
3990  -- Command: cat ['--dos'] file
3991      Display the contents of the file FILE.  This command may be useful
3992      to remind you of your OS's root partition:
3994           grub> cat /etc/fstab
3996      If the '--dos' option is used, then carriage return / new line
3997      pairs will be displayed as a simple new line.  Otherwise, the
3998      carriage return will be displayed as a control character ('<d>') to
3999      make it easier to see when boot problems are caused by a file
4000      formatted using DOS-style line endings.
4002 \x1f
4003 File: grub.info,  Node: chainloader,  Next: clear,  Prev: cat,  Up: Command-line and menu entry commands
4005 16.3.10 chainloader
4006 -------------------
4008  -- Command: chainloader ['--force'] file
4009      Load FILE as a chain-loader.  Like any other file loaded by the
4010      filesystem code, it can use the blocklist notation (*note Block
4011      list syntax::) to grab the first sector of the current partition
4012      with '+1'.  If you specify the option '--force', then load FILE
4013      forcibly, whether it has a correct signature or not.  This is
4014      required when you want to load a defective boot loader, such as SCO
4015      UnixWare 7.1.
4017 \x1f
4018 File: grub.info,  Node: clear,  Next: cmosclean,  Prev: chainloader,  Up: Command-line and menu entry commands
4020 16.3.11 clear
4021 -------------
4023  -- Command: clear
4024      Clear the screen.
4026 \x1f
4027 File: grub.info,  Node: cmosclean,  Next: cmosdump,  Prev: clear,  Up: Command-line and menu entry commands
4029 16.3.12 cmosclean
4030 -----------------
4032  -- Command: cmosclean byte:bit
4033      Clear value of bit in CMOS at location BYTE:BIT.  This command is
4034      available only on platforms that support CMOS.
4036 \x1f
4037 File: grub.info,  Node: cmosdump,  Next: cmostest,  Prev: cmosclean,  Up: Command-line and menu entry commands
4039 16.3.13 cmosdump
4040 ----------------
4042  -- Dump: CMOS contents
4043      Dump full CMOS contents as hexadecimal values.  This command is
4044      available only on platforms that support CMOS.
4046 \x1f
4047 File: grub.info,  Node: cmostest,  Next: cmp,  Prev: cmosdump,  Up: Command-line and menu entry commands
4049 16.3.14 cmostest
4050 ----------------
4052  -- Command: cmostest byte:bit
4053      Test value of bit in CMOS at location BYTE:BIT.  Exit status is
4054      zero if bit is set, non zero otherwise.  This command is available
4055      only on platforms that support CMOS.
4057 \x1f
4058 File: grub.info,  Node: cmp,  Next: configfile,  Prev: cmostest,  Up: Command-line and menu entry commands
4060 16.3.15 cmp
4061 -----------
4063  -- Command: cmp file1 file2
4064      Compare the file FILE1 with the file FILE2.  If they differ in
4065      size, print the sizes like this:
4067           Differ in size: 0x1234 [foo], 0x4321 [bar]
4069      If the sizes are equal but the bytes at an offset differ, then
4070      print the bytes like this:
4072           Differ at the offset 777: 0xbe [foo], 0xef [bar]
4074      If they are completely identical, nothing will be printed.
4076 \x1f
4077 File: grub.info,  Node: configfile,  Next: cpuid,  Prev: cmp,  Up: Command-line and menu entry commands
4079 16.3.16 configfile
4080 ------------------
4082  -- Command: configfile file
4083      Load FILE as a configuration file.  If FILE defines any menu
4084      entries, then show a menu containing them immediately.  Any
4085      environment variable changes made by the commands in FILE will not
4086      be preserved after 'configfile' returns.
4088 \x1f
4089 File: grub.info,  Node: cpuid,  Next: crc,  Prev: configfile,  Up: Command-line and menu entry commands
4091 16.3.17 cpuid
4092 -------------
4094  -- Command: cpuid [-l]
4095      Check for CPU features.  This command is only available on x86
4096      systems.
4098      With the '-l' option, return true if the CPU supports long mode
4099      (64-bit).
4101      If invoked without options, this command currently behaves as if it
4102      had been invoked with '-l'.  This may change in the future.
4104 \x1f
4105 File: grub.info,  Node: crc,  Next: cryptomount,  Prev: cpuid,  Up: Command-line and menu entry commands
4107 16.3.18 crc
4108 -----------
4110  -- Command: crc arg ...
4111      Alias for 'hashsum --hash crc32 arg ...'.  See command 'hashsum'
4112      (*note hashsum::) for full description.
4114 \x1f
4115 File: grub.info,  Node: cryptomount,  Next: date,  Prev: crc,  Up: Command-line and menu entry commands
4117 16.3.19 cryptomount
4118 -------------------
4120  -- Command: cryptomount device|'-u' uuid|'-a'|'-b'
4121      Setup access to encrypted device.  If necessary, passphrase is
4122      requested interactively.  Option DEVICE configures specific grub
4123      device (*note Naming convention::); option '-u' UUID configures
4124      device with specified UUID; option '-a' configures all detected
4125      encrypted devices; option '-b' configures all geli containers that
4126      have boot flag set.
4128      GRUB suports devices encrypted using LUKS and geli.  Note that
4129      necessary modules (LUKS and GELI) have to be loaded manually before
4130      this command can be used.
4132 \x1f
4133 File: grub.info,  Node: date,  Next: devicetree,  Prev: cryptomount,  Up: Command-line and menu entry commands
4135 16.3.20 date
4136 ------------
4138  -- Command: date [[year-]month-day] [hour:minute[:second]]
4139      With no arguments, print the current date and time.
4141      Otherwise, take the current date and time, change any elements
4142      specified as arguments, and set the result as the new date and
4143      time.  For example, 'date 01-01' will set the current month and day
4144      to January 1, but leave the year, hour, minute, and second
4145      unchanged.
4147 \x1f
4148 File: grub.info,  Node: devicetree,  Next: distrust,  Prev: date,  Up: Command-line and menu entry commands
4150 16.3.21 linux
4151 -------------
4153  -- Command: devicetree file
4154      Load a device tree blob (.dtb) from a filesystem, for later use by
4155      a Linux kernel.  Does not perform merging with any device tree
4156      supplied by firmware, but rather replaces it completely.  *note
4157      GNU/Linux::.
4159 \x1f
4160 File: grub.info,  Node: distrust,  Next: drivemap,  Prev: devicetree,  Up: Command-line and menu entry commands
4162 16.3.22 distrust
4163 ----------------
4165  -- Command: distrust pubkey_id
4166      Remove public key PUBKEY_ID from GRUB's keyring of trusted keys.
4167      PUBKEY_ID is the last four bytes (eight hexadecimal digits) of the
4168      GPG v4 key id, which is also the output of 'list_trusted' (*note
4169      list_trusted::).  Outside of GRUB, the key id can be obtained using
4170      'gpg --fingerprint').  These keys are used to validate signatures
4171      when environment variable 'check_signatures' is set to 'enforce'
4172      (*note check_signatures::), and by some invocations of
4173      'verify_detached' (*note verify_detached::).  *Note Using digital
4174      signatures::, for more information.
4176 \x1f
4177 File: grub.info,  Node: drivemap,  Next: echo,  Prev: distrust,  Up: Command-line and menu entry commands
4179 16.3.23 drivemap
4180 ----------------
4182  -- Command: drivemap '-l'|'-r'|['-s'] from_drive to_drive
4183      Without options, map the drive FROM_DRIVE to the drive TO_DRIVE.
4184      This is necessary when you chain-load some operating systems, such
4185      as DOS, if such an OS resides at a non-first drive.  For
4186      convenience, any partition suffix on the drive is ignored, so you
4187      can safely use ${root} as a drive specification.
4189      With the '-s' option, perform the reverse mapping as well, swapping
4190      the two drives.
4192      With the '-l' option, list the current mappings.
4194      With the '-r' option, reset all mappings to the default values.
4196      For example:
4198           drivemap -s (hd0) (hd1)
4200 \x1f
4201 File: grub.info,  Node: echo,  Next: eval,  Prev: drivemap,  Up: Command-line and menu entry commands
4203 16.3.24 echo
4204 ------------
4206  -- Command: echo ['-n'] ['-e'] string ...
4207      Display the requested text and, unless the '-n' option is used, a
4208      trailing new line.  If there is more than one string, they are
4209      separated by spaces in the output.  As usual in GRUB commands,
4210      variables may be substituted using '${var}'.
4212      The '-e' option enables interpretation of backslash escapes.  The
4213      following sequences are recognised:
4215      '\\'
4216           backslash
4218      '\a'
4219           alert (BEL)
4221      '\c'
4222           suppress trailing new line
4224      '\f'
4225           form feed
4227      '\n'
4228           new line
4230      '\r'
4231           carriage return
4233      '\t'
4234           horizontal tab
4236      '\v'
4237           vertical tab
4239      When interpreting backslash escapes, backslash followed by any
4240      other character will print that character.
4242 \x1f
4243 File: grub.info,  Node: eval,  Next: export,  Prev: echo,  Up: Command-line and menu entry commands
4245 16.3.25 eval
4246 ------------
4248  -- Command: eval string ...
4249      Concatenate arguments together using single space as separator and
4250      evaluate result as sequence of GRUB commands.
4252 \x1f
4253 File: grub.info,  Node: export,  Next: false,  Prev: eval,  Up: Command-line and menu entry commands
4255 16.3.26 export
4256 --------------
4258  -- Command: export envvar
4259      Export the environment variable ENVVAR.  Exported variables are
4260      visible to subsidiary configuration files loaded using
4261      'configfile'.
4263 \x1f
4264 File: grub.info,  Node: false,  Next: gettext,  Prev: export,  Up: Command-line and menu entry commands
4266 16.3.27 false
4267 -------------
4269  -- Command: false
4270      Do nothing, unsuccessfully.  This is mainly useful in control
4271      constructs such as 'if' and 'while' (*note Shell-like scripting::).
4273 \x1f
4274 File: grub.info,  Node: gettext,  Next: gptsync,  Prev: false,  Up: Command-line and menu entry commands
4276 16.3.28 gettext
4277 ---------------
4279  -- Command: gettext string
4280      Translate STRING into the current language.
4282      The current language code is stored in the 'lang' variable in
4283      GRUB's environment (*note lang::).  Translation files in MO format
4284      are read from 'locale_dir' (*note locale_dir::), usually
4285      '/boot/grub/locale'.
4287 \x1f
4288 File: grub.info,  Node: gptsync,  Next: halt,  Prev: gettext,  Up: Command-line and menu entry commands
4290 16.3.29 gptsync
4291 ---------------
4293  -- Command: gptsync device [partition[+/-[type]]] ...
4294      Disks using the GUID Partition Table (GPT) also have a legacy
4295      Master Boot Record (MBR) partition table for compatibility with the
4296      BIOS and with older operating systems.  The legacy MBR can only
4297      represent a limited subset of GPT partition entries.
4299      This command populates the legacy MBR with the specified PARTITION
4300      entries on DEVICE.  Up to three partitions may be used.
4302      TYPE is an MBR partition type code; prefix with '0x' if you want to
4303      enter this in hexadecimal.  The separator between PARTITION and
4304      TYPE may be '+' to make the partition active, or '-' to make it
4305      inactive; only one partition may be active.  If both the separator
4306      and type are omitted, then the partition will be inactive.
4308 \x1f
4309 File: grub.info,  Node: halt,  Next: hashsum,  Prev: gptsync,  Up: Command-line and menu entry commands
4311 16.3.30 halt
4312 ------------
4314  -- Command: halt '--no-apm'
4315      The command halts the computer.  If the '--no-apm' option is
4316      specified, no APM BIOS call is performed.  Otherwise, the computer
4317      is shut down using APM.
4319 \x1f
4320 File: grub.info,  Node: hashsum,  Next: help,  Prev: halt,  Up: Command-line and menu entry commands
4322 16.3.31 hashsum
4323 ---------------
4325  -- Command: hashsum '--hash' hash '--keep-going' '--uncompress'
4326           '--check' file ['--prefix' dir]|file ...
4327      Compute or verify file hashes.  Hash type is selected with option
4328      '--hash'.  Supported hashes are: 'adler32', 'crc64', 'crc32',
4329      'crc32rfc1510', 'crc24rfc2440', 'md4', 'md5', 'ripemd160', 'sha1',
4330      'sha224', 'sha256', 'sha512', 'sha384', 'tiger192', 'tiger',
4331      'tiger2', 'whirlpool'.  Option '--uncompress' uncompresses files
4332      before computing hash.
4334      When list of files is given, hash of each file is computed and
4335      printed, followed by file name, each file on a new line.
4337      When option '--check' is given, it points to a file that contains
4338      list of HASH NAME pairs in the same format as used by UNIX 'md5sum'
4339      command.  Option '--prefix' may be used to give directory where
4340      files are located.  Hash verification stops after the first
4341      mismatch was found unless option '--keep-going' was given.  The
4342      exit code '$?' is set to 0 if hash verification is successful.  If
4343      it fails, '$?' is set to a nonzero value.
4345 \x1f
4346 File: grub.info,  Node: help,  Next: initrd,  Prev: hashsum,  Up: Command-line and menu entry commands
4348 16.3.32 help
4349 ------------
4351  -- Command: help [pattern ...]
4352      Display helpful information about builtin commands.  If you do not
4353      specify PATTERN, this command shows short descriptions of all
4354      available commands.
4356      If you specify any PATTERNS, it displays longer information about
4357      each of the commands whose names begin with those PATTERNS.
4359 \x1f
4360 File: grub.info,  Node: initrd,  Next: initrd16,  Prev: help,  Up: Command-line and menu entry commands
4362 16.3.33 initrd
4363 --------------
4365  -- Command: initrd file
4366      Load an initial ramdisk for a Linux kernel image, and set the
4367      appropriate parameters in the Linux setup area in memory.  This may
4368      only be used after the 'linux' command (*note linux::) has been
4369      run.  See also *note GNU/Linux::.
4371 \x1f
4372 File: grub.info,  Node: initrd16,  Next: insmod,  Prev: initrd,  Up: Command-line and menu entry commands
4374 16.3.34 initrd16
4375 ----------------
4377  -- Command: initrd16 file
4378      Load an initial ramdisk for a Linux kernel image to be booted in
4379      16-bit mode, and set the appropriate parameters in the Linux setup
4380      area in memory.  This may only be used after the 'linux16' command
4381      (*note linux16::) has been run.  See also *note GNU/Linux::.
4383      This command is only available on x86 systems.
4385 \x1f
4386 File: grub.info,  Node: insmod,  Next: keystatus,  Prev: initrd16,  Up: Command-line and menu entry commands
4388 16.3.35 insmod
4389 --------------
4391  -- Command: insmod module
4392      Insert the dynamic GRUB module called MODULE.
4394 \x1f
4395 File: grub.info,  Node: keystatus,  Next: linux,  Prev: insmod,  Up: Command-line and menu entry commands
4397 16.3.36 keystatus
4398 -----------------
4400  -- Command: keystatus ['--shift'] ['--ctrl'] ['--alt']
4401      Return true if the Shift, Control, or Alt modifier keys are held
4402      down, as requested by options.  This is useful in scripting, to
4403      allow some user control over behaviour without having to wait for a
4404      keypress.
4406      Checking key modifier status is only supported on some platforms.
4407      If invoked without any options, the 'keystatus' command returns
4408      true if and only if checking key modifier status is supported.
4410 \x1f
4411 File: grub.info,  Node: linux,  Next: linux16,  Prev: keystatus,  Up: Command-line and menu entry commands
4413 16.3.37 linux
4414 -------------
4416  -- Command: linux file ...
4417      Load a Linux kernel image from FILE.  The rest of the line is
4418      passed verbatim as the "kernel command-line".  Any initrd must be
4419      reloaded after using this command (*note initrd::).
4421      On x86 systems, the kernel will be booted using the 32-bit boot
4422      protocol.  Note that this means that the 'vga=' boot option will
4423      not work; if you want to set a special video mode, you will need to
4424      use GRUB commands such as 'set gfxpayload=1024x768' or 'set
4425      gfxpayload=keep' (to keep the same mode as used in GRUB) instead.
4426      GRUB can automatically detect some uses of 'vga=' and translate
4427      them to appropriate settings of 'gfxpayload'.  The 'linux16'
4428      command (*note linux16::) avoids this restriction.
4430 \x1f
4431 File: grub.info,  Node: linux16,  Next: list_env,  Prev: linux,  Up: Command-line and menu entry commands
4433 16.3.38 linux16
4434 ---------------
4436  -- Command: linux16 file ...
4437      Load a Linux kernel image from FILE in 16-bit mode.  The rest of
4438      the line is passed verbatim as the "kernel command-line".  Any
4439      initrd must be reloaded after using this command (*note
4440      initrd16::).
4442      The kernel will be booted using the traditional 16-bit boot
4443      protocol.  As well as bypassing problems with 'vga=' described in
4444      *note linux::, this permits booting some other programs that
4445      implement the Linux boot protocol for the sake of convenience.
4447      This command is only available on x86 systems.
4449 \x1f
4450 File: grub.info,  Node: list_env,  Next: list_trusted,  Prev: linux16,  Up: Command-line and menu entry commands
4452 16.3.39 list_env
4453 ----------------
4455  -- Command: list_env ['--file' file]
4456      List all variables in the environment block file.  *Note
4457      Environment block::.
4459      The '--file' option overrides the default location of the
4460      environment block.
4462 \x1f
4463 File: grub.info,  Node: list_trusted,  Next: load_env,  Prev: list_env,  Up: Command-line and menu entry commands
4465 16.3.40 list_trusted
4466 --------------------
4468  -- Command: list_trusted
4469      List all public keys trusted by GRUB for validating signatures.
4470      The output is in GPG's v4 key fingerprint format (i.e., the output
4471      of 'gpg --fingerprint').  The least significant four bytes (last
4472      eight hexadecimal digits) can be used as an argument to 'distrust'
4473      (*note distrust::).  *Note Using digital signatures::, for more
4474      information about uses for these keys.
4476 \x1f
4477 File: grub.info,  Node: load_env,  Next: loadfont,  Prev: list_trusted,  Up: Command-line and menu entry commands
4479 16.3.41 load_env
4480 ----------------
4482  -- Command: load_env ['--file' file] ['--skip-sig']
4483           [whitelisted_variable_name] ...
4484      Load all variables from the environment block file into the
4485      environment.  *Note Environment block::.
4487      The '--file' option overrides the default location of the
4488      environment block.
4490      The '--skip-sig' option skips signature checking even when the
4491      value of environment variable 'check_signatures' is set to
4492      'enforce' (*note check_signatures::).
4494      If one or more variable names are provided as arguments, they are
4495      interpreted as a whitelist of variables to load from the
4496      environment block file.  Variables set in the file but not present
4497      in the whitelist are ignored.
4499      The '--skip-sig' option should be used with care, and should always
4500      be used in concert with a whitelist of acceptable variables whose
4501      values should be set.  Failure to employ a carefully constructed
4502      whitelist could result in reading a malicious value into critical
4503      environment variables from the file, such as setting
4504      'check_signatures=no', modifying 'prefix' to boot from an
4505      unexpected location or not at all, etc.
4507      When used with care, '--skip-sig' and the whitelist enable an
4508      administrator to configure a system to boot only signed
4509      configurations, but to allow the user to select from among multiple
4510      configurations, and to enable "one-shot" boot attempts and
4511      "savedefault" behavior.  *Note Using digital signatures::, for more
4512      information.
4514 \x1f
4515 File: grub.info,  Node: loadfont,  Next: loopback,  Prev: load_env,  Up: Command-line and menu entry commands
4517 16.3.42 loadfont
4518 ----------------
4520  -- Command: loadfont file ...
4521      Load specified font files.  Unless absolute pathname is given, FILE
4522      is assumed to be in directory '$prefix/fonts' with suffix '.pf2'
4523      appended.  *Note Fonts: Theme file format.
4525 \x1f
4526 File: grub.info,  Node: loopback,  Next: ls,  Prev: loadfont,  Up: Command-line and menu entry commands
4528 16.3.43 loopback
4529 ----------------
4531  -- Command: loopback ['-d'] device file
4532      Make the device named DEVICE correspond to the contents of the
4533      filesystem image in FILE.  For example:
4535           loopback loop0 /path/to/image
4536           ls (loop0)/
4538      With the '-d' option, delete a device previously created using this
4539      command.
4541 \x1f
4542 File: grub.info,  Node: ls,  Next: lsfonts,  Prev: loopback,  Up: Command-line and menu entry commands
4544 16.3.44 ls
4545 ----------
4547  -- Command: ls [arg ...]
4548      List devices or files.
4550      With no arguments, print all devices known to GRUB.
4552      If the argument is a device name enclosed in parentheses (*note
4553      Device syntax::), then print the name of the filesystem of that
4554      device.
4556      If the argument is a directory given as an absolute file name
4557      (*note File name syntax::), then list the contents of that
4558      directory.
4560 \x1f
4561 File: grub.info,  Node: lsfonts,  Next: lsmod,  Prev: ls,  Up: Command-line and menu entry commands
4563 16.3.45 lsfonts
4564 ---------------
4566  -- Command: lsfonts
4567      List loaded fonts.
4569 \x1f
4570 File: grub.info,  Node: lsmod,  Next: md5sum,  Prev: lsfonts,  Up: Command-line and menu entry commands
4572 16.3.46 lsmod
4573 -------------
4575  -- Command: lsmod
4576      Show list of loaded modules.
4578 \x1f
4579 File: grub.info,  Node: md5sum,  Next: module,  Prev: lsmod,  Up: Command-line and menu entry commands
4581 16.3.47 md5sum
4582 --------------
4584  -- Command: md5sum arg ...
4585      Alias for 'hashsum --hash md5 arg ...'.  See command 'hashsum'
4586      (*note hashsum::) for full description.
4588 \x1f
4589 File: grub.info,  Node: module,  Next: multiboot,  Prev: md5sum,  Up: Command-line and menu entry commands
4591 16.3.48 module
4592 --------------
4594  -- Command: module [--nounzip] file [arguments]
4595      Load a module for multiboot kernel image.  The rest of the line is
4596      passed verbatim as the module command line.
4598 \x1f
4599 File: grub.info,  Node: multiboot,  Next: nativedisk,  Prev: module,  Up: Command-line and menu entry commands
4601 16.3.49 multiboot
4602 -----------------
4604  -- Command: multiboot [--quirk-bad-kludge]
4605           [--quirk-modules-after-kernel] file ...
4606      Load a multiboot kernel image from FILE.  The rest of the line is
4607      passed verbatim as the "kernel command-line".  Any module must be
4608      reloaded after using this command (*note module::).
4610      Some kernels have known problems.  You need to specify -quirk-* for
4611      those.  -quirk-bad-kludge is a problem seen in several products
4612      that they include loading kludge information with invalid data in
4613      ELF file.  GRUB prior to 0.97 and some custom builds prefered ELF
4614      information while 0.97 and GRUB 2 use kludge.  Use this option to
4615      ignore kludge.  Known affected systems: old Solaris, SkyOS.
4617      -quirk-modules-after-kernel is needed for kernels which load at
4618      relatively high address e.g.  16MiB mark and can't cope with
4619      modules stuffed between 1MiB mark and beginning of the kernel.
4620      Known afftected systems: VMWare.
4622 \x1f
4623 File: grub.info,  Node: nativedisk,  Next: normal,  Prev: multiboot,  Up: Command-line and menu entry commands
4625 16.3.50 nativedisk
4626 ------------------
4628  -- Command: nativedisk
4629      Switch from firmware disk drivers to native ones.  Really useful
4630      only on platforms where both firmware and native disk drives are
4631      available.  Currently i386-pc, i386-efi, i386-ieee1275 and
4632      x86_64-efi.
4634 \x1f
4635 File: grub.info,  Node: normal,  Next: normal_exit,  Prev: nativedisk,  Up: Command-line and menu entry commands
4637 16.3.51 normal
4638 --------------
4640  -- Command: normal [file]
4641      Enter normal mode and display the GRUB menu.
4643      In normal mode, commands, filesystem modules, and cryptography
4644      modules are automatically loaded, and the full GRUB script parser
4645      is available.  Other modules may be explicitly loaded using
4646      'insmod' (*note insmod::).
4648      If a FILE is given, then commands will be read from that file.
4649      Otherwise, they will be read from '$prefix/grub.cfg' if it exists.
4651      'normal' may be called from within normal mode, creating a nested
4652      environment.  It is more usual to use 'configfile' (*note
4653      configfile::) for this.
4655 \x1f
4656 File: grub.info,  Node: normal_exit,  Next: parttool,  Prev: normal,  Up: Command-line and menu entry commands
4658 16.3.52 normal_exit
4659 -------------------
4661  -- Command: normal_exit
4662      Exit normal mode (*note normal::).  If this instance of normal mode
4663      was not nested within another one, then return to rescue mode.
4665 \x1f
4666 File: grub.info,  Node: parttool,  Next: password,  Prev: normal_exit,  Up: Command-line and menu entry commands
4668 16.3.53 parttool
4669 ----------------
4671  -- Command: parttool partition commands
4672      Make various modifications to partition table entries.
4674      Each COMMAND is either a boolean option, in which case it must be
4675      followed with '+' or '-' (with no intervening space) to enable or
4676      disable that option, or else it takes a value in the form
4677      'COMMAND=VALUE'.
4679      Currently, 'parttool' is only useful on DOS partition tables (also
4680      known as Master Boot Record, or MBR). On these partition tables,
4681      the following commands are available:
4683      'boot' (boolean)
4684           When enabled, this makes the selected partition be the active
4685           (bootable) partition on its disk, clearing the active flag on
4686           all other partitions.  This command is limited to _primary_
4687           partitions.
4689      'type' (value)
4690           Change the type of an existing partition.  The value must be a
4691           number in the range 0-0xFF (prefix with '0x' to enter it in
4692           hexadecimal).
4694      'hidden' (boolean)
4695           When enabled, this hides the selected partition by setting the
4696           "hidden" bit in its partition type code; when disabled,
4697           unhides the selected partition by clearing this bit.  This is
4698           useful only when booting DOS or Wwindows and multiple primary
4699           FAT partitions exist in one disk.  See also *note
4700           DOS/Windows::.
4702 \x1f
4703 File: grub.info,  Node: password,  Next: password_pbkdf2,  Prev: parttool,  Up: Command-line and menu entry commands
4705 16.3.54 password
4706 ----------------
4708  -- Command: password user clear-password
4709      Define a user named USER with password CLEAR-PASSWORD.  *Note
4710      Security::.
4712 \x1f
4713 File: grub.info,  Node: password_pbkdf2,  Next: play,  Prev: password,  Up: Command-line and menu entry commands
4715 16.3.55 password_pbkdf2
4716 -----------------------
4718  -- Command: password_pbkdf2 user hashed-password
4719      Define a user named USER with password hash HASHED-PASSWORD.  Use
4720      'grub-mkpasswd-pbkdf2' (*note Invoking grub-mkpasswd-pbkdf2::) to
4721      generate password hashes.  *Note Security::.
4723 \x1f
4724 File: grub.info,  Node: play,  Next: probe,  Prev: password_pbkdf2,  Up: Command-line and menu entry commands
4726 16.3.56 play
4727 ------------
4729  -- Command: play file | tempo [pitch1 duration1] [pitch2 duration2] ...
4730      Plays a tune
4732      If the argument is a file name (*note File name syntax::), play the
4733      tune recorded in it.  The file format is first the tempo as an
4734      unsigned 32bit little-endian number, then pairs of unsigned 16bit
4735      little-endian numbers for pitch and duration pairs.
4737      If the arguments are a series of numbers, play the inline tune.
4739      The tempo is the base for all note durations.  60 gives a 1-second
4740      base, 120 gives a half-second base, etc.  Pitches are Hz.  Set
4741      pitch to 0 to produce a rest.
4743 \x1f
4744 File: grub.info,  Node: probe,  Next: pxe_unload,  Prev: play,  Up: Command-line and menu entry commands
4746 16.3.57 probe
4747 -------------
4749  -- Command: probe ['--set' var]
4750           '--driver'|'--partmap'|'--fs'|'--fs-uuid'|'--label' device
4751      Retrieve device information.  If option '--set' is given, assign
4752      result to variable VAR, otherwise print information on the screen.
4754 \x1f
4755 File: grub.info,  Node: pxe_unload,  Next: read,  Prev: probe,  Up: Command-line and menu entry commands
4757 16.3.58 pxe_unload
4758 ------------------
4760  -- Command: pxe_unload
4761      Unload the PXE environment (*note Network::).
4763      This command is only available on PC BIOS systems.
4765 \x1f
4766 File: grub.info,  Node: read,  Next: reboot,  Prev: pxe_unload,  Up: Command-line and menu entry commands
4768 16.3.59 read
4769 ------------
4771  -- Command: read [var]
4772      Read a line of input from the user.  If an environment variable VAR
4773      is given, set that environment variable to the line of input that
4774      was read, with no terminating newline.
4776 \x1f
4777 File: grub.info,  Node: reboot,  Next: regexp,  Prev: read,  Up: Command-line and menu entry commands
4779 16.3.60 reboot
4780 --------------
4782  -- Command: reboot
4783      Reboot the computer.
4785 \x1f
4786 File: grub.info,  Node: regexp,  Next: rmmod,  Prev: reboot,  Up: Command-line and menu entry commands
4788 16.3.61 regexp
4789 --------------
4791  -- Command: regexp ['--set' [number:]var] regexp string
4792      Test if regular expression REGEXP matches STRING.  Supported
4793      regular expressions are POSIX.2 Extended Regular Expressions.  If
4794      option '--set' is given, store NUMBERth matched subexpression in
4795      variable VAR.  Subexpressions are numbered in order of their
4796      opening parentheses starting from '1'.  NUMBER defaults to '1'.
4798 \x1f
4799 File: grub.info,  Node: rmmod,  Next: save_env,  Prev: regexp,  Up: Command-line and menu entry commands
4801 16.3.62 rmmod
4802 -------------
4804  -- Command: rmmod module
4805      Remove a loaded MODULE.
4807 \x1f
4808 File: grub.info,  Node: save_env,  Next: search,  Prev: rmmod,  Up: Command-line and menu entry commands
4810 16.3.63 save_env
4811 ----------------
4813  -- Command: save_env ['--file' file] var ...
4814      Save the named variables from the environment to the environment
4815      block file.  *Note Environment block::.
4817      The '--file' option overrides the default location of the
4818      environment block.
4820      This command will operate successfully even when environment
4821      variable 'check_signatures' is set to 'enforce' (*note
4822      check_signatures::), since it writes to disk and does not alter the
4823      behavior of GRUB based on any contents of disk that have been read.
4824      It is possible to modify a digitally signed environment block file
4825      from within GRUB using this command, such that its signature will
4826      no longer be valid on subsequent boots.  Care should be taken in
4827      such advanced configurations to avoid rendering the system
4828      unbootable.  *Note Using digital signatures::, for more
4829      information.
4831 \x1f
4832 File: grub.info,  Node: search,  Next: sendkey,  Prev: save_env,  Up: Command-line and menu entry commands
4834 16.3.64 search
4835 --------------
4837  -- Command: search ['--file'|'--label'|'--fs-uuid'] ['--set' [var]]
4838           ['--no-floppy'] name
4839      Search devices by file ('-f', '--file'), filesystem label ('-l',
4840      '--label'), or filesystem UUID ('-u', '--fs-uuid').
4842      If the '--set' option is used, the first device found is set as the
4843      value of environment variable VAR.  The default variable is 'root'.
4845      The '--no-floppy' option prevents searching floppy devices, which
4846      can be slow.
4848      The 'search.file', 'search.fs_label', and 'search.fs_uuid' commands
4849      are aliases for 'search --file', 'search --label', and 'search
4850      --fs-uuid' respectively.
4852 \x1f
4853 File: grub.info,  Node: sendkey,  Next: set,  Prev: search,  Up: Command-line and menu entry commands
4855 16.3.65 sendkey
4856 ---------------
4858  -- Command: sendkey
4859           ['--num'|'--caps'|'--scroll'|'--insert'|'--pause'|'--left-shift'|'--right-shift'|'--sysrq'|'--numkey'|'--capskey'|'--scrollkey'|'--insertkey'|'--left-alt'|'--right-alt'|'--left-ctrl'|'--right-ctrl'
4860           'on'|'off']... ['no-led'] keystroke
4861      Insert keystrokes into the keyboard buffer when booting.  Sometimes
4862      an operating system or chainloaded boot loader requires particular
4863      keys to be pressed: for example, one might need to press a
4864      particular key to enter "safe mode", or when chainloading another
4865      boot loader one might send keystrokes to it to navigate its menu.
4867      You may provide up to 16 keystrokes (the length of the BIOS
4868      keyboard buffer).  Keystroke names may be upper-case or lower-case
4869      letters, digits, or taken from the following table:
4871      Name                          Key
4872      -------------------------------------------------------------------
4873      escape                        Escape
4874      exclam                        !
4875      at                            @
4876      numbersign                    #
4877      dollar                        $
4878      percent                       %
4879      caret                         ^
4880      ampersand                     &
4881      asterisk                      *
4882      parenleft                     (
4883      parenright                    )
4884      minus                         -
4885      underscore                    _
4886      equal                         =
4887      plus                          +
4888      backspace                     Backspace
4889      tab                           Tab
4890      bracketleft                   [
4891      braceleft                     {
4892      bracketright                  ]
4893      braceright                    }
4894      enter                         Enter
4895      control                       press and release Control
4896      semicolon                     ;
4897      colon                         :
4898      quote                         '
4899      doublequote                   "
4900      backquote                     '
4901      tilde                         ~
4902      shift                         press and release left Shift
4903      backslash                     \
4904      bar                           |
4905      comma                         ,
4906      less                          <
4907      period                        .
4908      greater                       >
4909      slash                         /
4910      question                      ?
4911      rshift                        press and release right Shift
4912      alt                           press and release Alt
4913      space                         space bar
4914      capslock                      Caps Lock
4915      F1                            F1
4916      F2                            F2
4917      F3                            F3
4918      F4                            F4
4919      F5                            F5
4920      F6                            F6
4921      F7                            F7
4922      F8                            F8
4923      F9                            F9
4924      F10                           F10
4925      F11                           F11
4926      F12                           F12
4927      num1                          1 (numeric keypad)
4928      num2                          2 (numeric keypad)
4929      num3                          3 (numeric keypad)
4930      num4                          4 (numeric keypad)
4931      num5                          5 (numeric keypad)
4932      num6                          6 (numeric keypad)
4933      num7                          7 (numeric keypad)
4934      num8                          8 (numeric keypad)
4935      num9                          9 (numeric keypad)
4936      num0                          0 (numeric keypad)
4937      numperiod                     .  (numeric keypad)
4938      numend                        End (numeric keypad)
4939      numdown                       Down (numeric keypad)
4940      numpgdown                     Page Down (numeric keypad)
4941      numleft                       Left (numeric keypad)
4942      numcenter                     5 with Num Lock inactive (numeric
4943                                    keypad)
4944      numright                      Right (numeric keypad)
4945      numhome                       Home (numeric keypad)
4946      numup                         Up (numeric keypad)
4947      numpgup                       Page Up (numeric keypad)
4948      numinsert                     Insert (numeric keypad)
4949      numdelete                     Delete (numeric keypad)
4950      numasterisk                   * (numeric keypad)
4951      numminus                      - (numeric keypad)
4952      numplus                       + (numeric keypad)
4953      numslash                      / (numeric keypad)
4954      numenter                      Enter (numeric keypad)
4955      delete                        Delete
4956      insert                        Insert
4957      home                          Home
4958      end                           End
4959      pgdown                        Page Down
4960      pgup                          Page Up
4961      down                          Down
4962      up                            Up
4963      left                          Left
4964      right                         Right
4966      As well as keystrokes, the 'sendkey' command takes various options
4967      that affect the BIOS keyboard status flags.  These options take an
4968      'on' or 'off' parameter, specifying that the corresponding status
4969      flag be set or unset; omitting the option for a given status flag
4970      will leave that flag at its initial state at boot.  The '--num',
4971      '--caps', '--scroll', and '--insert' options emulate setting the
4972      corresponding mode, while the '--numkey', '--capskey',
4973      '--scrollkey', and '--insertkey' options emulate pressing and
4974      holding the corresponding key.  The other status flag options are
4975      self-explanatory.
4977      If the '--no-led' option is given, the status flag options will
4978      have no effect on keyboard LEDs.
4980      If the 'sendkey' command is given multiple times, then only the
4981      last invocation has any effect.
4983      Since 'sendkey' manipulates the BIOS keyboard buffer, it may cause
4984      hangs, reboots, or other misbehaviour on some systems.  If the
4985      operating system or boot loader that runs after GRUB uses its own
4986      keyboard driver rather than the BIOS keyboard functions, then
4987      'sendkey' will have no effect.
4989      This command is only available on PC BIOS systems.
4991 \x1f
4992 File: grub.info,  Node: set,  Next: sha1sum,  Prev: sendkey,  Up: Command-line and menu entry commands
4994 16.3.66 set
4995 -----------
4997  -- Command: set [envvar=value]
4998      Set the environment variable ENVVAR to VALUE.  If invoked with no
4999      arguments, print all environment variables with their values.
5001 \x1f
5002 File: grub.info,  Node: sha1sum,  Next: sha256sum,  Prev: set,  Up: Command-line and menu entry commands
5004 16.3.67 sha1sum
5005 ---------------
5007  -- Command: sha1sum arg ...
5008      Alias for 'hashsum --hash sha1 arg ...'.  See command 'hashsum'
5009      (*note hashsum::) for full description.
5011 \x1f
5012 File: grub.info,  Node: sha256sum,  Next: sha512sum,  Prev: sha1sum,  Up: Command-line and menu entry commands
5014 16.3.68 sha256sum
5015 -----------------
5017  -- Command: sha256sum arg ...
5018      Alias for 'hashsum --hash sha256 arg ...'.  See command 'hashsum'
5019      (*note hashsum::) for full description.
5021 \x1f
5022 File: grub.info,  Node: sha512sum,  Next: sleep,  Prev: sha256sum,  Up: Command-line and menu entry commands
5024 16.3.69 sha512sum
5025 -----------------
5027  -- Command: sha512sum arg ...
5028      Alias for 'hashsum --hash sha512 arg ...'.  See command 'hashsum'
5029      (*note hashsum::) for full description.
5031 \x1f
5032 File: grub.info,  Node: sleep,  Next: source,  Prev: sha512sum,  Up: Command-line and menu entry commands
5034 16.3.70 sleep
5035 -------------
5037  -- Command: sleep ['--verbose'] ['--interruptible'] count
5038      Sleep for COUNT seconds.  If option '--interruptible' is given,
5039      allow <ESC> to interrupt sleep.  With '--verbose' show countdown of
5040      remaining seconds.  Exit code is set to 0 if timeout expired and to
5041      1 if timeout was interrupted by <ESC>.
5043 \x1f
5044 File: grub.info,  Node: source,  Next: test,  Prev: sleep,  Up: Command-line and menu entry commands
5046 16.3.71 source
5047 --------------
5049  -- Command: source file
5050      Read FILE as a configuration file, as if its contents had been
5051      incorporated directly into the sourcing file.  Unlike 'configfile'
5052      (*note configfile::), this executes the contents of FILE without
5053      changing context: any environment variable changes made by the
5054      commands in FILE will be preserved after 'source' returns, and the
5055      menu will not be shown immediately.
5057 \x1f
5058 File: grub.info,  Node: test,  Next: true,  Prev: source,  Up: Command-line and menu entry commands
5060 16.3.72 test
5061 ------------
5063  -- Command: test expression
5064      Evaluate EXPRESSION and return zero exit status if result is true,
5065      non zero status otherwise.
5067      EXPRESSION is one of:
5069      STRING1 '==' STRING2
5070           the strings are equal
5071      STRING1 '!=' STRING2
5072           the strings are not equal
5073      STRING1 '<' STRING2
5074           STRING1 is lexicographically less than STRING2
5075      STRING1 '<=' STRING2
5076           STRING1 is lexicographically less or equal than STRING2
5077      STRING1 '>' STRING2
5078           STRING1 is lexicographically greater than STRING2
5079      STRING1 '>=' STRING2
5080           STRING1 is lexicographically greater or equal than STRING2
5081      INTEGER1 '-eq' INTEGER2
5082           INTEGER1 is equal to INTEGER2
5083      INTEGER1 '-ge' INTEGER2
5084           INTEGER1 is greater than or equal to INTEGER2
5085      INTEGER1 '-gt' INTEGER2
5086           INTEGER1 is greater than INTEGER2
5087      INTEGER1 '-le' INTEGER2
5088           INTEGER1 is less than or equal to INTEGER2
5089      INTEGER1 '-lt' INTEGER2
5090           INTEGER1 is less than INTEGER2
5091      INTEGER1 '-ne' INTEGER2
5092           INTEGER1 is not equal to INTEGER2
5093      PREFIXINTEGER1 '-pgt' PREFIXINTEGER2
5094           INTEGER1 is greater than INTEGER2 after stripping off common
5095           non-numeric PREFIX.
5096      PREFIXINTEGER1 '-plt' PREFIXINTEGER2
5097           INTEGER1 is less than INTEGER2 after stripping off common
5098           non-numeric PREFIX.
5099      FILE1 '-nt' FILE2
5100           FILE1 is newer than FILE2 (modification time).  Optionally
5101           numeric BIAS may be directly appended to '-nt' in which case
5102           it is added to the first file modification time.
5103      FILE1 '-ot' FILE2
5104           FILE1 is older than FILE2 (modification time).  Optionally
5105           numeric BIAS may be directly appended to '-ot' in which case
5106           it is added to the first file modification time.
5107      '-d' FILE
5108           FILE exists and is a directory
5109      '-e' FILE
5110           FILE exists
5111      '-f' FILE
5112           FILE exists and is not a directory
5113      '-s' FILE
5114           FILE exists and has a size greater than zero
5115      '-n' STRING
5116           the length of STRING is nonzero
5117      STRING
5118           STRING is equivalent to '-n STRING'
5119      '-z' STRING
5120           the length of STRING is zero
5121      '(' EXPRESSION ')'
5122           EXPRESSION is true
5123      '!' EXPRESSION
5124           EXPRESSION is false
5125      EXPRESSION1 '-a' EXPRESSION2
5126           both EXPRESSION1 and EXPRESSION2 are true
5127      EXPRESSION1 '-o' EXPRESSION2
5128           either EXPRESSION1 or EXPRESSION2 is true
5130 \x1f
5131 File: grub.info,  Node: true,  Next: trust,  Prev: test,  Up: Command-line and menu entry commands
5133 16.3.73 true
5134 ------------
5136  -- Command: true
5137      Do nothing, successfully.  This is mainly useful in control
5138      constructs such as 'if' and 'while' (*note Shell-like scripting::).
5140 \x1f
5141 File: grub.info,  Node: trust,  Next: unset,  Prev: true,  Up: Command-line and menu entry commands
5143 16.3.74 trust
5144 -------------
5146  -- Command: trust ['--skip-sig'] pubkey_file
5147      Read public key from PUBKEY_FILE and add it to GRUB's internal list
5148      of trusted public keys.  These keys are used to validate digital
5149      signatures when environment variable 'check_signatures' is set to
5150      'enforce'.  Note that if 'check_signatures' is set to 'enforce'
5151      when 'trust' executes, then PUBKEY_FILE must itself be properly
5152      signed.  The '--skip-sig' option can be used to disable
5153      signature-checking when reading PUBKEY_FILE itself.  It is expected
5154      that '--skip-sig' is useful for testing and manual booting.  *Note
5155      Using digital signatures::, for more information.
5157 \x1f
5158 File: grub.info,  Node: unset,  Next: uppermem,  Prev: trust,  Up: Command-line and menu entry commands
5160 16.3.75 unset
5161 -------------
5163  -- Command: unset envvar
5164      Unset the environment variable ENVVAR.
5166 \x1f
5167 File: grub.info,  Node: uppermem,  Next: verify_detached,  Prev: unset,  Up: Command-line and menu entry commands
5169 16.3.76 uppermem
5170 ----------------
5172 This command is not yet implemented for GRUB 2, although it is planned.
5174 \x1f
5175 File: grub.info,  Node: verify_detached,  Next: videoinfo,  Prev: uppermem,  Up: Command-line and menu entry commands
5177 16.3.77 verify_detached
5178 -----------------------
5180  -- Command: verify_detached ['--skip-sig'] file signature_file
5181           [pubkey_file]
5182      Verifies a GPG-style detached signature, where the signed file is
5183      FILE, and the signature itself is in file SIGNATURE_FILE.
5184      Optionally, a specific public key to use can be specified using
5185      PUBKEY_FILE.  When environment variable 'check_signatures' is set
5186      to 'enforce', then PUBKEY_FILE must itself be properly signed by an
5187      already-trusted key.  An unsigned PUBKEY_FILE can be loaded by
5188      specifying '--skip-sig'.  If PUBKEY_FILE is omitted, then public
5189      keys from GRUB's trusted keys (*note list_trusted::, *note trust::,
5190      and *note distrust::) are tried.
5192      Exit code '$?' is set to 0 if the signature validates successfully.
5193      If validation fails, it is set to a non-zero value.  *Note Using
5194      digital signatures::, for more information.
5196 \x1f
5197 File: grub.info,  Node: videoinfo,  Prev: verify_detached,  Up: Command-line and menu entry commands
5199 16.3.78 videoinfo
5200 -----------------
5202  -- Command: videoinfo [[WxH]xD]
5203      List available video modes.  If resolution is given, show only
5204      matching modes.
5206 \x1f
5207 File: grub.info,  Node: Networking commands,  Prev: Command-line and menu entry commands,  Up: Commands
5209 16.4 The list of networking commands
5210 ====================================
5212 * Menu:
5214 * net_add_addr::                Add a network address
5215 * net_add_dns::                 Add a DNS server
5216 * net_add_route::               Add routing entry
5217 * net_bootp::                   Perform a bootp autoconfiguration
5218 * net_del_addr::                Remove IP address from interface
5219 * net_del_dns::                 Remove a DNS server
5220 * net_del_route::               Remove a route entry
5221 * net_get_dhcp_option::         Retrieve DHCP options
5222 * net_ipv6_autoconf::           Perform IPv6 autoconfiguration
5223 * net_ls_addr::                 List interfaces
5224 * net_ls_cards::                List network cards
5225 * net_ls_dns::                  List DNS servers
5226 * net_ls_routes::               List routing entries
5227 * net_nslookup::                Perform a DNS lookup
5229 \x1f
5230 File: grub.info,  Node: net_add_addr,  Next: net_add_dns,  Up: Networking commands
5232 16.4.1 net_add_addr
5233 -------------------
5235  -- Command: net_add_addr INTERFACE CARD ADDRESS
5236      Configure additional network INTERFACE with ADDRESS on a network
5237      CARD.  ADDRESS can be either IP in dotted decimal notation, or
5238      symbolic name which is resolved using DNS lookup.  If successful,
5239      this command also adds local link routing entry to the default
5240      subnet of ADDRESS with name INTERFACE':local' via INTERFACE.
5242 \x1f
5243 File: grub.info,  Node: net_add_dns,  Next: net_add_route,  Prev: net_add_addr,  Up: Networking commands
5245 16.4.2 net_add_dns
5246 ------------------
5248  -- Command: net_add_dns SERVER
5249      Resolve SERVER IP address and add to the list of DNS servers used
5250      during name lookup.
5252 \x1f
5253 File: grub.info,  Node: net_add_route,  Next: net_bootp,  Prev: net_add_dns,  Up: Networking commands
5255 16.4.3 net_add_route
5256 --------------------
5258  -- Command: net_add_route SHORTNAME IP[/PREFIX] [INTERFACE | 'gw'
5259           GATEWAY]
5260      Add route to network with address IP as modified by PREFIX via
5261      either local INTERFACE or GATEWAY.  PREFIX is optional and defaults
5262      to 32 for IPv4 address and 128 for IPv6 address.  Route is
5263      identified by SHORTNAME which can be used to remove it (*note
5264      net_del_route::).
5266 \x1f
5267 File: grub.info,  Node: net_bootp,  Next: net_del_addr,  Prev: net_add_route,  Up: Networking commands
5269 16.4.4 net_bootp
5270 ----------------
5272  -- Command: net_bootp [CARD]
5273      Perform configuration of CARD using DHCP protocol.  If no card name
5274      is specified, try to configure all existing cards.  If
5275      configuration was successful, interface with name CARD':dhcp' and
5276      configured address is added to CARD.  If server provided gateway
5277      information in DHCP ACK packet, it is added as route entry with the
5278      name CARD':dhcp:gw'.  Additionally the following DHCP options are
5279      recognized and processed:
5281      '1 (Subnet Mask)'
5282           Used to calculate network local routing entry for interface
5283           CARD':dhcp'.
5284      '3 (Router)'
5285           Adds default route entry with the name CARD':dhcp:default' via
5286           gateway from DHCP option.  Note that only option with single
5287           route is accepted.
5288      '6 (Domain Name Server)'
5289           Adds all servers from option value to the list of servers used
5290           during name resolution.
5291      '12 (Host Name)'
5292           Sets environment variable 'net_'<CARD>'_dhcp_hostname' (*note
5293           net_<INTERFACE>_hostname::) to the value of option.
5294      '15 (Domain Name)'
5295           Sets environment variable 'net_'<CARD>'_dhcp_domain' (*note
5296           net_<INTERFACE>_domain::) to the value of option.
5297      '17 (Root Path)'
5298           Sets environment variable 'net_'<CARD>'_dhcp_rootpath' (*note
5299           net_<INTERFACE>_rootpath::) to the value of option.
5300      '18 (Extensions Path)'
5301           Sets environment variable 'net_'<CARD>'_dhcp_extensionspath'
5302           (*note net_<INTERFACE>_extensionspath::) to the value of
5303           option.
5305 \x1f
5306 File: grub.info,  Node: net_del_addr,  Next: net_del_dns,  Prev: net_bootp,  Up: Networking commands
5308 16.4.5 net_del_addr
5309 -------------------
5311  -- Command: net_del_addr INTERFACE
5312      Remove configured INTERFACE with associated address.
5314 \x1f
5315 File: grub.info,  Node: net_del_dns,  Next: net_del_route,  Prev: net_del_addr,  Up: Networking commands
5317 16.4.6 net_del_dns
5318 ------------------
5320  -- Command: net_del_dns ADDRESS
5321      Remove ADDRESS from list of servers used during name lookup.
5323 \x1f
5324 File: grub.info,  Node: net_del_route,  Next: net_get_dhcp_option,  Prev: net_del_dns,  Up: Networking commands
5326 16.4.7 net_del_route
5327 --------------------
5329  -- Command: net_del_route SHORTNAME
5330      Remove route entry identified by SHORTNAME.
5332 \x1f
5333 File: grub.info,  Node: net_get_dhcp_option,  Next: net_ipv6_autoconf,  Prev: net_del_route,  Up: Networking commands
5335 16.4.8 net_get_dhcp_option
5336 --------------------------
5338  -- Command: net_get_dhcp_option VAR INTERFACE NUMBER TYPE
5339      Request DHCP option NUMBER of TYPE via INTERFACE.  TYPE can be one
5340      of 'string', 'number' or 'hex'.  If option is found, assign its
5341      value to variable VAR.  Values of types 'number' and 'hex' are
5342      converted to string representation.
5344 \x1f
5345 File: grub.info,  Node: net_ipv6_autoconf,  Next: net_ls_addr,  Prev: net_get_dhcp_option,  Up: Networking commands
5347 16.4.9 net_ipv6_autoconf
5348 ------------------------
5350  -- Command: net_ipv6_autoconf [CARD]
5351      Perform IPv6 autoconfiguration by adding to the CARD interface with
5352      name CARD':link' and link local MAC-based address.  If no card is
5353      specified, perform autoconfiguration for all existing cards.
5355 \x1f
5356 File: grub.info,  Node: net_ls_addr,  Next: net_ls_cards,  Prev: net_ipv6_autoconf,  Up: Networking commands
5358 16.4.10 net_ls_addr
5359 -------------------
5361  -- Command: net_ls_addr
5362      List all configured interfaces with their MAC and IP addresses.
5364 \x1f
5365 File: grub.info,  Node: net_ls_cards,  Next: net_ls_dns,  Prev: net_ls_addr,  Up: Networking commands
5367 16.4.11 net_ls_cards
5368 --------------------
5370  -- Command: net_ls_cards
5371      List all detected network cards with their MAC address.
5373 \x1f
5374 File: grub.info,  Node: net_ls_dns,  Next: net_ls_routes,  Prev: net_ls_cards,  Up: Networking commands
5376 16.4.12 net_ls_dns
5377 ------------------
5379  -- Command: net_ls_dns
5380      List addresses of DNS servers used during name lookup.
5382 \x1f
5383 File: grub.info,  Node: net_ls_routes,  Next: net_nslookup,  Prev: net_ls_dns,  Up: Networking commands
5385 16.4.13 net_ls_routes
5386 ---------------------
5388  -- Command: net_ls_routes
5389      List routing entries.
5391 \x1f
5392 File: grub.info,  Node: net_nslookup,  Prev: net_ls_routes,  Up: Networking commands
5394 16.4.14 net_nslookup
5395 --------------------
5397  -- Command: net_nslookup NAME [SERVER]
5398      Resolve address of NAME using DNS server SERVER.  If no server is
5399      given, use default list of servers.
5401 \x1f
5402 File: grub.info,  Node: Internationalisation,  Next: Security,  Prev: Commands,  Up: Top
5404 17 Internationalisation
5405 ***********************
5407 17.1 Charset
5408 ============
5410 GRUB uses UTF-8 internally other than in rendering where some
5411 GRUB-specific appropriate representation is used.  All text files
5412 (including config) are assumed to be encoded in UTF-8.
5414 17.2 Filesystems
5415 ================
5417 NTFS, JFS, UDF, HFS+, exFAT, long filenames in FAT, Joliet part of
5418 ISO9660 are treated as UTF-16 as per specification.  AFS and BFS are
5419 read as UTF-8, again according to specification.  BtrFS, cpio, tar,
5420 squash4, minix, minix2, minix3, ROMFS, ReiserFS, XFS, ext2, ext3, ext4,
5421 FAT (short names), RockRidge part of ISO9660, nilfs2, UFS1, UFS2 and ZFS
5422 are assumed to be UTF-8.  This might be false on systems configured with
5423 legacy charset but as long as the charset used is superset of ASCII you
5424 should be able to access ASCII-named files.  And it's recommended to
5425 configure your system to use UTF-8 to access the filesystem, convmv may
5426 help with migration.  ISO9660 (plain) filenames are specified as being
5427 ASCII or being described with unspecified escape sequences.  GRUB
5428 assumes that the ISO9660 names are UTF-8 (since any ASCII is valid
5429 UTF-8).  There are some old CD-ROMs which use CP437 in non-compliant
5430 way.  You're still able to access files with names containing only ASCII
5431 characters on such filesystems though.  You're also able to access any
5432 file if the filesystem contains valid Joliet (UTF-16) or RockRidge
5433 (UTF-8).  AFFS, SFS and HFS never use unicode and GRUB assumes them to
5434 be in Latin1, Latin1 and MacRoman respectively.  GRUB handles filesystem
5435 case-insensitivity however no attempt is performed at case conversion of
5436 international characters so e.g.  a file named lowercase greek alpha is
5437 treated as different from the one named as uppercase alpha.  The
5438 filesystems in questions are NTFS (except POSIX namespace), HFS+
5439 (configurable at mkfs time, default insensitive), SFS (configurable at
5440 mkfs time, default insensitive), JFS (configurable at mkfs time, default
5441 sensitive), HFS, AFFS, FAT, exFAT and ZFS (configurable on per-subvolume
5442 basis by property "casesensitivity", default sensitive).  On ZFS
5443 subvolumes marked as case insensitive files containing lowercase
5444 international characters are inaccessible.  Also like all supported
5445 filesystems except HFS+ and ZFS (configurable on per-subvolume basis by
5446 property "normalization", default none) GRUB makes no attempt at check
5447 of canonical equivalence so a file name u-diaresis is treated as
5448 distinct from u+combining diaresis.  This however means that in order to
5449 access file on HFS+ its name must be specified in normalisation form D.
5450 On normalized ZFS subvolumes filenames out of normalisation are
5451 inaccessible.
5453 17.3 Output terminal
5454 ====================
5456 Firmware output console "console" on ARC and IEEE1275 are limited to
5457 ASCII.
5459    BIOS firmware console and VGA text are limited to ASCII and some
5460 pseudographics.
5462    None of above mentioned is appropriate for displaying international
5463 and any unsupported character is replaced with question mark except
5464 pseudographics which we attempt to approximate with ASCII.
5466    EFI console on the other hand nominally supports UTF-16 but actual
5467 language coverage depends on firmware and may be very limited.
5469    The encoding used on serial can be chosen with 'terminfo' as either
5470 ASCII, UTF-8 or "visual UTF-8".  Last one is against the specification
5471 but results in correct rendering of right-to-left on some readers which
5472 don't have own bidi implementation.
5474    On emu GRUB checks if charset is UTF-8 and uses it if so and uses
5475 ASCII otherwise.
5477    When using gfxterm or gfxmenu GRUB itself is responsible for
5478 rendering the text.  In this case GRUB is limited by loaded fonts.  If
5479 fonts contain all required characters then bidirectional text, cursive
5480 variants and combining marks other than enclosing, half (e.g.  left half
5481 tilde or combining overline) and double ones.  Ligatures aren't
5482 supported though.  This should cover European, Middle Eastern (if you
5483 don't mind lack of lam-alif ligature in Arabic) and East Asian scripts.
5484 Notable unsupported scripts are Brahmic family and derived as well as
5485 Mongolian, Tifinagh, Korean Jamo (precomposed characters have no
5486 problem) and tonal writing (2e5-2e9).  GRUB also ignores deprecated (as
5487 specified in Unicode) characters (e.g.  tags).  GRUB also doesn't handle
5488 so called "annotation characters" If you can complete either of two
5489 lists or, better, propose a patch to improve rendering, please contact
5490 developer team.
5492 17.4 Input terminal
5493 ===================
5495 Firmware console on BIOS, IEEE1275 and ARC doesn't allow you to enter
5496 non-ASCII characters.  EFI specification allows for such but author is
5497 unaware of any actual implementations.  Serial input is currently
5498 limited for latin1 (unlikely to change).  Own keyboard implementations
5499 (at_keyboard and usb_keyboard) supports any key but work on
5500 one-char-per-keystroke.  So no dead keys or advanced input method.  Also
5501 there is no keymap change hotkey.  In practice it makes difficult to
5502 enter any text using non-Latin alphabet.  Moreover all current input
5503 consumers are limited to ASCII.
5505 17.5 Gettext
5506 ============
5508 GRUB supports being translated.  For this you need to have language *.mo
5509 files in $prefix/locale, load gettext module and set "lang" variable.
5511 17.6 Regexp
5512 ===========
5514 Regexps work on unicode characters, however no attempt at checking
5515 cannonical equivalence has been made.  Moreover the classes like
5516 [:alpha:] match only ASCII subset.
5518 17.7 Other
5519 ==========
5521 Currently GRUB always uses YEAR-MONTH-DAY HOUR:MINUTE:SECOND [WEEKDAY]
5522 24-hour datetime format but weekdays are translated.  GRUB always uses
5523 the decimal number format with [0-9] as digits and .  as descimal
5524 separator and no group separator.  IEEE1275 aliases are matched
5525 case-insensitively except non-ASCII which is matched as binary.  Similar
5526 behaviour is for matching OSBundleRequired.  Since IEEE1275 aliases and
5527 OSBundleRequired don't contain any non-ASCII it should never be a
5528 problem in practice.  Case-sensitive identifiers are matched as raw
5529 strings, no canonical equivalence check is performed.  Case-insenstive
5530 identifiers are matched as RAW but additionally [a-z] is equivalent to
5531 [A-Z]. GRUB-defined identifiers use only ASCII and so should
5532 user-defined ones.  Identifiers containing non-ASCII may work but aren't
5533 supported.  Only the ASCII space characters (space U+0020, tab U+000b,
5534 CR U+000d and LF U+000a) are recognised.  Other unicode space characters
5535 aren't a valid field separator.  'test' (*note test::) tests <, >, <=,
5536 >=, -pgt and -plt compare the strings in the lexicographical order of
5537 unicode codepoints, replicating the behaviour of test from coreutils.
5538 environment variables and commands are listed in the same order.
5540 \x1f
5541 File: grub.info,  Node: Security,  Next: Platform limitations,  Prev: Internationalisation,  Up: Top
5543 18 Security
5544 ***********
5546 * Menu:
5548 * Authentication and authorisation:: Users and access control
5549 * Using digital signatures::         Booting digitally signed code
5551 \x1f
5552 File: grub.info,  Node: Authentication and authorisation,  Next: Using digital signatures,  Up: Security
5554 18.1 Authentication and authorisation in GRUB
5555 =============================================
5557 By default, the boot loader interface is accessible to anyone with
5558 physical access to the console: anyone can select and edit any menu
5559 entry, and anyone can get direct access to a GRUB shell prompt.  For
5560 most systems, this is reasonable since anyone with direct physical
5561 access has a variety of other ways to gain full access, and requiring
5562 authentication at the boot loader level would only serve to make it
5563 difficult to recover broken systems.
5565    However, in some environments, such as kiosks, it may be appropriate
5566 to lock down the boot loader to require authentication before performing
5567 certain operations.
5569    The 'password' (*note password::) and 'password_pbkdf2' (*note
5570 password_pbkdf2::) commands can be used to define users, each of which
5571 has an associated password.  'password' sets the password in plain text,
5572 requiring 'grub.cfg' to be secure; 'password_pbkdf2' sets the password
5573 hashed using the Password-Based Key Derivation Function (RFC 2898),
5574 requiring the use of 'grub-mkpasswd-pbkdf2' (*note Invoking
5575 grub-mkpasswd-pbkdf2::) to generate password hashes.
5577    In order to enable authentication support, the 'superusers'
5578 environment variable must be set to a list of usernames, separated by
5579 any of spaces, commas, semicolons, pipes, or ampersands.  Superusers are
5580 permitted to use the GRUB command line, edit menu entries, and execute
5581 any menu entry.  If 'superusers' is set, then use of the command line is
5582 automatically restricted to superusers.
5584    Other users may be given access to specific menu entries by giving a
5585 list of usernames (as above) using the '--users' option to the
5586 'menuentry' command (*note menuentry::).  If the '--unrestricted' option
5587 is used for a menu entry, then that entry is unrestricted.  If the
5588 '--users' option is not used for a menu entry, then that only superusers
5589 are able to use it.
5591    Putting this together, a typical 'grub.cfg' fragment might look like
5592 this:
5594      set superusers="root"
5595      password_pbkdf2 root grub.pbkdf2.sha512.10000.biglongstring
5596      password user1 insecure
5598      menuentry "May be run by any user" --unrestricted {
5599         set root=(hd0,1)
5600         linux /vmlinuz
5601      }
5603      menuentry "Superusers only" --users "" {
5604         set root=(hd0,1)
5605         linux /vmlinuz single
5606      }
5608      menuentry "May be run by user1 or a superuser" --users user1 {
5609         set root=(hd0,2)
5610         chainloader +1
5611      }
5613    The 'grub-mkconfig' program does not yet have built-in support for
5614 generating configuration files with authentication.  You can use
5615 '/etc/grub.d/40_custom' to add simple superuser authentication, by
5616 adding 'set superusers=' and 'password' or 'password_pbkdf2' commands.
5618 \x1f
5619 File: grub.info,  Node: Using digital signatures,  Prev: Authentication and authorisation,  Up: Security
5621 18.2 Using digital signatures in GRUB
5622 =====================================
5624 GRUB's 'core.img' can optionally provide enforcement that all files
5625 subsequently read from disk are covered by a valid digital signature.
5626 This document does *not* cover how to ensure that your platform's
5627 firmware (e.g., Coreboot) validates 'core.img'.
5629    If environment variable 'check_signatures' (*note check_signatures::)
5630 is set to 'enforce', then every attempt by the GRUB 'core.img' to load
5631 another file 'foo' implicitly invokes 'verify_detached foo foo.sig'
5632 (*note verify_detached::).  'foo.sig' must contain a valid digital
5633 signature over the contents of 'foo', which can be verified with a
5634 public key currently trusted by GRUB (*note list_trusted::, *note
5635 trust::, and *note distrust::).  If validation fails, then file 'foo'
5636 cannot be opened.  This failure may halt or otherwise impact the boot
5637 process.
5639    GRUB uses GPG-style detached signatures (meaning that a file
5640 'foo.sig' will be produced when file 'foo' is signed), and currently
5641 supports the DSA and RSA signing algorithms.  A signing key can be
5642 generated as follows:
5644      gpg --gen-key
5646    An individual file can be signed as follows:
5648      gpg --detach-sign /path/to/file
5650    For successful validation of all of GRUB's subcomponents and the
5651 loaded OS kernel, they must all be signed.  One way to accomplish this
5652 is the following (after having already produced the desired 'grub.cfg'
5653 file, e.g., by running 'grub-mkconfig' (*note Invoking grub-mkconfig::):
5655      # Edit /dev/shm/passphrase.txt to contain your signing key's passphrase
5656      for i in `find /boot -name "*.cfg" -or -name "*.lst" -or \
5657        -name "*.mod" -or -name "vmlinuz*" -or -name "initrd*" -or \
5658        -name "grubenv"`;
5659      do
5660        gpg --batch --detach-sign --passphrase-fd 0 $i < \
5661          /dev/shm/passphrase.txt
5662      done
5663      shred /dev/shm/passphrase.txt
5665    See also: *note check_signatures::, *note verify_detached::, *note
5666 trust::, *note list_trusted::, *note distrust::, *note load_env::, *note
5667 save_env::.
5669    Note that internally signature enforcement is controlled by setting
5670 the environment variable 'check_signatures' equal to 'enforce'.  Passing
5671 one or more '--pubkey' options to 'grub-mkimage' implicitly defines
5672 'check_signatures' equal to 'enforce' in 'core.img' prior to processing
5673 any configuration files.
5675    Note that signature checking does *not* prevent an attacker with
5676 (serial, physical, ...)  console access from dropping manually to the
5677 GRUB console and executing:
5679      set check_signatures=no
5681    To prevent this, password-protection (*note Authentication and
5682 authorisation::) is essential.  Note that even with GRUB password
5683 protection, GRUB itself cannot prevent someone with physical access to
5684 the machine from altering that machine's firmware (e.g., Coreboot or
5685 BIOS) configuration to cause the machine to boot from a different
5686 (attacker-controlled) device.  GRUB is at best only one link in a secure
5687 boot chain.
5689 \x1f
5690 File: grub.info,  Node: Platform limitations,  Next: Platform-specific operations,  Prev: Security,  Up: Top
5692 19 Platform limitations
5693 ***********************
5695 GRUB2 is designed to be portable and is actually ported across
5696 platforms.  We try to keep all platforms at the level.  Unfortunately
5697 some platforms are better supported than others.  This is detailed in
5698 current and 2 following sections.
5700    ARC platform is unable to change datetime (firmware doesn't seem to
5701 provide a function for it).  EMU has similar limitation.
5703    On EMU platform no serial port is available.
5705    Console charset refers only to firmware-assisted console.  gfxterm is
5706 always Unicode (see Internationalisation section for its limitations).
5707 Serial is configurable to UTF-8 or ASCII (see Internationalisation).  In
5708 case of qemu and coreboot ports the refered console is vga_text.
5709 Loongson always uses gfxterm.
5711    Most limited one is ASCII. CP437 provides additionally
5712 pseudographics.  GRUB2 doesn't use any language characters from CP437 as
5713 often CP437 is replaced by national encoding compatible only in
5714 pseudographics.  Unicode is the most versatile charset which supports
5715 many languages.  However the actual console may be much more limited
5716 depending on firmware
5718    On BIOS network is supported only if the image is loaded through
5719 network.  On sparc64 GRUB is unable to determine which server it was
5720 booted from.
5722    Direct ATA/AHCI support allows to circumvent various firmware
5723 limitations but isn't needed for normal operation except on baremetal
5724 ports.
5726    AT keyboard support allows keyboard layout remapping and support for
5727 keys not available through firmware.  It isn't needed for normal
5728 operation except baremetal ports.
5730    Speaker allows morse and spkmodem communication.
5732    USB support provides benefits similar to ATA (for USB disks) or AT
5733 (for USB keyboards).  In addition it allows USBserial.
5735    Chainloading refers to the ability to load another bootloader through
5736 the same protocol
5738    Hints allow faster disk discovery by already knowing in advance which
5739 is the disk in question.  On some platforms hints are correct unless you
5740 move the disk between boots.  On other platforms it's just an educated
5741 guess.  Note that hint failure results in just reduced performance, not
5742 a failure
5744    BadRAM is the ability to mark some of the RAM as "bad".  Note: due to
5745 protocol limitations mips-loongson (with Linux protocol) and
5746 mips-qemu_mips can use only memory up to first hole.
5748                BIOS           Coreboot       Multiboot      Qemu
5749 video          yes            yes            yes            yes
5750 console        CP437          CP437          CP437          CP437
5751 charset
5752 network        yes (*)        no             no             no
5753 ATA/AHCI       yes            yes            yes            yes
5754 AT keyboard    yes            yes            yes            yes
5755 Speaker        yes            yes            yes            yes
5756 USB            yes            yes            yes            yes
5757 chainloader    local          yes            yes            no
5758 cpuid          partial        partial        partial        partial
5759 hints          guess          guess          guess          guess
5760 PCI            yes            yes            yes            yes
5761 badram         yes            yes            yes            yes
5762 compression    always         pointless      no             no
5763 exit           yes            no             no             no
5765                ia32 EFI       amd64 EFI      ia32           Itanium
5766                                              IEEE1275
5767 video          yes            yes            no             no
5768 console        Unicode        Unicode        ASCII          Unicode
5769 charset
5770 network        yes            yes            yes            yes
5771 ATA/AHCI       yes            yes            yes            no
5772 AT keyboard    yes            yes            yes            no
5773 Speaker        yes            yes            yes            no
5774 USB            yes            yes            yes            no
5775 chainloader    local          local          no             local
5776 cpuid          partial        partial        partial        no
5777 hints          guess          guess          good           guess
5778 PCI            yes            yes            yes            no
5779 badram         yes            yes            no             yes
5780 compression    no             no             no             no
5781 exit           yes            yes            yes            yes
5783                Loongson       sparc64        Powerpc        ARC
5784 video          yes            no             yes            no
5785 console        N/A            ASCII          ASCII          ASCII
5786 charset
5787 network        no             yes (*)        yes            no
5788 ATA/AHCI       yes            no             no             no
5789 AT keyboard    yes            no             no             no
5790 Speaker        no             no             no             no
5791 USB            yes            no             no             no
5792 chainloader    yes            no             no             no
5793 cpuid          no             no             no             no
5794 hints          good           good           good           no
5795 PCI            yes            no             no             no
5796 badram         yes (*)        no             no             no
5797 compression    configurable   no             no             configurable
5798 exit           no             yes            yes            yes
5800                MIPS qemu      emu
5801 video          no             yes
5802 console        CP437          Unicode (*)
5803 charset
5804 network        no             yes
5805 ATA/AHCI       yes            no
5806 AT keyboard    yes            no
5807 Speaker        no             no
5808 USB            N/A            yes
5809 chainloader    yes            no
5810 cpuid          no             no
5811 hints          guess          no
5812 PCI            no             no
5813 badram         yes (*)        no
5814 compression    configurable   no
5815 exit           no             yes
5817 \x1f
5818 File: grub.info,  Node: Platform-specific operations,  Next: Supported kernels,  Prev: Platform limitations,  Up: Top
5820 20 Outline
5821 **********
5823 Some platforms have features which allows to implement some commands
5824 useless or not implementable on others.
5826    Quick summary:
5828    Information retrieval:
5830    * mipsel-loongson: lsspd
5831    * mips-arc: lsdev
5832    * efi: lsefisystab, lssal, lsefimmap, lsefi
5833    * i386-pc: lsapm
5834    * i386-coreboot: lscoreboot, coreboot_boottime, cbmemc
5835    * acpi-enabled (i386-pc, i386-coreboot, i386-multiboot, *-efi):
5836      lsacpi
5838    Workarounds for platform-specific issues:
5839    * i386-efi/x86_64-efi: loadbios, fakebios, fix_video
5840    * acpi-enabled (i386-pc, i386-coreboot, i386-multiboot, *-efi): acpi
5841      (override ACPI tables)
5842    * i386-pc: drivemap
5843    * i386-pc: sendkey
5845    Advanced operations for power users:
5846    * x86: iorw (direct access to I/O ports)
5848    Miscelaneous:
5849    * cmos (x86-*, ieee1275, mips-qemu_mips, mips-loongson): cmostest
5850      (used on some laptops to check for special power-on key), cmosclean
5851    * i386-pc: play
5853 \x1f
5854 File: grub.info,  Node: Supported kernels,  Next: Troubleshooting,  Prev: Platform-specific operations,  Up: Top
5856 21 Supported boot targets
5857 *************************
5859 X86 support is summarised in the following table.  "Yes" means that the
5860 kernel works on the given platform, "crashes" means an early kernel
5861 crash which we hope will be fixed by concerned kernel developers.  "no"
5862 means GRUB doesn't load the given kernel on a given platform.
5863 "headless" means that the kernel works but lacks console drivers (you
5864 can still use serial or network console).  In case of "no" and "crashes"
5865 the reason is given in footnote.
5866                                      BIOS             Coreboot
5867 BIOS chainloading                    yes              no (1)
5868 NTLDR                                yes              no (1)
5869 Plan9                                yes              no (1)
5870 Freedos                              yes              no (1)
5871 FreeBSD bootloader                   yes              crashes (1)
5872 32-bit kFreeBSD                      yes              crashes (5)
5873 64-bit kFreeBSD                      yes              crashes (5)
5874 32-bit kNetBSD                       yes              crashes (1)
5875 64-bit kNetBSD                       yes              crashes
5876 32-bit kOpenBSD                      yes              yes
5877 64-bit kOpenBSD                      yes              yes
5878 Multiboot                            yes              yes
5879 Multiboot2                           yes              yes
5880 32-bit Linux (legacy protocol)       yes              no (1)
5881 64-bit Linux (legacy protocol)       yes              no (1)
5882 32-bit Linux (modern protocol)       yes              yes
5883 64-bit Linux (modern protocol)       yes              yes
5884 32-bit XNU                           yes              ?
5885 64-bit XNU                           yes              ?
5886 32-bit EFI chainloader               no (2)           no (2)
5887 64-bit EFI chainloader               no (2)           no (2)
5888 Appleloader                          no (2)           no (2)
5890                                      Multiboot        Qemu
5891 BIOS chainloading                    no (1)           no (1)
5892 NTLDR                                no (1)           no (1)
5893 Plan9                                no (1)           no (1)
5894 FreeDOS                              no (1)           no (1)
5895 FreeBSD bootloader                   crashes (1)      crashes (1)
5896 32-bit kFreeBSD                      crashes (5)      crashes (5)
5897 64-bit kFreeBSD                      crashes (5)      crashes (5)
5898 32-bit kNetBSD                       crashes (1)      crashes (1)
5899 64-bit kNetBSD                       yes              yes
5900 32-bit kOpenBSD                      yes              yes
5901 64-bit kOpenBSD                      yes              yes
5902 Multiboot                            yes              yes
5903 Multiboot2                           yes              yes
5904 32-bit Linux (legacy protocol)       no (1)           no (1)
5905 64-bit Linux (legacy protocol)       no (1)           no (1)
5906 32-bit Linux (modern protocol)       yes              yes
5907 64-bit Linux (modern protocol)       yes              yes
5908 32-bit XNU                           ?                ?
5909 64-bit XNU                           ?                ?
5910 32-bit EFI chainloader               no (2)           no (2)
5911 64-bit EFI chainloader               no (2)           no (2)
5912 Appleloader                          no (2)           no (2)
5914                                      ia32 EFI         amd64 EFI
5915 BIOS chainloading                    no (1)           no (1)
5916 NTLDR                                no (1)           no (1)
5917 Plan9                                no (1)           no (1)
5918 FreeDOS                              no (1)           no (1)
5919 FreeBSD bootloader                   crashes (1)      crashes (1)
5920 32-bit kFreeBSD                      headless         headless
5921 64-bit kFreeBSD                      headless         headless
5922 32-bit kNetBSD                       crashes (1)      crashes (1)
5923 64-bit kNetBSD                       yes              yes
5924 32-bit kOpenBSD                      headless         headless
5925 64-bit kOpenBSD                      headless         headless
5926 Multiboot                            yes              yes
5927 Multiboot2                           yes              yes
5928 32-bit Linux (legacy protocol)       no (1)           no (1)
5929 64-bit Linux (legacy protocol)       no (1)           no (1)
5930 32-bit Linux (modern protocol)       yes              yes
5931 64-bit Linux (modern protocol)       yes              yes
5932 32-bit XNU                           yes              yes
5933 64-bit XNU                           yes (4)          yes
5934 32-bit EFI chainloader               yes              no (3)
5935 64-bit EFI chainloader               no (3)           yes
5936 Appleloader                          yes              yes
5938                                      ia32 IEEE1275
5939 BIOS chainloading                    no (1)
5940 NTLDR                                no (1)
5941 Plan9                                no (1)
5942 FreeDOS                              no (1)
5943 FreeBSD bootloader                   crashes (1)
5944 32-bit kFreeBSD                      crashes (5)
5945 64-bit kFreeBSD                      crashes (5)
5946 32-bit kNetBSD                       crashes (1)
5947 64-bit kNetBSD                       ?
5948 32-bit kOpenBSD                      ?
5949 64-bit kOpenBSD                      ?
5950 Multiboot                            ?
5951 Multiboot2                           ?
5952 32-bit Linux (legacy protocol)       no (1)
5953 64-bit Linux (legacy protocol)       no (1)
5954 32-bit Linux (modern protocol)       ?
5955 64-bit Linux (modern protocol)       ?
5956 32-bit XNU                           ?
5957 64-bit XNU                           ?
5958 32-bit EFI chainloader               no (2)
5959 64-bit EFI chainloader               no (2)
5960 Appleloader                          no (2)
5962   1. Requires BIOS
5963   2. EFI only
5964   3. 32-bit and 64-bit EFI have different structures and work in
5965      different CPU modes so it's not possible to chainload 32-bit
5966      bootloader on 64-bit platform and vice-versa
5967   4. Some modules may need to be disabled
5968   5. Requires ACPI
5970    PowerPC, IA64 and Sparc64 ports support only Linux.  MIPS port
5971 supports Linux and multiboot2.
5973 21.1 Boot tests
5974 ===============
5976 As you have seen in previous chapter the support matrix is pretty big
5977 and some of the configurations are only rarely used.  To ensure the
5978 quality bootchecks are available for all x86 targets except EFI
5979 chainloader, Appleloader and XNU. All x86 platforms have bootcheck
5980 facility except ieee1275.  Multiboot, multiboot2, BIOS chainloader,
5981 ntldr and freebsd-bootloader boot targets are tested only with a fake
5982 kernel images.  Only Linux is tested among the payloads using Linux
5983 protocols.
5985    Following variables must be defined:
5987 GRUB_PAYLOADS_DIR      directory containing the required kernels
5988 GRUB_CBFSTOOL          cbfstoll from Coreboot package (for coreboot
5989                        platform only)
5990 GRUB_COREBOOT_ROM      empty Coreboot ROM
5991 GRUB_QEMU_OPTS         additional options to be supplied to QEMU
5993    Required files are:
5995 kfreebsd_env.i386             32-bit kFreeBSD device hints
5996 kfreebsd.i386                 32-bit FreeBSD kernel image
5997 kfreebsd.x86_64,              same from 64-bit kFreeBSD
5998 kfreebsd_env.x86_64
5999 knetbsd.i386                  32-bit NetBSD kernel image
6000 knetbsd.miniroot.i386         32-bit kNetBSD miniroot.kmod.
6001 knetbsd.x86_64,               same from 64-bit kNetBSD
6002 knetbsd.miniroot.x86_64
6003 kopenbsd.i386                 32-bit OpenBSD kernel bsd.rd image
6004 kopenbsd.x86_64               same from 64-bit kOpenBSD
6005 linux.i386                    32-bit Linux
6006 linux.x86_64                  64-bit Linux
6008 \x1f
6009 File: grub.info,  Node: Troubleshooting,  Next: Invoking grub-install,  Prev: Supported kernels,  Up: Top
6011 22 Error messages produced by GRUB
6012 **********************************
6014 * Menu:
6016 * GRUB only offers a rescue shell::
6018 \x1f
6019 File: grub.info,  Node: GRUB only offers a rescue shell,  Up: Troubleshooting
6021 22.1 GRUB only offers a rescue shell
6022 ====================================
6024 GRUB's normal start-up procedure involves setting the 'prefix'
6025 environment variable to a value set in the core image by 'grub-install',
6026 setting the 'root' variable to match, loading the 'normal' module from
6027 the prefix, and running the 'normal' command (*note normal::).  This
6028 command is responsible for reading '/boot/grub/grub.cfg', running the
6029 menu, and doing all the useful things GRUB is supposed to do.
6031    If, instead, you only get a rescue shell, this usually means that
6032 GRUB failed to load the 'normal' module for some reason.  It may be
6033 possible to work around this temporarily: for instance, if the reason
6034 for the failure is that 'prefix' is wrong (perhaps it refers to the
6035 wrong device, or perhaps the path to '/boot/grub' was not correctly made
6036 relative to the device), then you can correct this and enter normal mode
6037 manually:
6039      # Inspect the current prefix (and other preset variables):
6040      set
6041      # Find out which devices are available:
6042      ls
6043      # Set to the correct value, which might be something like this:
6044      set prefix=(hd0,1)/grub
6045      set root=(hd0,1)
6046      insmod normal
6047      normal
6049    However, any problem that leaves you in the rescue shell probably
6050 means that GRUB was not correctly installed.  It may be more useful to
6051 try to reinstall it properly using 'grub-install DEVICE' (*note Invoking
6052 grub-install::).  When doing this, there are a few things to remember:
6054    * Drive ordering in your operating system may not be the same as the
6055      boot drive ordering used by your firmware.  Do not assume that your
6056      first hard drive (e.g.  '/dev/sda') is the one that your firmware
6057      will boot from.  'device.map' (*note Device map::) can be used to
6058      override this, but it is usually better to use UUIDs or file system
6059      labels and avoid depending on drive ordering entirely.
6061    * At least on BIOS systems, if you tell 'grub-install' to install
6062      GRUB to a partition but GRUB has already been installed in the
6063      master boot record, then the GRUB installation in the partition
6064      will be ignored.
6066    * If possible, it is generally best to avoid installing GRUB to a
6067      partition (unless it is a special partition for the use of GRUB
6068      alone, such as the BIOS Boot Partition used on GPT). Doing this
6069      means that GRUB may stop being able to read its core image due to a
6070      file system moving blocks around, such as while defragmenting,
6071      running checks, or even during normal operation.  Installing to the
6072      whole disk device is normally more robust.
6074    * Check that GRUB actually knows how to read from the device and file
6075      system containing '/boot/grub'.  It will not be able to read from
6076      encrypted devices with unsupported encryption scheme, nor from file
6077      systems for which support has not yet been added to GRUB.
6079 \x1f
6080 File: grub.info,  Node: Invoking grub-install,  Next: Invoking grub-mkconfig,  Prev: Troubleshooting,  Up: Top
6082 23 Invoking grub-install
6083 ************************
6085 The program 'grub-install' generates a GRUB core image using
6086 'grub-mkimage' and installs it on your system.  You must specify the
6087 device name on which you want to install GRUB, like this:
6089      grub-install INSTALL_DEVICE
6091    The device name INSTALL_DEVICE is an OS device name or a GRUB device
6092 name.
6094    'grub-install' accepts the following options:
6096 '--help'
6097      Print a summary of the command-line options and exit.
6099 '--version'
6100      Print the version number of GRUB and exit.
6102 '--boot-directory=DIR'
6103      Install GRUB images under the directory 'DIR/grub/' This option is
6104      useful when you want to install GRUB into a separate partition or a
6105      removable disk.  If this option is not specified then it defaults
6106      to '/boot', so
6108           grub-install /dev/sda
6110      is equivalent to
6112           grub-install --boot-directory=/boot/ /dev/sda
6114      Here is an example in which you have a separate "boot" partition
6115      which is mounted on '/mnt/boot':
6117           grub-install --boot-directory=/mnt/boot /dev/sdb
6119 '--recheck'
6120      Recheck the device map, even if '/boot/grub/device.map' already
6121      exists.  You should use this option whenever you add/remove a disk
6122      into/from your computer.
6124 '--no-rs-codes'
6125      By default on x86 BIOS systems, 'grub-install' will use some extra
6126      space in the bootloader embedding area for Reed-Solomon
6127      error-correcting codes.  This enables GRUB to still boot
6128      successfully if some blocks are corrupted.  The exact amount of
6129      protection offered is dependent on available space in the embedding
6130      area.  R sectors of redundancy can tolerate up to R/2 corrupted
6131      sectors.  This redundancy may be cumbersome if attempting to
6132      cryptographically validate the contents of the bootloader embedding
6133      area, or in more modern systems with GPT-style partition tables
6134      (*note BIOS installation::) where GRUB does not reside in any
6135      unpartitioned space outside of the MBR. Disable the Reed-Solomon
6136      codes with this option.
6138 \x1f
6139 File: grub.info,  Node: Invoking grub-mkconfig,  Next: Invoking grub-mkpasswd-pbkdf2,  Prev: Invoking grub-install,  Up: Top
6141 24 Invoking grub-mkconfig
6142 *************************
6144 The program 'grub-mkconfig' generates a configuration file for GRUB
6145 (*note Simple configuration::).
6147      grub-mkconfig -o /boot/grub/grub.cfg
6149    'grub-mkconfig' accepts the following options:
6151 '--help'
6152      Print a summary of the command-line options and exit.
6154 '--version'
6155      Print the version number of GRUB and exit.
6157 '-o FILE'
6158 '--output=FILE'
6159      Send the generated configuration file to FILE.  The default is to
6160      send it to standard output.
6162 \x1f
6163 File: grub.info,  Node: Invoking grub-mkpasswd-pbkdf2,  Next: Invoking grub-mkrelpath,  Prev: Invoking grub-mkconfig,  Up: Top
6165 25 Invoking grub-mkpasswd-pbkdf2
6166 ********************************
6168 The program 'grub-mkpasswd-pbkdf2' generates password hashes for GRUB
6169 (*note Security::).
6171      grub-mkpasswd-pbkdf2
6173    'grub-mkpasswd-pbkdf2' accepts the following options:
6175 '-c NUMBER'
6176 '--iteration-count=NUMBER'
6177      Number of iterations of the underlying pseudo-random function.
6178      Defaults to 10000.
6180 '-l NUMBER'
6181 '--buflen=NUMBER'
6182      Length of the generated hash.  Defaults to 64.
6184 '-s NUMBER'
6185 '--salt=NUMBER'
6186      Length of the salt.  Defaults to 64.
6188 \x1f
6189 File: grub.info,  Node: Invoking grub-mkrelpath,  Next: Invoking grub-mkrescue,  Prev: Invoking grub-mkpasswd-pbkdf2,  Up: Top
6191 26 Invoking grub-mkrelpath
6192 **************************
6194 The program 'grub-mkrelpath' makes a file system path relative to the
6195 root of its containing file system.  For instance, if '/usr' is a mount
6196 point, then:
6198      $ grub-mkrelpath /usr/share/grub/unicode.pf2
6199      '/share/grub/unicode.pf2'
6201    This is mainly used internally by other GRUB utilities such as
6202 'grub-mkconfig' (*note Invoking grub-mkconfig::), but may occasionally
6203 also be useful for debugging.
6205    'grub-mkrelpath' accepts the following options:
6207 '--help'
6208      Print a summary of the command-line options and exit.
6210 '--version'
6211      Print the version number of GRUB and exit.
6213 \x1f
6214 File: grub.info,  Node: Invoking grub-mkrescue,  Next: Invoking grub-mount,  Prev: Invoking grub-mkrelpath,  Up: Top
6216 27 Invoking grub-mkrescue
6217 *************************
6219 The program 'grub-mkrescue' generates a bootable GRUB rescue image
6220 (*note Making a GRUB bootable CD-ROM::).
6222      grub-mkrescue -o grub.iso
6224    All arguments not explicitly listed as 'grub-mkrescue' options are
6225 passed on directly to 'xorriso' in 'mkisofs' emulation mode.  Options
6226 passed to 'xorriso' will normally be interpreted as 'mkisofs' options;
6227 if the option '--' is used, then anything after that will be interpreted
6228 as native 'xorriso' options.
6230    Non-option arguments specify additional source directories.  This is
6231 commonly used to add extra files to the image:
6233      mkdir -p disk/boot/grub
6234      (add extra files to 'disk/boot/grub')
6235      grub-mkrescue -o grub.iso disk
6237    'grub-mkrescue' accepts the following options:
6239 '--help'
6240      Print a summary of the command-line options and exit.
6242 '--version'
6243      Print the version number of GRUB and exit.
6245 '-o FILE'
6246 '--output=FILE'
6247      Save output in FILE.  This "option" is required.
6249 '--modules=MODULES'
6250      Pre-load the named GRUB modules in the image.  Multiple entries in
6251      MODULES should be separated by whitespace (so you will probably
6252      need to quote this for your shell).
6254 '--rom-directory=DIR'
6255      If generating images for the QEMU or Coreboot platforms, copy the
6256      resulting 'qemu.img' or 'coreboot.elf' files respectively to the
6257      DIR directory as well as including them in the image.
6259 '--xorriso=FILE'
6260      Use FILE as the 'xorriso' program, rather than the built-in
6261      default.
6263 '--grub-mkimage=FILE'
6264      Use FILE as the 'grub-mkimage' program, rather than the built-in
6265      default.
6267 \x1f
6268 File: grub.info,  Node: Invoking grub-mount,  Next: Invoking grub-probe,  Prev: Invoking grub-mkrescue,  Up: Top
6270 28 Invoking grub-mount
6271 **********************
6273 The program 'grub-mount' performs a read-only mount of any file system
6274 or file system image that GRUB understands, using GRUB's file system
6275 drivers via FUSE. (It is only available if FUSE development files were
6276 present when GRUB was built.)  This has a number of uses:
6278    * It provides a convenient way to check how GRUB will view a file
6279      system at boot time.  You can use normal command-line tools to
6280      compare that view with that of your operating system, making it
6281      easy to find bugs.
6283    * It offers true read-only mounts.  Linux does not have these for
6284      journalling file systems, because it will always attempt to replay
6285      the journal at mount time; while you can temporarily mark the block
6286      device read-only to avoid this, that causes the mount to fail.
6287      Since GRUB intentionally contains no code for writing to file
6288      systems, it can easily provide a guaranteed read-only mount
6289      mechanism.
6291    * It allows you to examine any file system that GRUB understands
6292      without needing to load additional modules into your running
6293      kernel, which may be useful in constrained environments such as
6294      installers.
6296    * Since it can examine file system images (contained in regular
6297      files) just as easily as file systems on block devices, you can use
6298      it to inspect any file system image that GRUB understands with only
6299      enough privileges to use FUSE, even if nobody has yet written a
6300      FUSE module specifically for that file system type.
6302    Using 'grub-mount' is normally as simple as:
6304      grub-mount /dev/sda1 /mnt
6306    'grub-mount' must be given one or more images and a mount point as
6307 non-option arguments (if it is given more than one image, it will treat
6308 them as a RAID set), and also accepts the following options:
6310 '--help'
6311      Print a summary of the command-line options and exit.
6313 '--version'
6314      Print the version number of GRUB and exit.
6316 '-C'
6317 '--crypto'
6318      Mount encrypted devices, prompting for a passphrase if necessary.
6320 '-d STRING'
6321 '--debug=STRING'
6322      Show debugging output for conditions matching STRING.
6324 '-K prompt|FILE'
6325 '--zfs-key=prompt|FILE'
6326      Load a ZFS encryption key.  If you use 'prompt' as the argument,
6327      'grub-mount' will read a passphrase from the terminal; otherwise,
6328      it will read key material from the specified file.
6330 '-r DEVICE'
6331 '--root=DEVICE'
6332      Set the GRUB root device to DEVICE.  You do not normally need to
6333      set this; 'grub-mount' will automatically set the root device to
6334      the root of the supplied file system.
6336      If DEVICE is just a number, then it will be treated as a partition
6337      number within the supplied image.  This means that, if you have an
6338      image of an entire disk in 'disk.img', then you can use this
6339      command to mount its second partition:
6341           grub-mount -r 2 disk.img mount-point
6343 '-v'
6344 '--verbose'
6345      Print verbose messages.
6347 \x1f
6348 File: grub.info,  Node: Invoking grub-probe,  Next: Invoking grub-script-check,  Prev: Invoking grub-mount,  Up: Top
6350 29 Invoking grub-probe
6351 **********************
6353 The program 'grub-probe' probes device information for a given path or
6354 device.
6356      grub-probe --target=fs /boot/grub
6357      grub-probe --target=drive --device /dev/sda1
6359    'grub-probe' must be given a path or device as a non-option argument,
6360 and also accepts the following options:
6362 '--help'
6363      Print a summary of the command-line options and exit.
6365 '--version'
6366      Print the version number of GRUB and exit.
6368 '-d'
6369 '--device'
6370      If this option is given, then the non-option argument is a system
6371      device name (such as '/dev/sda1'), and 'grub-probe' will print
6372      information about that device.  If it is not given, then the
6373      non-option argument is a filesystem path (such as '/boot/grub'),
6374      and 'grub-probe' will print information about the device containing
6375      that part of the filesystem.
6377 '-m FILE'
6378 '--device-map=FILE'
6379      Use FILE as the device map (*note Device map::) rather than the
6380      default, usually '/boot/grub/device.map'.
6382 '-t TARGET'
6383 '--target=TARGET'
6384      Print information about the given path or device as defined by
6385      TARGET.  The available targets and their meanings are:
6387      'fs'
6388           GRUB filesystem module.
6389      'fs_uuid'
6390           Filesystem Universally Unique Identifier (UUID).
6391      'fs_label'
6392           Filesystem label.
6393      'drive'
6394           GRUB device name.
6395      'device'
6396           System device name.
6397      'partmap'
6398           GRUB partition map module.
6399      'abstraction'
6400           GRUB abstraction module (e.g.  'lvm').
6401      'cryptodisk_uuid'
6402           Crypto device UUID.
6403      'msdos_parttype'
6404           MBR partition type code (two hexadecimal digits).
6405      'hints_string'
6406           A string of platform search hints suitable for passing to the
6407           'search' command (*note search::).
6408      'bios_hints'
6409           Search hints for the PC BIOS platform.
6410      'ieee1275_hints'
6411           Search hints for the IEEE1275 platform.
6412      'baremetal_hints'
6413           Search hints for platforms where disks are addressed directly
6414           rather than via firmware.
6415      'efi_hints'
6416           Search hints for the EFI platform.
6417      'arc_hints'
6418           Search hints for the ARC platform.
6419      'compatibility_hint'
6420           A guess at a reasonable GRUB drive name for this device, which
6421           may be used as a fallback if the 'search' command fails.
6422      'disk'
6423           System device name for the whole disk.
6425 '-v'
6426 '--verbose'
6427      Print verbose messages.
6429 \x1f
6430 File: grub.info,  Node: Invoking grub-script-check,  Next: Obtaining and Building GRUB,  Prev: Invoking grub-probe,  Up: Top
6432 30 Invoking grub-script-check
6433 *****************************
6435 The program 'grub-script-check' takes a GRUB script file (*note
6436 Shell-like scripting::) and checks it for syntax errors, similar to
6437 commands such as 'sh -n'.  It may take a PATH as a non-option argument;
6438 if none is supplied, it will read from standard input.
6440      grub-script-check /boot/grub/grub.cfg
6442    'grub-script-check' accepts the following options:
6444 '--help'
6445      Print a summary of the command-line options and exit.
6447 '--version'
6448      Print the version number of GRUB and exit.
6450 '-v'
6451 '--verbose'
6452      Print each line of input after reading it.
6454 \x1f
6455 File: grub.info,  Node: Obtaining and Building GRUB,  Next: Reporting bugs,  Prev: Invoking grub-script-check,  Up: Top
6457 Appendix A How to obtain and build GRUB
6458 ***************************************
6460      *Caution:* GRUB requires binutils-2.9.1.0.23 or later because the
6461      GNU assembler has been changed so that it can produce real 16bits
6462      machine code between 2.9.1 and 2.9.1.0.x.  See
6463      <http://sources.redhat.com/binutils/>, to obtain information on how
6464      to get the latest version.
6466    GRUB is available from the GNU alpha archive site
6467 <ftp://ftp.gnu.org/gnu/grub> or any of its mirrors.  The file will be
6468 named grub-version.tar.gz.  The current version is 2.02~beta2, so the
6469 file you should grab is:
6471    <ftp://ftp.gnu.org/gnu/grub/grub-2.02~beta2.tar.gz>
6473    To unbundle GRUB use the instruction:
6475      zcat grub-2.02~beta2.tar.gz | tar xvf -
6477    which will create a directory called 'grub-2.02~beta2' with all the
6478 sources.  You can look at the file 'INSTALL' for detailed instructions
6479 on how to build and install GRUB, but you should be able to just do:
6481      cd grub-2.02~beta2
6482      ./configure
6483      make install
6485    Also, the latest version is available using Git.  See
6486 <http://www.gnu.org/software/grub/grub-download.html> for more
6487 information.
6489 \x1f
6490 File: grub.info,  Node: Reporting bugs,  Next: Future,  Prev: Obtaining and Building GRUB,  Up: Top
6492 Appendix B Reporting bugs
6493 *************************
6495 These are the guideline for how to report bugs.  Take a look at this
6496 list below before you submit bugs:
6498   1. Before getting unsettled, read this manual through and through.
6499      Also, see the GNU GRUB FAQ
6500      (http://www.gnu.org/software/grub/grub-faq.html).
6502   2. Always mention the information on your GRUB. The version number and
6503      the configuration are quite important.  If you build it yourself,
6504      write the options specified to the configure script and your
6505      operating system, including the versions of gcc and binutils.
6507   3. If you have trouble with the installation, inform us of how you
6508      installed GRUB. Don't omit error messages, if any.  Just 'GRUB
6509      hangs up when it boots' is not enough.
6511      The information on your hardware is also essential.  These are
6512      especially important: the geometries and the partition tables of
6513      your hard disk drives and your BIOS.
6515   4. If GRUB cannot boot your operating system, write down _everything_
6516      you see on the screen.  Don't paraphrase them, like 'The foo OS
6517      crashes with GRUB, even though it can boot with the bar boot loader
6518      just fine'.  Mention the commands you executed, the messages
6519      printed by them, and information on your operating system including
6520      the version number.
6522   5. Explain what you wanted to do.  It is very useful to know your
6523      purpose and your wish, and how GRUB didn't satisfy you.
6525   6. If you can investigate the problem yourself, please do.  That will
6526      give you and us much more information on the problem.  Attaching a
6527      patch is even better.
6529      When you attach a patch, make the patch in unified diff format, and
6530      write ChangeLog entries.  But, even when you make a patch, don't
6531      forget to explain the problem, so that we can understand what your
6532      patch is for.
6534   7. Write down anything that you think might be related.  Please
6535      understand that we often need to reproduce the same problem you
6536      encountered in our environment.  So your information should be
6537      sufficient for us to do the same thing--Don't forget that we cannot
6538      see your computer directly.  If you are not sure whether to state a
6539      fact or leave it out, state it!  Reporting too many things is much
6540      better than omitting something important.
6542    If you follow the guideline above, submit a report to the Bug
6543 Tracking System (http://savannah.gnu.org/bugs/?group=grub).
6544 Alternatively, you can submit a report via electronic mail to
6545 <bug-grub@gnu.org>, but we strongly recommend that you use the Bug
6546 Tracking System, because e-mail can be passed over easily.
6548    Once we get your report, we will try to fix the bugs.
6550 \x1f
6551 File: grub.info,  Node: Future,  Next: Copying This Manual,  Prev: Reporting bugs,  Up: Top
6553 Appendix C Where GRUB will go
6554 *****************************
6556 GRUB 2 is now quite stable and used in many production systems.  We are
6557 currently working towards a 2.0 release.
6559    If you are interested in the development of GRUB 2, take a look at
6560 the homepage (http://www.gnu.org/software/grub/grub.html).
6562 \x1f
6563 File: grub.info,  Node: Copying This Manual,  Next: Index,  Prev: Future,  Up: Top
6565 Appendix D Copying This Manual
6566 ******************************
6568 * Menu:
6570 * GNU Free Documentation License::  License for copying this manual.
6572 \x1f
6573 File: grub.info,  Node: GNU Free Documentation License,  Up: Copying This Manual
6575 D.1 GNU Free Documentation License
6576 ==================================
6578                       Version 1.2, November 2002
6580      Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
6581      51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
6583      Everyone is permitted to copy and distribute verbatim copies
6584      of this license document, but changing it is not allowed.
6586   0. PREAMBLE
6588      The purpose of this License is to make a manual, textbook, or other
6589      functional and useful document "free" in the sense of freedom: to
6590      assure everyone the effective freedom to copy and redistribute it,
6591      with or without modifying it, either commercially or
6592      noncommercially.  Secondarily, this License preserves for the
6593      author and publisher a way to get credit for their work, while not
6594      being considered responsible for modifications made by others.
6596      This License is a kind of "copyleft", which means that derivative
6597      works of the document must themselves be free in the same sense.
6598      It complements the GNU General Public License, which is a copyleft
6599      license designed for free software.
6601      We have designed this License in order to use it for manuals for
6602      free software, because free software needs free documentation: a
6603      free program should come with manuals providing the same freedoms
6604      that the software does.  But this License is not limited to
6605      software manuals; it can be used for any textual work, regardless
6606      of subject matter or whether it is published as a printed book.  We
6607      recommend this License principally for works whose purpose is
6608      instruction or reference.
6610   1. APPLICABILITY AND DEFINITIONS
6612      This License applies to any manual or other work, in any medium,
6613      that contains a notice placed by the copyright holder saying it can
6614      be distributed under the terms of this License.  Such a notice
6615      grants a world-wide, royalty-free license, unlimited in duration,
6616      to use that work under the conditions stated herein.  The
6617      "Document", below, refers to any such manual or work.  Any member
6618      of the public is a licensee, and is addressed as "you".  You accept
6619      the license if you copy, modify or distribute the work in a way
6620      requiring permission under copyright law.
6622      A "Modified Version" of the Document means any work containing the
6623      Document or a portion of it, either copied verbatim, or with
6624      modifications and/or translated into another language.
6626      A "Secondary Section" is a named appendix or a front-matter section
6627      of the Document that deals exclusively with the relationship of the
6628      publishers or authors of the Document to the Document's overall
6629      subject (or to related matters) and contains nothing that could
6630      fall directly within that overall subject.  (Thus, if the Document
6631      is in part a textbook of mathematics, a Secondary Section may not
6632      explain any mathematics.)  The relationship could be a matter of
6633      historical connection with the subject or with related matters, or
6634      of legal, commercial, philosophical, ethical or political position
6635      regarding them.
6637      The "Invariant Sections" are certain Secondary Sections whose
6638      titles are designated, as being those of Invariant Sections, in the
6639      notice that says that the Document is released under this License.
6640      If a section does not fit the above definition of Secondary then it
6641      is not allowed to be designated as Invariant.  The Document may
6642      contain zero Invariant Sections.  If the Document does not identify
6643      any Invariant Sections then there are none.
6645      The "Cover Texts" are certain short passages of text that are
6646      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
6647      that says that the Document is released under this License.  A
6648      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
6649      be at most 25 words.
6651      A "Transparent" copy of the Document means a machine-readable copy,
6652      represented in a format whose specification is available to the
6653      general public, that is suitable for revising the document
6654      straightforwardly with generic text editors or (for images composed
6655      of pixels) generic paint programs or (for drawings) some widely
6656      available drawing editor, and that is suitable for input to text
6657      formatters or for automatic translation to a variety of formats
6658      suitable for input to text formatters.  A copy made in an otherwise
6659      Transparent file format whose markup, or absence of markup, has
6660      been arranged to thwart or discourage subsequent modification by
6661      readers is not Transparent.  An image format is not Transparent if
6662      used for any substantial amount of text.  A copy that is not
6663      "Transparent" is called "Opaque".
6665      Examples of suitable formats for Transparent copies include plain
6666      ASCII without markup, Texinfo input format, LaTeX input format,
6667      SGML or XML using a publicly available DTD, and standard-conforming
6668      simple HTML, PostScript or PDF designed for human modification.
6669      Examples of transparent image formats include PNG, XCF and JPG.
6670      Opaque formats include proprietary formats that can be read and
6671      edited only by proprietary word processors, SGML or XML for which
6672      the DTD and/or processing tools are not generally available, and
6673      the machine-generated HTML, PostScript or PDF produced by some word
6674      processors for output purposes only.
6676      The "Title Page" means, for a printed book, the title page itself,
6677      plus such following pages as are needed to hold, legibly, the
6678      material this License requires to appear in the title page.  For
6679      works in formats which do not have any title page as such, "Title
6680      Page" means the text near the most prominent appearance of the
6681      work's title, preceding the beginning of the body of the text.
6683      A section "Entitled XYZ" means a named subunit of the Document
6684      whose title either is precisely XYZ or contains XYZ in parentheses
6685      following text that translates XYZ in another language.  (Here XYZ
6686      stands for a specific section name mentioned below, such as
6687      "Acknowledgements", "Dedications", "Endorsements", or "History".)
6688      To "Preserve the Title" of such a section when you modify the
6689      Document means that it remains a section "Entitled XYZ" according
6690      to this definition.
6692      The Document may include Warranty Disclaimers next to the notice
6693      which states that this License applies to the Document.  These
6694      Warranty Disclaimers are considered to be included by reference in
6695      this License, but only as regards disclaiming warranties: any other
6696      implication that these Warranty Disclaimers may have is void and
6697      has no effect on the meaning of this License.
6699   2. VERBATIM COPYING
6701      You may copy and distribute the Document in any medium, either
6702      commercially or noncommercially, provided that this License, the
6703      copyright notices, and the license notice saying this License
6704      applies to the Document are reproduced in all copies, and that you
6705      add no other conditions whatsoever to those of this License.  You
6706      may not use technical measures to obstruct or control the reading
6707      or further copying of the copies you make or distribute.  However,
6708      you may accept compensation in exchange for copies.  If you
6709      distribute a large enough number of copies you must also follow the
6710      conditions in section 3.
6712      You may also lend copies, under the same conditions stated above,
6713      and you may publicly display copies.
6715   3. COPYING IN QUANTITY
6717      If you publish printed copies (or copies in media that commonly
6718      have printed covers) of the Document, numbering more than 100, and
6719      the Document's license notice requires Cover Texts, you must
6720      enclose the copies in covers that carry, clearly and legibly, all
6721      these Cover Texts: Front-Cover Texts on the front cover, and
6722      Back-Cover Texts on the back cover.  Both covers must also clearly
6723      and legibly identify you as the publisher of these copies.  The
6724      front cover must present the full title with all words of the title
6725      equally prominent and visible.  You may add other material on the
6726      covers in addition.  Copying with changes limited to the covers, as
6727      long as they preserve the title of the Document and satisfy these
6728      conditions, can be treated as verbatim copying in other respects.
6730      If the required texts for either cover are too voluminous to fit
6731      legibly, you should put the first ones listed (as many as fit
6732      reasonably) on the actual cover, and continue the rest onto
6733      adjacent pages.
6735      If you publish or distribute Opaque copies of the Document
6736      numbering more than 100, you must either include a machine-readable
6737      Transparent copy along with each Opaque copy, or state in or with
6738      each Opaque copy a computer-network location from which the general
6739      network-using public has access to download using public-standard
6740      network protocols a complete Transparent copy of the Document, free
6741      of added material.  If you use the latter option, you must take
6742      reasonably prudent steps, when you begin distribution of Opaque
6743      copies in quantity, to ensure that this Transparent copy will
6744      remain thus accessible at the stated location until at least one
6745      year after the last time you distribute an Opaque copy (directly or
6746      through your agents or retailers) of that edition to the public.
6748      It is requested, but not required, that you contact the authors of
6749      the Document well before redistributing any large number of copies,
6750      to give them a chance to provide you with an updated version of the
6751      Document.
6753   4. MODIFICATIONS
6755      You may copy and distribute a Modified Version of the Document
6756      under the conditions of sections 2 and 3 above, provided that you
6757      release the Modified Version under precisely this License, with the
6758      Modified Version filling the role of the Document, thus licensing
6759      distribution and modification of the Modified Version to whoever
6760      possesses a copy of it.  In addition, you must do these things in
6761      the Modified Version:
6763        A. Use in the Title Page (and on the covers, if any) a title
6764           distinct from that of the Document, and from those of previous
6765           versions (which should, if there were any, be listed in the
6766           History section of the Document).  You may use the same title
6767           as a previous version if the original publisher of that
6768           version gives permission.
6770        B. List on the Title Page, as authors, one or more persons or
6771           entities responsible for authorship of the modifications in
6772           the Modified Version, together with at least five of the
6773           principal authors of the Document (all of its principal
6774           authors, if it has fewer than five), unless they release you
6775           from this requirement.
6777        C. State on the Title page the name of the publisher of the
6778           Modified Version, as the publisher.
6780        D. Preserve all the copyright notices of the Document.
6782        E. Add an appropriate copyright notice for your modifications
6783           adjacent to the other copyright notices.
6785        F. Include, immediately after the copyright notices, a license
6786           notice giving the public permission to use the Modified
6787           Version under the terms of this License, in the form shown in
6788           the Addendum below.
6790        G. Preserve in that license notice the full lists of Invariant
6791           Sections and required Cover Texts given in the Document's
6792           license notice.
6794        H. Include an unaltered copy of this License.
6796        I. Preserve the section Entitled "History", Preserve its Title,
6797           and add to it an item stating at least the title, year, new
6798           authors, and publisher of the Modified Version as given on the
6799           Title Page.  If there is no section Entitled "History" in the
6800           Document, create one stating the title, year, authors, and
6801           publisher of the Document as given on its Title Page, then add
6802           an item describing the Modified Version as stated in the
6803           previous sentence.
6805        J. Preserve the network location, if any, given in the Document
6806           for public access to a Transparent copy of the Document, and
6807           likewise the network locations given in the Document for
6808           previous versions it was based on.  These may be placed in the
6809           "History" section.  You may omit a network location for a work
6810           that was published at least four years before the Document
6811           itself, or if the original publisher of the version it refers
6812           to gives permission.
6814        K. For any section Entitled "Acknowledgements" or "Dedications",
6815           Preserve the Title of the section, and preserve in the section
6816           all the substance and tone of each of the contributor
6817           acknowledgements and/or dedications given therein.
6819        L. Preserve all the Invariant Sections of the Document, unaltered
6820           in their text and in their titles.  Section numbers or the
6821           equivalent are not considered part of the section titles.
6823        M. Delete any section Entitled "Endorsements".  Such a section
6824           may not be included in the Modified Version.
6826        N. Do not retitle any existing section to be Entitled
6827           "Endorsements" or to conflict in title with any Invariant
6828           Section.
6830        O. Preserve any Warranty Disclaimers.
6832      If the Modified Version includes new front-matter sections or
6833      appendices that qualify as Secondary Sections and contain no
6834      material copied from the Document, you may at your option designate
6835      some or all of these sections as invariant.  To do this, add their
6836      titles to the list of Invariant Sections in the Modified Version's
6837      license notice.  These titles must be distinct from any other
6838      section titles.
6840      You may add a section Entitled "Endorsements", provided it contains
6841      nothing but endorsements of your Modified Version by various
6842      parties--for example, statements of peer review or that the text
6843      has been approved by an organization as the authoritative
6844      definition of a standard.
6846      You may add a passage of up to five words as a Front-Cover Text,
6847      and a passage of up to 25 words as a Back-Cover Text, to the end of
6848      the list of Cover Texts in the Modified Version.  Only one passage
6849      of Front-Cover Text and one of Back-Cover Text may be added by (or
6850      through arrangements made by) any one entity.  If the Document
6851      already includes a cover text for the same cover, previously added
6852      by you or by arrangement made by the same entity you are acting on
6853      behalf of, you may not add another; but you may replace the old
6854      one, on explicit permission from the previous publisher that added
6855      the old one.
6857      The author(s) and publisher(s) of the Document do not by this
6858      License give permission to use their names for publicity for or to
6859      assert or imply endorsement of any Modified Version.
6861   5. COMBINING DOCUMENTS
6863      You may combine the Document with other documents released under
6864      this License, under the terms defined in section 4 above for
6865      modified versions, provided that you include in the combination all
6866      of the Invariant Sections of all of the original documents,
6867      unmodified, and list them all as Invariant Sections of your
6868      combined work in its license notice, and that you preserve all
6869      their Warranty Disclaimers.
6871      The combined work need only contain one copy of this License, and
6872      multiple identical Invariant Sections may be replaced with a single
6873      copy.  If there are multiple Invariant Sections with the same name
6874      but different contents, make the title of each such section unique
6875      by adding at the end of it, in parentheses, the name of the
6876      original author or publisher of that section if known, or else a
6877      unique number.  Make the same adjustment to the section titles in
6878      the list of Invariant Sections in the license notice of the
6879      combined work.
6881      In the combination, you must combine any sections Entitled
6882      "History" in the various original documents, forming one section
6883      Entitled "History"; likewise combine any sections Entitled
6884      "Acknowledgements", and any sections Entitled "Dedications".  You
6885      must delete all sections Entitled "Endorsements."
6887   6. COLLECTIONS OF DOCUMENTS
6889      You may make a collection consisting of the Document and other
6890      documents released under this License, and replace the individual
6891      copies of this License in the various documents with a single copy
6892      that is included in the collection, provided that you follow the
6893      rules of this License for verbatim copying of each of the documents
6894      in all other respects.
6896      You may extract a single document from such a collection, and
6897      distribute it individually under this License, provided you insert
6898      a copy of this License into the extracted document, and follow this
6899      License in all other respects regarding verbatim copying of that
6900      document.
6902   7. AGGREGATION WITH INDEPENDENT WORKS
6904      A compilation of the Document or its derivatives with other
6905      separate and independent documents or works, in or on a volume of a
6906      storage or distribution medium, is called an "aggregate" if the
6907      copyright resulting from the compilation is not used to limit the
6908      legal rights of the compilation's users beyond what the individual
6909      works permit.  When the Document is included in an aggregate, this
6910      License does not apply to the other works in the aggregate which
6911      are not themselves derivative works of the Document.
6913      If the Cover Text requirement of section 3 is applicable to these
6914      copies of the Document, then if the Document is less than one half
6915      of the entire aggregate, the Document's Cover Texts may be placed
6916      on covers that bracket the Document within the aggregate, or the
6917      electronic equivalent of covers if the Document is in electronic
6918      form.  Otherwise they must appear on printed covers that bracket
6919      the whole aggregate.
6921   8. TRANSLATION
6923      Translation is considered a kind of modification, so you may
6924      distribute translations of the Document under the terms of section
6925      4.  Replacing Invariant Sections with translations requires special
6926      permission from their copyright holders, but you may include
6927      translations of some or all Invariant Sections in addition to the
6928      original versions of these Invariant Sections.  You may include a
6929      translation of this License, and all the license notices in the
6930      Document, and any Warranty Disclaimers, provided that you also
6931      include the original English version of this License and the
6932      original versions of those notices and disclaimers.  In case of a
6933      disagreement between the translation and the original version of
6934      this License or a notice or disclaimer, the original version will
6935      prevail.
6937      If a section in the Document is Entitled "Acknowledgements",
6938      "Dedications", or "History", the requirement (section 4) to
6939      Preserve its Title (section 1) will typically require changing the
6940      actual title.
6942   9. TERMINATION
6944      You may not copy, modify, sublicense, or distribute the Document
6945      except as expressly provided for under this License.  Any other
6946      attempt to copy, modify, sublicense or distribute the Document is
6947      void, and will automatically terminate your rights under this
6948      License.  However, parties who have received copies, or rights,
6949      from you under this License will not have their licenses terminated
6950      so long as such parties remain in full compliance.
6952   10. FUTURE REVISIONS OF THIS LICENSE
6954      The Free Software Foundation may publish new, revised versions of
6955      the GNU Free Documentation License from time to time.  Such new
6956      versions will be similar in spirit to the present version, but may
6957      differ in detail to address new problems or concerns.  See
6958      <http://www.gnu.org/copyleft/>.
6960      Each version of the License is given a distinguishing version
6961      number.  If the Document specifies that a particular numbered
6962      version of this License "or any later version" applies to it, you
6963      have the option of following the terms and conditions either of
6964      that specified version or of any later version that has been
6965      published (not as a draft) by the Free Software Foundation.  If the
6966      Document does not specify a version number of this License, you may
6967      choose any version ever published (not as a draft) by the Free
6968      Software Foundation.
6970 D.1.1 ADDENDUM: How to use this License for your documents
6971 ----------------------------------------------------------
6973 To use this License in a document you have written, include a copy of
6974 the License in the document and put the following copyright and license
6975 notices just after the title page:
6977        Copyright (C)  YEAR  YOUR NAME.
6978        Permission is granted to copy, distribute and/or modify this document
6979        under the terms of the GNU Free Documentation License, Version 1.2
6980        or any later version published by the Free Software Foundation;
6981        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
6982        Texts.  A copy of the license is included in the section entitled ``GNU
6983        Free Documentation License''.
6985    If you have Invariant Sections, Front-Cover Texts and Back-Cover
6986 Texts, replace the "with...Texts."  line with this:
6988          with the Invariant Sections being LIST THEIR TITLES, with
6989          the Front-Cover Texts being LIST, and with the Back-Cover Texts
6990          being LIST.
6992    If you have Invariant Sections without Cover Texts, or some other
6993 combination of the three, merge those two alternatives to suit the
6994 situation.
6996    If your document contains nontrivial examples of program code, we
6997 recommend releasing these examples in parallel under your choice of free
6998 software license, such as the GNU General Public License, to permit
6999 their use in free software.
7001 \x1f
7002 File: grub.info,  Node: Index,  Prev: Copying This Manual,  Up: Top
7004 Index
7005 *****
7007 \0\b[index\0\b]
7008 * Menu:
7010 * '[':                                   [.                     (line 6)
7011 * acpi:                                  acpi.                  (line 6)
7012 * authenticate:                          authenticate.          (line 6)
7013 * background_color:                      background_color.      (line 6)
7014 * background_image:                      background_image.      (line 6)
7015 * badram:                                badram.                (line 6)
7016 * blocklist:                             blocklist.             (line 6)
7017 * boot:                                  boot.                  (line 6)
7018 * cat:                                   cat.                   (line 6)
7019 * chainloader:                           chainloader.           (line 6)
7020 * clear:                                 clear.                 (line 6)
7021 * CMOS:                                  cmosdump.              (line 6)
7022 * cmosclean:                             cmosclean.             (line 6)
7023 * cmostest:                              cmostest.              (line 6)
7024 * cmp:                                   cmp.                   (line 6)
7025 * configfile:                            configfile.            (line 6)
7026 * cpuid:                                 cpuid.                 (line 6)
7027 * crc:                                   crc.                   (line 6)
7028 * cryptomount:                           cryptomount.           (line 6)
7029 * date:                                  date.                  (line 6)
7030 * devicetree:                            devicetree.            (line 6)
7031 * distrust:                              distrust.              (line 6)
7032 * drivemap:                              drivemap.              (line 6)
7033 * echo:                                  echo.                  (line 6)
7034 * eval:                                  eval.                  (line 6)
7035 * export:                                export.                (line 6)
7036 * false:                                 false.                 (line 6)
7037 * FDL, GNU Free Documentation License:   GNU Free Documentation License.
7038                                                                 (line 6)
7039 * gettext:                               gettext.               (line 6)
7040 * gptsync:                               gptsync.               (line 6)
7041 * halt:                                  halt.                  (line 6)
7042 * hashsum:                               hashsum.               (line 6)
7043 * help:                                  help.                  (line 6)
7044 * initrd:                                initrd.                (line 6)
7045 * initrd16:                              initrd16.              (line 6)
7046 * insmod:                                insmod.                (line 6)
7047 * keystatus:                             keystatus.             (line 6)
7048 * linux:                                 linux.                 (line 6)
7049 * linux16:                               linux16.               (line 6)
7050 * list_env:                              list_env.              (line 6)
7051 * list_trusted:                          list_trusted.          (line 6)
7052 * loadfont:                              loadfont.              (line 6)
7053 * load_env:                              load_env.              (line 6)
7054 * loopback:                              loopback.              (line 6)
7055 * ls:                                    ls.                    (line 6)
7056 * lsfonts:                               lsfonts.               (line 6)
7057 * lsmod:                                 lsmod.                 (line 6)
7058 * md5sum:                                md5sum.                (line 6)
7059 * menuentry:                             menuentry.             (line 6)
7060 * module:                                module.                (line 6)
7061 * multiboot:                             multiboot.             (line 6)
7062 * nativedisk:                            nativedisk.            (line 6)
7063 * net_add_addr:                          net_add_addr.          (line 6)
7064 * net_add_dns:                           net_add_dns.           (line 6)
7065 * net_add_route:                         net_add_route.         (line 6)
7066 * net_bootp:                             net_bootp.             (line 6)
7067 * net_del_addr:                          net_del_addr.          (line 6)
7068 * net_del_dns:                           net_del_dns.           (line 6)
7069 * net_del_route:                         net_del_route.         (line 6)
7070 * net_get_dhcp_option:                   net_get_dhcp_option.   (line 6)
7071 * net_ipv6_autoconf:                     net_ipv6_autoconf.     (line 6)
7072 * net_ls_addr:                           net_ls_addr.           (line 6)
7073 * net_ls_cards:                          net_ls_cards.          (line 6)
7074 * net_ls_dns:                            net_ls_dns.            (line 6)
7075 * net_ls_routes:                         net_ls_routes.         (line 6)
7076 * net_nslookup:                          net_nslookup.          (line 6)
7077 * normal:                                normal.                (line 6)
7078 * normal_exit:                           normal_exit.           (line 6)
7079 * parttool:                              parttool.              (line 6)
7080 * password:                              password.              (line 6)
7081 * password_pbkdf2:                       password_pbkdf2.       (line 6)
7082 * play:                                  play.                  (line 6)
7083 * probe:                                 probe.                 (line 6)
7084 * pxe_unload:                            pxe_unload.            (line 6)
7085 * read:                                  read.                  (line 6)
7086 * reboot:                                reboot.                (line 6)
7087 * regexp:                                regexp.                (line 6)
7088 * rmmod:                                 rmmod.                 (line 6)
7089 * save_env:                              save_env.              (line 6)
7090 * search:                                search.                (line 6)
7091 * sendkey:                               sendkey.               (line 6)
7092 * serial:                                serial.                (line 6)
7093 * set:                                   set.                   (line 6)
7094 * sha1sum:                               sha1sum.               (line 6)
7095 * sha256sum:                             sha256sum.             (line 6)
7096 * sha512sum:                             sha512sum.             (line 6)
7097 * sleep:                                 sleep.                 (line 6)
7098 * source:                                source.                (line 6)
7099 * submenu:                               submenu.               (line 6)
7100 * terminal_input:                        terminal_input.        (line 6)
7101 * terminal_output:                       terminal_output.       (line 6)
7102 * terminfo:                              terminfo.              (line 6)
7103 * test:                                  test.                  (line 6)
7104 * true:                                  true.                  (line 6)
7105 * trust:                                 trust.                 (line 6)
7106 * unset:                                 unset.                 (line 6)
7107 * verify_detached:                       verify_detached.       (line 6)
7108 * videoinfo:                             videoinfo.             (line 6)
7111 \x1f
7112 Tag Table:
7113 Node: Top\x7f1162
7114 Node: Introduction\x7f4226
7115 Node: Overview\x7f4670
7116 Node: Overview-Footnotes\x7f6660
7117 Ref: Overview-Footnote-1\x7f6721
7118 Node: History\x7f6883
7119 Node: Changes from GRUB Legacy\x7f8973
7120 Node: Features\x7f11449
7121 Node: Features-Footnotes\x7f17868
7122 Ref: Features-Footnote-1\x7f17929
7123 Ref: Features-Footnote-2\x7f18025
7124 Ref: Features-Footnote-3\x7f18172
7125 Node: Role of a boot loader\x7f18317
7126 Node: Role of a boot loader-Footnotes\x7f19656
7127 Ref: Role of a boot loader-Footnote-1\x7f19743
7128 Node: Naming convention\x7f19822
7129 Node: OS-specific notes about grub tools\x7f22733
7130 Node: Installation\x7f23769
7131 Node: Installing GRUB using grub-install\x7f24891
7132 Node: Making a GRUB bootable CD-ROM\x7f27578
7133 Node: Making a GRUB bootable CD-ROM-Footnotes\x7f29437
7134 Ref: Making a GRUB bootable CD-ROM-Footnote-1\x7f29540
7135 Node: Device map\x7f29615
7136 Node: BIOS installation\x7f31582
7137 Node: Booting\x7f34958
7138 Node: General boot methods\x7f35414
7139 Node: Loading an operating system directly\x7f36157
7140 Node: Chain-loading\x7f36888
7141 Node: Loopback booting\x7f37859
7142 Node: OS-specific notes\x7f39533
7143 Node: GNU/Hurd\x7f39822
7144 Node: GNU/Linux\x7f40945
7145 Node: NetBSD\x7f42571
7146 Node: DOS/Windows\x7f44045
7147 Node: Configuration\x7f45823
7148 Node: Simple configuration\x7f46432
7149 Node: Shell-like scripting\x7f60288
7150 Node: Shell-like scripting-Footnotes\x7f68342
7151 Ref: Shell-like scripting-Footnote-1\x7f68427
7152 Node: Multi-boot manual config\x7f68554
7153 Node: Embedded configuration\x7f72182
7154 Node: Theme file format\x7f75018
7155 Ref: Pixmap-styled progress bar\x7f76477
7156 Ref: Plain progress bar, drawn with solid color.\x7f76489
7157 Ref: An example of the slices (in red) used for a terminal window. This drawing was created and sliced in Inkscape_, as the next section explains.\x7f79981
7158 Node: Network\x7f100393
7159 Node: Serial terminal\x7f103000
7160 Node: Vendor power-on keys\x7f105237
7161 Node: Images\x7f107127
7162 Node: Core image size limitation\x7f112102
7163 Node: Filesystem\x7f114666
7164 Node: Device syntax\x7f115375
7165 Node: File name syntax\x7f118076
7166 Node: Block list syntax\x7f119122
7167 Node: Interface\x7f119856
7168 Node: Command-line interface\x7f120680
7169 Node: Command-line interface-Footnotes\x7f122624
7170 Ref: Command-line interface-Footnote-1\x7f122713
7171 Node: Menu interface\x7f122808
7172 Node: Menu entry editor\x7f123820
7173 Node: Environment\x7f124558
7174 Node: Special environment variables\x7f125261
7175 Node: biosnum\x7f126246
7176 Node: check_signatures\x7f126770
7177 Node: chosen\x7f127057
7178 Node: cmdpath\x7f127500
7179 Node: color_highlight\x7f127927
7180 Node: color_normal\x7f128339
7181 Node: debug\x7f129991
7182 Node: default\x7f130431
7183 Node: fallback\x7f131557
7184 Node: gfxmode\x7f131888
7185 Node: gfxpayload\x7f132686
7186 Node: gfxterm_font\x7f133840
7187 Node: grub_cpu\x7f134140
7188 Node: grub_platform\x7f134428
7189 Node: icondir\x7f134720
7190 Node: lang\x7f135037
7191 Node: locale_dir\x7f135506
7192 Node: menu_color_highlight\x7f136015
7193 Node: menu_color_normal\x7f136511
7194 Node: net_<INTERFACE>_boot_file\x7f137012
7195 Node: net_<INTERFACE>_dhcp_server_name\x7f137255
7196 Node: net_<INTERFACE>_domain\x7f137517
7197 Node: net_<INTERFACE>_extensionspath\x7f137764
7198 Node: net_<INTERFACE>_hostname\x7f138019
7199 Node: net_<INTERFACE>_ip\x7f138258
7200 Node: net_<INTERFACE>_mac\x7f138474
7201 Node: net_<INTERFACE>_rootpath\x7f138692
7202 Node: net_default_interface\x7f138923
7203 Node: net_default_ip\x7f139143
7204 Node: net_default_mac\x7f139340
7205 Node: net_default_server\x7f139536
7206 Node: pager\x7f139729
7207 Node: prefix\x7f139985
7208 Node: pxe_blksize\x7f140434
7209 Node: pxe_default_gateway\x7f140611
7210 Node: pxe_default_server\x7f140816
7211 Node: root\x7f141012
7212 Node: superusers\x7f141553
7213 Node: theme\x7f141801
7214 Node: timeout\x7f142122
7215 Node: timeout_style\x7f142759
7216 Node: Environment block\x7f143144
7217 Node: Commands\x7f144576
7218 Node: Menu-specific commands\x7f145446
7219 Node: menuentry\x7f146174
7220 Node: submenu\x7f147725
7221 Node: General commands\x7f148274
7222 Node: serial\x7f148770
7223 Node: terminal_input\x7f149821
7224 Node: terminal_output\x7f150487
7225 Node: terminfo\x7f151154
7226 Node: Command-line and menu entry commands\x7f152289
7227 Node: [\x7f157304
7228 Node: acpi\x7f157490
7229 Node: authenticate\x7f158547
7230 Node: background_color\x7f158974
7231 Node: background_image\x7f159647
7232 Node: badram\x7f160197
7233 Node: blocklist\x7f161250
7234 Node: boot\x7f161484
7235 Node: cat\x7f161806
7236 Node: chainloader\x7f162442
7237 Node: clear\x7f163070
7238 Node: cmosclean\x7f163256
7239 Node: cmosdump\x7f163560
7240 Node: cmostest\x7f163855
7241 Node: cmp\x7f164213
7242 Node: configfile\x7f164764
7243 Node: cpuid\x7f165189
7244 Node: crc\x7f165656
7245 Node: cryptomount\x7f165930
7246 Node: date\x7f166677
7247 Node: devicetree\x7f167226
7248 Node: distrust\x7f167623
7249 Node: drivemap\x7f168404
7250 Node: echo\x7f169211
7251 Node: eval\x7f170154
7252 Node: export\x7f170437
7253 Node: false\x7f170748
7254 Node: gettext\x7f171044
7255 Node: gptsync\x7f171491
7256 Node: halt\x7f172436
7257 Node: hashsum\x7f172767
7258 Node: help\x7f173993
7259 Node: initrd\x7f174460
7260 Node: initrd16\x7f174872
7261 Node: insmod\x7f175377
7262 Node: keystatus\x7f175599
7263 Node: linux\x7f176238
7264 Node: linux16\x7f177141
7265 Node: list_env\x7f177855
7266 Node: list_trusted\x7f178221
7267 Node: load_env\x7f178804
7268 Node: loadfont\x7f180477
7269 Node: loopback\x7f180848
7270 Node: ls\x7f181296
7271 Node: lsfonts\x7f181838
7272 Node: lsmod\x7f182020
7273 Node: md5sum\x7f182210
7274 Node: module\x7f182489
7275 Node: multiboot\x7f182801
7276 Node: nativedisk\x7f183909
7277 Node: normal\x7f184308
7278 Node: normal_exit\x7f185075
7279 Node: parttool\x7f185397
7280 Node: password\x7f186904
7281 Node: password_pbkdf2\x7f187186
7282 Node: play\x7f187594
7283 Node: probe\x7f188342
7284 Node: pxe_unload\x7f188724
7285 Node: read\x7f189004
7286 Node: reboot\x7f189353
7287 Node: regexp\x7f189536
7288 Node: rmmod\x7f190073
7289 Node: save_env\x7f190266
7290 Node: search\x7f191288
7291 Node: sendkey\x7f192066
7292 Node: set\x7f198492
7293 Node: sha1sum\x7f198794
7294 Node: sha256sum\x7f199079
7295 Node: sha512sum\x7f199378
7296 Node: sleep\x7f199675
7297 Node: source\x7f200132
7298 Node: test\x7f200684
7299 Node: true\x7f203301
7300 Node: trust\x7f203587
7301 Node: unset\x7f204379
7302 Node: uppermem\x7f204586
7303 Node: verify_detached\x7f204811
7304 Node: videoinfo\x7f205859
7305 Node: Networking commands\x7f206123
7306 Node: net_add_addr\x7f207075
7307 Node: net_add_dns\x7f207595
7308 Node: net_add_route\x7f207871
7309 Node: net_bootp\x7f208401
7310 Node: net_del_addr\x7f210117
7311 Node: net_del_dns\x7f210357
7312 Node: net_del_route\x7f210604
7313 Node: net_get_dhcp_option\x7f210849
7314 Node: net_ipv6_autoconf\x7f211335
7315 Node: net_ls_addr\x7f211754
7316 Node: net_ls_cards\x7f212002
7317 Node: net_ls_dns\x7f212238
7318 Node: net_ls_routes\x7f212469
7319 Node: net_nslookup\x7f212676
7320 Node: Internationalisation\x7f212960
7321 Node: Security\x7f219787
7322 Node: Authentication and authorisation\x7f220055
7323 Node: Using digital signatures\x7f222901
7324 Node: Platform limitations\x7f225981
7325 Node: Platform-specific operations\x7f231941
7326 Node: Supported kernels\x7f233006
7327 Node: Troubleshooting\x7f240643
7328 Node: GRUB only offers a rescue shell\x7f240869
7329 Node: Invoking grub-install\x7f243830
7330 Node: Invoking grub-mkconfig\x7f246000
7331 Node: Invoking grub-mkpasswd-pbkdf2\x7f246637
7332 Node: Invoking grub-mkrelpath\x7f247296
7333 Node: Invoking grub-mkrescue\x7f248069
7334 Node: Invoking grub-mount\x7f249818
7335 Node: Invoking grub-probe\x7f252867
7336 Node: Invoking grub-script-check\x7f255461
7337 Node: Obtaining and Building GRUB\x7f256205
7338 Node: Reporting bugs\x7f257478
7339 Node: Future\x7f260294
7340 Node: Copying This Manual\x7f260694
7341 Node: GNU Free Documentation License\x7f260922
7342 Node: Index\x7f283310
7343 \x1f
7344 End Tag Table