aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrocket <crockabiscuit@yahoo.com>2010-07-10 10:27:02 -0400
committerErik Hanson <erik@slackbuilds.org>2010-07-11 10:28:11 -0500
commit03daf0605a90e78f1568ebb4a97d971e2a11a727 (patch)
tree9a6796374464179747980ba2eae1dfb9747b0d16
parent1ae2e43b3812edf05daf3cbcc97335f889389bb1 (diff)
system/grub2: Added (GRand Unified Bootloader)
Signed-off-by: dsomero <xgizzmo@slackbuilds.org>
-rw-r--r--system/grub2/05_debian_theme61
-rw-r--r--system/grub2/README14
-rw-r--r--system/grub2/doinst.sh14
-rw-r--r--system/grub2/etc.default.grub32
-rw-r--r--system/grub2/grub.info2557
-rw-r--r--system/grub2/grub2.SlackBuild114
-rw-r--r--system/grub2/grub2.info10
-rw-r--r--system/grub2/slack-desc19
8 files changed, 2821 insertions, 0 deletions
diff --git a/system/grub2/05_debian_theme b/system/grub2/05_debian_theme
new file mode 100644
index 000000000000..4c8a00b05ed1
--- /dev/null
+++ b/system/grub2/05_debian_theme
@@ -0,0 +1,61 @@
+#!/bin/bash -e
+
+source /usr/lib/grub/grub-mkconfig_lib
+
+# this allows desktop-base to override our settings
+f=/usr/share/desktop-base/grub_background.sh
+if test -e ${f} ; then
+ source ${f}
+else
+ WALLPAPER="/usr/share/images/desktop-base/moreblue-orbit-grub.png"
+ COLOR_NORMAL="white/black"
+ COLOR_HIGHLIGHT="white/light-gray"
+fi
+
+set_mono_theme()
+{
+ cat << EOF
+set menu_color_normal=white/black
+set menu_color_highlight=black/light-gray
+EOF
+}
+
+# check for usable backgrounds
+use_bg=false
+if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then
+ for i in /boot/grub/`basename ${WALLPAPER}` ${WALLPAPER} ; do
+ if is_path_readable_by_grub $i ; then
+ bg=$i
+ case ${bg} in
+ *.png) reader=png ;;
+ *.tga) reader=tga ;;
+ *.jpg|*.jpeg) reader=jpeg ;;
+ esac
+ if test -e /boot/grub/${reader}.mod ; then
+ echo "Found background image: `basename ${bg}`" >&2
+ use_bg=true
+ break
+ fi
+ fi
+ done
+fi
+
+# set the background if possible
+if ${use_bg} ; then
+ prepare_grub_to_access_device `${grub_probe} --target=device ${bg}`
+ cat << EOF
+insmod ${reader}
+if background_image `make_system_path_relative_to_its_root ${bg}` ; then
+ set color_normal=${COLOR_NORMAL}
+ set color_highlight=${COLOR_HIGHLIGHT}
+else
+EOF
+fi
+
+# otherwise, set a monochromatic theme for Ubuntu
+if ${use_bg} ; then
+ set_mono_theme | sed -e "s/^/ /g"
+ echo "fi"
+else
+ set_mono_theme
+fi
diff --git a/system/grub2/README b/system/grub2/README
new file mode 100644
index 000000000000..0079f7d26bc2
--- /dev/null
+++ b/system/grub2/README
@@ -0,0 +1,14 @@
+GRUB2 (the GRand Unified Bootloader)
+
+GNU GRUB is a multiboot boot loader.
+
+If you want to use a big font in a graphical terminal of grub2,
+try the below command.
+grub-mkfont -o /usr/share/grub/unifont.pf2 -abv -s [font size] /usr/share/
+fonts/unifont/unifont.ttf
+
+If you want to use a fixed sized small font in gfxterm,
+try this. grub-mkfont -o /usr/share/grub/unifont.pf2 -v /usr/share/fonts/
+unifont/unifont.pcf.gz
+
+Requires: osprober unifont help2man \ No newline at end of file
diff --git a/system/grub2/doinst.sh b/system/grub2/doinst.sh
new file mode 100644
index 000000000000..6e0020b4b941
--- /dev/null
+++ b/system/grub2/doinst.sh
@@ -0,0 +1,14 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+
diff --git a/system/grub2/etc.default.grub b/system/grub2/etc.default.grub
new file mode 100644
index 000000000000..1bad5bcdae51
--- /dev/null
+++ b/system/grub2/etc.default.grub
@@ -0,0 +1,32 @@
+# If you change this file, run grub-mkconfig -o /boot/grub/grub.cfg
+# afterwards to update /boot/grub/grub.cfg.
+
+GRUB_DEFAULT=0
+#GRUB_HIDDEN_TIMEOUT=0
+GRUB_HIDDEN_TIMEOUT_QUIET=false
+GRUB_TIMEOUT=10
+GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
+GRUB_CMDLINE_LINUX_DEFAULT="quiet"
+# Added by crocket
+# VESA display mode code
+# Example: GRUB_CMDLINE_LINUX="vga=xxx"
+# If you want to know vesa display mode codes for linux
+# Visit http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#Linux_video_mode_numbers
+# or http://www.gregfolkert.net/info/vesa-display-codes.html
+# gfxpayload=1024x768(e.g,) can be used safely in future releases of grub2.
+# please refer to the information displayed by executing "info grub".
+GRUB_CMDLINE_LINUX=""
+
+# Uncomment to disable graphical terminal (grub-pc only)
+#GRUB_TERMINAL=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+#GRUB_GFXMODE=640x480
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entrys
+#GRUB_DISABLE_LINUX_RECOVERY="true"
diff --git a/system/grub2/grub.info b/system/grub2/grub.info
new file mode 100644
index 000000000000..643b302fd24f
--- /dev/null
+++ b/system/grub2/grub.info
@@ -0,0 +1,2557 @@
+This is docs/grub.info, produced by makeinfo version 4.13 from
+docs/grub.texi.
+
+This manual is for GNU GRUB (version 1.98, 2 June 2010).
+
+ Copyright (C) 1999,2000,2001,2002,2004,2006,2008,2009,2010 Free
+Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections.
+
+INFO-DIR-SECTION Kernel
+START-INFO-DIR-ENTRY
+* GRUB: (grub). The GRand Unified Bootloader
+* grub-install: (grub)Invoking grub-install. Install GRUB on your drive
+* grub-mkconfig: (grub)Invoking grub-mkconfig. Generate GRUB configuration
+END-INFO-DIR-ENTRY
+
+
+File: grub.info, Node: Top, Next: Introduction, Up: (dir)
+
+GNU GRUB manual
+***************
+
+This is the documentation of GNU GRUB, the GRand Unified Bootloader, a
+flexible and powerful boot loader program for a wide range of
+architectures.
+
+ This edition documents version 1.98.
+
+ This manual is for GNU GRUB (version 1.98, 2 June 2010).
+
+ Copyright (C) 1999,2000,2001,2002,2004,2006,2008,2009,2010 Free
+Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections.
+
+* Menu:
+
+* Introduction:: Capturing the spirit of GRUB
+* Naming convention:: Names of your drives in GRUB
+* Installation:: Installing GRUB on your drive
+* Booting:: How to boot different operating systems
+* Configuration:: Writing your own configuration file
+* Network:: Downloading OS images from a network
+* Serial terminal:: Using GRUB via a serial line
+* Vendor power-on keys:: Changing GRUB behaviour on vendor power-on keys
+* Preset Menu:: Embedding a configuration file into GRUB
+* Images:: GRUB image files
+* Filesystem:: Filesystem syntax and semantics
+* Interface:: The menu and the command-line
+* Commands:: The list of available builtin commands
+* Troubleshooting:: Error messages produced by GRUB
+* Invoking grub-install:: How to use the GRUB installer
+* Invoking grub-mkconfig:: Generate a GRUB configuration file
+* Obtaining and Building GRUB:: How to obtain and build GRUB
+* Reporting bugs:: Where you should send a bug report
+* Future:: Some future plans on GRUB
+* Internals:: Hacking GRUB
+* Copying This Manual:: Copying This Manual
+* Index::
+
+
+File: grub.info, Node: Introduction, Next: Naming convention, Prev: Top, Up: Top
+
+1 Introduction to GRUB
+**********************
+
+* Menu:
+
+* Overview:: What exactly GRUB is and how to use it
+* History:: From maggot to house fly
+* Features:: GRUB features
+* Role of a boot loader:: The role of a boot loader
+
+
+File: grub.info, Node: Overview, Next: History, Up: Introduction
+
+1.1 Overview
+============
+
+Briefly, a "boot loader" is the first software program that runs when a
+computer starts. It is responsible for loading and transferring
+control to an operating system "kernel" software (such as Linux or GNU
+Mach). The kernel, in turn, initializes the rest of the operating
+system (e.g. a GNU system).
+
+ GNU GRUB is a very powerful boot loader, which can load a wide
+variety of free operating systems, as well as proprietary operating
+systems with chain-loading(1) (*note Overview-Footnote-1::). GRUB is
+designed to address the complexity of booting a personal computer; both
+the program and this manual are tightly bound to that computer platform,
+although porting to other platforms may be addressed in the future.
+
+ One of the important features in GRUB is flexibility; GRUB
+understands filesystems and kernel executable formats, so you can load
+an arbitrary operating system the way you like, without recording the
+physical position of your kernel on the disk. Thus you can load the
+kernel just by specifying its file name and the drive and partition
+where the kernel resides.
+
+ When booting with GRUB, you can use either a command-line interface
+(*note Command-line interface::), or a menu interface (*note Menu
+interface::). Using the command-line interface, you type the drive
+specification and file name of the kernel manually. In the menu
+interface, you just select an OS using the arrow keys. The menu is
+based on a configuration file which you prepare beforehand (*note
+Configuration::). While in the menu, you can switch to the command-line
+mode, and vice-versa. You can even edit menu entries before using them.
+
+ In the following chapters, you will learn how to specify a drive, a
+partition, and a file name (*note Naming convention::) to GRUB, how to
+install GRUB on your drive (*note Installation::), and how to boot your
+OSes (*note Booting::), step by step.
+
+
+File: grub.info, Node: Overview-Footnotes, Up: Overview
+
+ (1) "chain-load" is the mechanism for loading unsupported operating
+systems by loading another boot loader. It is typically used for
+loading DOS or Windows.
+
+
+File: grub.info, Node: History, Next: Features, Prev: Overview, Up: Introduction
+
+1.2 History of GRUB
+===================
+
+GRUB originated in 1995 when Erich Boleyn was trying to boot the GNU
+Hurd with the University of Utah's Mach 4 microkernel (now known as GNU
+Mach). Erich and Brian Ford designed the Multiboot Specification
+(*note Multiboot Specification: (multiboot)Top.), because they were
+determined not to add to the large number of mutually-incompatible PC
+boot methods.
+
+ Erich then began modifying the FreeBSD boot loader so that it would
+understand Multiboot. He soon realized that it would be a lot easier to
+write his own boot loader from scratch than to keep working on the
+FreeBSD boot loader, and so GRUB was born.
+
+ Erich added many features to GRUB, but other priorities prevented him
+from keeping up with the demands of its quickly-expanding user base. In
+1999, Gordon Matzigkeit and Yoshinori K. Okuji adopted GRUB as an
+official GNU package, and opened its development by making the latest
+sources available via anonymous CVS. *Note Obtaining and Building
+GRUB::, for more information.
+
+
+File: grub.info, Node: Features, Next: Role of a boot loader, Prev: History, Up: Introduction
+
+1.3 GRUB features
+=================
+
+The primary requirement for GRUB is that it be compliant with the
+"Multiboot Specification", which is described in *note Multiboot
+Specification: (multiboot)Top.
+
+ The other goals, listed in approximate order of importance, are:
+
+ * Basic functions must be straightforward for end-users.
+
+ * Rich functionality to support kernel experts and designers.
+
+ * Backward compatibility for booting FreeBSD, NetBSD, OpenBSD, and
+ Linux. Proprietary kernels (such as DOS, Windows NT, and OS/2) are
+ supported via a chain-loading function.
+
+ Except for specific compatibility modes (chain-loading and the Linux
+"piggyback" format), all kernels will be started in much the same state
+as in the Multiboot Specification. Only kernels loaded at 1 megabyte or
+above are presently supported. Any attempt to load below that boundary
+will simply result in immediate failure and an error message reporting
+the problem.
+
+ In addition to the requirements above, GRUB has the following
+features (note that the Multiboot Specification doesn't require all the
+features that GRUB supports):
+
+Recognize multiple executable formats
+ Support many of the "a.out" variants plus "ELF". Symbol tables are
+ also loaded.
+
+Support non-Multiboot kernels
+ Support many of the various free 32-bit kernels that lack Multiboot
+ compliance (primarily FreeBSD, NetBSD, OpenBSD, and Linux).
+ Chain-loading of other boot loaders is also supported.
+
+Load multiples modules
+ Fully support the Multiboot feature of loading multiple modules.
+
+Load a configuration file
+ Support a human-readable text configuration file with preset boot
+ commands. You can also load another configuration file dynamically
+ and embed a preset configuration file in a GRUB image file. The
+ list of commands (*note Commands::) are a superset of those
+ supported on the command-line. An example configuration file is
+ provided in *note Configuration::.
+
+Provide a menu interface
+ A menu interface listing preset boot commands, with a programmable
+ timeout, is available. There is no fixed limit on the number of
+ boot entries, and the current implementation has space for several
+ hundred.
+
+Have a flexible command-line interface
+ A fairly flexible command-line interface, accessible from the menu,
+ is available to edit any preset commands, or write a new boot
+ command set from scratch. If no configuration file is present,
+ GRUB drops to the command-line.
+
+ The list of commands (*note Commands::) are a subset of those
+ supported for configuration files. Editing commands closely
+ resembles the Bash command-line (*note Bash: (features)Command
+ Line Editing.), with <TAB>-completion of commands, devices,
+ partitions, and files in a directory depending on context.
+
+Support multiple filesystem types
+ Support multiple filesystem types transparently, plus a useful
+ explicit blocklist notation. The currently supported filesystem
+ types are "BSD FFS", "DOS FAT16 and FAT32", "Minix fs", "Linux
+ ext2fs", "ReiserFS", "JFS", "XFS", and "VSTa fs". *Note
+ Filesystem::, for more information.
+
+Support automatic decompression
+ Can decompress files which were compressed by `gzip'. This
+ function is both automatic and transparent to the user (i.e. all
+ functions operate upon the uncompressed contents of the specified
+ files). This greatly reduces a file size and loading time, a
+ particularly great benefit for floppies.(1) (*note
+ Features-Footnote-1::)
+
+ It is conceivable that some kernel modules should be loaded in a
+ compressed state, so a different module-loading command can be
+ specified to avoid uncompressing the modules.
+
+Access data on any installed device
+ Support reading data from any or all floppies or hard disk(s)
+ recognized by the BIOS, independent of the setting of the root
+ device.
+
+Be independent of drive geometry translations
+ Unlike many other boot loaders, GRUB makes the particular drive
+ translation irrelevant. A drive installed and running with one
+ translation may be converted to another translation without any
+ adverse effects or changes in GRUB's configuration.
+
+Detect all installed RAM
+ GRUB can generally find all the installed RAM on a PC-compatible
+ machine. It uses an advanced BIOS query technique for finding all
+ memory regions. As described on the Multiboot Specification (*note
+ Multiboot Specification: (multiboot)Top.), not all kernels make
+ use of this information, but GRUB provides it for those who do.
+
+Support Logical Block Address mode
+ In traditional disk calls (called "CHS mode"), there is a geometry
+ translation problem, that is, the BIOS cannot access over 1024
+ cylinders, so the accessible space is limited to at least 508 MB
+ and to at most 8GB. GRUB can't universally solve this problem, as
+ there is no standard interface used in all machines. However,
+ several newer machines have the new interface, Logical Block
+ Address ("LBA") mode. GRUB automatically detects if LBA mode is
+ available and uses it if available. In LBA mode, GRUB can access
+ the entire disk.
+
+Support network booting
+ GRUB is basically a disk-based boot loader but also has network
+ support. You can load OS images from a network by using the "TFTP"
+ protocol.
+
+Support remote terminals
+ To support computers with no console, GRUB provides remote terminal
+ support, so that you can control GRUB from a remote host. Only
+ serial terminal support is implemented at the moment.
+
+
+File: grub.info, Node: Features-Footnotes, Up: Features
+
+ (1) There are a few pathological cases where loading a very badly
+organized ELF kernel might take longer, but in practice this never
+happen.
+
+
+File: grub.info, Node: Role of a boot loader, Prev: Features, Up: Introduction
+
+1.4 The role of a boot loader
+=============================
+
+The following is a quotation from Gordon Matzigkeit, a GRUB fanatic:
+
+ Some people like to acknowledge both the operating system and
+ kernel when they talk about their computers, so they might say
+ they use "GNU/Linux" or "GNU/Hurd". Other people seem to think
+ that the kernel is the most important part of the system, so they
+ like to call their GNU operating systems "Linux systems."
+
+ I, personally, believe that this is a grave injustice, because the
+ _boot loader_ is the most important software of all. I used to
+ refer to the above systems as either "LILO"(1) (*note Role of a
+ boot loader-Footnote-1::) or "GRUB" systems.
+
+ Unfortunately, nobody ever understood what I was talking about;
+ now I just use the word "GNU" as a pseudonym for GRUB.
+
+ So, if you ever hear people talking about their alleged "GNU"
+ systems, remember that they are actually paying homage to the best
+ boot loader around... GRUB!
+
+ We, the GRUB maintainers, do not (usually) encourage Gordon's level
+of fanaticism, but it helps to remember that boot loaders deserve
+recognition. We hope that you enjoy using GNU GRUB as much as we did
+writing it.
+
+
+File: grub.info, Node: Role of a boot loader-Footnotes, Up: Role of a boot loader
+
+ (1) The LInux LOader, a boot loader that everybody uses, but nobody
+likes.
+
+
+File: grub.info, Node: Naming convention, Next: Installation, Prev: Introduction, Up: Top
+
+2 Naming convention
+*******************
+
+The device syntax used in GRUB is a wee bit different from what you may
+have seen before in your operating system(s), and you need to know it so
+that you can specify a drive/partition.
+
+ Look at the following examples and explanations:
+
+ (fd0)
+
+ First of all, GRUB requires that the device name be enclosed with
+`(' and `)'. The `fd' part means that it is a floppy disk. The number
+`0' is the drive number, which is counted from _zero_. This expression
+means that GRUB will use the whole floppy disk.
+
+ (hd0,2)
+
+ Here, `hd' means it is a hard disk drive. The first integer `0'
+indicates the drive number, that is, the first hard disk, while the
+second integer, `1', indicates the partition number (or the PC slice
+number in the BSD terminology). The partition numbers are counted from
+_one_, not from zero (as was the case in previous versions of GRUB).
+This expression means the second partition of the first hard disk
+drive. In this case, GRUB uses one partition of the disk, instead of
+the whole disk.
+
+ (hd0,5)
+
+ This specifies the first "extended partition" of the first hard disk
+drive. Note that the partition numbers for extended partitions are
+counted from `5', regardless of the actual number of primary partitions
+on your hard disk.
+
+ (hd1,a)
+
+ This means the BSD `a' partition of the second hard disk. If you
+need to specify which PC slice number should be used, use something
+like this: `(hd1,1,a)'. If the PC slice number is omitted, GRUB
+searches for the first PC slice which has a BSD `a' partition.
+
+ Of course, to actually access the disks or partitions with GRUB, you
+need to use the device specification in a command, like `root (fd0)' or
+`unhide (hd0,3)'. To help you find out which number specifies a
+partition you want, the GRUB command-line (*note Command-line
+interface::) options have argument completion. This means that, for
+example, you only need to type
+
+ root (
+
+ followed by a <TAB>, and GRUB will display the list of drives,
+partitions, or file names. So it should be quite easy to determine the
+name of your target partition, even with minimal knowledge of the
+syntax.
+
+ Note that GRUB does _not_ distinguish IDE from SCSI - it simply
+counts the drive numbers from zero, regardless of their type. Normally,
+any IDE drive number is less than any SCSI drive number, although that
+is not true if you change the boot sequence by swapping IDE and SCSI
+drives in your BIOS.
+
+ Now the question is, how to specify a file? Again, consider an
+example:
+
+ (hd0,1)/vmlinuz
+
+ This specifies the file named `vmlinuz', found on the first
+partition of the first hard disk drive. Note that the argument
+completion works with file names, too.
+
+ That was easy, admit it. Now read the next chapter, to find out how
+to actually install GRUB on your drive.
+
+
+File: grub.info, Node: Installation, Next: Booting, Prev: Naming convention, Up: Top
+
+3 Installation
+**************
+
+In order to install GRUB as your boot loader, you need to first install
+the GRUB system and utilities under your UNIX-like operating system
+(*note Obtaining and Building GRUB::). You can do this either from the
+source tarball, or as a package for your OS.
+
+ After you have done that, you need to install the boot loader on a
+drive (floppy or hard disk). There are two ways of doing that - either
+using the utility `grub-install' (*note Invoking grub-install::) on a
+UNIX-like OS, or by running GRUB itself from a floppy. These are quite
+similar, however the utility might probe a wrong BIOS drive, so you
+should be careful.
+
+ Also, if you install GRUB on a UNIX-like OS, please make sure that
+you have an emergency boot disk ready, so that you can rescue your
+computer if, by any chance, your hard drive becomes unusable
+(unbootable).
+
+ GRUB comes with boot images, which are normally put in the directory
+`/usr/lib/grub/i386-pc'. Hereafter, the directory where GRUB images are
+initially placed (normally `/usr/lib/grub/i386-pc') will be called the
+"image directory", and the directory where the boot loader needs to
+find them (usually `/boot/grub') will be called the "boot directory".
+
+* Menu:
+
+* Installing GRUB using grub-install::
+* Making a GRUB bootable CD-ROM::
+
+
+File: grub.info, Node: Installing GRUB using grub-install, Next: Making a GRUB bootable CD-ROM, Up: Installation
+
+3.1 Installing GRUB using grub-install
+======================================
+
+*Caution:* This procedure is definitely less safe, because there are
+several ways in which your computer can become unbootable. For example,
+most operating systems don't tell GRUB how to map BIOS drives to OS
+devices correctly--GRUB merely "guesses" the mapping. This will succeed
+in most cases, but not always. Therefore, GRUB provides you with a map
+file called the "device map", which you must fix if it is wrong. *Note
+Device map::, for more details.
+
+ If you still do want to install GRUB under a UNIX-like OS (such as
+GNU), invoke the program `grub-install' (*note Invoking grub-install::)
+as the superuser ("root").
+
+ The usage is basically very simple. You only need to specify one
+argument to the program, namely, where to install the boot loader. The
+argument can be either a device file (like `/dev/hda') or a partition
+specified in GRUB's notation. For example, under Linux the following
+will install GRUB into the MBR of the first IDE disk:
+
+ # grub-install /dev/hda
+
+ Likewise, under GNU/Hurd, this has the same effect:
+
+ # grub-install /dev/hd0
+
+ If it is the first BIOS drive, this is the same as well:
+
+ # grub-install '(hd0)'
+
+ Or you can omit the parentheses:
+
+ # grub-install hd0
+
+ But all the above examples assume that GRUB should use images under
+the root directory. If you want GRUB to use images under a directory
+other than the root directory, you need to specify the option
+`--root-directory'. The typical usage is that you create a GRUB boot
+floppy with a filesystem. Here is an example:
+
+ # mke2fs /dev/fd0
+ # mount -t ext2 /dev/fd0 /mnt
+ # grub-install --root-directory=/mnt fd0
+ # umount /mnt
+
+ Another example is when you have a separate boot partition which is
+mounted at `/boot'. Since GRUB is a boot loader, it doesn't know
+anything about mountpoints at all. Thus, you need to run `grub-install'
+like this:
+
+ # grub-install --root-directory=/boot /dev/hda
+
+ By the way, as noted above, it is quite difficult to guess BIOS
+drives correctly under a UNIX-like OS. Thus, `grub-install' will prompt
+you to check if it could really guess the correct mappings, after the
+installation. The format is defined in *note Device map::. Please be
+quite careful. If the output is wrong, it is unlikely that your
+computer will be able to boot with no problem.
+
+ Note that `grub-install' is actually just a shell script and the
+real task is done by `grub-mkimage' and `grub-setup'. Therefore, you
+may run those commands directly to install GRUB, without using
+`grub-install'. Don't do that, however, unless you are very familiar
+with the internals of GRUB. Installing a boot loader on a running OS
+may be extremely dangerous.
+
+
+File: grub.info, Node: Making a GRUB bootable CD-ROM, Prev: Installing GRUB using grub-install, Up: Installation
+
+3.2 Making a GRUB bootable CD-ROM
+=================================
+
+GRUB supports the "no emulation mode" in the El Torito specification(1)
+(*note Making a GRUB bootable CD-ROM-Footnote-1::). This means that you
+can use the whole CD-ROM from GRUB and you don't have to make a floppy
+or hard disk image file, which can cause compatibility problems.
+
+ For booting from a CD-ROM, GRUB uses a special Stage 2 called
+`stage2_eltorito'. The only GRUB files you need to have in your
+bootable CD-ROM are this `stage2_eltorito' and optionally a config file
+`grub.cfg'. You don't need to use `stage1' or `stage2', because El
+Torito is quite different from the standard boot process.
+
+ Here is an example of procedures to make a bootable CD-ROM image.
+First, make a top directory for the bootable image, say, `iso':
+
+ $ mkdir iso
+
+ Make a directory for GRUB:
+
+ $ mkdir -p iso/boot/grub
+
+ Copy the file `stage2_eltorito':
+
+ $ cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
+
+ If desired, make the config file `grub.cfg' under `iso/boot/grub'
+(*note Configuration::), and copy any files and directories for the
+disc to the directory `iso/'.
+
+ Finally, make a ISO9660 image file like this:
+
+ $ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
+ -boot-load-size 4 -boot-info-table -o grub.iso iso
+
+ This produces a file named `grub.iso', which then can be burned into
+a CD (or a DVD). `mkisofs' has already set up the disc to boot from
+the `boot/grub/stage2_eltorito' file, so there is no need to setup GRUB
+on the disc. (Note that the `-boot-load-size 4' bit is required for
+compatibility with the BIOS on many older machines.)
+
+ You can use the device `(cd)' to access a CD-ROM in your config
+file. This is not required; GRUB automatically sets the root device to
+`(cd)' when booted from a CD-ROM. It is only necessary to refer to
+`(cd)' if you want to access other drives as well.
+
+
+File: grub.info, Node: Making a GRUB bootable CD-ROM-Footnotes, Up: Making a GRUB bootable CD-ROM
+
+ (1) El Torito is a specification for bootable CD using BIOS
+functions.
+
+
+File: grub.info, Node: Booting, Next: Configuration, Prev: Installation, Up: Top
+
+4 Booting
+*********
+
+GRUB can load Multiboot-compliant kernels in a consistent way, but for
+some free operating systems you need to use some OS-specific magic.
+
+* Menu:
+
+* General boot methods:: How to boot OSes with GRUB generally
+* OS-specific notes:: Notes on some operating systems
+
+
+File: grub.info, Node: General boot methods, Next: OS-specific notes, Up: Booting
+
+4.1 How to boot operating systems
+=================================
+
+GRUB has two distinct boot methods. One of the two is to load an
+operating system directly, and the other is to chain-load another boot
+loader which then will load an operating system actually. Generally
+speaking, the former is more desirable, because you don't need to
+install or maintain other boot loaders and GRUB is flexible enough to
+load an operating system from an arbitrary disk/partition. However, the
+latter is sometimes required, since GRUB doesn't support all the
+existing operating systems natively.
+
+* Menu:
+
+* Loading an operating system directly::
+* Chain-loading::
+
+
+File: grub.info, Node: Loading an operating system directly, Next: Chain-loading, Up: General boot methods
+
+4.1.1 How to boot an OS directly with GRUB
+------------------------------------------
+
+Multiboot (*note Multiboot Specification: (multiboot)Top.) is the
+native format supported by GRUB. For the sake of convenience, there is
+also support for Linux, FreeBSD, NetBSD and OpenBSD. If you want to
+boot other operating systems, you will have to chain-load them (*note
+Chain-loading::).
+
+ FIXME: this section is incomplete.
+
+ 1. Run the command `boot' (*note boot::).
+
+ However, DOS and Windows have some deficiencies, so you might have to
+use more complicated instructions. *Note DOS/Windows::, for more
+information.
+
+
+File: grub.info, Node: Chain-loading, Prev: Loading an operating system directly, Up: General boot methods
+
+4.1.2 Chain-loading an OS
+-------------------------
+
+Operating systems that do not support Multiboot and do not have specific
+support in GRUB (specific support is available for Linux, FreeBSD,
+NetBSD and OpenBSD) must be chain-loaded, which involves loading
+another boot loader and jumping to it in real mode.
+
+ The `chainloader' command (*note chainloader::) is used to set this
+up. It is normally also necessary to load some GRUB modules and set the
+appropriate root device. Putting this together, we get something like
+this, for a Windows system on the first partition of the first hard
+disk:
+
+menuentry "Windows" {
+ insmod chain
+ insmod ntfs
+ set root=(hd0,1)
+ chainloader +1
+}
+
+ On systems with multiple hard disks, an additional workaround may be
+required. *Note DOS/Windows::.
+
+ Chain-loading is only supported on PC BIOS and EFI platforms.
+
+
+File: grub.info, Node: OS-specific notes, Prev: General boot methods, Up: Booting
+
+4.2 Some caveats on OS-specific issues
+======================================
+
+Here, we describe some caveats on several operating systems.
+
+* Menu:
+
+* GNU/Hurd::
+* GNU/Linux::
+* DOS/Windows::
+* SCO UnixWare::
+* QNX::
+
+
+File: grub.info, Node: GNU/Hurd, Next: GNU/Linux, Up: OS-specific notes
+
+4.2.1 GNU/Hurd
+--------------
+
+Since GNU/Hurd is Multiboot-compliant, it is easy to boot it; there is
+nothing special about it. But do not forget that you have to specify a
+root partition to the kernel.
+
+ FIXME: this section is incomplete.
+
+ 1. Run the command `boot' (*note boot::).
+
+
+File: grub.info, Node: GNU/Linux, Next: DOS/Windows, Prev: GNU/Hurd, Up: OS-specific notes
+
+4.2.2 GNU/Linux
+---------------
+
+It is relatively easy to boot GNU/Linux from GRUB, because it somewhat
+resembles to boot a Multiboot-compliant OS.
+
+ FIXME: this section is incomplete.
+
+ 1. Set GRUB's root device to the same drive as GNU/Linux's.
+
+ 2. Finally, run the command `boot' (*note boot::).
+
+ *Caution:* If you use an initrd and specify the `mem=' option to the
+kernel to let it use less than actual memory size, you will also have
+to specify the same memory size to GRUB. To let GRUB know the size, run
+the command `uppermem' _before_ loading the kernel. *Note uppermem::,
+for more information.
+
+
+File: grub.info, Node: DOS/Windows, Next: SCO UnixWare, Prev: GNU/Linux, Up: OS-specific notes
+
+4.2.3 DOS/Windows
+-----------------
+
+GRUB cannot boot DOS or Windows directly, so you must chain-load them
+(*note Chain-loading::). However, their boot loaders have some critical
+deficiencies, so it may not work to just chain-load them. To overcome
+the problems, GRUB provides you with a helper function.
+
+ If you have installed DOS (or Windows) on a non-first hard disk, you
+have to use the disk swapping technique, because that OS cannot boot
+from any disks but the first one. The workaround used in GRUB is the
+command `drivemap' (*note drivemap::), like this:
+
+ drivemap -s (hd0) (hd1)
+
+ This performs a "virtual" swap between your first and second hard
+drive.
+
+ *Caution:* This is effective only if DOS (or Windows) uses BIOS to
+access the swapped disks. If that OS uses a special driver for the
+disks, this probably won't work.
+
+ Another problem arises if you installed more than one set of
+DOS/Windows onto one disk, because they could be confused if there are
+more than one primary partitions for DOS/Windows. Certainly you should
+avoid doing this, but there is a solution if you do want to do so. Use
+the partition hiding/unhiding technique.
+
+ If GRUB "hides" a DOS (or Windows) partition (*note parttool::), DOS
+(or Windows) will ignore the partition. If GRUB "unhides" a DOS (or
+Windows) partition, DOS (or Windows) will detect the partition. Thus,
+if you have installed DOS (or Windows) on the first and the second
+partition of the first hard disk, and you want to boot the copy on the
+first partition, do the following:
+
+ parttool (hd0,1) hidden-
+ parttool (hd0,2) hidden+
+ set root=(hd0,1)
+ chainloader +1
+ parttool ${root} boot+
+ boot
+
+
+File: grub.info, Node: SCO UnixWare, Next: QNX, Prev: DOS/Windows, Up: OS-specific notes
+
+4.2.4 SCO UnixWare
+------------------
+
+It is known that the signature in the boot loader for SCO UnixWare is
+wrong, so you will have to specify the option `--force' to
+`chainloader' (*note chainloader::), like this:
+
+ set root=(hd1,1)
+ chainloader --force +1
+ parttool ${root} boot+
+ boot
+
+
+File: grub.info, Node: QNX, Prev: SCO UnixWare, Up: OS-specific notes
+
+4.2.5 QNX
+---------
+
+QNX seems to use a bigger boot loader, so you need to boot it up, like
+this:
+
+ set root=(hd1,2)
+ chainloader +4
+ boot
+
+
+File: grub.info, Node: Configuration, Next: Network, Prev: Booting, Up: Top
+
+5 Writing your own configuration file
+*************************************
+
+GRUB is configured using `grub.cfg', usually located under
+`/boot/grub'. This file is quite flexible, but most users will not
+need to write the whole thing by hand.
+
+* Menu:
+
+* Simple configuration:: Recommended for most users
+* Shell-like scripting:: For power users and developers
+
+
+File: grub.info, Node: Simple configuration, Next: Shell-like scripting, Up: Configuration
+
+5.1 Simple configuration handling
+=================================
+
+The program `grub-mkconfig' (*note Invoking grub-mkconfig::) generates
+`grub.cfg' files suitable for most cases. It is suitable for use when
+upgrading a distribution, and will discover available kernels and
+attempt to generate menu entries for them.
+
+ The file `/etc/default/grub' controls the operation of
+`grub-mkconfig'. It is sourced by a shell script, and so must be valid
+POSIX shell input; normally, it will just be a sequence of `KEY=value'
+lines, but if the value contains spaces or other special characters
+then it must be quoted. For example:
+
+ GRUB_TERMINAL_INPUT="console serial"
+
+ Valid keys in `/etc/default/grub' are as follows:
+
+`GRUB_DEFAULT'
+ The default menu entry. This may be a number, in which case it
+ identifies the Nth entry in the generated menu counted from zero,
+ or the full name of a menu entry, or the special string `saved'.
+ Using the full name may be useful if you want to set a menu entry
+ as the default even though there may be a variable number of
+ entries before it.
+
+ If you set this to `saved', then the default menu entry will be
+ that saved by `GRUB_SAVEDEFAULT', `grub-set-default', or
+ `grub-reboot'.
+
+ The default is `0'.
+
+`GRUB_SAVEDEFAULT'
+ If this option is set to `true', then, when an entry is selected,
+ save it as a new default entry for use by future runs of GRUB.
+ This is only useful if `GRUB_DEFAULT=saved'; it is a separate
+ option because `GRUB_DEFAULT=saved' is useful without this option,
+ in conjunction with `grub-set-default' or `grub-reboot'. Unset by
+ default.
+
+`GRUB_TIMEOUT'
+ Boot the default entry this many seconds after the menu is
+ displayed, unless a key is pressed. The default is `5'. Set to
+ `0' to boot immediately without displaying the menu, or to `-1' to
+ wait indefinitely.
+
+`GRUB_HIDDEN_TIMEOUT'
+ Wait this many seconds for a key to be pressed before displaying
+ the menu. If no key is pressed during that time, boot
+ immediately. Unset by default.
+
+`GRUB_HIDDEN_TIMEOUT_QUIET'
+ In conjunction with `GRUB_HIDDEN_TIMEOUT', set this to `true' to
+ suppress the verbose countdown while waiting for a key to be
+ pressed before displaying the menu. Unset by default.
+
+`GRUB_DEFAULT_BUTTON'
+`GRUB_TIMEOUT_BUTTON'
+`GRUB_HIDDEN_TIMEOUT_BUTTON'
+`GRUB_BUTTON_CMOS_ADDRESS'
+ Variants of the corresponding variables without the `_BUTTON'
+ suffix, used to support vendor-specific power buttons. *Note
+ Vendor power-on keys::.
+
+`GRUB_DISTRIBUTOR'
+ Set by distributors of GRUB to their identifying name. This is
+ used to generate more informative menu entry titles.
+
+`GRUB_TERMINAL_INPUT'
+ Select the terminal input device. You may select multiple devices
+ here, separated by spaces.
+
+ Valid terminal input names depend on the platform, but may include
+ `console' (PC BIOS and EFI consoles), `serial' (serial terminal),
+ `ofconsole' (Open Firmware console), `at_keyboard' (PC AT
+ keyboard, mainly useful with Coreboot), or `usb_keyboard' (USB
+ keyboard using the HID Boot Protocol, for cases where the firmware
+ does not handle this).
+
+ The default is to use the platform's native terminal input.
+
+`GRUB_TERMINAL_OUTPUT'
+ Select the terminal output device. You may select multiple
+ devices here, separated by spaces.
+
+ Valid terminal output names depend on the platform, but may include
+ `console' (PC BIOS and EFI consoles), `serial' (serial terminal),
+ `gfxterm' (graphics-mode output), `ofconsole' (Open Firmware
+ console), or `vga_text' (VGA text output, mainly useful with
+ Coreboot).
+
+ The default is to use the platform's native terminal input.
+
+`GRUB_TERMINAL'
+ If this option is set, it overrides both `GRUB_TERMINAL_INPUT' and
+ `GRUB_TERMINAL_OUTPUT' to the same value.
+
+`GRUB_SERIAL_COMMAND'
+ A command to configure the serial port when using the serial
+ console. *Note serial::. Defaults to `serial'.
+
+`GRUB_CMDLINE_LINUX'
+ Command-line arguments to add to menu entries for the Linux kernel.
+
+`GRUB_CMDLINE_LINUX_DEFAULT'
+ Unless `GRUB_DISABLE_LINUX_RECOVERY' is set, two menu entries will
+ be generated for each Linux kernel: one default entry and one
+ entry for recovery mode. This option lists command-line arguments
+ to add only to the default menu entry, after those listed in
+ `GRUB_CMDLINE_LINUX'.
+
+`GRUB_CMDLINE_NETBSD'
+`GRUB_CMDLINE_NETBSD_DEFAULT'
+ As `GRUB_CMDLINE_LINUX' and `GRUB_CMDLINE_LINUX_DEFAULT', but for
+ NetBSD.
+
+`GRUB_DISABLE_LINUX_UUID'
+ Normally, `grub-mkconfig' will generate menu entries that use
+ universally-unique identifiers (UUIDs) to identify the root
+ filesystem to the Linux kernel, using a `root=UUID=...' kernel
+ parameter. This is usually more reliable, but in some cases it
+ may not be appropriate. To disable the use of UUIDs, set this
+ option to `true'.
+
+`GRUB_DISABLE_LINUX_RECOVERY'
+ Disable the generation of recovery mode menu entries for Linux.
+
+`GRUB_DISABLE_NETBSD_RECOVERY'
+ Disable the generation of recovery mode menu entries for NetBSD.
+
+`GRUB_GFXMODE'
+ Set the resolution used on the `gfxterm' graphical terminal. Note
+ that you can only use modes which your graphics card supports via
+ VESA BIOS Extensions (VBE), so for example native LCD panel
+ resolutions may not be available. The default is `640x480'.
+
+`GRUB_BACKGROUND'
+ Set a background image for use with the `gfxterm' graphical
+ terminal. The value of this option must be a file readable by
+ GRUB at boot time, and it must end with `.png', `.tga', `.jpg', or
+ `.jpeg'. The image will be scaled if necessary to fit the screen.
+
+`GRUB_THEME'
+ Set a theme for use with the `gfxterm' graphical terminal. *Note
+ Themes::.
+
+`GRUB_GFXPAYLOAD_LINUX'
+ Set to `text' to force the Linux kernel to boot in normal text
+ mode, `keep' to preserve the graphics mode set using
+ `GRUB_GFXMODE', `WIDTHxHEIGHT'[`xDEPTH'] to set a particular
+ graphics mode, or a sequence of these separated by commas or
+ semicolons to try several modes in sequence.
+
+ Depending on your kernel, your distribution, your graphics card,
+ and the phase of the moon, note that using this option may cause
+ GNU/Linux to suffer from various display problems, particularly
+ during the early part of the boot sequence. If you have problems,
+ simply unset this option and GRUB will tell Linux to boot in
+ normal text mode.
+
+`GRUB_DISABLE_OS_PROBER'
+ Normally, `grub-mkconfig' will try to use the external `os-prober'
+ program, if installed, to discover other operating systems
+ installed on the same system and generate appropriate menu entries
+ for them. Set this option to `true' to disable this.
+
+`GRUB_INIT_TUNE'
+ Play a tune on the speaker when GRUB starts. This is particularly
+ useful for users unable to see the screen. The value of this
+ option is passed directly to *note play::.
+
+ For more detailed customisation of `grub-mkconfig''s output, you may
+edit the scripts in `/etc/grub.d' directly. `/etc/grub.d/40_custom' is
+particularly useful for adding entire custom menu entries; simply type
+the menu entries you want to add at the end of that file, making sure
+to leave at least the first two lines intact.
+
+
+File: grub.info, Node: Shell-like scripting, Prev: Simple configuration, Up: Configuration
+
+5.2 Writing full configuration files directly
+=============================================
+
+
+File: grub.info, Node: Serial terminal, Next: Vendor power-on keys, Prev: Network, Up: Top
+
+6 Using GRUB via a serial line
+******************************
+
+This chapter describes how to use the serial terminal support in GRUB.
+
+ If you have many computers or computers with no display/keyboard, it
+could be very useful to control the computers through serial
+communications. To connect one computer with another via a serial line,
+you need to prepare a null-modem (cross) serial cable, and you may need
+to have multiport serial boards, if your computer doesn't have extra
+serial ports. In addition, a terminal emulator is also required, such as
+minicom. Refer to a manual of your operating system, for more
+information.
+
+ As for GRUB, the instruction to set up a serial terminal is quite
+simple. First of all, make sure that you haven't specified the option
+`--disable-serial' to the configure script when you built your GRUB
+images. If you get them in binary form, probably they have serial
+terminal support already.
+
+ Then, initialize your serial terminal after GRUB starts up. Here is
+an example:
+
+ grub> serial --unit=0 --speed=9600
+ grub> terminal serial
+
+ The command `serial' initializes the serial unit 0 with the speed
+9600bps. The serial unit 0 is usually called `COM1', so, if you want to
+use COM2, you must specify `--unit=1' instead. This command accepts
+many other options, so please refer to *note serial::, for more details.
+
+ The command `terminal' (*note terminal::) chooses which type of
+terminal you want to use. In the case above, the terminal will be a
+serial terminal, but you can also pass `console' to the command, as
+`terminal serial console'. In this case, a terminal in which you press
+any key will be selected as a GRUB terminal.
+
+ However, note that GRUB assumes that your terminal emulator is
+compatible with VT100 by default. This is true for most terminal
+emulators nowadays, but you should pass the option `--dumb' to the
+command if your terminal emulator is not VT100-compatible or implements
+few VT100 escape sequences. If you specify this option then GRUB
+provides you with an alternative menu interface, because the normal
+menu requires several fancy features of your terminal.
+
+
+File: grub.info, Node: Vendor power-on keys, Next: Preset Menu, Prev: Serial terminal, Up: Top
+
+7 Using GRUB with vendor power-on keys
+**************************************
+
+Some laptop vendor provide an additional power-on button which boots
+another OS. GRUB supports such buttons with GRUB_TIMEOUT_BUTTON,
+GRUB_DEFAULT_BUTTON, GRUB_HIDDEN_TIMEOUT_BUTTON and
+GRUB_BUTTON_CMOS_ADDRESS variables in default/grub.
+GRUB_TIMEOUT_BUTTON, GRUB_DEFAULT_BUTTON and GRUB_HIDDEN_TIMEOUT_BUTTON
+are used instead of corresponding variables without _BUTTON suffix when
+powered using special button. GRUB_BUTTON_CMOS_ADDRESS is vendor
+specific and partially model-specific. Values known to GRUB team are:
+
+<Dell XPS M1530>
+ 85:3
+
+ To take full advantage of this function install GRUB into MBR.
+
+
+File: grub.info, Node: Filesystem, Next: Interface, Prev: Images, Up: Top
+
+8 Filesystem syntax and semantics
+*********************************
+
+GRUB uses a special syntax for specifying disk drives which can be
+accessed by BIOS. Because of BIOS limitations, GRUB cannot distinguish
+between IDE, ESDI, SCSI, or others. You must know yourself which BIOS
+device is equivalent to which OS device. Normally, that will be clear if
+you see the files in a device or use the command `find' (*note find::).
+
+* Menu:
+
+* Device syntax:: How to specify devices
+* File name syntax:: How to specify files
+* Block list syntax:: How to specify block lists
+
+
+File: grub.info, Node: Device syntax, Next: File name syntax, Up: Filesystem
+
+8.1 How to specify devices
+==========================
+
+The device syntax is like this:
+
+ `(DEVICE[,PART-NUM][,BSD-SUBPART-LETTER])'
+
+ `[]' means the parameter is optional. DEVICE should be either `fd'
+or `hd' followed by a digit, like `fd0'. But you can also set DEVICE
+to a hexadecimal or a decimal number which is a BIOS drive number, so
+the following are equivalent:
+
+ (hd0)
+ (0x80)
+ (128)
+
+ PART-NUM represents the partition number of DEVICE, starting from
+one for primary partitions and from five for extended partitions, and
+BSD-SUBPART-LETTER represents the BSD disklabel subpartition, such as
+`a' or `e'.
+
+ A shortcut for specifying BSD subpartitions is
+`(DEVICE,BSD-SUBPART-LETTER)', in this case, GRUB searches for the
+first PC partition containing a BSD disklabel, then finds the
+subpartition BSD-SUBPART-LETTER. Here is an example:
+
+ (hd0,a)
+
+ The syntax `(hd0)' represents using the entire disk (or the MBR when
+installing GRUB), while the syntax `(hd0,1)' represents using the first
+partition of the disk (or the boot sector of the partition when
+installing GRUB).
+
+ If you enabled the network support, the special drive, `(nd)', is
+also available. Before using the network drive, you must initialize the
+network. *Note Network::, for more information.
+
+ If you boot GRUB from a CD-ROM, `(cd)' is available. *Note Making a
+GRUB bootable CD-ROM::, for details.
+
+
+File: grub.info, Node: File name syntax, Next: Block list syntax, Prev: Device syntax, Up: Filesystem
+
+8.2 How to specify files
+========================
+
+There are two ways to specify files, by "absolute file name" and by
+"block list".
+
+ An absolute file name resembles a Unix absolute file name, using `/'
+for the directory separator (not `\' as in DOS). One example is
+`(hd0,1)/boot/grub/grub.cfg'. This means the file `/boot/grub/grub.cfg'
+in the first partition of the first hard disk. If you omit the device
+name in an absolute file name, GRUB uses GRUB's "root device"
+implicitly. So if you set the root device to, say, `(hd1,1)' by the
+command `root' (*note root::), then `/boot/kernel' is the same as
+`(hd1,1)/boot/kernel'.
+
+
+File: grub.info, Node: Block list syntax, Prev: File name syntax, Up: Filesystem
+
+8.3 How to specify block lists
+==============================
+
+A block list is used for specifying a file that doesn't appear in the
+filesystem, like a chainloader. The syntax is
+`[OFFSET]+LENGTH[,[OFFSET]+LENGTH]...'. Here is an example:
+
+ `0+100,200+1,300+300'
+
+ This represents that GRUB should read blocks 0 through 99, block 200,
+and blocks 300 through 599. If you omit an offset, then GRUB assumes
+the offset is zero.
+
+ Like the file name syntax (*note File name syntax::), if a blocklist
+does not contain a device name, then GRUB uses GRUB's "root device". So
+`(hd0,2)+1' is the same as `+1' when the root device is `(hd0,2)'.
+
+
+File: grub.info, Node: Interface, Next: Commands, Prev: Filesystem, Up: Top
+
+9 GRUB's user interface
+***********************
+
+GRUB has both a simple menu interface for choosing preset entries from a
+configuration file, and a highly flexible command-line for performing
+any desired combination of boot commands.
+
+ GRUB looks for its configuration file as soon as it is loaded. If one
+is found, then the full menu interface is activated using whatever
+entries were found in the file. If you choose the "command-line" menu
+option, or if the configuration file was not found, then GRUB drops to
+the command-line interface.
+
+* Menu:
+
+* Command-line interface:: The flexible command-line interface
+* Menu interface:: The simple menu interface
+* Menu entry editor:: Editing a menu entry
+
+
+File: grub.info, Node: Command-line interface, Next: Menu interface, Up: Interface
+
+9.1 The flexible command-line interface
+=======================================
+
+The command-line interface provides a prompt and after it an editable
+text area much like a command-line in Unix or DOS. Each command is
+immediately executed after it is entered(1) (*note Command-line
+interface-Footnote-1::). The commands (*note Command-line and menu
+entry commands::) are a subset of those available in the configuration
+file, used with exactly the same syntax.
+
+ Cursor movement and editing of the text on the line can be done via a
+subset of the functions available in the Bash shell:
+
+<C-f>
+<PC right key>
+ Move forward one character.
+
+<C-b>
+<PC left key>
+ Move back one character.
+
+<C-a>
+<HOME>
+ Move to the start of the line.
+
+<C-e>
+<END>
+ Move the the end of the line.
+
+<C-d>
+<DEL>
+ Delete the character underneath the cursor.
+
+<C-h>
+<BS>
+ Delete the character to the left of the cursor.
+
+<C-k>
+ Kill the text from the current cursor position to the end of the
+ line.
+
+<C-u>
+ Kill backward from the cursor to the beginning of the line.
+
+<C-y>
+ Yank the killed text back into the buffer at the cursor.
+
+<C-p>
+<PC up key>
+ Move up through the history list.
+
+<C-n>
+<PC down key>
+ Move down through the history list.
+
+ When typing commands interactively, if the cursor is within or before
+the first word in the command-line, pressing the <TAB> key (or <C-i>)
+will display a listing of the available commands, and if the cursor is
+after the first word, the `<TAB>' will provide a completion listing of
+disks, partitions, and file names depending on the context. Note that
+to obtain a list of drives, one must open a parenthesis, as `root ('.
+
+ Note that you cannot use the completion functionality in the TFTP
+filesystem. This is because TFTP doesn't support file name listing for
+the security.
+
+
+File: grub.info, Node: Command-line interface-Footnotes, Up: Command-line interface
+
+ (1) However, this behavior will be changed in the future version, in
+a user-invisible way.
+
+
+File: grub.info, Node: Menu interface, Next: Menu entry editor, Prev: Command-line interface, Up: Interface
+
+9.2 The simple menu interface
+=============================
+
+The menu interface is quite easy to use. Its commands are both
+reasonably intuitive and described on screen.
+
+ Basically, the menu interface provides a list of "boot entries" to
+the user to choose from. Use the arrow keys to select the entry of
+choice, then press <RET> to run it. An optional timeout is available
+to boot the default entry (the first one if not set), which is aborted
+by pressing any key.
+
+ Commands are available to enter a bare command-line by pressing <c>
+(which operates exactly like the non-config-file version of GRUB, but
+allows one to return to the menu if desired by pressing <ESC>) or to
+edit any of the "boot entries" by pressing <e>.
+
+ If you protect the menu interface with a password (*note Security::),
+all you can do is choose an entry by pressing <RET>, or press <p> to
+enter the password.
+
+
+File: grub.info, Node: Menu entry editor, Prev: Menu interface, Up: Interface
+
+9.3 Editing a menu entry
+========================
+
+The menu entry editor looks much like the main menu interface, but the
+lines in the menu are individual commands in the selected entry instead
+of entry names.
+
+ If an <ESC> is pressed in the editor, it aborts all the changes made
+to the configuration entry and returns to the main menu interface.
+
+ When a particular line is selected, the editor places the user in a
+special version of the GRUB command-line to edit that line. When the
+user hits <RET>, GRUB replaces the line in question in the boot entry
+with the changes (unless it was aborted via <ESC>, in which case the
+changes are thrown away).
+
+ If you want to add a new line to the menu entry, press <o> if adding
+a line after the current line or press <O> if before the current line.
+
+ To delete a line, hit the key <d>. Although GRUB unfortunately does
+not support "undo", you can do almost the same thing by just returning
+to the main menu.
+
+
+File: grub.info, Node: Commands, Next: Troubleshooting, Prev: Interface, Up: Top
+
+10 The list of available commands
+*********************************
+
+In this chapter, we list all commands that are available in GRUB.
+
+ Commands belong to different groups. A few can only be used in the
+global section of the configuration file (or "menu"); most of them can
+be entered on the command-line and can be used either anywhere in the
+menu or specifically in the menu entries.
+
+* Menu:
+
+* Menu-specific commands::
+* General commands::
+* Command-line and menu entry commands::
+
+
+File: grub.info, Node: Menu-specific commands, Next: General commands, Up: Commands
+
+10.1 The list of commands for the menu only
+===========================================
+
+The semantics used in parsing the configuration file are the following:
+
+ * The menu-specific commands have to be used before any others.
+
+ * The files _must_ be in plain-text format.
+
+ * `#' at the beginning of a line in a configuration file means it is
+ only a comment.
+
+ * Options are separated by spaces.
+
+ * All numbers can be either decimal or hexadecimal. A hexadecimal
+ number must be preceded by `0x', and is case-insensitive.
+
+ * Extra options or text at the end of the line are ignored unless
+ otherwise specified.
+
+ * Unrecognized commands are added to the current entry, except
+ before entries start, where they are ignored.
+
+ These commands can only be used in the menu:
+
+* Menu:
+
+* menuentry:: Start a menu entry
+
+
+File: grub.info, Node: menuentry, Up: Menu-specific commands
+
+10.1.1 menuentry
+----------------
+
+ -- Command: title name ...
+ Start a new boot entry, and set its name to the contents of the
+ rest of the line, starting with the first non-space character.
+
+
+File: grub.info, Node: General commands, Next: Command-line and menu entry commands, Prev: Menu-specific commands, Up: Commands
+
+10.2 The list of general commands
+=================================
+
+Commands usable anywhere in the menu and in the command-line.
+
+* Menu:
+
+* serial:: Set up a serial device
+* terminfo:: Define terminal type
+
+
+File: grub.info, Node: serial, Next: terminfo, Up: General commands
+
+10.2.1 serial
+-------------
+
+ -- Command: serial [`--unit=unit'] [`--port=port'] [`--speed=speed']
+ [`--word=word'] [`--parity=parity'] [`--stop=stop']
+ Initialize a serial device. UNIT is a number in the range 0-3
+ specifying which serial port to use; default is 0, which
+ corresponds to the port often called COM1. PORT is the I/O port
+ where the UART is to be found; if specified it takes precedence
+ over UNIT. SPEED is the transmission speed; default is 9600. WORD
+ and STOP are the number of data bits and stop bits. Data bits must
+ be in the range 5-8 and stop bits must be 1 or 2. Default is 8 data
+ bits and one stop bit. PARITY is one of `no', `odd', `even' and
+ defaults to `no'.
+
+ The serial port is not used as a communication channel unless the
+ `terminal' command is used (*note terminal::).
+
+ This command is only available if GRUB is compiled with serial
+ support. See also *note Serial terminal::.
+
+
+File: grub.info, Node: terminfo, Prev: serial, Up: General commands
+
+10.2.2 terminfo
+---------------
+
+ -- Command: terminfo [term]
+ Define the capabilities of your terminal by giving the name of an
+ entry in the terminfo database, which should correspond roughly to
+ a `TERM' environment variable in Unix.
+
+ At the moment, only `vt100' is supported in GRUB 2. If you need
+ other terminal types, please contact us to discuss the best way to
+ include support for these in GRUB.
+
+ If no option is specified, the current terminal type is printed.
+
+
+File: grub.info, Node: Command-line and menu entry commands, Prev: General commands, Up: Commands
+
+10.3 The list of command-line and menu entry commands
+=====================================================
+
+These commands are usable in the command-line and in menu entries. If
+you forget a command, you can run the command `help' (*note help::).
+
+* Menu:
+
+* acpi:: Load ACPI tables
+* blocklist:: Print a block list
+* boot:: Start up your operating system
+* cat:: Show the contents of a file
+* chainloader:: Chain-load another boot loader
+* cmp:: Compare two files
+* configfile:: Load a configuration file
+* crc:: Calculate CRC32 checksums
+* date:: Display or set current date and time
+* drivemap:: Map a drive to another
+* echo:: Display a line of text
+* export:: Export an environment variable
+* gettext:: Translate a string
+* gptsync:: Fill an MBR based on GPT entries
+* halt:: Shut down your computer
+* help:: Show help messages
+* insmod:: Insert a module
+* keystatus:: Check key modifier status
+* ls:: List devices or files
+* parttool:: Modify partition table entries
+* play:: Play a tune
+* reboot:: Reboot your computer
+* set:: Set an environment variable
+* unset:: Unset an environment variable
+
+
+File: grub.info, Node: acpi, Next: blocklist, Up: Command-line and menu entry commands
+
+10.3.1 acpi
+-----------
+
+ -- Command: acpi [`-1'|`-2']
+ [`--exclude=table1,...'|`--load-only=table1,...']
+ [`--oemid=id'] [`--oemtable=table'] [`--oemtablerev=rev']
+ [`--oemtablecreator=creator'] [`--oemtablecreatorrev=rev']
+ [`--no-ebda'] filename ...
+ Modern BIOS systems normally implement the Advanced Configuration
+ and Power Interface (ACPI), and define various tables that
+ describe the interface between an ACPI-compliant operating system
+ and the firmware. In some cases, the tables provided by default
+ only work well with certain operating systems, and it may be
+ necessary to replace some of them.
+
+ Normally, this command will replace the Root System Description
+ Pointer (RSDP) in the Extended BIOS Data Area to point to the new
+ tables. If the `--no-ebda' option is used, the new tables will be
+ known only to GRUB, but may be used by GRUB's EFI emulation.
+
+
+File: grub.info, Node: blocklist, Next: boot, Prev: acpi, Up: Command-line and menu entry commands
+
+10.3.2 blocklist
+----------------
+
+ -- Command: blocklist file
+ Print a block list (*note Block list syntax::) for FILE.
+
+
+File: grub.info, Node: boot, Next: cat, Prev: blocklist, Up: Command-line and menu entry commands
+
+10.3.3 boot
+-----------
+
+ -- Command: boot
+ Boot the OS or chain-loader which has been loaded. Only necessary
+ if running the fully interactive command-line (it is implicit at
+ the end of a menu entry).
+
+
+File: grub.info, Node: cat, Next: chainloader, Prev: boot, Up: Command-line and menu entry commands
+
+10.3.4 cat
+----------
+
+ -- Command: cat file
+ Display the contents of the file FILE. This command may be useful
+ to remind you of your OS's root partition:
+
+ grub> cat /etc/fstab
+
+
+File: grub.info, Node: chainloader, Next: cmp, Prev: cat, Up: Command-line and menu entry commands
+
+10.3.5 chainloader
+------------------
+
+ -- Command: chainloader [`--force'] file
+ Load FILE as a chain-loader. Like any other file loaded by the
+ filesystem code, it can use the blocklist notation (*note Block
+ list syntax::) to grab the first sector of the current partition
+ with `+1'. If you specify the option `--force', then load FILE
+ forcibly, whether it has a correct signature or not. This is
+ required when you want to load a defective boot loader, such as
+ SCO UnixWare 7.1 (*note SCO UnixWare::).
+
+
+File: grub.info, Node: cmp, Next: configfile, Prev: chainloader, Up: Command-line and menu entry commands
+
+10.3.6 cmp
+----------
+
+ -- Command: cmp file1 file2
+ Compare the file FILE1 with the file FILE2. If they differ in
+ size, print the sizes like this:
+
+ Differ in size: 0x1234 [foo], 0x4321 [bar]
+
+ If the sizes are equal but the bytes at an offset differ, then
+ print the bytes like this:
+
+ Differ at the offset 777: 0xbe [foo], 0xef [bar]
+
+ If they are completely identical, nothing will be printed.
+
+
+File: grub.info, Node: configfile, Next: crc, Prev: cmp, Up: Command-line and menu entry commands
+
+10.3.7 configfile
+-----------------
+
+ -- Command: configfile file
+ Load FILE as a configuration file.
+
+
+File: grub.info, Node: crc, Next: date, Prev: configfile, Up: Command-line and menu entry commands
+
+10.3.8 crc
+----------
+
+ -- Command: crc file
+ Display the CRC32 checksum of FILE.
+
+
+File: grub.info, Node: date, Next: drivemap, Prev: crc, Up: Command-line and menu entry commands
+
+10.3.9 date
+-----------
+
+ -- Command: date [[year-]month-day] [hour:minute[:second]]
+ With no arguments, print the current date and time.
+
+ Otherwise, take the current date and time, change any elements
+ specified as arguments, and set the result as the new date and
+ time. For example, `date 01-01' will set the current month and
+ day to January 1, but leave the year, hour, minute, and second
+ unchanged.
+
+
+File: grub.info, Node: drivemap, Next: echo, Prev: date, Up: Command-line and menu entry commands
+
+10.3.10 drivemap
+----------------
+
+ -- Command: drivemap `-l'|`-r'|[`-s'] from_drive to_drive
+ Without options, map the drive FROM_DRIVE to the drive TO_DRIVE.
+ This is necessary when you chain-load some operating systems, such
+ as DOS, if such an OS resides at a non-first drive. For
+ convenience, any partition suffix on the drive is ignored, so you
+ can safely use ${root} as a drive specification.
+
+ With the `-s' option, perform the reverse mapping as well, swapping
+ the two drives.
+
+ With the `-l' option, list the current mappings.
+
+ With the `-r' option, reset all mappings to the default values.
+
+ For example:
+
+ drivemap -s (hd0) (hd1)
+
+
+File: grub.info, Node: echo, Next: export, Prev: drivemap, Up: Command-line and menu entry commands
+
+10.3.11 echo
+------------
+
+ -- Command: echo [`-n'] [`-e'] string ...
+ Display the requested text and, unless the `-n' option is used, a
+ trailing new line. If there is more than one string, they are
+ separated by spaces in the output. As usual in GRUB commands,
+ variables may be substituted using `${var}'.
+
+ The `-e' option enables interpretation of backslash escapes. The
+ following sequences are recognised:
+
+ `\\'
+ backslash
+
+ `\a'
+ alert (BEL)
+
+ `\c'
+ suppress trailing new line
+
+ `\f'
+ form feed
+
+ `\n'
+ new line
+
+ `\r'
+ carriage return
+
+ `\t'
+ horizontal tab
+
+ `\v'
+ vertical tab
+
+ When interpreting backslash escapes, backslash followed by any
+ other character will print that character.
+
+
+File: grub.info, Node: export, Next: gettext, Prev: echo, Up: Command-line and menu entry commands
+
+10.3.12 export
+--------------
+
+ -- Command: export envvar
+ Export the environment variable ENVVAR. Exported variables are
+ visible to subsidiary configuration files loaded using
+ `configfile'.
+
+
+File: grub.info, Node: gettext, Next: gptsync, Prev: export, Up: Command-line and menu entry commands
+
+10.3.13 gettext
+---------------
+
+ -- Command: gettext string
+ Translate STRING into the current language.
+
+ The current language code is stored in the `lang' variable in
+ GRUB's environment. Translation files in MO format are read from
+ `locale_dir', usually `/boot/grub/locale'.
+
+
+File: grub.info, Node: gptsync, Next: halt, Prev: gettext, Up: Command-line and menu entry commands
+
+10.3.14 gptsync
+---------------
+
+ -- Command: gptsync device [partition[+/-[type]]] ...
+ Disks using the GUID Partition Table (GPT) also have a legacy
+ Master Boot Record (MBR) partition table for compatibility with
+ the BIOS and with older operating systems. The legacy MBR can
+ only represent a limited subset of GPT partition entries.
+
+ This command populates the legacy MBR with the specified PARTITION
+ entries on DEVICE. Up to three partitions may be used.
+
+ TYPE is an MBR partition type code; prefix with `0x' if you want
+ to enter this in hexadecimal. The separator between PARTITION and
+ TYPE may be `+' to make the partition active, or `-' to make it
+ inactive; only one partition may be active. If both the separator
+ and type are omitted, then the partition will be inactive.
+
+
+File: grub.info, Node: halt, Next: help, Prev: gptsync, Up: Command-line and menu entry commands
+
+10.3.15 halt
+------------
+
+ -- Command: halt `--no-apm'
+ The command halts the computer. If the `--no-apm' option is
+ specified, no APM BIOS call is performed. Otherwise, the computer
+ is shut down using APM.
+
+
+File: grub.info, Node: help, Next: insmod, Prev: halt, Up: Command-line and menu entry commands
+
+10.3.16 help
+------------
+
+ -- Command: help `--all' [pattern ...]
+ Display helpful information about builtin commands. If you do not
+ specify PATTERN, this command shows short descriptions of most of
+ available commands. If you specify the option `--all' to this
+ command, short descriptions of rarely used commands (such as *note
+ testload::) are displayed as well.
+
+ If you specify any PATTERNS, it displays longer information about
+ each of the commands which match those PATTERNS.
+
+
+File: grub.info, Node: insmod, Next: keystatus, Prev: help, Up: Command-line and menu entry commands
+
+10.3.17 insmod
+--------------
+
+ -- Command: insmod module
+ Insert the dynamic GRUB module called MODULE.
+
+
+File: grub.info, Node: keystatus, Next: ls, Prev: insmod, Up: Command-line and menu entry commands
+
+10.3.18 keystatus
+-----------------
+
+ -- Command: keystatus [`--shift'] [`--ctrl'] [`--alt']
+ Return true if the Shift, Control, or Alt modifier keys are held
+ down, as requested by options. This is useful in scripting, to
+ allow some user control over behaviour without having to wait for
+ a keypress.
+
+ Checking key modifier status is only supported on some platforms.
+ If invoked without any options, the `keystatus' command returns
+ true if and only if checking key modifier status is supported.
+
+
+File: grub.info, Node: ls, Next: parttool, Prev: keystatus, Up: Command-line and menu entry commands
+
+10.3.19 ls
+----------
+
+ -- Command: ls [arg]
+ List devices or files.
+
+ With no arguments, print all devices known to GRUB.
+
+ If the argument is a device name enclosed in parentheses (*note
+ Device syntax::), then list all files at the root directory of
+ that device.
+
+ If the argument is a directory given as an absolute file name
+ (*note File name syntax::), then list the contents of that
+ directory.
+
+
+File: grub.info, Node: parttool, Next: play, Prev: ls, Up: Command-line and menu entry commands
+
+10.3.20 parttool
+----------------
+
+ -- Command: parttool partition commands
+ Make various modifications to partition table entries.
+
+ Each COMMAND is either a boolean option, in which case it must be
+ followed with `+' or `-' (with no intervening space) to enable or
+ disable that option, or else it takes a value in the form
+ `COMMAND=VALUE'.
+
+ Currently, `parttool' is only useful on DOS partition tables (also
+ known as Master Boot Record, or MBR). On these partition tables,
+ the following commands are available:
+
+ `boot' (boolean)
+ When enabled, this makes the selected partition be the active
+ (bootable) partition on its disk, clearing the active flag on
+ all other partitions. This command is limited to _primary_
+ partitions.
+
+ `type' (value)
+ Change the type of an existing partition. The value must be
+ a number in the range 0-0xFF (prefix with `0x' to enter it in
+ hexadecimal).
+
+ `hidden' (boolean)
+ When enabled, this hides the selected partition by setting
+ the "hidden" bit in its partition type code; when disabled,
+ unhides the selected partition by clearing this bit. This is
+ useful only when booting DOS or Wwindows and multiple primary
+ FAT partitions exist in one disk. See also *note
+ DOS/Windows::.
+
+
+File: grub.info, Node: play, Next: reboot, Prev: parttool, Up: Command-line and menu entry commands
+
+10.3.21 play
+------------
+
+ -- Command: play file | tempo [pitch1 duration1] [pitch2 duration2] ...
+ Plays a tune
+
+ If the argument is a file name (*note File name syntax::), play
+ the tune recorded in it. The file format is first the tempo as an
+ unsigned 32bit little-endian number, then pairs of unsigned 16bit
+ little-endian numbers for pitch and duration pairs.
+
+ If the arguments are a series of numbers, play the inline tune.
+
+ The tempo is the base for all note durations. 60 gives a 1-second
+ base, 120 gives a half-second base, etc. Pitches are Hz. Set
+ pitch to 0 to produce a rest.
+
+
+File: grub.info, Node: reboot, Next: set, Prev: play, Up: Command-line and menu entry commands
+
+10.3.22 reboot
+--------------
+
+ -- Command: reboot
+ Reboot the computer.
+
+
+File: grub.info, Node: set, Next: unset, Prev: reboot, Up: Command-line and menu entry commands
+
+10.3.23 set
+-----------
+
+ -- Command: set [envvar=value]
+ Set the environment variable ENVVAR to VALUE. If invoked with no
+ arguments, print all environment variables with their values.
+
+
+File: grub.info, Node: unset, Prev: set, Up: Command-line and menu entry commands
+
+10.3.24 unset
+-------------
+
+ -- Command: unset envvar
+ Unset the environment variable ENVVAR.
+
+
+File: grub.info, Node: Invoking grub-install, Next: Invoking grub-mkconfig, Prev: Troubleshooting, Up: Top
+
+11 Invoking grub-install
+************************
+
+The program `grub-install' installs GRUB on your drive using
+`grub-mkimage' and (on some platforms) `grub-setup'. You must specify
+the device name on which you want to install GRUB, like this:
+
+ grub-install INSTALL_DEVICE
+
+ The device name INSTALL_DEVICE is an OS device name or a GRUB device
+name.
+
+ `grub-install' accepts the following options:
+
+`--help'
+ Print a summary of the command-line options and exit.
+
+`--version'
+ Print the version number of GRUB and exit.
+
+`--root-directory=DIR'
+ Install GRUB images under the directory DIR instead of the root
+ directory. This option is useful when you want to install GRUB
+ into a separate partition or a removable disk. Here is an example
+ in which you have a separate "boot" partition which is mounted on
+ `/boot':
+
+ grub-install --root-directory=/boot hd0
+
+`--recheck'
+ Recheck the device map, even if `/boot/grub/device.map' already
+ exists. You should use this option whenever you add/remove a disk
+ into/from your computer.
+
+
+File: grub.info, Node: Invoking grub-mkconfig, Next: Obtaining and Building GRUB, Prev: Invoking grub-install, Up: Top
+
+12 Invoking grub-mkconfig
+*************************
+
+The program `grub-mkconfig' generates a configuration file for GRUB
+(*note Simple configuration::).
+
+ grub-mkconfig -o /boot/grub/grub.cfg
+
+ `grub-mkconfig' accepts the following options:
+
+`--help'
+ Print a summary of the command-line options and exit.
+
+`--version'
+ Print the version number of GRUB and exit.
+
+`-o FILE'
+`--output=FILE'
+ Send the generated configuration file to FILE. The default is to
+ send it to standard output.
+
+
+File: grub.info, Node: Obtaining and Building GRUB, Next: Reporting bugs, Prev: Invoking grub-mkconfig, Up: Top
+
+Appendix A How to obtain and build GRUB
+***************************************
+
+ *Caution:* GRUB requires binutils-2.9.1.0.23 or later because the
+ GNU assembler has been changed so that it can produce real 16bits
+ machine code between 2.9.1 and 2.9.1.0.x. See
+ `http://sources.redhat.com/binutils/', to obtain information on
+ how to get the latest version.
+
+ GRUB is available from the GNU alpha archive site
+`ftp://alpha.gnu.org/gnu/grub' or any of its mirrors. The file will be
+named grub-version.tar.gz. The current version is 1.98, so the file you
+should grab is:
+
+ `ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz'
+
+ To unbundle GRUB use the instruction:
+
+ zcat grub-1.98.tar.gz | tar xvf -
+
+ which will create a directory called `grub-1.98' with all the
+sources. You can look at the file `INSTALL' for detailed instructions
+on how to build and install GRUB, but you should be able to just do:
+
+ cd grub-1.98
+ ./configure
+ make install
+
+ Also, the latest version is available from the SVN. See
+`http://savannah.gnu.org/svn/?group=grub' for more information.
+
+
+File: grub.info, Node: Reporting bugs, Next: Future, Prev: Obtaining and Building GRUB, Up: Top
+
+Appendix B Reporting bugs
+*************************
+
+These are the guideline for how to report bugs. Take a look at this
+list below before you submit bugs:
+
+ 1. Before getting unsettled, read this manual through and through.
+ Also, see the GNU GRUB FAQ
+ (http://www.gnu.org/software/grub/grub-faq.html).
+
+ 2. Always mention the information on your GRUB. The version number
+ and the configuration are quite important. If you build it
+ yourself, write the options specified to the configure script and
+ your operating system, including the versions of gcc and binutils.
+
+ 3. If you have trouble with the installation, inform us of how you
+ installed GRUB. Don't omit error messages, if any. Just `GRUB hangs
+ up when it boots' is not enough.
+
+ The information on your hardware is also essential. These are
+ especially important: the geometries and the partition tables of
+ your hard disk drives and your BIOS.
+
+ 4. If GRUB cannot boot your operating system, write down _everything_
+ you see on the screen. Don't paraphrase them, like `The foo OS
+ crashes with GRUB, even though it can boot with the bar boot
+ loader just fine'. Mention the commands you executed, the messages
+ printed by them, and information on your operating system
+ including the version number.
+
+ 5. Explain what you wanted to do. It is very useful to know your
+ purpose and your wish, and how GRUB didn't satisfy you.
+
+ 6. If you can investigate the problem yourself, please do. That will
+ give you and us much more information on the problem. Attaching a
+ patch is even better.
+
+ When you attach a patch, make the patch in unified diff format, and
+ write ChangeLog entries. But, even when you make a patch, don't
+ forget to explain the problem, so that we can understand what your
+ patch is for.
+
+ 7. Write down anything that you think might be related. Please
+ understand that we often need to reproduce the same problem you
+ encounterred in our environment. So your information should be
+ sufficient for us to do the same thing--Don't forget that we
+ cannot see your computer directly. If you are not sure whether to
+ state a fact or leave it out, state it! Reporting too many things
+ is much better than omitting something important.
+
+ If you follow the guideline above, submit a report to the Bug
+Tracking System (http://savannah.gnu.org/bugs/?group=grub).
+Alternatively, you can submit a report via electronic mail to
+<bug-grub@gnu.org>, but we strongly recommend that you use the Bug
+Tracking System, because e-mail can be passed over easily.
+
+ Once we get your report, we will try to fix the bugs.
+
+
+File: grub.info, Node: Future, Next: Internals, Prev: Reporting bugs, Up: Top
+
+Appendix C Where GRUB will go
+*****************************
+
+We started the next generation of GRUB, GRUB 2. GRUB 2 includes
+internationalization, dynamic module loading, real memory management,
+multiple architecture support, a scripting language, and many other
+nice feature. If you are interested in the development of GRUB 2, take
+a look at the homepage (http://www.gnu.org/software/grub/grub.html).
+
+
+File: grub.info, Node: Copying This Manual, Next: Index, Prev: Internals, Up: Top
+
+Appendix D Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: grub.info, Node: GNU Free Documentation License, Up: Copying This Manual
+
+D.1 GNU Free Documentation License
+==================================
+
+ Version 1.2, November 2002
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+D.1.1 ADDENDUM: How to use this License for your documents
+----------------------------------------------------------
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+File: grub.info, Node: Index, Prev: Copying This Manual, Up: Top
+
+Index
+*****
+
+
+* Menu:
+
+* acpi: acpi. (line 11)
+* blocklist: blocklist. (line 7)
+* boot: boot. (line 7)
+* cat: cat. (line 7)
+* chainloader: chainloader. (line 7)
+* cmp: cmp. (line 7)
+* configfile: configfile. (line 7)
+* crc: crc. (line 7)
+* date: date. (line 7)
+* drivemap: drivemap. (line 7)
+* echo: echo. (line 7)
+* export: export. (line 7)
+* FDL, GNU Free Documentation License: GNU Free Documentation License.
+ (line 6)
+* gettext: gettext. (line 7)
+* gptsync: gptsync. (line 7)
+* halt: halt. (line 7)
+* help: help. (line 7)
+* insmod: insmod. (line 7)
+* keystatus: keystatus. (line 7)
+* ls: ls. (line 7)
+* parttool: parttool. (line 7)
+* play: play. (line 7)
+* reboot: reboot. (line 7)
+* serial: serial. (line 8)
+* set: set. (line 7)
+* terminfo: terminfo. (line 7)
+* title: menuentry. (line 7)
+* unset: unset. (line 7)
+
+
+
+Tag Table:
+Node: Top759
+Node: Introduction2800
+Node: Overview3177
+Node: Overview-Footnotes5161
+Ref: Overview-Footnote-15222
+Node: History5383
+Node: Features6504
+Node: Features-Footnotes12272
+Ref: Features-Footnote-112333
+Node: Role of a boot loader12478
+Node: Role of a boot loader-Footnotes13816
+Ref: Role of a boot loader-Footnote-113903
+Node: Naming convention13982
+Node: Installation16935
+Node: Installing GRUB using grub-install18335
+Node: Making a GRUB bootable CD-ROM21233
+Node: Making a GRUB bootable CD-ROM-Footnotes23278
+Ref: Making a GRUB bootable CD-ROM-Footnote-123381
+Node: Booting23456
+Node: General boot methods23848
+Node: Loading an operating system directly24589
+Node: Chain-loading25320
+Node: OS-specific notes26291
+Node: GNU/Hurd26598
+Node: GNU/Linux26964
+Node: DOS/Windows27674
+Node: SCO UnixWare29465
+Node: QNX29867
+Node: Configuration30095
+Node: Simple configuration30554
+Node: Shell-like scripting38108
+Node: Serial terminal38298
+Node: Vendor power-on keys40540
+Node: Filesystem41337
+Node: Device syntax42018
+Node: File name syntax43509
+Node: Block list syntax44250
+Node: Interface44981
+Node: Command-line interface45798
+Node: Command-line interface-Footnotes47737
+Ref: Command-line interface-Footnote-147826
+Node: Menu interface47921
+Node: Menu entry editor48929
+Node: Commands49976
+Node: Menu-specific commands50553
+Node: menuentry51511
+Node: General commands51778
+Node: serial52163
+Node: terminfo53216
+Node: Command-line and menu entry commands53794
+Node: acpi55517
+Node: blocklist56559
+Node: boot56791
+Node: cat57112
+Node: chainloader57416
+Node: cmp58061
+Node: configfile58612
+Node: crc58824
+Node: date59017
+Node: drivemap59554
+Node: echo60357
+Node: export61294
+Node: gettext61606
+Node: gptsync62013
+Node: halt62958
+Node: help63284
+Node: insmod63902
+Node: keystatus64120
+Node: ls64755
+Node: parttool65299
+Node: play66791
+Node: reboot67532
+Node: set67712
+Node: unset68010
+Node: Invoking grub-install68198
+Node: Invoking grub-mkconfig69402
+Node: Obtaining and Building GRUB70037
+Node: Reporting bugs71266
+Node: Future74070
+Node: Copying This Manual74559
+Node: GNU Free Documentation License74790
+Node: Index97198
+
+End Tag Table
diff --git a/system/grub2/grub2.SlackBuild b/system/grub2/grub2.SlackBuild
new file mode 100644
index 000000000000..c1ab43344eb4
--- /dev/null
+++ b/system/grub2/grub2.SlackBuild
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+# Slackware build script for grub
+
+# Written by crocket (crockabiscuit@yahoo.com)
+# Modified by the SlackBuilds.org project.
+
+PRGNAM=grub2
+SRCNAM=grub
+VERSION=${VERSION:-1.98}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i486 ;;
+ arm*) ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux \
+
+make
+make install DESTDIR=$PKG
+
+# Copy grub files from ubuntu.
+mkdir -p $PKG/etc/default
+cat $CWD/etc.default.grub > $PKG/etc/default/grub
+sed "s#/usr/lib#/usr/lib${LIBDIRSUFFIX}#" \
+ $CWD/05_debian_theme > $PKG/etc/grub.d/05_debian_theme
+
+# Don't strip the files it breaks module loading.
+#find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+# | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+# Copy a snapshot version of grub2 info since the current version's is deficient.
+cat $CWD/grub.info > $PKG/usr/info/grub.info
+gzip -9 $PKG/usr/info/*.info*
+rm -f $PKG/usr/info/dir
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $(find $PKG/usr/man -type l); do ln -s $(readlink $i).gz $i.gz; rm $i; done
+
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+# Add .new extension to all configuration files.
+for file in $(find $PKG/etc -type f)
+do
+ mv $file $file.new
+done
+
+# Add *.new files into doinst.sh
+for file in $(find $PKG/etc -type f -name "*.new")
+do
+ echo config $(echo $file | sed "s:$PKG/::") >> $PKG/install/doinst.sh
+done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog INSTALL NEWS README THANKS TODO docs/grub.cfg \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+
diff --git a/system/grub2/grub2.info b/system/grub2/grub2.info
new file mode 100644
index 000000000000..04936d44f639
--- /dev/null
+++ b/system/grub2/grub2.info
@@ -0,0 +1,10 @@
+PRGNAM="grub2"
+VERSION="1.98"
+HOMEPAGE="http://www.gnu.org/software/grub/"
+DOWNLOAD="ftp://alpha.gnu.org/gnu/grub/grub-1.98.tar.gz"
+MD5SUM="c0bcf60e524739bb64e3a2d4e3732a59"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+MAINTAINER="crocket"
+EMAIL="crockabiscuit@yahoo.com"
+APPROVED="dsomero"
diff --git a/system/grub2/slack-desc b/system/grub2/slack-desc
new file mode 100644
index 000000000000..5547a58ad569
--- /dev/null
+++ b/system/grub2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+grub2: GRUB (the GRand Unified Bootloader)
+grub2:
+grub2: GNU GRUB is a multiboot boot loader.
+grub2:
+grub2: os-prober is needed to detect OSes on other partitions.
+grub2:
+grub2: unifont is required when you want to use a background image on the
+grub2: grub screen.(gfxterm(graphical terminal) uses unifont)
+grub2:
+grub2: The website of grub is http://www.gnu.org/software/grub/
+grub2: