aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorroot <root@arianrhod.panaceas.james.local>2012-11-16 11:48:15 +0000
committerroot <root@arianrhod.panaceas.james.local>2012-11-16 11:48:15 +0000
commit8e6b0685c15144d39949c0f4df2a1d807a6cfda4 (patch)
treec98ca7757ffa3a37e09b24386d8f905233739904 /docs
parent9a25abcc1de14820b25d7fecc8b177c27ca6e220 (diff)
downloadgrub-1.99-8e6b0685c15144d39949c0f4df2a1d807a6cfda4.tar.gz
grub-1.99-8e6b0685c15144d39949c0f4df2a1d807a6cfda4.tar.bz2
grub-1.99-8e6b0685c15144d39949c0f4df2a1d807a6cfda4.zip
fish
Diffstat (limited to 'docs')
-rw-r--r--docs/Makefile.in1232
-rw-r--r--docs/grub-dev.info2171
-rw-r--r--docs/grub.info5228
-rw-r--r--docs/stamp-14
-rw-r--r--docs/stamp-vti4
-rw-r--r--docs/version-dev.texi4
-rw-r--r--docs/version.texi4
7 files changed, 0 insertions, 8647 deletions
diff --git a/docs/Makefile.in b/docs/Makefile.in
deleted file mode 100644
index 8ff9d06..0000000
--- a/docs/Makefile.in
+++ /dev/null
@@ -1,1232 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = docs
-DIST_COMMON = $(grub_TEXINFOS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/stamp-1 $(srcdir)/stamp-vti \
- $(srcdir)/version-dev.texi $(srcdir)/version.texi mdate-sh \
- texinfo.tex
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
- $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/argp.m4 \
- $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/btowc.m4 \
- $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/dirname.m4 \
- $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
- $(top_srcdir)/m4/errno_h.m4 $(top_srcdir)/m4/error.m4 \
- $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fcntl-o.m4 \
- $(top_srcdir)/m4/float_h.m4 $(top_srcdir)/m4/fnmatch.m4 \
- $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getline.m4 \
- $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/gnulib-common.m4 \
- $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/include_next.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
- $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/langinfo_h.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \
- $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \
- $(top_srcdir)/m4/longlong.m4 $(top_srcdir)/m4/malloc.m4 \
- $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbsinit.m4 \
- $(top_srcdir)/m4/mbsrtowcs.m4 $(top_srcdir)/m4/mbstate_t.m4 \
- $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/mempcpy.m4 \
- $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/multiarch.m4 \
- $(top_srcdir)/m4/nl_langinfo.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/rawmemchr.m4 \
- $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/regex.m4 \
- $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/sleep.m4 \
- $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdbool.m4 \
- $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio_h.m4 \
- $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcase.m4 \
- $(top_srcdir)/m4/strchrnul.m4 $(top_srcdir)/m4/strerror.m4 \
- $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strings_h.m4 \
- $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \
- $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/sysexits.m4 \
- $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/vasnprintf.m4 \
- $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/warn-on-use.m4 \
- $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
- $(top_srcdir)/m4/wcrtomb.m4 $(top_srcdir)/m4/wctype_h.m4 \
- $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config-util.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-INFO_DEPS = $(srcdir)/grub.info $(srcdir)/grub-dev.info
-TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
-am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
-DVIS = grub.dvi grub-dev.dvi
-PDFS = grub.pdf grub-dev.pdf
-PSS = grub.ps grub-dev.ps
-HTMLS = grub.html grub-dev.html
-TEXINFOS = grub.texi grub-dev.texi
-TEXI2DVI = texi2dvi
-TEXI2PDF = $(TEXI2DVI) --pdf --batch
-MAKEINFOHTML = $(MAKEINFO) --html
-AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
-DVIPS = dvips
-am__installdirs = "$(DESTDIR)$(infodir)"
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ADDR32 = @ADDR32@
-ALLOCA = @ALLOCA@
-ALLOCA_H = @ALLOCA_H@
-AMTAR = @AMTAR@
-APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
-ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
-BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
-BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
-BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
-BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
-BSS_START_SYMBOL = @BSS_START_SYMBOL@
-BUILD_CC = @BUILD_CC@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CMP = @CMP@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATA32 = @DATA32@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
-EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
-END_SYMBOL = @END_SYMBOL@
-ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
-ENOLINK_VALUE = @ENOLINK_VALUE@
-EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
-EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
-ERRNO_H = @ERRNO_H@
-EXEEXT = @EXEEXT@
-FLOAT_H = @FLOAT_H@
-FNMATCH_H = @FNMATCH_H@
-FONT_SOURCE = @FONT_SOURCE@
-FREETYPE = @FREETYPE@
-GETOPT_H = @GETOPT_H@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLIBC21 = @GLIBC21@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GNULIB_ATOLL = @GNULIB_ATOLL@
-GNULIB_BTOWC = @GNULIB_BTOWC@
-GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
-GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
-GNULIB_CHOWN = @GNULIB_CHOWN@
-GNULIB_CLOSE = @GNULIB_CLOSE@
-GNULIB_DPRINTF = @GNULIB_DPRINTF@
-GNULIB_DUP2 = @GNULIB_DUP2@
-GNULIB_DUP3 = @GNULIB_DUP3@
-GNULIB_ENVIRON = @GNULIB_ENVIRON@
-GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
-GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
-GNULIB_FCHDIR = @GNULIB_FCHDIR@
-GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
-GNULIB_FCLOSE = @GNULIB_FCLOSE@
-GNULIB_FFLUSH = @GNULIB_FFLUSH@
-GNULIB_FOPEN = @GNULIB_FOPEN@
-GNULIB_FPRINTF = @GNULIB_FPRINTF@
-GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
-GNULIB_FPURGE = @GNULIB_FPURGE@
-GNULIB_FPUTC = @GNULIB_FPUTC@
-GNULIB_FPUTS = @GNULIB_FPUTS@
-GNULIB_FREOPEN = @GNULIB_FREOPEN@
-GNULIB_FSEEK = @GNULIB_FSEEK@
-GNULIB_FSEEKO = @GNULIB_FSEEKO@
-GNULIB_FSYNC = @GNULIB_FSYNC@
-GNULIB_FTELL = @GNULIB_FTELL@
-GNULIB_FTELLO = @GNULIB_FTELLO@
-GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
-GNULIB_FWRITE = @GNULIB_FWRITE@
-GNULIB_GETCWD = @GNULIB_GETCWD@
-GNULIB_GETDELIM = @GNULIB_GETDELIM@
-GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
-GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
-GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
-GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
-GNULIB_GETLINE = @GNULIB_GETLINE@
-GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
-GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
-GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
-GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
-GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
-GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
-GNULIB_GRANTPT = @GNULIB_GRANTPT@
-GNULIB_LCHOWN = @GNULIB_LCHOWN@
-GNULIB_LINK = @GNULIB_LINK@
-GNULIB_LINKAT = @GNULIB_LINKAT@
-GNULIB_LSEEK = @GNULIB_LSEEK@
-GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
-GNULIB_MBRLEN = @GNULIB_MBRLEN@
-GNULIB_MBRTOWC = @GNULIB_MBRTOWC@
-GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
-GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
-GNULIB_MBSCHR = @GNULIB_MBSCHR@
-GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
-GNULIB_MBSINIT = @GNULIB_MBSINIT@
-GNULIB_MBSLEN = @GNULIB_MBSLEN@
-GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
-GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
-GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@
-GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
-GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
-GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
-GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@
-GNULIB_MBSSEP = @GNULIB_MBSSEP@
-GNULIB_MBSSPN = @GNULIB_MBSSPN@
-GNULIB_MBSSTR = @GNULIB_MBSSTR@
-GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
-GNULIB_MEMCHR = @GNULIB_MEMCHR@
-GNULIB_MEMMEM = @GNULIB_MEMMEM@
-GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
-GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
-GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
-GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
-GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
-GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
-GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
-GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@
-GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
-GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
-GNULIB_PERROR = @GNULIB_PERROR@
-GNULIB_PIPE2 = @GNULIB_PIPE2@
-GNULIB_POPEN = @GNULIB_POPEN@
-GNULIB_PREAD = @GNULIB_PREAD@
-GNULIB_PRINTF = @GNULIB_PRINTF@
-GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
-GNULIB_PTSNAME = @GNULIB_PTSNAME@
-GNULIB_PUTC = @GNULIB_PUTC@
-GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
-GNULIB_PUTENV = @GNULIB_PUTENV@
-GNULIB_PUTS = @GNULIB_PUTS@
-GNULIB_PWRITE = @GNULIB_PWRITE@
-GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
-GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
-GNULIB_READLINK = @GNULIB_READLINK@
-GNULIB_READLINKAT = @GNULIB_READLINKAT@
-GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
-GNULIB_REALPATH = @GNULIB_REALPATH@
-GNULIB_REMOVE = @GNULIB_REMOVE@
-GNULIB_RENAME = @GNULIB_RENAME@
-GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
-GNULIB_RMDIR = @GNULIB_RMDIR@
-GNULIB_RPMATCH = @GNULIB_RPMATCH@
-GNULIB_SETENV = @GNULIB_SETENV@
-GNULIB_SLEEP = @GNULIB_SLEEP@
-GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
-GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
-GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
-GNULIB_STPCPY = @GNULIB_STPCPY@
-GNULIB_STPNCPY = @GNULIB_STPNCPY@
-GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
-GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
-GNULIB_STRDUP = @GNULIB_STRDUP@
-GNULIB_STRERROR = @GNULIB_STRERROR@
-GNULIB_STRNCAT = @GNULIB_STRNCAT@
-GNULIB_STRNDUP = @GNULIB_STRNDUP@
-GNULIB_STRNLEN = @GNULIB_STRNLEN@
-GNULIB_STRPBRK = @GNULIB_STRPBRK@
-GNULIB_STRSEP = @GNULIB_STRSEP@
-GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
-GNULIB_STRSTR = @GNULIB_STRSTR@
-GNULIB_STRTOD = @GNULIB_STRTOD@
-GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
-GNULIB_STRTOLL = @GNULIB_STRTOLL@
-GNULIB_STRTOULL = @GNULIB_STRTOULL@
-GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
-GNULIB_SYMLINK = @GNULIB_SYMLINK@
-GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
-GNULIB_TMPFILE = @GNULIB_TMPFILE@
-GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
-GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
-GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
-GNULIB_UNLINK = @GNULIB_UNLINK@
-GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
-GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
-GNULIB_UNSETENV = @GNULIB_UNSETENV@
-GNULIB_USLEEP = @GNULIB_USLEEP@
-GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
-GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
-GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
-GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
-GNULIB_VPRINTF = @GNULIB_VPRINTF@
-GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
-GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
-GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
-GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
-GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@
-GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@
-GNULIB_WCTOB = @GNULIB_WCTOB@
-GNULIB_WCWIDTH = @GNULIB_WCWIDTH@
-GNULIB_WRITE = @GNULIB_WRITE@
-GNULIB__EXIT = @GNULIB__EXIT@
-GREP = @GREP@
-GRUB_BOOT_MACHINE_LINK_ADDR = @GRUB_BOOT_MACHINE_LINK_ADDR@
-HAVE_ASM_USCORE = @HAVE_ASM_USCORE@
-HAVE_ATOLL = @HAVE_ATOLL@
-HAVE_BTOWC = @HAVE_BTOWC@
-HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
-HAVE_CHOWN = @HAVE_CHOWN@
-HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
-HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
-HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
-HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
-HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
-HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
-HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
-HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
-HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
-HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
-HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
-HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
-HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
-HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
-HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
-HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
-HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
-HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
-HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
-HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@
-HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@
-HAVE_DPRINTF = @HAVE_DPRINTF@
-HAVE_DUP2 = @HAVE_DUP2@
-HAVE_DUP3 = @HAVE_DUP3@
-HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
-HAVE_FACCESSAT = @HAVE_FACCESSAT@
-HAVE_FCHDIR = @HAVE_FCHDIR@
-HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
-HAVE_FSEEKO = @HAVE_FSEEKO@
-HAVE_FSYNC = @HAVE_FSYNC@
-HAVE_FTELLO = @HAVE_FTELLO@
-HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
-HAVE_GETDOMAINNAME = @HAVE_GETDOMAINNAME@
-HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
-HAVE_GETGROUPS = @HAVE_GETGROUPS@
-HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
-HAVE_GETLOGIN = @HAVE_GETLOGIN@
-HAVE_GETOPT_H = @HAVE_GETOPT_H@
-HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
-HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
-HAVE_GRANTPT = @HAVE_GRANTPT@
-HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
-HAVE_ISWBLANK = @HAVE_ISWBLANK@
-HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
-HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@
-HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@
-HAVE_LANGINFO_H = @HAVE_LANGINFO_H@
-HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@
-HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@
-HAVE_LCHOWN = @HAVE_LCHOWN@
-HAVE_LINK = @HAVE_LINK@
-HAVE_LINKAT = @HAVE_LINKAT@
-HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
-HAVE_MBRLEN = @HAVE_MBRLEN@
-HAVE_MBRTOWC = @HAVE_MBRTOWC@
-HAVE_MBSINIT = @HAVE_MBSINIT@
-HAVE_MBSLEN = @HAVE_MBSLEN@
-HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@
-HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@
-HAVE_MEMCHR = @HAVE_MEMCHR@
-HAVE_MEMPCPY = @HAVE_MEMPCPY@
-HAVE_MKDTEMP = @HAVE_MKDTEMP@
-HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
-HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
-HAVE_MKSTEMP = @HAVE_MKSTEMP@
-HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
-HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@
-HAVE_OS_H = @HAVE_OS_H@
-HAVE_PIPE2 = @HAVE_PIPE2@
-HAVE_PREAD = @HAVE_PREAD@
-HAVE_PTSNAME = @HAVE_PTSNAME@
-HAVE_PWRITE = @HAVE_PWRITE@
-HAVE_RANDOM_H = @HAVE_RANDOM_H@
-HAVE_RANDOM_R = @HAVE_RANDOM_R@
-HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
-HAVE_READLINK = @HAVE_READLINK@
-HAVE_READLINKAT = @HAVE_READLINKAT@
-HAVE_REALPATH = @HAVE_REALPATH@
-HAVE_RENAMEAT = @HAVE_RENAMEAT@
-HAVE_RPMATCH = @HAVE_RPMATCH@
-HAVE_SETENV = @HAVE_SETENV@
-HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
-HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
-HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
-HAVE_SLEEP = @HAVE_SLEEP@
-HAVE_STDINT_H = @HAVE_STDINT_H@
-HAVE_STPCPY = @HAVE_STPCPY@
-HAVE_STPNCPY = @HAVE_STPNCPY@
-HAVE_STRCASECMP = @HAVE_STRCASECMP@
-HAVE_STRCASESTR = @HAVE_STRCASESTR@
-HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
-HAVE_STRPBRK = @HAVE_STRPBRK@
-HAVE_STRSEP = @HAVE_STRSEP@
-HAVE_STRTOD = @HAVE_STRTOD@
-HAVE_STRTOLL = @HAVE_STRTOLL@
-HAVE_STRTOULL = @HAVE_STRTOULL@
-HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
-HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
-HAVE_SYMLINK = @HAVE_SYMLINK@
-HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
-HAVE_SYSEXITS_H = @HAVE_SYSEXITS_H@
-HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
-HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
-HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
-HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
-HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
-HAVE_TTYNAME_R = @HAVE_TTYNAME_R@
-HAVE_UNISTD_H = @HAVE_UNISTD_H@
-HAVE_UNLINKAT = @HAVE_UNLINKAT@
-HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
-HAVE_UNSETENV = @HAVE_UNSETENV@
-HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
-HAVE_USLEEP = @HAVE_USLEEP@
-HAVE_VASPRINTF = @HAVE_VASPRINTF@
-HAVE_VDPRINTF = @HAVE_VDPRINTF@
-HAVE_WCHAR_H = @HAVE_WCHAR_H@
-HAVE_WCHAR_T = @HAVE_WCHAR_T@
-HAVE_WCRTOMB = @HAVE_WCRTOMB@
-HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
-HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
-HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
-HAVE_WINT_T = @HAVE_WINT_T@
-HAVE__BOOL = @HAVE__BOOL@
-HAVE__EXIT = @HAVE__EXIT@
-HELP2MAN = @HELP2MAN@
-HOST_CC = @HOST_CC@
-HOST_CCASFLAGS = @HOST_CCASFLAGS@
-HOST_CFLAGS = @HOST_CFLAGS@
-HOST_CPPFLAGS = @HOST_CPPFLAGS@
-HOST_LDFLAGS = @HOST_LDFLAGS@
-INCLUDE_NEXT = @INCLUDE_NEXT@
-INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBCURSES = @LIBCURSES@
-LIBDEVMAPPER = @LIBDEVMAPPER@
-LIBGEOM = @LIBGEOM@
-LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
-LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBLZMA = @LIBLZMA@
-LIBNVPAIR = @LIBNVPAIR@
-LIBOBJS = @LIBOBJS@
-LIBPCIACCESS = @LIBPCIACCESS@
-LIBS = @LIBS@
-LIBSDL = @LIBSDL@
-LIBUSB = @LIBUSB@
-LIBUTIL = @LIBUTIL@
-LIBZFS = @LIBZFS@
-LN_S = @LN_S@
-LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@
-LOCALE_FR = @LOCALE_FR@
-LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
-LOCALE_JA = @LOCALE_JA@
-LOCALE_ZH_CN = @LOCALE_ZH_CN@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NEED_ENABLE_EXECUTE_STACK = @NEED_ENABLE_EXECUTE_STACK@
-NEED_REGISTER_FRAME_INFO = @NEED_REGISTER_FRAME_INFO@
-NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
-NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
-NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@
-NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@
-NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
-NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
-NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
-NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
-NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
-NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
-NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H = @NEXT_AS_FIRST_DIRECTIVE_SYSEXITS_H@
-NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@
-NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
-NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
-NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
-NEXT_ERRNO_H = @NEXT_ERRNO_H@
-NEXT_FLOAT_H = @NEXT_FLOAT_H@
-NEXT_GETOPT_H = @NEXT_GETOPT_H@
-NEXT_LANGINFO_H = @NEXT_LANGINFO_H@
-NEXT_STDDEF_H = @NEXT_STDDEF_H@
-NEXT_STDINT_H = @NEXT_STDINT_H@
-NEXT_STDIO_H = @NEXT_STDIO_H@
-NEXT_STDLIB_H = @NEXT_STDLIB_H@
-NEXT_STRINGS_H = @NEXT_STRINGS_H@
-NEXT_STRING_H = @NEXT_STRING_H@
-NEXT_SYSEXITS_H = @NEXT_SYSEXITS_H@
-NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@
-NEXT_UNISTD_H = @NEXT_UNISTD_H@
-NEXT_WCHAR_H = @NEXT_WCHAR_H@
-NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
-NM = @NM@
-OBJCONV = @OBJCONV@
-OBJCOPY = @OBJCOPY@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-POSUB = @POSUB@
-PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
-PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
-RANLIB = @RANLIB@
-REPLACE_BTOWC = @REPLACE_BTOWC@
-REPLACE_CALLOC = @REPLACE_CALLOC@
-REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
-REPLACE_CHOWN = @REPLACE_CHOWN@
-REPLACE_CLOSE = @REPLACE_CLOSE@
-REPLACE_DPRINTF = @REPLACE_DPRINTF@
-REPLACE_DUP = @REPLACE_DUP@
-REPLACE_DUP2 = @REPLACE_DUP2@
-REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
-REPLACE_FCLOSE = @REPLACE_FCLOSE@
-REPLACE_FFLUSH = @REPLACE_FFLUSH@
-REPLACE_FOPEN = @REPLACE_FOPEN@
-REPLACE_FPRINTF = @REPLACE_FPRINTF@
-REPLACE_FPURGE = @REPLACE_FPURGE@
-REPLACE_FREOPEN = @REPLACE_FREOPEN@
-REPLACE_FSEEK = @REPLACE_FSEEK@
-REPLACE_FSEEKO = @REPLACE_FSEEKO@
-REPLACE_FTELL = @REPLACE_FTELL@
-REPLACE_FTELLO = @REPLACE_FTELLO@
-REPLACE_GETCWD = @REPLACE_GETCWD@
-REPLACE_GETDELIM = @REPLACE_GETDELIM@
-REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
-REPLACE_GETLINE = @REPLACE_GETLINE@
-REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
-REPLACE_ISWBLANK = @REPLACE_ISWBLANK@
-REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@
-REPLACE_LCHOWN = @REPLACE_LCHOWN@
-REPLACE_LINK = @REPLACE_LINK@
-REPLACE_LINKAT = @REPLACE_LINKAT@
-REPLACE_LSEEK = @REPLACE_LSEEK@
-REPLACE_MALLOC = @REPLACE_MALLOC@
-REPLACE_MBRLEN = @REPLACE_MBRLEN@
-REPLACE_MBRTOWC = @REPLACE_MBRTOWC@
-REPLACE_MBSINIT = @REPLACE_MBSINIT@
-REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@
-REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@
-REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@
-REPLACE_MEMCHR = @REPLACE_MEMCHR@
-REPLACE_MEMMEM = @REPLACE_MEMMEM@
-REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
-REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@
-REPLACE_NULL = @REPLACE_NULL@
-REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
-REPLACE_PERROR = @REPLACE_PERROR@
-REPLACE_POPEN = @REPLACE_POPEN@
-REPLACE_PREAD = @REPLACE_PREAD@
-REPLACE_PRINTF = @REPLACE_PRINTF@
-REPLACE_PUTENV = @REPLACE_PUTENV@
-REPLACE_PWRITE = @REPLACE_PWRITE@
-REPLACE_READLINK = @REPLACE_READLINK@
-REPLACE_REALLOC = @REPLACE_REALLOC@
-REPLACE_REALPATH = @REPLACE_REALPATH@
-REPLACE_REMOVE = @REPLACE_REMOVE@
-REPLACE_RENAME = @REPLACE_RENAME@
-REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
-REPLACE_RMDIR = @REPLACE_RMDIR@
-REPLACE_SETENV = @REPLACE_SETENV@
-REPLACE_SLEEP = @REPLACE_SLEEP@
-REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
-REPLACE_SPRINTF = @REPLACE_SPRINTF@
-REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
-REPLACE_STPNCPY = @REPLACE_STPNCPY@
-REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
-REPLACE_STRDUP = @REPLACE_STRDUP@
-REPLACE_STRERROR = @REPLACE_STRERROR@
-REPLACE_STRNCAT = @REPLACE_STRNCAT@
-REPLACE_STRNDUP = @REPLACE_STRNDUP@
-REPLACE_STRNLEN = @REPLACE_STRNLEN@
-REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
-REPLACE_STRSTR = @REPLACE_STRSTR@
-REPLACE_STRTOD = @REPLACE_STRTOD@
-REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
-REPLACE_SYMLINK = @REPLACE_SYMLINK@
-REPLACE_TMPFILE = @REPLACE_TMPFILE@
-REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
-REPLACE_UNLINK = @REPLACE_UNLINK@
-REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
-REPLACE_UNSETENV = @REPLACE_UNSETENV@
-REPLACE_USLEEP = @REPLACE_USLEEP@
-REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
-REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
-REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
-REPLACE_VPRINTF = @REPLACE_VPRINTF@
-REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
-REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
-REPLACE_WCRTOMB = @REPLACE_WCRTOMB@
-REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@
-REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@
-REPLACE_WCTOB = @REPLACE_WCTOB@
-REPLACE_WCWIDTH = @REPLACE_WCWIDTH@
-REPLACE_WRITE = @REPLACE_WRITE@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
-SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
-STDBOOL_H = @STDBOOL_H@
-STDDEF_H = @STDDEF_H@
-STDINT_H = @STDINT_H@
-STRIP = @STRIP@
-SYSEXITS_H = @SYSEXITS_H@
-TARGET_APPLE_CC = @TARGET_APPLE_CC@
-TARGET_CC = @TARGET_CC@
-TARGET_CCAS = @TARGET_CCAS@
-TARGET_CCASFLAGS = @TARGET_CCASFLAGS@
-TARGET_CFLAGS = @TARGET_CFLAGS@
-TARGET_CPP = @TARGET_CPP@
-TARGET_CPPFLAGS = @TARGET_CPPFLAGS@
-TARGET_IMG_BASE_LDOPT = @TARGET_IMG_BASE_LDOPT@
-TARGET_IMG_CFLAGS = @TARGET_IMG_CFLAGS@
-TARGET_IMG_LDFLAGS = @TARGET_IMG_LDFLAGS@
-TARGET_IMG_LDSCRIPT = @TARGET_IMG_LDSCRIPT@
-TARGET_LDFLAGS = @TARGET_LDFLAGS@
-TARGET_MODULE_FORMAT = @TARGET_MODULE_FORMAT@
-TARGET_OBJ2ELF = @TARGET_OBJ2ELF@
-UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
-UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
-UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
-USE_APPLE_CC_FIXES = @USE_APPLE_CC_FIXES@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
-WINT_T_SUFFIX = @WINT_T_SUFFIX@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_TARGET_CC = @ac_ct_TARGET_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bootdirname = @bootdirname@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-enable_efiemu = @enable_efiemu@
-enable_grub_emu_pci = @enable_grub_emu_pci@
-enable_grub_emu_sdl = @enable_grub_emu_sdl@
-enable_grub_emu_usb = @enable_grub_emu_usb@
-enable_grub_mkfont = @enable_grub_mkfont@
-exec_prefix = @exec_prefix@
-freetype_cflags = @freetype_cflags@
-freetype_libs = @freetype_libs@
-gl_LIBOBJS = @gl_LIBOBJS@
-gl_LTLIBOBJS = @gl_LTLIBOBJS@
-gltests_LIBOBJS = @gltests_LIBOBJS@
-gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
-gltests_WITNESS = @gltests_WITNESS@
-grubdirname = @grubdirname@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_kernel = @host_kernel@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkglibrootdir = @pkglibrootdir@
-platform = @platform@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = subdir-objects
-
-# AM_MAKEINFOFLAGS = --no-split --no-validate
-info_TEXINFOS = grub.texi grub-dev.texi
-grub_TEXINFOS = fdl.texi
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .dvi .html .info .pdf .ps .texi
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu docs/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-.texi.info:
- restore=: && backupdir="$(am__leading_dot)am$$$$" && \
- am__cwd=`pwd` && $(am__cd) $(srcdir) && \
- rm -rf $$backupdir && mkdir $$backupdir && \
- if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
- done; \
- else :; fi && \
- cd "$$am__cwd"; \
- if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
- -o $@ $<; \
- then \
- rc=0; \
- $(am__cd) $(srcdir); \
- else \
- rc=$$?; \
- $(am__cd) $(srcdir) && \
- $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
- fi; \
- rm -rf $$backupdir; exit $$rc
-
-.texi.dvi:
- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
- $(TEXI2DVI) $<
-
-.texi.pdf:
- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
- $(TEXI2PDF) $<
-
-.texi.html:
- rm -rf $(@:.html=.htp)
- if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
- -o $(@:.html=.htp) $<; \
- then \
- rm -rf $@; \
- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
- mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
- else \
- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
- rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
- exit 1; \
- fi
-$(srcdir)/grub.info: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
-grub.dvi: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
-grub.pdf: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
-grub.html: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
-$(srcdir)/version.texi: $(srcdir)/stamp-vti
-$(srcdir)/stamp-vti: grub.texi $(top_srcdir)/configure
- @(dir=.; test -f ./grub.texi || dir=$(srcdir); \
- set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/grub.texi`; \
- echo "@set UPDATED $$1 $$2 $$3"; \
- echo "@set UPDATED-MONTH $$2 $$3"; \
- echo "@set EDITION $(VERSION)"; \
- echo "@set VERSION $(VERSION)") > vti.tmp
- @cmp -s vti.tmp $(srcdir)/version.texi \
- || (echo "Updating $(srcdir)/version.texi"; \
- cp vti.tmp $(srcdir)/version.texi)
- -@rm -f vti.tmp
- @cp $(srcdir)/version.texi $@
-
-mostlyclean-vti:
- -rm -f vti.tmp
-
-maintainer-clean-vti:
- -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
-$(srcdir)/grub-dev.info: grub-dev.texi $(srcdir)/version-dev.texi
-grub-dev.dvi: grub-dev.texi $(srcdir)/version-dev.texi
-grub-dev.pdf: grub-dev.texi $(srcdir)/version-dev.texi
-grub-dev.html: grub-dev.texi $(srcdir)/version-dev.texi
-$(srcdir)/version-dev.texi: $(srcdir)/stamp-1
-$(srcdir)/stamp-1: grub-dev.texi $(top_srcdir)/configure
- @(dir=.; test -f ./grub-dev.texi || dir=$(srcdir); \
- set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/grub-dev.texi`; \
- echo "@set UPDATED $$1 $$2 $$3"; \
- echo "@set UPDATED-MONTH $$2 $$3"; \
- echo "@set EDITION $(VERSION)"; \
- echo "@set VERSION $(VERSION)") > 1.tmp
- @cmp -s 1.tmp $(srcdir)/version-dev.texi \
- || (echo "Updating $(srcdir)/version-dev.texi"; \
- cp 1.tmp $(srcdir)/version-dev.texi)
- -@rm -f 1.tmp
- @cp $(srcdir)/version-dev.texi $@
-
-mostlyclean-1:
- -rm -f 1.tmp
-
-maintainer-clean-1:
- -rm -f $(srcdir)/stamp-1 $(srcdir)/version-dev.texi
-.dvi.ps:
- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
- $(DVIPS) -o $@ $<
-
-uninstall-dvi-am:
- @$(NORMAL_UNINSTALL)
- @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
- rm -f "$(DESTDIR)$(dvidir)/$$f"; \
- done
-
-uninstall-html-am:
- @$(NORMAL_UNINSTALL)
- @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
- rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
- done
-
-uninstall-info-am:
- @$(PRE_UNINSTALL)
- @if test -d '$(DESTDIR)$(infodir)' && \
- (install-info --version && \
- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
- list='$(INFO_DEPS)'; \
- for file in $$list; do \
- relfile=`echo "$$file" | sed 's|^.*/||'`; \
- echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
- if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
- then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
- done; \
- else :; fi
- @$(NORMAL_UNINSTALL)
- @list='$(INFO_DEPS)'; \
- for file in $$list; do \
- relfile=`echo "$$file" | sed 's|^.*/||'`; \
- relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
- (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
- echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
- rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
- else :; fi); \
- done
-
-uninstall-pdf-am:
- @$(NORMAL_UNINSTALL)
- @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
- rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
- done
-
-uninstall-ps-am:
- @$(NORMAL_UNINSTALL)
- @list='$(PSS)'; test -n "$(psdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
- rm -f "$(DESTDIR)$(psdir)/$$f"; \
- done
-
-dist-info: $(INFO_DEPS)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- list='$(INFO_DEPS)'; \
- for base in $$list; do \
- case $$base in \
- $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
- esac; \
- if test -f $$base; then d=.; else d=$(srcdir); fi; \
- base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
- for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
- if test -f $$file; then \
- relfile=`expr "$$file" : "$$d/\(.*\)"`; \
- test -f "$(distdir)/$$relfile" || \
- cp -p $$file "$(distdir)/$$relfile"; \
- else :; fi; \
- done; \
- done
-
-mostlyclean-aminfo:
- -rm -rf grub.aux grub.cp grub.cps grub.fn grub.ky grub.log grub.pg grub.tmp \
- grub.toc grub.tp grub.vr grub-dev.aux grub-dev.cp \
- grub-dev.cps grub-dev.fn grub-dev.ky grub-dev.log \
- grub-dev.pg grub-dev.tmp grub-dev.toc grub-dev.tp \
- grub-dev.vr
-
-clean-aminfo:
- -test -z "grub.dvi grub.pdf grub.ps grub.html grub-dev.dvi grub-dev.pdf \
- grub-dev.ps grub-dev.html" \
- || rm -rf grub.dvi grub.pdf grub.ps grub.html grub-dev.dvi grub-dev.pdf \
- grub-dev.ps grub-dev.html
-
-maintainer-clean-aminfo:
- @list='$(INFO_DEPS)'; for i in $$list; do \
- i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
- echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
- rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-info
-check-am: all-am
-check: check-am
-all-am: Makefile $(INFO_DEPS)
-installdirs:
- for dir in "$(DESTDIR)$(infodir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-aminfo clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am: $(DVIS)
-
-html: html-am
-
-html-am: $(HTMLS)
-
-info: info-am
-
-info-am: $(INFO_DEPS)
-
-install-data-am: install-info-am
-
-install-dvi: install-dvi-am
-
-install-dvi-am: $(DVIS)
- @$(NORMAL_INSTALL)
- test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
- @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
- done
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am: $(HTMLS)
- @$(NORMAL_INSTALL)
- test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
- @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
- for p in $$list; do \
- if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
- $(am__strip_dir) \
- if test -d "$$d$$p"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
- $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
- echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
- $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
- else \
- list2="$$list2 $$d$$p"; \
- fi; \
- done; \
- test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
- done; }
-install-info: install-info-am
-
-install-info-am: $(INFO_DEPS)
- @$(NORMAL_INSTALL)
- test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
- for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- esac; \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
- file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
- for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
- $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
- if test -f $$ifile; then \
- echo "$$ifile"; \
- else : ; fi; \
- done; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
- @$(POST_INSTALL)
- @if (install-info --version && \
- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
- list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
- for file in $$list; do \
- relfile=`echo "$$file" | sed 's|^.*/||'`; \
- echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
- install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
- done; \
- else : ; fi
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am: $(PDFS)
- @$(NORMAL_INSTALL)
- test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
- @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
-install-ps: install-ps-am
-
-install-ps-am: $(PSS)
- @$(NORMAL_INSTALL)
- test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
- @list='$(PSS)'; test -n "$(psdir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-1 \
- maintainer-clean-aminfo maintainer-clean-generic \
- maintainer-clean-vti
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \
- mostlyclean-vti
-
-pdf: pdf-am
-
-pdf-am: $(PDFS)
-
-ps: ps-am
-
-ps-am: $(PSS)
-
-uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
- uninstall-pdf-am uninstall-ps-am
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
- dist-info distclean distclean-generic distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-1 maintainer-clean-aminfo \
- maintainer-clean-generic maintainer-clean-vti mostlyclean \
- mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \
- mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \
- uninstall-dvi-am uninstall-html-am uninstall-info-am \
- uninstall-pdf-am uninstall-ps-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/docs/grub-dev.info b/docs/grub-dev.info
deleted file mode 100644
index 0510b36..0000000
--- a/docs/grub-dev.info
+++ /dev/null
@@ -1,2171 +0,0 @@
-This is /home/phcoder/grub2/bzr/grub-1.99/docs/grub-dev.info, produced
-by makeinfo version 4.13 from
-/home/phcoder/grub2/bzr/grub-1.99/docs/grub-dev.texi.
-
-This developer manual is for GNU GRUB (version 1.99, 13 April 2011).
-
- Copyright (C) 1999,2000,2001,2002,2004,2005,2006,2008,2009,2010,2011
-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-dev: (grub-dev). The GRand Unified Bootloader Dev
-END-INFO-DIR-ENTRY
-
-
-File: grub-dev.info, Node: Top, Next: Getting the source code, Up: (dir)
-
-GNU GRUB developer manual
-*************************
-
-This is the developer 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.99.
-
- This developer manual is for GNU GRUB (version 1.99, 13 April 2011).
-
- Copyright (C) 1999,2000,2001,2002,2004,2005,2006,2008,2009,2010,2011
-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:
-
-* Getting the source code::
-* Finding your way around::
-* Coding style::
-* Contributing Changes::
-* Error Handling::
-* CIA::
-* BIOS port memory map::
-* Video Subsystem::
-* PFF2 Font File Format::
-* Graphical Menu Software Design::
-* Copying This Manual:: Copying This Manual
-* Index::
-
-
-File: grub-dev.info, Node: Getting the source code, Next: Finding your way around, Prev: Top, Up: Top
-
-1 Getting the source code
-*************************
-
-GRUB is maintained using the Bazaar revision control system
-(http://bazaar-vcs.org/). To fetch the primary development branch:
-
- bzr get http://bzr.savannah.gnu.org/r/grub/trunk/grub
-
- The GRUB developers maintain several other branches with work in
-progress. Of these, the most interesting is the experimental branch,
-which is a staging area for new code which we expect to eventually
-merge into trunk but which is not yet ready:
-
- bzr get http://bzr.savannah.gnu.org/r/grub/branches/experimental
-
- Once you have used `bzr get' to fetch an initial copy of a branch,
-you can use `bzr pull' to keep it up to date. If you have modified your
-local version, you may need to resolve conflicts when pulling.
-
-
-File: grub-dev.info, Node: Coding style, Next: Contributing Changes, Prev: Finding your way around, Up: Top
-
-2 Coding style
-**************
-
-Basically we follow the GNU Coding Standards
-(http://www.gnu.org/prep/standards_toc.html). We define additional
-conventions for GRUB here.
-
-* Menu:
-
-* Naming Conventions::
-* Functions::
-* Variables::
-* Types::
-* Macros::
-* Comments::
-* Multi-Line Comments::
-
-
-File: grub-dev.info, Node: Naming Conventions, Next: Functions, Up: Coding style
-
-2.1 Naming Conventions
-======================
-
-All global symbols (i.e. functions, variables, types, and macros) must
-have the prefix grub_ or GRUB_. The all capital form is used only by
-macros.
-
-
-File: grub-dev.info, Node: Functions, Next: Variables, Prev: Naming Conventions, Up: Coding style
-
-2.2 Functions
-=============
-
-If a function is global, its name must be prefixed with grub_ and must
-consist of only small letters. If the function belongs to a specific
-function module, the name must also be prefixed with the module name.
-For example, if a function is for file systems, its name is prefixed
-with grub_fs_. If a function is for FAT file system but not for all
-file systems, its name is prefixed with grub_fs_fat_. The hierarchy is
-noted this way.
-
- After a prefix, a function name must start with a verb (such as get
-or is). It must not be a noun. Some kind of abbreviation is permitted,
-as long as it wouldn't make code less readable (e.g. init).
-
- If a function is local, its name may not start with any prefix. It
-must start with a verb.
-
-
-File: grub-dev.info, Node: Variables, Next: Types, Prev: Functions, Up: Coding style
-
-2.3 Variables
-=============
-
-The rule is mostly the same as functions, as noted above. If a variable
-is global, its name must be prefixed with grub_ and must consist of
-only small letters. If the variable belongs to a specific function
-module, the name must also be prefixed with the module name. For
-example, if a function is for dynamic loading, its name is prefixed
-with grub_dl_. If a variable is for ELF but not for all dynamic loading
-systems, its name is prefixed with grub_dl_elf_.
-
- After a prefix, a variable name must start with a noun or an
-adjective (such as name or long) and it should end with a noun. Some
-kind of abbreviation is permitted, as long as it wouldn't make code
-less readable (e.g. i18n).
-
- If a variable is global in the scope of a single file (i.e. it is
-declared with static), its name may not start with any prefix. It must
-start with a noun or an adjective.
-
- If a variable is local, you may choose any shorter name, as long as
-it wouldn't make code less readable (e.g. i).
-
-
-File: grub-dev.info, Node: Types, Next: Macros, Prev: Variables, Up: Coding style
-
-2.4 Types
-=========
-
-The name of a type must be prefixed with grub_ and must consist of only
-small letters. If the type belongs to a specific function module, the
-name must also be prefixed with the module name. For example, if a type
-is for OS loaders, its name is prefixed with grub_loader_. If a type is
-for Multiboot but not for all OS loaders, its name is prefixed with
-grub_loader_linux_.
-
- The name must be suffixed with _t, to emphasize the fact that it is
-a type but not a variable or a function.
-
-
-File: grub-dev.info, Node: Macros, Next: Comments, Prev: Types, Up: Coding style
-
-2.5 Macros
-==========
-
-If a macro is global, its name must be prefixed with GRUB_ and must
-consist of only large letters. Other rules are the same as functions or
-variables, depending on whether a macro is used like a function or a
-variable.
-
-
-File: grub-dev.info, Node: Comments, Next: Multi-Line Comments, Prev: Macros, Up: Coding style
-
-2.6 Comments
-============
-
-All comments shall be C-style comments, of the form `/* ... */'.
-
- Comments shall be placed only on a line by themselves. They shall
-not be placed together with code, variable declarations, or other
-non-comment entities. A comment should be placed immediately preceding
-the entity it describes.
-
- Acceptable:
- /* The page # that is the front buffer. */
- int displayed_page;
- /* The page # that is the back buffer. */
- int render_page;
-
- Unacceptable:
- int displayed_page; /* The page # that is the front buffer. */
- int render_page; /* The page # that is the back buffer. */
-
-
-File: grub-dev.info, Node: Multi-Line Comments, Prev: Comments, Up: Coding style
-
-2.7 Multi-Line Comments
-=======================
-
-Comments spanning multiple lines shall be formatted with all lines
-after the first aligned with the first line.
-
- Asterisk characters should not be repeated a the start of each
-subsequent line.
-
- Acceptable:
- /* This is a comment
- which spans multiple lines.
- It is long. */
-
- Unacceptable:
- /*
- * This is a comment
- * which spans multiple lines.
- * It is long. */
-
- The opening `/*' and closing `*/' should be placed together on a
-line with text.
-
-
-File: grub-dev.info, Node: Finding your way around, Next: Coding style, Prev: Getting the source code, Up: Top
-
-3 Finding your way around
-*************************
-
-Here is a brief map of the GRUB code base.
-
- GRUB uses Autoconf and Automake, with most of the Automake input
-generated by AutoGen. The top-level build rules are in `configure.ac',
-`grub-core/Makefile.core.def', and `Makefile.util.def'. Each block in
-a `*.def' file represents a build target, and specifies the source
-files used to build it on various platforms. The `*.def' files are
-processed into AutoGen input by `gentpl.py' (which you only need to
-look at if you are extending the build system). If you are adding a new
-module which follows an existing pattern, such as a new command or a new
-filesystem implementation, it is usually easiest to grep
-`grub-core/Makefile.core.def' and `Makefile.util.def' for an existing
-example of that pattern to find out where it should be added.
-
- In general, code that may be run at boot time is in a subdirectory of
-`grub-core', while code that is only run from within a full operating
-system is in a subdirectory of the top level.
-
- Low-level boot code, such as the MBR implementation on PC BIOS
-systems, is in the `grub-core/boot/' directory.
-
- The GRUB kernel is in `grub-core/kern/'. This contains core
-facilities such as the device, disk, and file frameworks, environment
-variable handling, list processing, and so on. The kernel should
-contain enough to get up to a rescue prompt. Header files for kernel
-facilities, among others, are in `include/'.
-
- Terminal implementations are in `grub-core/term/'.
-
- Disk access code is spread across `grub-core/disk/' (for accessing
-the disk devices themselves), `grub-core/partmap/' (for interpreting
-partition table data), and `grub-core/fs/' (for accessing filesystems).
-Note that, with the odd specialised exception, GRUB only contains code
-to _read_ from filesystems and tries to avoid containing any code to
-_write_ to filesystems; this lets us confidently assure users that GRUB
-cannot be responsible for filesystem corruption.
-
- PCI and USB bus handling is in `grub-core/bus/'.
-
- Video handling code is in `grub-core/video/'. The graphical menu
-system uses this heavily, but is in a separate directory,
-`grub-core/gfxmenu/'.
-
- Most commands are implemented by files in `grub-core/commands/', with
-the following exceptions:
-
- * A few core commands live in `grub-core/kern/corecmd.c'.
-
- * Commands related to normal mode live under `grub-core/normal/'.
-
- * Commands that load and boot kernels live under `grub-core/loader/'.
-
- * The `loopback' command is really a disk device, and so lives in
- `grub-core/disk/loopback.c'.
-
- * The `gettext' command lives under `grub-core/gettext/'.
-
- * The `loadfont' and `lsfonts' commands live under `grub-core/font/'.
-
- * The `serial', `terminfo', and `background_image' commands live
- under `grub-core/term/'.
-
- * The `efiemu_*' commands live under `grub-core/efiemu/'.
-
- There are a few other special-purpose exceptions; grep for them if
-they matter to you.
-
- Utility programs meant to be run from a full operating system are in
-`util/'.
-
-
-File: grub-dev.info, Node: Contributing Changes, Next: Error Handling, Prev: Coding style, Up: Top
-
-4 Contributing changes
-**********************
-
-Contributing changes to GRUB 2 is welcomed activity. However we have a
-bit of control what kind of changes will be accepted to GRUB 2.
-Therefore it is important to discuss your changes on grub-devel mailing
-list (see MailingLists). On this page there are some basic details on
-the development process and activities.
-
- First of all you should come up with the idea yourself what you want
-to contribute. If you do not have that beforehand you are advised to
-study this manual and try GRUB 2 out to see what you think is missing
-from there.
-
- Here are additional pointers:
- * `https://savannah.gnu.org/task/?group=grub GRUB's Task Tracker'
-
- * `https://savannah.gnu.org/bugs/?group=grub GRUB's Bug Tracker'
-
- If you intended to make changes to GRUB Legacy (<=0.97) those are
-not accepted anymore.
-
-* Menu:
-
-* Getting started::
-* Typical Developer Experience::
-* When you are approved for write access to project's files::
-
-
-File: grub-dev.info, Node: Getting started, Next: Typical Developer Experience, Up: Contributing Changes
-
-4.1 Getting started
-===================
-
- * Always use latest GRUB 2 source code. So get that first.
-
- For developers it is recommended always to use the newest
- development version of GRUB 2. If development takes a long period
- of time, please remember to keep in sync with newest developments
- regularly so it is much easier to integrate your change in the
- future. GRUB 2 is being developed in a Bazaar (bzr) repository.
-
- Please check Savannah's GRUB project page for details how to get
- newest bzr: GRUB 2 bzr Repository
- (http://savannah.gnu.org/bzr/?group=grub)
-
- * Compile it and try it out.
-
- It is always good idea to first see that things work somehow and
- after that to start to implement new features or develop fixes to
- bugs.
-
- * Study the code.
-
- There are sometimes odd ways to do things in GRUB 2 code base.
- This is mainly related to limited environment where GRUB 2 is
- being executed. You usually do not need to understand it all so
- it is better to only try to look at places that relates to your
- work. Please do not hesitate to ask for help if there is something
- that you do not understand.
-
- * Develop a new feature.
-
- Now that you know what to do and how it should work in GRUB 2 code
- base, please be free to develop it. If you have not so far
- announced your idea on grub-devel mailing list, please do it now.
- This is to make sure you are not wasting your time working on the
- solution that will not be integrated to GRUB 2 code base.
-
- You might want to study our coding style before starting
- development so you do not need to change much of the code when
- your patch is being reviewed. (see *note Coding style::)
-
- For every accepted patch there has to exist a ChangeLog entry. Our
- ChangeLog consist of changes within source code and are not
- describing about what the change logically does. Please see
- examples from previous entries.
-
- Also remember that GRUB 2 is licensed under GPLv3 license and that
- usually means that you are not allowed to copy pieces of code from
- other projects. Even if the source project's license would be
- compatible with GPLv3, please discuss it beforehand on grub-devel
- mailing list.
-
- * Test your change.
-
- Test that your change works properly. Try it out a couple of
- times, preferably on different systems, and try to find problems
- with it.
-
- * Publish your change.
-
- When you are happy with your change, first make sure it is
- compilable with latest development version of GRUB 2. After that
- please send a patch to grub-devel for review. Please describe in
- your email why you made the change, what it changes and so on.
- Please be prepared to receive even discouraging comments about
- your patch. There is usually at least something that needs to be
- improved in every patch.
-
- Please use unified diff to make your patch (good match of
- arguments for diff is `-pruN').
-
- * Respond to received feedback.
-
- If you are asked to modify your patch, please do that and resubmit
- it for review. If your change is large you are required to submit
- a copyright agreement to FSF. Please keep in mind that if you are
- asked to submit for copyright agreement, process can take some
- time and is mandatory in order to get your changes integrated.
-
- If you are not on grub-devel to respond to questions, most likely
- your patch will not be accepted. Also if problems arise from your
- changes later on, it would be preferable that you also fix the
- problem. So stay around for a while.
-
- * Your patch is accepted.
-
- Good job! Your patch will now be integrated into GRUB 2 mainline,
- and if it didn't break anything it will be publicly available in
- the next release.
-
- Now you are welcome to do further improvements :)
-
-
-File: grub-dev.info, Node: Typical Developer Experience, Next: When you are approved for write access to project's files, Prev: Getting started, Up: Contributing Changes
-
-4.2 Typical Developer Experience
-================================
-
-The typical experience for a developer in this project is the following:
-
- 1. You find yourself wanting to do something (e.g. fixing a bug).
-
- 2. You show some result in the mailing list or the IRC.
-
- 3. You are getting to be known to other developers.
-
- 4. You accumulate significant amount of contribution, so copyright
- assignment is processed.
-
- 5. You are free to check in your changes on your own, legally
- speaking.
-
- At this point, it is rather annoying that you ought to ask somebody
-else every change to be checked in. For efficiency, it is far better,
-if you can commit it yourself. Therefore, our policy is to give you the
-write permission to our official repository, once you have shown your
-skill and will, and the FSF clerks have dealt with your copyright
-assignment.
-
-
-File: grub-dev.info, Node: When you are approved for write access to project's files, Prev: Typical Developer Experience, Up: Contributing Changes
-
-4.3 When you are approved for write access to project's files
-=============================================================
-
-As you might know, GRUB is hosted on
-`https://savannah.gnu.org/projects/grub Savannah', thus the membership
-is managed by Savannah. This means that, if you want to be a member of
-this project:
-
- 1. You need to create your own account on Savannah.
-
- 2. You can submit "Request for Inclusion" from "My Groups" on
- Savannah.
-
- Then, one of the admins can approve your request, and you will be a
-member. If you don't want to use the Savannah interface to submit a
-request, you can simply notify the admins by email or something else,
-alternatively. But you still need to create an account beforehand.
-
- NOTE: we sometimes receive a "Request for Inclusion" from an unknown
-person. In this case, the request would be just discarded, since it is
-too dangerous to allow a stranger to be a member, which automatically
-gives him a commit right to the repository, both for a legal reason and
-for a technical reason.
-
- If your intention is to just get started, please do not submit a
-inclusion request. Instead, please subscribe to the mailing list, and
-communicate first (e.g. sending a patch, asking a question, commenting
-on another message...).
-
-
-File: grub-dev.info, Node: Error Handling, Next: CIA, Prev: Contributing Changes, Up: Top
-
-5 Error Handling
-****************
-
-Error handling in GRUB 2 is based on exception handling model. As C
-language doesn't directly support exceptions, exception handling
-behavior is emulated in software.
-
- When exception is raised, function must return to calling function.
-If calling function does not provide handling of the exception it must
-return back to its calling function and so on, until exception is
-handled. If exception is not handled before prompt is displayed, error
-message will be shown to user.
-
- Exception information is stored on `grub_errno' global variable. If
-`grub_errno' variable contains value `GRUB_ERR_NONE', there is no active
-exception and application can continue normal processing. When
-`grub_errno' has other value, it is required that application code
-either handles this error or returns instantly to caller. If function
-is with return type `grub_err_t' is about to return `GRUB_ERR_NONE', it
-should not set `grub_errno' to that value. Only set `grub_errno' in
-cases where there is error situation.
-
- Simple exception forwarder.
- grub_err_t
- forwarding_example (void)
- {
- /* Call function that might cause exception. */
- foobar ();
-
- /* No special exception handler, just forward possible exceptions. */
- if (grub_errno != GRUB_ERR_NONE)
- {
- return grub_errno;
- }
-
- /* All is OK, do more processing. */
-
- /* Return OK signal, to caller. */
- return GRUB_ERR_NONE;
- }
-
- Error reporting has two components, the actual error code (of type
-`grub_err_t') and textual message that will be displayed to user. List
-of valid error codes is listed in header file `include/grub/err.h'.
-Textual error message can contain any textual data. At time of writing,
-error message can contain up to 256 characters (including terminating
-NUL). To ease error reporting there is a helper function `grub_error'
-that allows easier formatting of error messages and should be used
-instead of writing directly to global variables.
-
- Example of error reporting.
- grub_err_t
- failing_example ()
- {
- return grub_error (GRUB_ERR_FILE_NOT_FOUND,
- "Failed to read %s, tried %d times.",
- "test.txt",
- 10);
- }
-
- If there is a special reason that error code does not need to be
-taken account, `grub_errno' can be zeroed back to `GRUB_ERR_NONE'. In
-cases like this all previous error codes should have been handled
-correctly. This makes sure that there are no unhandled exceptions.
-
- Example of zeroing `grub_errno'.
- grub_err_t
- probe_example ()
- {
- /* Try to probe device type 1. */
- probe_for_device ();
- if (grub_errno == GRUB_ERR_NONE)
- {
- /* Device type 1 was found on system. */
- register_device ();
- return GRUB_ERR_NONE;
- }
- /* Zero out error code. */
- grub_errno = GRUB_ERR_NONE;
-
- /* No device type 1 found, try to probe device type 2. */
- probe_for_device2 ();
- if (grub_errno == GRUB_ERR_NONE)
- {
- /* Device type 2 was found on system. */
- register_device2 ();
- return GRUB_ERR_NONE;
- }
- /* Zero out error code. */
- grub_errno = GRUB_ERR_NONE;
-
- /* Return custom error message. */
- return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "No device type 1 or 2 found.");
- }
-
- Some times there is a need to continue processing even if there is a
-error state in application. In situations like this, there is a needed
-to save old error state and then call other functions that might fail.
-To aid in this, there is a error stack implemented. Error state can be
-pushed to error stack by calling function `grub_error_push ()'. When
-processing has been completed, `grub_error_pop ()' can be used to pop
-error state from stack. Error stack contains predefined amount of error
-stack items. Error stack is protected for overflow and marks these
-situations so overflow error does not get unseen. If there is no space
-available to store error message, it is simply discarded and overflow
-will be marked as happened. When overflow happens, it most likely will
-corrupt error stack consistency as for pushed error there is no matching
-pop, but overflow message will be shown to inform user about the
-situation. Overflow message will be shown at time when prompt is about
-to be drawn.
-
- Example usage of error stack.
- /* Save possible old error message. */
- grub_error_push ();
-
- /* Do your stuff here. */
- call_possibly_failing_function ();
-
- if (grub_errno != GRUB_ERR_NONE)
- {
- /* Inform rest of the code that there is error (grub_errno
- is set). There is no pop here as we want both error states
- to be displayed. */
- return;
- }
-
- /* Restore old error state by popping previous item from stack. */
- grub_error_pop ();
-
-
-File: grub-dev.info, Node: CIA, Next: BIOS port memory map, Prev: Error Handling, Up: Top
-
-6 CIA
-*****
-
-If you have commit access, please setup CIA in your Bazaar config so
-those in IRC receive notification of your commits.
-
- In `~/.bazaar/bazaar.conf', add "cia_send_revno = true".
-Optionally, you can also add "cia_user = myusername" if you'd like CIA
-service to use a specific account (for statistical purpose).
-
- In the `.bzr/branch/branch.conf' of your checkout branch, "set
-nickname = /path_to_this_branch" and "cia_project = GNU GRUB".
-
- Additionally, please set cia_send_revno in the [DEFAULT] section of
-your `~/.bazaar/bazaar.conf'. E.g.:
-
- [DEFAULT]
- cia_send_revno = true
-
- Remember to install cia-clients (Debian/Ubuntu package) to be able
-to use CIA.
-
- Keep in mind Bazaar sends notifications for all commits to branches
-that have this setting, regardless of whether they're bound branches
-(checkouts) or not. So if you make local commits in a non-bound branch
-and it bothers you that others can read them, do not use this setting.
-
-
-File: grub-dev.info, Node: BIOS port memory map, Next: Video Subsystem, Prev: CIA, Up: Top
-
-7 BIOS port memory map
-**********************
-
-Start End Usage
---------------------------------------------------------------------
-0 0x1000 - 1 BIOS and real mode interrupts
-0x07BE 0x07FF Partition table passed to another
- boot loader
-? 0x2000 - 1 Real mode stack
-0x7C00 0x7D00 - 1 Boot sector
-0x8000 ? GRUB kernel
-0x68000 0x78000 - 1 Disk buffer
-? 0x80000 - 1 Protected mode stack
-0x80000 ? Heap
-? 0xA0000 - 1 Extended BIOS Data Area
-0xA0000 0xC0000 - 1 Video RAM
-0xC0000 0x100000 - 1 BIOS
-0x100000 ? Heap and module code
-
-
-File: grub-dev.info, Node: Video Subsystem, Next: PFF2 Font File Format, Prev: BIOS port memory map, Up: Top
-
-8 Video Subsystem
-*****************
-
-This document contains specification for Video Subsystem for GRUB2.
-Currently only the usage interface is described in this document.
-Internal structure of how video drivers are registering and how video
-driver manager works are not included here.
-
-* Menu:
-
-* Video API::
-* Bitmap API::
-* Example usage of Video API::
-
-
-File: grub-dev.info, Node: Video API, Next: Bitmap API, Up: Video Subsystem
-
-8.1 Video API
-=============
-
-8.1.1 grub_video_setup
-----------------------
-
- * Prototype:
- grub_err_t
- grub_video_setup (unsigned int width, unsigned int height, unsigned int mode_type);
-
- * Description:
-
- Driver will use information provided to it to select best possible
- video mode and switch to it. Supported values for `mode_type' are
- `GRUB_VIDEO_MODE_TYPE_INDEX_COLOR' for index color modes,
- `GRUB_VIDEO_MODE_TYPE_RGB' for direct RGB color modes and
- `GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED' for double buffering. When
- requesting RGB mode, highest bits per pixel mode will be selected.
- When requesting Index color mode, mode with highest number of
- colors will be selected. If all parameters are specified as zero,
- video adapter will try to figure out best possible mode and
- initialize it, platform specific differences are allowed here. If
- there is no mode matching request, error X will be returned. If
- there are no problems, function returns `GRUB_ERR_NONE'.
-
- This function also performs following task upon succesful mode
- switch. Active rendering target is changed to screen and viewport
- is maximized to allow whole screen to be used when performing
- graphics operations. In RGB modes, emulated palette gets 16
- entries containing default values for VGA palette, other colors
- are defined as black. When switching to Indexed Color mode, driver
- may set default VGA palette to screen if the video card allows the
- operation.
-
-
-8.1.2 grub_video_restore
-------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_restore (void);
-
- * Description:
-
- Video subsystem will deinitialize activated video driver to
- restore old state of video device. This can be used to switch back
- to text mode.
-
-8.1.3 grub_video_get_info
--------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_get_info (struct grub_video_mode_info *mode_info);
-
- struct grub_video_mode_info
- {
- /* Width of the screen. */
- unsigned int width;
- /* Height of the screen. */
- unsigned int height;
- /* Mode type bitmask. Contains information like is it Index color or
- RGB mode. */
- unsigned int mode_type;
- /* Bits per pixel. */
- unsigned int bpp;
- /* Bytes per pixel. */
- unsigned int bytes_per_pixel;
- /* Pitch of one scanline. How many bytes there are for scanline. */
- unsigned int pitch;
- /* In index color mode, number of colors. In RGB mode this is 256. */
- unsigned int number_of_colors;
- /* Optimization hint how binary data is coded. */
- enum grub_video_blit_format blit_format;
- /* How many bits are reserved for red color. */
- unsigned int red_mask_size;
- /* What is location of red color bits. In Index Color mode, this is 0. */
- unsigned int red_field_pos;
- /* How many bits are reserved for green color. */
- unsigned int green_mask_size;
- /* What is location of green color bits. In Index Color mode, this is 0. */
- unsigned int green_field_pos;
- /* How many bits are reserved for blue color. */
- unsigned int blue_mask_size;
- /* What is location of blue color bits. In Index Color mode, this is 0. */
- unsigned int blue_field_pos;
- /* How many bits are reserved in color. */
- unsigned int reserved_mask_size;
- /* What is location of reserved color bits. In Index Color mode,
- this is 0. */
- unsigned int reserved_field_pos;
- };
-
- * Description:
-
- Software developer can use this function to query properties of
- active rendering taget. Information provided here can be used by
- other parts of GRUB, like image loaders to convert loaded images
- to correct screen format to allow more optimized blitters to be
- used. If there there is no configured video driver with active
- screen, error `GRUB_ERR_BAD_DEVICE' is returned, otherwise
- `mode_info' is filled with valid information and `GRUB_ERR_NONE'
- is returned.
-
-8.1.4 grub_video_get_blit_format
---------------------------------
-
- * Prototype:
-
- enum grub_video_blit_format
- grub_video_get_blit_format (struct grub_video_mode_info *mode_info);
-
- enum grub_video_blit_format
- {
- /* Follow exactly field & mask information. */
- GRUB_VIDEO_BLIT_FORMAT_RGBA,
- /* Make optimization assumption. */
- GRUB_VIDEO_BLIT_FORMAT_R8G8B8A8,
- /* Follow exactly field & mask information. */
- GRUB_VIDEO_BLIT_FORMAT_RGB,
- /* Make optimization assumption. */
- GRUB_VIDEO_BLIT_FORMAT_R8G8B8,
- /* When needed, decode color or just use value as is. */
- GRUB_VIDEO_BLIT_FORMAT_INDEXCOLOR
- };
-
- * Description:
-
- Used to query how data could be optimized to suit specified video
- mode. Returns exact video format type, or a generic one if there
- is no definition for the type. For generic formats, use
- `grub_video_get_info' to query video color coding settings.
-
-8.1.5 grub_video_set_palette
-----------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_set_palette (unsigned int start, unsigned int count, struct grub_video_palette_data *palette_data);
-
- struct grub_video_palette_data
- {
- grub_uint8_t r; /* Red color value (0-255). */
- grub_uint8_t g; /* Green color value (0-255). */
- grub_uint8_t b; /* Blue color value (0-255). */
- grub_uint8_t a; /* Reserved bits value (0-255). */
- };
-
- * Description:
-
- Used to setup indexed color palettes. If mode is RGB mode, colors
- will be set to emulated palette data. In Indexed Color modes,
- palettes will be set to hardware. Color values will be converted
- to suit requirements of the video mode. `start' will tell what
- hardware color index (or emulated color index) will be set to
- according information in first indice of `palette_data', after
- that both hardware color index and `palette_data' index will be
- incremented until `count' number of colors have been set.
-
-8.1.6 grub_video_get_palette
-----------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_get_palette (unsigned int start, unsigned int count, struct grub_video_palette_data *palette_data);
-
- struct grub_video_palette_data
- {
- grub_uint8_t r; /* Red color value (0-255). */
- grub_uint8_t g; /* Green color value (0-255). */
- grub_uint8_t b; /* Blue color value (0-255). */
- grub_uint8_t a; /* Reserved bits value (0-255). */
- };
-
- * Description:
-
- Used to query indexed color palettes. If mode is RGB mode, colors
- will be copied from emulated palette data. In Indexed Color modes,
- palettes will be read from hardware. Color values will be
- converted to suit structure format. `start' will tell what
- hardware color index (or emulated color index) will be used as a
- source for first indice of `palette_data', after that both
- hardware color index and `palette_data' index will be incremented
- until `count' number of colors have been read.
-
-8.1.7 grub_video_set_viewport
------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_set_viewport (unsigned int x, unsigned int y, unsigned int width, unsigned int height);
-
- * Description:
-
- Used to specify viewport where draw commands are performed. When
- viewport is set, all draw commands coordinates relate to those
- specified by `x' and `y'. If draw commands try to draw over
- viewport, they are clipped. If developer requests larger than
- possible viewport, width and height will be clamped to fit screen.
- If `x' and `y' are out of bounds, all functions drawing to screen
- will not be displayed. In order to maximize viewport, use
- `grub_video_get_info' to query actual screen dimensions and
- provide that information to this function.
-
-8.1.8 grub_video_get_viewport
------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_get_viewport (unsigned int *x, unsigned int *y, unsigned int *width, unsigned int *height);
-
- * Description:
-
- Used to query current viewport dimensions. Software developer can
- use this to choose best way to render contents of the viewport.
-
-8.1.9 grub_video_map_color
---------------------------
-
- * Prototype:
-
- grub_video_color_t
- grub_video_map_color (grub_uint32_t color_name);
-
- * Description:
-
- Map color can be used to support color themes in GRUB. There will
- be collection of color names that can be used to query actual
- screen mapped color data. Examples could be
- `GRUB_COLOR_CONSOLE_BACKGROUND', `GRUB_COLOR_CONSOLE_TEXT'. The
- actual color defines are not specified at this point.
-
-8.1.10 grub_video_map_rgb
--------------------------
-
- * Prototype:
-
- grub_video_color_t
- grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue);
-
- * Description:
-
- Map RGB values to compatible screen color data. Values are
- expected to be in range 0-255 and in RGB modes they will be
- converted to screen color data. In index color modes, index color
- palette will be searched for specified color and then index is
- returned.
-
-8.1.11 grub_video_map_rgba
---------------------------
-
- * Prototype:
-
- grub_video_color_t
- grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green, grub_uint8_t blue, grub_uint8_t alpha);
-
- * Description:
-
- Map RGBA values to compatible screen color data. Values are
- expected to be in range 0-255. In RGBA modes they will be
- converted to screen color data. In index color modes, index color
- palette will be searched for best matching color and its index is
- returned.
-
-8.1.12 grub_video_unmap_color
------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_unmap_color (grub_video_color_t color, grub_uint8_t *red, grub_uint8_t *green, grub_uint8_t *blue, grub_uint8_t *alpha);
-
- * Description:
-
- Unmap color value from `color' to color channels in `red',
- `green', `blue' and `alpha'. Values will be in range 0-255. Active
- rendering target will be used for color domain. In case alpha
- information is not available in rendering target, it is assumed to
- be opaque (having value 255).
-
-8.1.13 grub_video_fill_rect
----------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_fill_rect (grub_video_color_t color, int x, int y, unsigned int width, unsigned int height);
-
- * Description:
-
- Fill specified area limited by given coordinates within specified
- viewport. Negative coordinates are accepted in order to allow easy
- moving of rectangle within viewport. If coordinates are negative,
- area of the rectangle will be shrinken to follow size limits of
- the viewport.
-
- Software developer should use either `grub_video_map_color',
- `grub_video_map_rgb' or `grub_video_map_rgba' to map requested
- color to `color' parameter.
-
-8.1.14 grub_video_blit_glyph
-----------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_blit_glyph (struct grub_font_glyph *glyph, grub_video_color_t color, int x, int y);
-
- struct grub_font_glyph {
- /* TBD. */
- };
-
- * Description:
-
- Used to blit glyph to viewport in specified coodinates. If glyph
- is at edge of viewport, pixels outside of viewport will be clipped
- out. Software developer should use either `grub_video_map_rgb' or
- `grub_video_map_rgba' to map requested color to `color' parameter.
-
-8.1.15 grub_video_blit_bitmap
------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_blit_bitmap (struct grub_video_bitmap *bitmap, enum grub_video_blit_operators oper, int x, int y, int offset_x, int offset_y, unsigned int width, unsigned int height);
-
- struct grub_video_bitmap
- {
- /* TBD. */
- };
-
- enum grub_video_blit_operators
- {
- GRUB_VIDEO_BLIT_REPLACE,
- GRUB_VIDEO_BLIT_BLEND
- };
-
- * Description:
-
- Used to blit bitmap to viewport in specified coordinates. If part
- of bitmap is outside of viewport region, it will be clipped out.
- Offsets affect bitmap position where data will be copied from.
- Negative values for both viewport coordinates and bitmap offset
- coordinates are allowed. If data is looked out of bounds of
- bitmap, color value will be assumed to be transparent. If viewport
- coordinates are negative, area of the blitted rectangle will be
- shrinken to follow size limits of the viewport and bitmap.
- Blitting operator `oper' specifies should source pixel replace
- data in screen or blend with pixel alpha value.
-
- Software developer should use `grub_video_bitmap_create' or
- `grub_video_bitmap_load' to create or load bitmap data.
-
-8.1.16 grub_video_blit_render_target
-------------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_blit_render_target (struct grub_video_render_target *source, enum grub_video_blit_operators oper, int x, int y, int offset_x, int offset_y, unsigned int width, unsigned int height);
-
- struct grub_video_render_target {
- /* This is private data for video driver. Should not be accessed from elsewhere directly. */
- };
-
- enum grub_video_blit_operators
- {
- GRUB_VIDEO_BLIT_REPLACE,
- GRUB_VIDEO_BLIT_BLEND
- };
-
- * Description:
-
- Used to blit source render target to viewport in specified
- coordinates. If part of source render target is outside of
- viewport region, it will be clipped out. If blitting operator is
- specified and source contains alpha values, resulting pixel color
- components will be calculated using formula ((src_color *
- src_alpha) + (dst_color * (255 - src_alpha)) / 255, if target
- buffer has alpha, it will be set to src_alpha. Offsets affect
- render target position where data will be copied from. If data is
- looked out of bounds of render target, color value will be assumed
- to be transparent. Blitting operator `oper' specifies should
- source pixel replace data in screen or blend with pixel alpha
- value.
-
-8.1.17 grub_video_scroll
-------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_scroll (grub_video_color_t color, int dx, int dy);
-
- * Description:
-
- Used to scroll viewport to specified direction. New areas are
- filled with specified color. This function is used when screen is
- scroller up in video terminal.
-
-8.1.18 grub_video_swap_buffers
-------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_swap_buffers (void);
-
- * Description:
-
- If double buffering is enabled, this swaps frontbuffer and
- backbuffer, in order to show values drawn to back buffer. Video
- driver is free to choose how this operation is techincally done.
-
-8.1.19 grub_video_create_render_target
---------------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_create_render_target (struct grub_video_render_target **result, unsigned int width, unsigned int height, unsigned int mode_type);
-
- struct grub_video_render_target {
- /* This is private data for video driver. Should not be accessed from elsewhere directly. */
- };
-
- * Description:
-
- Driver will use information provided to it to create best fitting
- render target. `mode_type' will be used to guide on selecting what
- features are wanted for render target. Supported values for
- `mode_type' are `GRUB_VIDEO_MODE_TYPE_INDEX_COLOR' for index color
- modes, `GRUB_VIDEO_MODE_TYPE_RGB' for direct RGB color modes and
- `GRUB_VIDEO_MODE_TYPE_ALPHA' for alpha component.
-
-8.1.20 grub_video_delete_render_target
---------------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_delete_render_target (struct grub_video_render_target *target);
-
- * Description:
-
- Used to delete previously created render target. If `target'
- contains `NULL' pointer, nothing will be done. If render target is
- correctly destroyed, GRUB_ERR_NONE is returned.
-
-8.1.21 grub_video_set_active_render_target
-------------------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_set_active_render_target (struct grub_video_render_target *target);
-
- * Description:
-
- Sets active render target. If this comand is successful all
- drawing commands will be done to specified `target'. There is also
- special values for target, `GRUB_VIDEO_RENDER_TARGET_DISPLAY' used
- to reference screen's front buffer,
- `GRUB_VIDEO_RENDER_TARGET_FRONT_BUFFER' used to reference screen's
- front buffer (alias for `GRUB_VIDEO_RENDER_TARGET_DISPLAY') and
- `GRUB_VIDEO_RENDER_TARGET_BACK_BUFFER' used to reference back
- buffer (if double buffering is enabled). If render target is
- correclty switched GRUB_ERR_NONE is returned. In no any event
- shall there be non drawable active render target.
-
-
-8.1.22 grub_video_get_active_render_target
-------------------------------------------
-
- * Prototype:
-
- grub_err_t
- grub_video_get_active_render_target (struct grub_video_render_target **target);
-
- * Description:
-
- Returns currently active render target. It returns value in
- `target' that can be subsequently issued back to
- `grub_video_set_active_render_target'.
-
-
-File: grub-dev.info, Node: Example usage of Video API, Prev: Bitmap API, Up: Video Subsystem
-
-8.2 Example usage of Video API
-==============================
-
-8.2.1 Example of screen setup
------------------------------
-
- grub_err_t rc;
- /* Try to initialize video mode 1024 x 768 with direct RGB. */
- rc = grub_video_setup (1024, 768, GRUB_VIDEO_MODE_TYPE_RGB);
- if (rc != GRUB_ERR_NONE)
- {
- /* Fall back to standard VGA Index Color mode. */
- rc = grub_video_setup (640, 480, GRUB_VIDEO_MODE_TYPE_INDEX);
- if (rc != GRUB_ERR_NONE)
- {
- /* Handle error. */
- }
- }
-
-8.2.2 Example of setting up console viewport
---------------------------------------------
-
- grub_uint32_t x, y, width, height;
- grub_video_color_t color;
- struct grub_font_glyph glyph;
- grub_err_t rc;
- /* Query existing viewport. */
- grub_video_get_viewport (&x, &y, &width, &height);
- /* Fill background. */
- color = grub_video_map_color (GRUB_COLOR_BACKGROUND);
- grub_video_fill_rect (color, 0, 0, width, height);
- /* Setup console viewport. */
- grub_video_set_viewport (x + 10, y + 10, width - 20, height - 20);
- grub_video_get_viewport (&x, &y, &width, &height);
- color = grub_video_map_color (GRUB_COLOR_CONSOLE_BACKGROUND);
- grub_video_fill_rect (color, 0, 0, width, height);
- /* Draw text to viewport. */
- color = grub_video_map_color (GRUB_COLOR_CONSOLE_TEXT);
- grub_font_get_glyph ('X', &glyph);
- grub_video_blit_glyph (&glyph, color, 0, 0);
-
-
-File: grub-dev.info, Node: Bitmap API, Next: Example usage of Video API, Prev: Video API, Up: Video Subsystem
-
-8.3 Bitmap API
-==============
-
-8.3.1 grub_video_bitmap_create
-------------------------------
-
- * Prototype:
- grub_err_t grub_video_bitmap_create (struct grub_video_bitmap **bitmap, unsigned int width, unsigned int height, enum grub_video_blit_format blit_format)
-
- * Description:
-
- Creates a new bitmap with given dimensions and blitting format.
- Allocated bitmap data can then be modified freely and finally
- blitted with `grub_video_blit_bitmap' to rendering target.
-
-8.3.2 grub_video_bitmap_destroy
--------------------------------
-
- * Prototype:
- grub_err_t grub_video_bitmap_destroy (struct grub_video_bitmap *bitmap);
-
- * Description:
-
- When bitmap is no longer needed, it can be freed from memory using
- this command. `bitmap' is previously allocated bitmap with
- `grub_video_bitmap_create' or loaded with `grub_video_bitmap_load'.
-
-8.3.3 grub_video_bitmap_load
-----------------------------
-
- * Prototype:
- grub_err_t grub_video_bitmap_load (struct grub_video_bitmap **bitmap, const char *filename);
-
- * Description:
-
- Tries to load given bitmap (`filename') using registered bitmap
- loaders. In case bitmap format is not recognized or supported
- error `GRUB_ERR_BAD_FILE_TYPE' is returned.
-
-8.3.4 grub_video_bitmap_get_width
----------------------------------
-
- * Prototype:
- unsigned int grub_video_bitmap_get_width (struct grub_video_bitmap *bitmap);
-
- * Description:
-
- Returns bitmap width.
-
-8.3.5 grub_video_bitmap_get_height
-----------------------------------
-
- * Prototype:
- unsigned int grub_video_bitmap_get_height (struct grub_video_bitmap *bitmap);
-
- * Description:
-
- Return bitmap height.
-
-8.3.6 grub_video_bitmap_get_mode_info
--------------------------------------
-
- * Prototype:
- void grub_video_bitmap_get_mode_info (struct grub_video_bitmap *bitmap, struct grub_video_mode_info *mode_info);
-
- * Description:
-
- Returns bitmap format details in form of `grub_video_mode_info'.
-
-8.3.7 grub_video_bitmap_get_data
---------------------------------
-
- * Prototype:
- void *grub_video_bitmap_get_data (struct grub_video_bitmap *bitmap);
-
- * Description:
-
- Return pointer to bitmap data. Contents of the pointed data can be
- freely modified. There is no extra protection against going off
- the bounds so you have to be carefull how to access the data.
-
-
-File: grub-dev.info, Node: PFF2 Font File Format, Next: Graphical Menu Software Design, Prev: Video Subsystem, Up: Top
-
-9 PFF2 Font File Format
-***********************
-
-* Menu:
-
-* Introduction::
-* File Structure::
-* Font Metrics::
-
-
-File: grub-dev.info, Node: Introduction, Next: File Structure, Up: PFF2 Font File Format
-
-9.1 Introduction
-================
-
-The goal of this format is to provide a bitmap font format that is
-simple to use, compact, and cleanly supports Unicode.
-
-9.1.1 Goals of the GRUB Font Format
------------------------------------
-
- * Simple to read and use. Since GRUB will only be reading the font
- files, we are more concerned with making the code to read the font
- simple than we are with writing the font.
-
- * Compact storage. The fonts will generally be stored in a small
- boot partition where GRUB is located, and this may be on a
- removable storage device such as a CD or USB flash drive where
- space is more limited than it is on most hard drives.
-
- * Unicode. GRUB should not have to deal with multiple character
- encodings. The font should always use Unicode character codes for
- simple internationalization.
-
-9.1.2 Why Another Font Format?
-------------------------------
-
-There are many existing bitmap font formats that GRUB could use.
-However, there are aspects of these formats that may make them less
-than suitable for use in GRUB at this time:
-
-`BDF'
- Inefficient storage; uses ASCII to describe properties and
- hexadecimal numbers in ASCII for the bitmap rows.
-
-`PCF'
- Many format variations such as byte order and bitmap padding (rows
- padded to byte, word, etc.) would result in more complex code to
- handle the font format.
-
-
-File: grub-dev.info, Node: File Structure, Next: Font Metrics, Prev: Introduction, Up: PFF2 Font File Format
-
-9.2 File Structure
-==================
-
-A file *section* consists of a 4-byte name, a 32-bit big-endian length
-(not including the name or length), and then LENGTH more
-section-type-specific bytes.
-
- The standard file extension for PFF2 font files is `.pf2'.
-
-9.2.1 Section Types
--------------------
-
-`FILE'
- *File type ID* (ASCII string). This must be the first section in
- the file. It has length 4 and the contents are the four bytes of
- the ASCII string `PFF2'.
-
-`NAME'
- *Font name* (ASCII string). This is the full font name including
- family, weight, style, and point size. For instance, "Helvetica
- Bold Italic 14".
-
-`FAMI'
- *Font family name* (ASCII string). For instance, "Helvetica".
- This should be included so that intelligent font substitution can
- take place.
-
-`WEIG'
- *Font weight* (ASCII string). Valid values are `bold' and
- `normal'. This should be included so that intelligent font
- substitution can take place.
-
-`SLAN'
- *Font slant* (ASCII string). Valid values are `italic' and
- `normal'. This should be included so that intelligent font
- substitution can take place.
-
-`PTSZ'
- *Font point size* (uint16be).
-
-`MAXW'
- *Maximum character width in pixels* (uint16be).
-
-`MAXH'
- *Maximum character height in pixels* (uint16be).
-
-`ASCE'
- *Ascent in pixels* (uint16be). *Note Font Metrics::, for details.
-
-`DESC'
- *Descent in pixels* (uint16be). *Note Font Metrics::, for details.
-
-`CHIX'
- *Character index.* The character index begins with a 32-bit
- big-endian unsigned integer indicating the total size of the
- section, not including this size value. For each character, there
- is an instance of the following entry structure:
-
- * *Unicode code point.* (32-bit big-endian integer.)
-
- * *Storage flags.* (byte.)
-
- * Bits 2..0:
-
- If equal to 000 binary, then the character data is stored
- uncompressed beginning at the offset indicated by the
- character's *offset* value.
-
- If equal to 001 binary, then the character data is
- stored within a compressed character definition block
- that begins at the offset within the file indicated by
- the character's *offset* value.
-
- * *Offset.* (32-bit big-endian integer.)
-
- A marker that indicates the remainder of the file is data
- accessed via the character index (CHIX) section. When
- reading this font file, the rest of the file can be ignored
- when scanning the sections. The length should be set to -1
- (0xFFFFFFFF).
-
- Supported data structures:
-
- Character definition Each character definition consists of:
-
- * *Width.* Width of the bitmap in pixels. The bitmap's
- extents represent the glyph's bounding box. `uint16be'.
-
- * *Height.* Height of the bitmap in pixels. The bitmap's
- extents represent the glyph's bounding box. `uint16be'.
-
- * *X offset.* The number of pixels to shift the bitmap by
- horizontally before drawing the character. `int16be'.
-
- * *Y offset.* The number of pixels to shift the bitmap by
- vertically before drawing the character. `int16be'.
-
- * *Device width.* The number of pixels to advance
- horizontally from this character's origin to the origin
- of the next character. `int16be'.
-
- * *Bitmap data.* This is encoded as a string of bits. It
- is organized as a row-major, top-down, left-to-right
- bitmap. The most significant bit of each byte is taken
- to be the leftmost or uppermost bit in the byte. For
- the sake of compact storage, rows are not padded to byte
- boundaries (i.e., a single byte may contain bits
- belonging to multiple rows). The last byte of the
- bitmap *is* padded with zero bits in the bits positions
- to the right of the last used bit if the bitmap data
- does not fill the last byte.
-
- The length of the *bitmap data* field is (WIDTH * HEIGHT
- + 7) / 8 using integer arithmetic, which is equivalent
- to ceil(WIDTH * HEIGHT / 8) using real number arithmetic.
-
- It remains to be determined whether bitmap fonts usually
- make all glyph bitmaps the same height, or if smaller
- glyphs are stored with bitmaps having a lesser height.
- In the latter case, the baseline would have to be used
- to calculate the location the bitmap should be anchored
- at on screen.
-
-
-
-File: grub-dev.info, Node: Font Metrics, Prev: File Structure, Up: PFF2 Font File Format
-
-9.3 Font Metrics
-================
-
- * Ascent. The distance from the baseline to the top of most
- characters. Note that in some cases characters may extend above
- the ascent.
-
- * Descent. The distance from the baseline to the bottom of most
- characters. Note that in some cases characters may extend below
- the descent.
-
- * Leading. The amount of space, in pixels, to leave between the
- descent of one line of text and the ascent of the next line. This
- metrics is not specified in the current file format; instead, the
- font rendering engine calculates a reasonable leading value based
- on the other font metrics.
-
- * Horizonal leading. The amount of space, in pixels, to leave
- horizontally between the left and right edges of two adjacent
- glyphs. The *device width* field determines the effective leading
- value that is used to render the font.
-
-[Please fill this in.
-]
-
- An illustration of how the various font metrics apply to characters.
-
-
-File: grub-dev.info, Node: Graphical Menu Software Design, Next: Copying This Manual, Prev: PFF2 Font File Format, Up: Top
-
-10 Graphical Menu Software Design
-*********************************
-
-* Menu:
-
-* Introduction_2::
-* Startup Sequence::
-* GUI Components::
-* Command Line Window::
-
-
-File: grub-dev.info, Node: Introduction_2, Next: Startup Sequence, Up: Graphical Menu Software Design
-
-10.1 Introduction
-=================
-
-The `gfxmenu' module provides a graphical menu interface for GRUB 2. It
-functions as an alternative to the menu interface provided by the
-`normal' module, which uses the grub terminal interface to display a
-menu on a character-oriented terminal.
-
- The graphical menu uses the GRUB video API, which is currently for
-the VESA BIOS extensions (VBE) 2.0+. This is supported on the i386-pc
-platform. However, the graphical menu itself does not depend on using
-VBE, so if another GRUB video driver were implemented, the `gfxmenu'
-graphical menu would work on the new video driver as well.
-
-
-File: grub-dev.info, Node: Startup Sequence, Next: GUI Components, Prev: Introduction_2, Up: Graphical Menu Software Design
-
-10.2 Startup Sequence
-=====================
-
- * grub_enter_normal_mode [normal/main.c]
-
- * grub_normal_execute [normal/main.c]
-
- * read_config_file [normal/main.c]
-
- * (When `gfxmenu.mod' is loaded with `insmod', it will call
- `grub_menu_viewer_register()' to register itself.)
-
- * GRUB_MOD_INIT (gfxmenu) [gfxmenu/gfxmenu.c]
-
- * grub_menu_viewer_register [kern/menu_viewer.c]
-
- * grub_menu_viewer_show_menu [kern/menu_viewer.c]
-
- * get_current_menu_viewer() [kern/menu_viewer.c]
-
- * show_menu() [gfxmenu/gfxmenu.c]
-
- * grub_gfxmenu_model_new [gfxmenu/model.c]
-
- * grub_gfxmenu_view_new [gfxmenu/view.c]
-
- * set_graphics_mode [gfxmenu/view.c]
-
- * grub_gfxmenu_view_load_theme [gfxmenu/theme_loader.c]
-
-
-File: grub-dev.info, Node: GUI Components, Next: Command Line Window, Prev: Startup Sequence, Up: Graphical Menu Software Design
-
-10.3 GUI Components
-===================
-
-The graphical menu implements a GUI component system that supports a
-container-based layout system. Components can be added to containers,
-and containers (which are a type of component) can then be added to
-other containers, to form a tree of components. Currently, the root
-component of this tree is a `canvas' component, which allows manual
-layout of its child components.
-
- Components (non-container):
-
- * label
-
- * image
-
- * progress_bar
-
- * circular_progress
-
- * list (currently hard coded to be a boot menu list)
-
- Containers:
-
- * canvas
-
- * hbox
-
- * vbox
-
- The GUI component instances are created by the theme loader in
-`gfxmenu/theme_loader.c' when a theme is loaded. Theme files specify
-statements such as `+vbox{ +label { text="Hello" } +label{ text="World"
-} }' to add components to the component tree root. By nesting the
-component creation statements in the theme file, the instantiated
-components are nested the same way.
-
- When a component is added to a container, that new child is
-considered *owned* by the container. Great care should be taken if the
-caller retains a reference to the child component, since it will be
-destroyed if its parent container is destroyed. A better choice
-instead of storing a pointer to the child component is to use the
-component ID to find the desired component. Component IDs do not have
-to be unique (it is often useful to have multiple components with an ID
-of "__timeout__", for instance).
-
- In order to access and use components in the component tree, there
-are two functions (defined in `gfxmenu/gui_util.c') that are
-particularly useful:
-
- * `grub_gui_find_by_id (root, id, callback, userdata)':
-
- This function ecursively traverses the component tree rooted at
- ROOT, and for every component that has an ID equal to ID, calls
- the function pointed to by CALLBACK with the matching component
- and the void pointer USERDATA as arguments. The callback function
- can do whatever is desired to use the component passed in.
-
- * `grub_gui_iterate_recursively (root, callback, userdata)':
-
- This function calls the function pointed to by CALLBACK for every
- component that is a descendant of ROOT in the component tree.
- When the callback function is called, the component and the void
- pointer USERDATA as arguments. The callback function can do
- whatever is desired to use the component passed in.
-
-
-File: grub-dev.info, Node: Command Line Window, Prev: GUI Components, Up: Graphical Menu Software Design
-
-10.4 Command Line Window
-========================
-
-The terminal window used to provide command line access within the
-graphical menu is managed by `gfxmenu/view.c'. The `gfxterm' terminal
-is used, and it has been modified to allow rendering to an offscreen
-render target to allow it to be composed into the double buffering
-system that the graphical menu view uses. This is bad for performance,
-however, so it would probably be a good idea to make it possible to
-temporarily disable double buffering as long as the terminal window is
-visible. There are still unresolved problems that occur when commands
-are executed from the terminal window that change the graphics mode.
-It's possible that making `grub_video_restore()' return to the graphics
-mode that was in use before `grub_video_setup()' was called might fix
-some of the problems.
-
-
-File: grub-dev.info, Node: Copying This Manual, Next: Index, Prev: Graphical Menu Software Design, Up: Top
-
-Appendix A Copying This Manual
-******************************
-
-* Menu:
-
-* GNU Free Documentation License:: License for copying this manual.
-
-
-File: grub-dev.info, Node: GNU Free Documentation License, Up: Copying This Manual
-
-A.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.
-
-A.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-dev.info, Node: Index, Prev: Copying This Manual, Up: Top
-
-Index
-*****
-
-
-* Menu:
-
-* FDL, GNU Free Documentation License: GNU Free Documentation License.
- (line 6)
-
-
-
-Tag Table:
-Node: Top718
-Node: Getting the source code1780
-Node: Coding style2660
-Node: Naming Conventions3065
-Node: Functions3348
-Node: Variables4215
-Node: Types5321
-Node: Macros5919
-Node: Comments6250
-Node: Multi-Line Comments7012
-Node: Finding your way around7643
-Node: Contributing Changes10840
-Node: Getting started11924
-Node: Typical Developer Experience15970
-Node: When you are approved for write access to project's files17013
-Node: Error Handling18443
-Node: CIA23516
-Node: BIOS port memory map24588
-Node: Video Subsystem25458
-Node: Video API25930
-Node: Example usage of Video API44184
-Node: Bitmap API45740
-Node: PFF2 Font File Format48271
-Node: Introduction48509
-Node: File Structure50006
-Node: Font Metrics54909
-Node: Graphical Menu Software Design56011
-Node: Introduction_256303
-Node: Startup Sequence57037
-Node: GUI Components57900
-Node: Command Line Window60505
-Node: Copying This Manual61457
-Node: GNU Free Documentation License61713
-Node: Index84125
-
-End Tag Table
diff --git a/docs/grub.info b/docs/grub.info
deleted file mode 100644
index fe00c44..0000000
--- a/docs/grub.info
+++ /dev/null
@@ -1,5228 +0,0 @@
-This is /home/phcoder/grub2/bzr/grub-1.99/docs/grub.info, produced by
-makeinfo version 4.13 from
-/home/phcoder/grub2/bzr/grub-1.99/docs/grub.texi.
-
-This manual is for GNU GRUB (version 1.99, 14 May 2011).
-
- 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
-* grub-mkpasswd-pbkdf2: (grub)Invoking grub-mkpasswd-pbkdf2.
-* grub-mkrescue: (grub)Invoking grub-mkrescue. Make a GRUB rescue image
-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.99.
-
- This manual is for GNU GRUB (version 1.99, 14 May 2011).
-
- 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
-* Theme file format:: Format of GRUB theme files
-* 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
-* Images:: GRUB image files
-* Filesystem:: Filesystem syntax and semantics
-* Interface:: The menu and the command-line
-* Environment:: GRUB environment variables
-* Commands:: The list of available builtin commands
-* Security:: Authentication and authorisation
-* Supported kernels:: The list of supported kernels
-* Troubleshooting:: Error messages produced by GRUB
-* Invoking grub-install:: How to use the GRUB installer
-* Invoking grub-mkconfig:: Generate a GRUB configuration file
-* Invoking grub-mkpasswd-pbkdf2::
- Generate GRUB password hashes
-* Invoking grub-mkrescue:: Make a GRUB rescue image
-* 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
-* 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
-* Changes from GRUB Legacy:: Differences from previous versions
-* 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: Changes from GRUB Legacy, 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.
-
- Over the next few years, GRUB was extended to meet many needs, but it
-quickly became clear that its design was not keeping up with the
-extensions being made to it, and we reached the point where it was very
-difficult to make any further changes without breaking existing
-features. Around 2002, Yoshinori K. Okuji started work on PUPA
-(Preliminary Universal Programming Architecture for GNU GRUB), aiming
-to rewrite the core of GRUB to make it cleaner, safer, more robust, and
-more powerful. PUPA was eventually renamed to GRUB 2, and the original
-version of GRUB was renamed to GRUB Legacy. Small amounts of
-maintenance continued to be done on GRUB Legacy, but the last release
-(0.97) was made in 2005 and at the time of writing it seems unlikely
-that there will be another.
-
- By around 2007, GNU/Linux distributions started to use GRUB 2 to
-limited extents, and by the end of 2009 multiple major distributions
-were installing it by default.
-
-
-File: grub.info, Node: Changes from GRUB Legacy, Next: Features, Prev: History, Up: Introduction
-
-1.3 Differences from previous versions
-======================================
-
-GRUB 2 is a rewrite of GRUB (*note History::), although it shares many
-characteristics with the previous version, now known as GRUB Legacy.
-Users of GRUB Legacy may need some guidance to find their way around
-this new version.
-
- * The configuration file has a new name (`grub.cfg' rather than
- `menu.lst' or `grub.conf'), new syntax (*note Configuration::) and
- many new commands (*note Commands::). Configuration cannot be
- copied over directly, although most GRUB Legacy users should not
- find the syntax too surprising.
-
- * `grub.cfg' is typically automatically generated by `grub-mkconfig'
- (*note Simple configuration::). This makes it easier to handle
- versioned kernel upgrades.
-
- * Partition numbers in GRUB device names now start at 1, not 0
- (*note Naming convention::).
-
- * The configuration file is now written in something closer to a full
- scripting language: variables, conditionals, and loops are
- available.
-
- * A small amount of persistent storage is available across reboots,
- using the `save_env' and `load_env' commands in GRUB and the
- `grub-editenv' utility. This is not available in all
- configurations (*note Environment block::).
-
- * GRUB 2 has more reliable ways to find its own files and those of
- target kernels on multiple-disk systems, and has commands (*note
- search::) to find devices using file system labels or Universally
- Unique Identifiers (UUIDs).
-
- * GRUB 2 is available for several other types of system in addition
- to the PC BIOS systems supported by GRUB Legacy: PC EFI, PC
- coreboot, PowerPC, SPARC, and MIPS Lemote Yeeloong are all
- supported.
-
- * Many more file systems are supported, including but not limited to
- ext4, HFS+, and NTFS.
-
- * GRUB 2 can read files directly from LVM and RAID devices.
-
- * A graphical terminal and a graphical menu system are available.
-
- * GRUB 2's interface can be translated, including menu entry names.
-
- * The image files (*note Images::) that make up GRUB have been
- reorganised; Stage 1, Stage 1.5, and Stage 2 are no more.
-
- * GRUB 2 puts many facilities in dynamically loaded modules,
- allowing the core image to be smaller, and allowing the core image
- to be built in more flexible ways.
-
-
-File: grub.info, Node: Features, Next: Role of a boot loader, Prev: Changes from GRUB Legacy, Up: Introduction
-
-1.4 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 "Amiga Fast FileSystem (AFFS)", "AtheOS fs", "BeFS",
- "cpio", "Linux ext2/ext3/ext4", "DOS FAT12/FAT16/FAT32", "HFS",
- "HFS+", "ISO9660", "JFS", "Minix fs", "nilfs2", "NTFS",
- "ReiserFS", "Amiga Smart FileSystem (SFS)", "tar", "UDF", "BSD
- UFS/UFS2", and "XFS". *Note Filesystem::, for more information.
-
-Support automatic decompression
- Can decompress files which were compressed by `gzip' or `xz'(1)
- (*note Features-Footnote-1::). 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.(2) (*note Features-Footnote-2::)
-
- 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) Only CRC32 data integrity check is supported (xz default is
-CRC64 so one should use -check=crc32 option). LZMA BCJ filters are
-supported.
-
- (2) 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.5 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,msdos2)
-
- Here, `hd' means it is a hard disk drive. The first integer `0'
-indicates the drive number, that is, the first hard disk, the string
-`msdos' indicates the partition scheme, while the second integer, `2',
-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,msdos5)
-
- 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,msdos1,bsd1)
-
- This means the BSD `a' partition on first PC slice number of the
-second hard disk.
-
- Of course, to actually access the disks or partitions with GRUB, you
-need to use the device specification in a command, like `set
-root=(fd0)' or `parttool (hd0,msdos3) hidden-'. 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
-
- set 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,msdos1)/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) by using the utility `grub-install' (*note
-Invoking grub-install::) on a UNIX-like OS.
-
- GRUB comes with boot images, which are normally put in the directory
-`/usr/lib/grub/<cpu>-<platform>' (for BIOS-based machines
-`/usr/lib/grub/i386-pc'). Hereafter, the directory where GRUB images are
-initially placed (normally `/usr/lib/grub/<cpu>-<platform>') will be
-called the "image directory", and the directory where the boot loader
-needs to find them (usually `/boot') will be called the "boot
-directory".
-
-* Menu:
-
-* Installing GRUB using grub-install::
-* Making a GRUB bootable CD-ROM::
-* Device map::
-* BIOS installation::
-
-
-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
-======================================
-
-For information on where GRUB should be installed on PC BIOS platforms,
-*note BIOS installation::.
-
- In order 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 has to be either a device file (like `/dev/hda'). 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
-
- But all the above examples assume that GRUB should put images under
-the `/boot' directory. If you want GRUB to put images under a directory
-other than `/boot', you need to specify the option `--boot-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
- # mkdir /mnt/boot
- # grub-install --boot-directory=/mnt/boot /dev/fd0
- # umount /mnt
-
- Some BIOSes have a bug of exposing the first partition of a USB
-drive as a floppy instead of exposing the USB drive as a hard disk
-(they call it "USB-FDD" boot). In such cases, you need to install like
-this:
-
- # losetup /dev/loop0 /dev/sdb1
- # mount /dev/loop0 /mnt/usb
- # grub-install --boot-directory=/mnt/usb/bugbios --force --allow-floppy /dev/loop0
-
- This install doesn't conflict with standard install as long as they
-are in separate directories.
-
- 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, Next: Device map, 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 image called
-`cdboot.img', which is concatenated with `core.img'. The `core.img'
-used for this should be built with at least the `iso9660' and
-`biosdisk' modules. Your bootable CD-ROM will usually also need to
-include a configuration file `grub.cfg' and some other GRUB modules.
-
- To make a simple generic GRUB rescue CD, you can use the
-`grub-mkrescue' program (*note Invoking grub-mkrescue::):
-
- $ grub-mkrescue -o grub.iso
-
- You will often need to include other files in your image. To do
-this, first make a top directory for the bootable image, say, `iso':
-
- $ mkdir iso
-
- Make a directory for GRUB:
-
- $ mkdir -p 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 the image:
-
- $ grub-mkrescue -o grub.iso iso
-
- This produces a file named `grub.iso', which then can be burned into
-a CD (or a DVD), or written to a USB mass storage device.
-
- The root device will be set up appropriately on entering your
-`grub.cfg' configuration file, so you can refer to file names on the CD
-without needing to use an explicit device name. This makes it easier to
-produce rescue images that will work on both optical drives and USB mass
-storage devices.
-
-
-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: Device map, Next: BIOS installation, Prev: Making a GRUB bootable CD-ROM, Up: Installation
-
-3.3 The map between BIOS drives and OS devices
-==============================================
-
-The `grub-mkdevicemap' program can be used to create the "device map
-file". It is often run automatically by tools such as `grub-install'
-if the device map file does not already exist. The file name
-`/boot/grub/device.map' is preferred.
-
- If the device map file exists, the GRUB utilities (`grub-probe',
-`grub-setup', etc.) read it to map BIOS drives to OS devices. This
-file consists of lines like this:
-
- DEVICE FILE
-
- DEVICE is a drive specified in the GRUB syntax (*note Device
-syntax::), and FILE is an OS file, which is normally a device file.
-
- Historically, the device map file was used because GRUB device names
-had to be used in the configuration file, and they were derived from
-BIOS drive numbers. The map between BIOS drives and OS devices cannot
-always be guessed correctly: for example, GRUB will get the order wrong
-if you exchange the boot sequence between IDE and SCSI in your BIOS.
-
- Unfortunately, even OS device names are not always stable. Modern
-versions of the Linux kernel may probe drives in a different order from
-boot to boot, and the prefix (`/dev/hd*' versus `/dev/sd*') may change
-depending on the driver subsystem in use. As a result, the device map
-file required frequent editing on some systems.
-
- GRUB avoids this problem nowadays by using UUIDs or file system
-labels when generating `grub.cfg', and we advise that you do the same
-for any custom menu entries you write. If the device map file does not
-exist, then the GRUB utilities will assume a temporary device map on
-the fly. This is often good enough, particularly in the common case of
-single-disk systems.
-
- However, the device map file is not entirely obsolete yet, and there
-are still some situations that require it to exist. If necessary, you
-may edit the file if `grub-mkdevicemap' makes a mistake. You can put
-any comments in the file if needed, as the GRUB utilities assume that a
-line is just a comment if the first character is `#'.
-
-
-File: grub.info, Node: BIOS installation, Prev: Device map, Up: Installation
-
-3.4 BIOS installation
-=====================
-
-MBR
-===
-
-The partition table format traditionally used on PC BIOS platforms is
-called the Master Boot Record (MBR) format; this is the format that
-allows up to four primary partitions and additional logical partitions.
-With this partition table format, there are two ways to install GRUB:
-it can be embedded in the area between the MBR and the first partition
-(called by various names, such as the "boot track", "MBR gap", or
-"embedding area", and which is usually at least 31 KiB), or the core
-image can be installed in a file system and a list of the blocks that
-make it up can be stored in the first sector of that partition.
-
- Each of these has different problems. There is no way to reserve
-space in the embedding area with complete safety, and some proprietary
-software is known to use it to make it difficult for users to work
-around licensing restrictions; and systems are sometimes partitioned
-without leaving enough space before the first partition. On the other
-hand, installing to a filesystem means that GRUB is vulnerable to its
-blocks being moved around by filesystem features such as tail packing,
-or even by aggressive fsck implementations, so this approach is quite
-fragile; and this approach can only be used if the `/boot' filesystem
-is on the same disk that the BIOS boots from, so that GRUB does not
-have to rely on guessing BIOS drive numbers.
-
- The GRUB development team generally recommends embedding GRUB before
-the first partition, unless you have special requirements. You must
-ensure that the first partition starts at least 31 KiB (63 sectors)
-from the start of the disk; on modern disks, it is often a performance
-advantage to align partitions on larger boundaries anyway, so the first
-partition might start 1 MiB from the start of the disk.
-
-GPT
-===
-
-Some newer systems use the GUID Partition Table (GPT) format. This was
-specified as part of the Extensible Firmware Interface (EFI), but it can
-also be used on BIOS platforms if system software supports it; for
-example, GRUB and GNU/Linux can be used in this configuration. With
-this format, it is possible to reserve a whole partition for GRUB,
-called the BIOS Boot Partition. GRUB can then be embedded into that
-partition without the risk of being overwritten by other software and
-without being contained in a filesystem which might move its blocks
-around.
-
- When creating a BIOS Boot Partition on a GPT system, you should make
-sure that it is at least 31 KiB in size. (GPT-formatted disks are not
-usually particularly small, so we recommend that you make it larger
-than the bare minimum, such as 1 MiB, to allow plenty of room for
-growth.) You must also make sure that it has the proper partition
-type. Using GNU Parted, you can set this using a command such as the
-following:
-
- # parted /dev/DISK set PARTITION-NUMBER bios_grub on
-
- If you are using gdisk, set the partition type to `0xEF02'. With
-partitioning programs that require setting the GUID directly, it should
-be `21686148-6449-6e6f-744e656564454649'.
-
- *Caution:* Be very careful which partition you select! When GRUB
-finds a BIOS Boot Partition during installation, it will automatically
-overwrite part of it. Make sure that the partition does not contain any
-other data.
-
-
-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::
-
-
-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.
-
- 1. Set GRUB's root device to the same drive as GNU/Hurd's. The
- command `search --file --set /boot/gnumach.gz' or similar may help
- you (*note search::).
-
- 2. Load the kernel and the modules, like this:
-
- grub> multiboot /boot/gnumach.gz root=device:hd0s1
- grub> module /hurd/ext2fs.static ext2fs --readonly \
- --multiboot-command-line='${kernel-command-line}' \
- --host-priv-port='${host-port}' \
- --device-master-port='${device-port}' \
- --exec-server-task='${exec-task}' -T typed '${root}' \
- '$(task-create)' '$(task-resume)'
- grub> module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
-
- 3. Finally, 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.
-
- 1. Set GRUB's root device to the same drive as GNU/Linux's. The
- command `search --file --set /vmlinuz' or similar may help you
- (*note search::).
-
- 2. Load the kernel using the command `linux' (*note linux::):
-
- grub> linux /vmlinuz root=/dev/sda1
-
- If you need to specify some kernel parameters, just append them to
- the command. For example, to set `acpi' to `off', do this:
-
- grub> linux /vmlinuz root=/dev/sda1 acpi=off
-
- See the documentation in the Linux source tree for complete
- information on the available options.
-
- With `linux' GRUB uses 32-bit protocol. Some BIOS services like APM
- or EDD aren't available with this protocol. In this case you need
- to use `linux16'
-
- grub> linux16 /vmlinuz root=/dev/sda1 acpi=off
-
- 3. If you use an initrd, execute the command `initrd' (*note initrd::)
- after `linux':
-
- grub> initrd /initrd
-
- If you used `linux16' you need to use `initrd16':
-
- grub> initrd16 /initrd
-
- 4. 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, 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 two helper functions.
-
- 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: Configuration, Next: Theme file format, 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
-* Embedded configuration:: Embedding a configuration file into GRUB
-
-
-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.
-
- `grub-mkconfig' does have some limitations. While adding extra
-custom menu entries to the end of the list can be done by editing
-`/etc/grub.d/40_custom' or creating `/boot/grub/custom.cfg', changing
-the order of menu entries or changing their titles may require making
-complex changes to shell scripts stored in `/etc/grub.d/'. This may be
-improved in the future. In the meantime, those who feel that it would
-be easier to write `grub.cfg' directly are encouraged to do so (*note
-Booting::, and *note Shell-like scripting::), and to disable any system
-provided by their distribution to automatically run `grub-mkconfig'.
-
- 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 title of a menu entry, or the special string `saved'.
- Using the title 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.
-
- For example, if you have:
-
- menuentry 'Example GNU/Linux distribution' --class gnu-linux {
- ...
- }
-
- then you can make this the default using:
-
- GRUB_DEFAULT='Example GNU/Linux distribution'
-
- 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. This option relies on the environment block, which may
- not be available in all situations (*note Environment block::).
-
-`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 output.
-
-`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_RECOVERY' is set to `true', 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_CMDLINE_XEN'
-`GRUB_CMDLINE_XEN_DEFAULT'
- As `GRUB_CMDLINE_LINUX' and `GRUB_CMDLINE_LINUX_DEFAULT', but for
- Linux and Xen.
-
-`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_RECOVERY'
- If this option is set to `true', disable the generation of recovery
- mode menu entries.
-
-`GRUB_VIDEO_BACKEND'
- If graphical video support is required, either because the
- `gfxterm' graphical terminal is in use or because
- `GRUB_GFXPAYLOAD_LINUX' is set, then `grub-mkconfig' will normally
- load all available GRUB video drivers and use the one most
- appropriate for your hardware. If you need to override this for
- some reason, then you can set this option.
-
- After `grub-install' has been run, the available video drivers are
- listed in `/boot/grub/video.lst'.
-
-`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'.
- *Note gfxmode::.
-
-`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.
-
-`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. *Note gfxpayload::.
-
- 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,
- set this option to `text' 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::.
-
-`GRUB_BADRAM'
- If this option is set, GRUB will issue a *note badram:: command to
- filter out specified regions of RAM.
-
-`GRUB_PRELOAD_MODULES'
- This option may be set to a list of GRUB module names separated by
- spaces. Each module will be loaded as early as possible, at the
- start of `grub.cfg'.
-
-
- 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, Next: Embedded configuration, Prev: Simple configuration, Up: Configuration
-
-5.2 Writing full configuration files directly
-=============================================
-
-`grub.cfg' is written in GRUB's built-in scripting language, which has
-a syntax quite similar to that of GNU Bash and other Bourne shell
-derivatives.
-
-Words
-=====
-
-A "word" is a sequence of characters considered as a single unit by
-GRUB. Words are separated by "metacharacters", which are the following
-plus space, tab, and newline:
-
- { } | & $ ; < >
-
- Quoting may be used to include metacharacters in words; see below.
-
-Reserved words
-==============
-
-Reserved words have a special meaning to GRUB. The following words are
-recognised as reserved when unquoted and either the first word of a
-simple command or the third word of a `for' command:
-
- ! [[ ]] { }
- case do done elif else esac fi for function
- if in menuentry select then time until while
-
- Not all of these reserved words have a useful purpose yet; some are
-reserved for future expansion.
-
-Quoting
-=======
-
-Quoting is used to remove the special meaning of certain characters or
-words. It can be used to treat metacharacters as part of a word, to
-prevent reserved words from being recognised as such, and to prevent
-variable expansion.
-
- There are three quoting mechanisms: the escape character, single
-quotes, and double quotes.
-
- A non-quoted backslash (\) is the "escape character". It preserves
-the literal value of the next character that follows, with the
-exception of newline.
-
- Enclosing characters in single quotes preserves the literal value of
-each character within the quotes. A single quote may not occur between
-single quotes, even when preceded by a backslash.
-
- Enclosing characters in double quotes preserves the literal value of
-all characters within the quotes, with the exception of `$' and `\'.
-The `$' character retains its special meaning within double quotes.
-The backslash retains its special meaning only when followed by one of
-the following characters: `$', `"', `\', or newline. A
-backslash-newline pair is treated as a line continuation (that is, it is
-removed from the input stream and effectively ignored(1) (*note
-Shell-like scripting-Footnote-1::)). A double quote may be quoted
-within double quotes by preceding it with a backslash.
-
-Variable expansion
-==================
-
-The `$' character introduces variable expansion. The variable name to
-be expanded may be enclosed in braces, which are optional but serve to
-protect the variable to be expanded from characters immediately
-following it which could be interpreted as part of the name.
-
- Normal variable names begin with an alphabetic character, followed
-by zero or more alphanumeric characters. These names refer to entries
-in the GRUB environment (*note Environment::).
-
- Positional variable names consist of one or more digits. They
-represent parameters passed to function calls, with `$1' representing
-the first parameter, and so on.
-
- The special variable name `?' expands to the exit status of the most
-recently executed command. When positional variable names are active,
-other special variable names `@', `*' and `#' are defined and they
-expand to all positional parameters with necessary quoting, positional
-parameters without any quoting, and positional parameter count
-respectively.
-
-Comments
-========
-
-A word beginning with `#' causes that word and all remaining characters
-on that line to be ignored.
-
-Simple commands
-===============
-
-A "simple command" is a sequence of words separated by spaces or tabs
-and terminated by a semicolon or a newline. The first word specifies
-the command to be executed. The remaining words are passed as
-arguments to the invoked command.
-
- The return value of a simple command is its exit status. If the
-reserved word `!' precedes the command, then the return value is
-instead the logical negation of the command's exit status.
-
-Compound commands
-=================
-
-A "compound command" is one of the following:
-
-for NAME in WORD ...; do LIST; done
- The list of words following `in' is expanded, generating a list of
- items. The variable NAME is set to each element of this list in
- turn, and LIST is executed each time. The return value is the
- exit status of the last command that executes. If the expansion
- of the items following `in' results in an empty list, no commands
- are executed, and the return status is 0.
-
-if LIST; then LIST; [elif LIST; then LIST;] ... [else LIST;] fi
- The `if' LIST is executed. If its exit status is zero, the `then'
- LIST is executed. Otherwise, each `elif' LIST is executed in
- turn, and if its exit status is zero, the corresponding `then'
- LIST is executed and the command completes. Otherwise, the `else'
- LIST is executed, if present. The exit status is the exit status
- of the last command executed, or zero if no condition tested true.
-
-while COND; do LIST; done
-until COND; do LIST; done
- The `while' command continuously executes the `do' LIST as long as
- the last command in COND returns an exit status of zero. The
- `until' command is identical to the `while' command, except that
- the test is negated; the `do' LIST is executed as long as the last
- command in COND returns a non-zero exit status. The exit status
- of the `while' and `until' commands is the exit status of the last
- `do' LIST command executed, or zero if none was executed.
-
-function NAME { COMMAND; ... }
- This defines a function named NAME. The "body" of the function is
- the list of commands within braces, each of which must be
- terminated with a semicolon or a newline. This list of commands
- will be executed whenever NAME is specified as the name of a
- simple command. Function definitions do not affect the exit
- status in `$?'. When executed, the exit status of a function is
- the exit status of the last command executed in the body.
-
-menuentry TITLE [`--class=class' ...] [`--users=users'] [`--hotkey=key'] { COMMAND; ... }
- *Note menuentry::.
-
-Built-in Commands
-=================
-
-Some built-in commands are also provided by GRUB script to help script
-writers perform actions that are otherwise not possible. For example,
-these include commands to jump out of a loop without fully completing
-it, etc.
-
-break [`n']
- Exit from within a `for', `while', or `until' loop. If `n' is
- specified, break `n' levels. `n' must be greater than or equal to
- 1. If `n' is greater than the number of enclosing loops, all
- enclosing loops are exited. The return value is 0 unless `n' is
- not greater than or equal to 1.
-
-continue [`n']
- Resume the next iteration of the enclosing `for', `while' or
- `until' loop. If `n' is specified, resume at the `n'th enclosing
- loop. `n' must be greater than or equal to 1. If `n' is greater
- than the number of enclosing loops, the last enclosing loop (the
- "top-level" loop) is resumed. The return value is 0 unless `n' is
- not greater than or equal to 1.
-
-return [`n']
- Causes a function to exit with the return value specified by `n'.
- If `n' is omitted, the return status is that of the last command
- executed in the function body. If used outside a function the
- return status is false.
-
-shift [`n']
- The positional parameters from `n'+1 ... are renamed to `$1'....
- Parameters represented by the numbers `$#' down to `$#'-`n'+1 are
- unset. `n' must be a non-negative number less than or equal to
- `$#'. If `n' is 0, no parameters are changed. If `n' is not
- given, it is assumed to be 1. If `n' is greater than `$#', the
- positional parameters are not changed. The return status is
- greater than zero if `n' is greater than `$#' or less than zero;
- otherwise 0.
-
-
-
-File: grub.info, Node: Shell-like scripting-Footnotes, Up: Shell-like scripting
-
- (1) Currently a backslash-newline pair within a variable name is not
-handled properly, so use this feature with some care.
-
-
-File: grub.info, Node: Embedded configuration, Prev: Shell-like scripting, Up: Configuration
-
-5.3 Embedding a configuration file into GRUB
-============================================
-
-GRUB supports embedding a configuration file directly into the core
-image, so that it is loaded before entering normal mode. This is
-useful, for example, when it is not straightforward to find the real
-configuration file, or when you need to debug problems with loading
-that file. `grub-install' uses this feature when it is not using BIOS
-disk functions or when installing to a different disk from the one
-containing `/boot/grub', in which case it needs to use the `search'
-command (*note search::) to find `/boot/grub'.
-
- To embed a configuration file, use the `-c' option to
-`grub-mkimage'. The file is copied into the core image, so it may
-reside anywhere on the file system, and may be removed after running
-`grub-mkimage'.
-
- After the embedded configuration file (if any) is executed, GRUB
-will load the `normal' module (*note normal::), which will then read
-the real configuration file from `$prefix/grub.cfg'. By this point, the
-`root' variable will also have been set to the root device name. For
-example, `prefix' might be set to `(hd0,1)/boot/grub', and `root' might
-be set to `hd0,1'. Thus, in most cases, the embedded configuration
-file only needs to set the `prefix' and `root' variables, and then drop
-through to GRUB's normal processing. A typical example of this might
-look like this:
-
- search.fs_uuid 01234567-89ab-cdef-0123-456789abcdef root
- set prefix=($root)/boot/grub
-
- (The `search_fs_uuid' module must be included in the core image for
-this example to work.)
-
- In more complex cases, it may be useful to read other configuration
-files directly from the embedded configuration file. This allows such
-things as reading files not called `grub.cfg', or reading files from a
-directory other than that where GRUB's loadable modules are installed.
-To do this, include the `configfile' and `normal' modules in the core
-image, and embed a configuration file that uses the `configfile'
-command to load another file. The following example of this also
-requires the `echo', `search_label', and `test' modules to be included
-in the core image:
-
- search.fs_label grub root
- if [ -e /boot/grub/example/test1.cfg ]; then
- set prefix=($root)/boot/grub
- configfile /boot/grub/example/test1.cfg
- else
- if [ -e /boot/grub/example/test2.cfg ]; then
- set prefix=($root)/boot/grub
- configfile /boot/grub/example/test2.cfg
- else
- echo "Could not find an example configuration file!"
- fi
- fi
-
- The embedded configuration file may not contain menu entries
-directly, but may only read them from elsewhere using `configfile'.
-
-
-File: grub.info, Node: Theme file format, Next: Network, Prev: Configuration, Up: Top
-
-6 Theme file format
-*******************
-
-6.1 Introduction
-================
-
-The GRUB graphical menu supports themes that can customize the layout
-and appearance of the GRUB boot menu. The theme is configured through
-a plain text file that specifies the layout of the various GUI
-components (including the boot menu, timeout progress bar, and text
-messages) as well as the appearance using colors, fonts, and images.
-Example is available in docs/example_theme.txt
-
-6.2 Theme Elements
-==================
-
-6.2.1 Colors
-------------
-
-Colors can be specified in several ways:
-
- * HTML-style "#RRGGBB" or "#RGB" format, where *R*, *G*, and *B* are
- hexadecimal digits (e.g., "#8899FF")
-
- * as comma-separated decimal RGB values (e.g., "128, 128, 255")
-
- * with "SVG 1.0 color names" (e.g., "cornflowerblue") which must be
- specified in lowercase.
-
-6.2.2 Fonts
------------
-
-The fonts GRUB uses "PFF2 font format" bitmap fonts. Fonts are
-specified with full font names. Currently there is no provision for a
-preference list of fonts, or deriving one font from another. Fonts are
-loaded with the "loadfont" command in GRUB. To see the list of loaded
-fonts, execute the "lsfonts" command. If there are too many fonts to
-fit on screen, do "set pager=1" before executing "lsfonts".
-
-6.2.3 Progress Bar
-------------------
-
-Figure 6.1
-
-Figure 6.2
-
- Progress bars are used to display the remaining time before GRUB
-boots the default menu entry. To create a progress bar that will
-display the remaining time before automatic boot, simply create a
-"progress_bar" component with the id "__timeout__". This indicates to
-GRUB that the progress bar should be updated as time passes, and it
-should be made invisible if the countdown to automatic boot is
-interrupted by the user.
-
- Progress bars may optionally have text displayed on them. This is
-controlled through the "show_text" property, which can be set to either
-"true" or "false" to control whether text is displayed. When GRUB is
-counting down to automatic boot, the text informs the user of the
-number of seconds remaining.
-
-6.2.4 Circular Progress Indicator
----------------------------------
-
-The circular progress indicator functions similarly to the progress
-bar. When given an id of "__timeout__", GRUB updates the circular
-progress indicator's value to indicate the time remaining. For the
-circular progress indicator, there are two images used to render it:
-the *center* image, and the *tick* image. The center image is rendered
-in the center of the component, while the tick image is used to render
-each mark along the circumference of the indicator.
-
-6.2.5 Labels
-------------
-
-Text labels can be placed on the boot screen. The font, color, and
-horizontal alignment can be specified for labels. If a label is given
-the id "__timeout__", then the "text" property for that label is also
-updated with a message informing the user of the number of seconds
-remaining until automatic boot. This is useful in case you want the
-text displayed somewhere else instead of directly on the progress bar.
-
-6.2.6 Boot Menu
----------------
-
-The boot menu where GRUB displays the menu entries from the "grub.cfg"
-file. It is a list of items, where each item has a title and an
-optional icon. The icon is selected based on the *classes* specified
-for the menu entry. If there is a PNG file named "myclass.png" in the
-"grub/themes/icons" directory, it will be displayed for items which
-have the class *myclass*. The boot menu can be customized in several
-ways, such as the font and color used for the menu entry title, and by
-specifying styled boxes for the menu itself and for the selected item
-highlight.
-
-6.2.7 Styled Boxes
-------------------
-
-One of the most important features for customizing the layout is the
-use of *styled boxes*. A styled box is composed of 9 rectangular (and
-potentially empty) regions, which are used to seamlessly draw the
-styled box on screen:
-
-Northwest (nw) North (n) Northeast (ne)
-West (w) Center (c) East (e)
-Southwest (sw) South (s) Southeast (se)
-
- To support any size of box on screen, the center slice and the
-slices for the top, bottom, and sides are all scaled to the correct
-size for the component on screen, using the following rules:
-
- 1. The edge slices (north, south, east, and west) are scaled in the
- direction of the edge they are adjacent to. For instance, the
- west slice is scaled vertically.
-
- 2. The corner slices (northwest, northeast, southeast, and southwest)
- are not scaled.
-
- 3. The center slice is scaled to fill the remaining space in the
- middle.
-
- As an example of how an image might be sliced up, consider the
-styled box used for a terminal view.
-
-Figure 6.3
-
-6.2.8 Creating Styled Box Images
---------------------------------
-
-The Inkscape_ scalable vector graphics editor is a very useful tool for
-creating styled box images. One process that works well for slicing a
-drawing into the necessary image slices is:
-
- 1. Create or open the drawing you'd like use.
-
- 2. Create a new layer on the top of the layer stack. Make it
- visible. Select this layer as the current layer.
-
- 3. Draw 9 rectangles on your drawing where you'd like the slices to
- be. Clear the fill option, and set the stroke to 1 pixel wide
- solid stroke. The corners of the slices must meet precisely; if
- it is off by a single pixel, it will probably be evident when the
- styled box is rendered in the GRUB menu. You should probably go
- to File | Document Properties | Grids and enable a grid or create
- a guide (click on one of the rulers next to the drawing and drag
- over the drawing; release the mouse button to place the guide) to
- help place the rectangles precisely.
-
- 4. Right click on the center slice rectangle and choose Object
- Properties. Change the "Id" to "slice_c" and click Set. Repeat
- this for the remaining 8 rectangles, giving them Id values of
- "slice_n", "slice_ne", "slice_e", and so on according to the
- location.
-
- 5. Save the drawing.
-
- 6. Select all the slice rectangles. With the slice layer selected,
- you can simply press Ctrl+A to select all rectangles. The status
- bar should indicate that 9 rectangles are selected.
-
- 7. Click the layer hide icon for the slice layer in the layer
- palette. The rectangles will remain selected, even though they
- are hidden.
-
- 8. Choose File | Export Bitmap and check the *Batch export 9 selected
- objects* box. Make sure that *Hide all except selected* is
- unchecked. click *Export*. This will create PNG files in the same
- directory as the drawing, named after the slices. These can now
- be used for a styled box in a GRUB theme.
-
-6.3 Theme File Manual
-=====================
-
-The theme file is a plain text file. Lines that begin with "#" are
-ignored and considered comments. (Note: This may not be the case if
-the previous line ended where a value was expected.)
-
- The theme file contains two types of statements:
- 1. Global properties.
-
- 2. Component construction.
-
-6.3.1 Global Properties
------------------------
-
-6.3.2 Format
-------------
-
-Global properties are specified with the simple format:
- * name1: value1
-
- * name2: "value which may contain spaces"
-
- * name3: #88F
-
- In this example, name3 is assigned a color value.
-
-6.3.3 Global Property List
---------------------------
-
-title-text Specifies the text to display at the top
- center of the screen as a title.
-title-font Defines the font used for the title
- message at the top of the screen.
-title-color Defines the color of the title message.
-message-font Defines the font used for messages, such
- as when GRUB is unable to automatically
- boot an entry.
-message-color Defines the color of the message text.
-message-bg-color Defines the background color of the
- message text area.
-desktop-image Specifies the image to use as the
- background. It will be scaled to fit the
- screen size.
-desktop-color Specifies the color for the background if
- *desktop-image* is not specified.
-terminal-box Specifies the file name pattern for the
- styled box slices used for the command
- line terminal window. For example,
- "terminal-box: terminal_*.png" will use
- the images "terminal_c.png" as the center
- area, "terminal_n.png" as the north (top)
- edge, "terminal_nw.png" as the northwest
- (upper left) corner, and so on. If the
- image for any slice is not found, it will
- simply be left empty.
-
-6.3.4 Component Construction
-----------------------------
-
-Greater customizability comes is provided by components. A tree of
-components forms the user interface. *Containers* are components that
-can contain other components, and there is always a single root
-component which is an instance of a *canvas* container.
-
- Components are created in the theme file by prefixing the type of
-component with a '+' sign:
-
- ` + label { text="GRUB" font="aqui 11" color="#8FF" } '
-
- properties of a component are specified as "name = value" (whitespace
-surrounding tokens is optional and is ignored) where *value* may be:
- * a single word (e.g., "align = center", "color = #FF8080"),
-
- * a quoted string (e.g., "text = "Hello, World!""), or
-
- * a tuple (e.g., "preferred_size = (120, 80)").
-
-6.3.5 Component List
---------------------
-
-The following is a list of the components and the properties they
-support.
-
- * label A label displays a line of text.
-
- Properties:
- text The text to display.
- font The font to use for text display.
- color The color of the text.
- align The horizontal alignment of the text within
- the component. Options are "left", "center",
- and "right".
-
- * image A component that displays an image. The image is scaled
- to fit the component, although the preferred size defaults to
- the image's original size unless the "preferred_size" property
- is explicitly set.
-
- Properties:
-
- file The full path to the image file to load.
-
- * progress_bar Displays a horizontally oriented progress bar. It
- can be rendered using simple solid filled rectangles, or using
- a pair of pixmap styled boxes.
-
- Properties:
-
- fg_color The foreground color for plain solid color
- rendering.
- bg_color The background color for plain solid color
- rendering.
- border_color The border color for plain solid color
- rendering.
- text_color The text color.
- show_text Boolean value indicating whether or not text
- should be displayed on the progress bar. If
- set to *false*, then no text will be displayed
- on the bar. If set to any other value, text
- will be displayed on the bar.
- bar_style The styled box specification for the frame of
- the progress bar. Example:
- "progress_frame_*.png"
- highlight_styleThe styled box specification for the
- highlighted region of the progress bar. This
- box will be used to paint just the highlighted
- region of the bar, and will be increased in
- size as the bar nears completion. Example:
- "progress_hl_*.png".
- text The text to display on the progress bar. If
- the progress bar's ID is set to "__timeout__",
- then GRUB will updated this property with an
- informative message as the timeout approaches.
- value The progress bar current value. Normally not
- set manually.
- start The progress bar start value. Normally not
- set manually.
- end The progress bar end value. Normally not set
- manually.
-
- * circular_progress Displays a circular progress indicator. The
- appearance of this component is determined by two images: the
- *center* image and the *tick* image. The center image is
- generally larger and will be drawn in the center of the
- component. Around the circumference of a circle within the
- component, the tick image will be drawn a certain number of
- times, depending on the properties of the component.
-
- Properties:
-
- center_bitmap The file name of the image to draw in
- the center of the component.
- tick_bitmap The file name of the image to draw for
- the tick marks.
- num_ticks The number of ticks that make up a full
- circle.
- ticks_disappear Boolean value indicating whether tick
- marks should progressively appear,
- or progressively disappear as *value*
- approaches *end*. Specify "true"
- or "false".
- value The progress indicator current value.
- Normally not set manually.
- start The progress indicator start value.
- Normally not set manually.
- end The progress indicator end value.
- Normally not set manually.
-
- * boot_menu Displays the GRUB boot menu. It allows selecting
- items and executing them.
-
- Properties:
-
- item_font The font to use for the menu item
- titles.
- selected_item_font The font to use for the selected
- menu item, or "inherit" (the
- default) to use "item_font"
- for the selected menu item as
- well.
- item_color The color to use for the menu
- item titles.
- selected_item_color The color to use for the selected
- menu item, or "inherit" (the
- default) to use
- "item_color" for the selected
- menu item as well.
- icon_width The width of menu item icons.
- Icons are scaled to the specified
- size.
- icon_height The height of menu item icons.
- item_height The height of each menu item in
- pixels.
- item_padding The amount of space in pixels to
- leave on each side of the menu
- item contents.
- item_icon_space The space between an item's icon
- and the title text, in pixels.
- item_spacing The amount of space to leave
- between menu items, in pixels.
- menu_pixmap_style The image file pattern for the
- menu frame styled box.
- Example: "menu_*.png" (this will
- use images such as "menu_c.png",
- "menu_w.png", `menu_nw.png",
- etc.)
- selected_item_pixmap_style The image file pattern for the
- selected item highlight styled
- box.
- scrollbar Boolean value indicating whether
- the scroll bar should be drawn if
- the frame and thumb styled
- boxes are configured.
- scrollbar_frame The image file pattern for the
- entire scroll bar.
- Example: "scrollbar_*.png"
- scrollbar_thumb The image file pattern for the
- scroll bar thumb (the part of the
- scroll bar that moves as
- scrolling occurs).
- Example: "scrollbar_thumb_*.png"
- max_items_shown The maximum number of items to
- show on the menu. If there are
- more than *max_items_shown*
- items in the menu, the list will
- scroll to make all items
- accessible.
-
- * canvas Canvas is a container that allows manual placement of
- components within it. It does not alter the positions of its
- child components. It assigns all child components their
- preferred sizes.
-
- * hbox The *hbox* container lays out its children from left to
- right, giving each one its preferred width. The height of each
- child is set to the maximum of the preferred heights of all
- children.
-
- * vbox The *vbox* container lays out its children from top to
- bottom, giving each one its preferred height. The width of
- each child is set to the maximum of the preferred widths of all
- children.
-
-6.3.6 Common properties
------------------------
-
-The following properties are supported by all components:
-`left'
- The distance from the left border of container to left border of
- the object in either of three formats:
- x Value in pixels
- p% Percentage
- p%+x mixture of both
-
-`top'
- The distance from the left border of container to left border of
- the object in same format.
-
-`width'
- The width of object in same format.
-
-`height'
- The height of object in same format.
-
-`id'
- The identifier for the component. This can be any arbitrary
- string. The ID can be used by scripts to refer to various
- components in the GUI component tree. Currently, there is one
- special ID value that GRUB recognizes:
-
- "__timeout__" Any component with this ID will have its
- *text*, *start*, *end*, *value*, and *visible*
- properties set by GRUB when it is counting
- down to an automatic boot of the default menu
- entry.
-
-
-File: grub.info, Node: Network, Next: Serial terminal, Prev: Theme file format, Up: Top
-
-7 Booting GRUB from the network
-*******************************
-
-The following instructions only work on PC BIOS systems where the
-Preboot eXecution Environment (PXE) is available.
-
- To generate a PXE boot image, run:
-
- grub-mkimage --format=i386-pc-pxe --output=grub.pxe --prefix='(pxe)/boot/grub' pxe pxecmd
-
- Copy `grub.pxe', `/boot/grub/*.mod', and `/boot/grub/*.lst' to the
-PXE (TFTP) server, ensuring that `*.mod' and `*.lst' are accessible via
-the `/boot/grub/' path from the TFTP server root. Set the DHCP server
-configuration to offer `grub.pxe' as the boot file (the `filename'
-option in ISC dhcpd).
-
- You can also use the `grub-mknetdir' utility to generate an image
-and a GRUB directory tree, rather than copying files around manually.
-
- After GRUB has started, files on the TFTP server will be accessible
-via the `(pxe)' device.
-
- The server and gateway IP address can be controlled by changing the
-`(pxe)' device name to `(pxe:SERVER-IP)' or
-`(pxe:SERVER-IP:GATEWAY-IP)'. Note that this should be changed both in
-the prefix and in any references to the device name in the
-configuration file.
-
- GRUB provides several environment variables which may be used to
-inspect or change the behaviour of the PXE device:
-
-`net_pxe_ip'
- The IP address of this machine. Read-only.
-
-`net_pxe_mac'
- The network interface's MAC address. Read-only.
-
-`net_pxe_hostname'
- The client host name provided by DHCP. Read-only.
-
-`net_pxe_domain'
- The client domain name provided by DHCP. Read-only.
-
-`net_pxe_rootpath'
- The path to the client's root disk provided by DHCP. Read-only.
-
-`net_pxe_extensionspath'
- The path to additional DHCP vendor extensions provided by DHCP.
- Read-only.
-
-`net_pxe_boot_file'
- The boot file name provided by DHCP. Read-only.
-
-`net_pxe_dhcp_server_name'
- The name of the DHCP server responsible for these boot parameters.
- Read-only.
-
-`pxe_blksize'
- The PXE transfer block size. Read-write, defaults to 512.
-
-`pxe_default_server'
- The default PXE server. Read-write, although setting this is only
- useful before opening a PXE device.
-
-`pxe_default_gateway'
- The default gateway to use when contacting the PXE server.
- Read-write, although setting this is only useful before opening a
- PXE device.
-
-
-File: grub.info, Node: Serial terminal, Next: Vendor power-on keys, Prev: Network, Up: Top
-
-8 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. Here is an example:
-
- grub> serial --unit=0 --speed=9600
- grub> terminal_input serial; terminal_output 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 commands `terminal_input' (*note terminal_input::) and
-`terminal_output' (*note terminal_output::) choose 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_input serial console'. In this case, a terminal in which you
-press any key will be selected as a GRUB terminal. In the example above,
-note that you need to put both commands on the same command line, as you
-will lose the ability to type commands on the console after the first
-command.
-
- 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: Images, Prev: Serial terminal, Up: Top
-
-9 Using GRUB with vendor power-on keys
-**************************************
-
-Some laptop vendors provide an additional power-on button which boots
-another OS. GRUB supports such buttons with the `GRUB_TIMEOUT_BUTTON',
-`GRUB_DEFAULT_BUTTON', `GRUB_HIDDEN_TIMEOUT_BUTTON' and
-`GRUB_BUTTON_CMOS_ADDRESS' variables in default/grub (*note Simple
-configuration::). `GRUB_TIMEOUT_BUTTON', `GRUB_DEFAULT_BUTTON' and
-`GRUB_HIDDEN_TIMEOUT_BUTTON' are used instead of the corresponding
-variables without the `_BUTTON' suffix when powered on using the special
-button. `GRUB_BUTTON_CMOS_ADDRESS' is vendor-specific and partially
-model-specific. Values known to the GRUB team are:
-
-<Dell XPS M1530>
- 85:3
-
-<Asus EeePC 1005PE>
- 84:1 (unconfirmed)
-
- To take full advantage of this function, install GRUB into the MBR
-(*note Installing GRUB using grub-install::).
-
- If you have a laptop which has a similar feature and not in the
-above list could you figure your address and contribute? To discover
-the address do the following:
- * boot normally
-
- * sudo modprobe nvram
- sudo cat /dev/nvram | xxd > normal_button.txt
-
- * boot using vendor button
-
- * sudo modprobe nvram
- sudo cat /dev/nvram | xxd > normal_vendor.txt
-
- Then compare these text files and find where a bit was toggled. E.g.
-in case of Dell XPS it was:
- byte 0x47: 20 --> 28
- It's a bit number 3 as seen from following table:
-0 01
-1 02
-2 04
-3 08
-4 10
-5 20
-6 40
-7 80
-
- 0x47 is decimal 71. Linux nvram implementation cuts first 14 bytes of
-CMOS. So the real byte address in CMOS is 71+14=85 So complete address
-is 85:3
-
-
-File: grub.info, Node: Images, Next: Filesystem, Prev: Vendor power-on keys, Up: Top
-
-10 GRUB image files
-*******************
-
-GRUB consists of several images: a variety of bootstrap images for
-starting GRUB in various ways, a kernel image, and a set of modules
-which are combined with the kernel image to form a core image. Here is
-a short overview of them.
-
-`boot.img'
- On PC BIOS systems, this image is the first part of GRUB to start.
- It is written to a master boot record (MBR) or to the boot sector
- of a partition. Because a PC boot sector is 512 bytes, the size
- of this image is exactly 512 bytes.
-
- The sole function of `boot.img' is to read the first sector of the
- core image from a local disk and jump to it. Because of the size
- restriction, `boot.img' cannot understand any file system
- structure, so `grub-setup' hardcodes the location of the first
- sector of the core image into `boot.img' when installing GRUB.
-
-`diskboot.img'
- This image is used as the first sector of the core image when
- booting from a hard disk. It reads the rest of the core image
- into memory and starts the kernel. Since file system handling is
- not yet available, it encodes the location of the core image using
- a block list format.
-
-`cdboot.img'
- This image is used as the first sector of the core image when
- booting from a CD-ROM drive. It performs a similar function to
- `diskboot.img'.
-
-`pxeboot.img'
- This image is used as the start of the core image when booting
- from the network using PXE. *Note Network::.
-
-`lnxboot.img'
- This image may be placed at the start of the core image in order
- to make GRUB look enough like a Linux kernel that it can be booted
- by LILO using an `image=' section.
-
-`kernel.img'
- This image contains GRUB's basic run-time facilities: frameworks
- for device and file handling, environment variables, the rescue
- mode command-line parser, and so on. It is rarely used directly,
- but is built into all core images.
-
-`core.img'
- This is the core image of GRUB. It is built dynamically from the
- kernel image and an arbitrary list of modules by the `grub-mkimage'
- program. Usually, it contains enough modules to access
- `/boot/grub', and loads everything else (including menu handling,
- the ability to load target operating systems, and so on) from the
- file system at run-time. The modular design allows the core image
- to be kept small, since the areas of disk where it must be
- installed are often as small as 32KB.
-
- *Note BIOS installation::, for details on where the core image can
- be installed on PC systems.
-
-`*.mod'
- Everything else in GRUB resides in dynamically loadable modules.
- These are often loaded automatically, or built into the core image
- if they are essential, but may also be loaded manually using the
- `insmod' command (*note insmod::).
-
-For GRUB Legacy users
-=====================
-
-GRUB 2 has a different design from GRUB Legacy, and so correspondences
-with the images it used cannot be exact. Nevertheless, GRUB Legacy
-users often ask questions in the terms they are familiar with, and so
-here is a brief guide to how GRUB 2's images relate to that.
-
-`stage1'
- Stage 1 from GRUB Legacy was very similar to `boot.img' in GRUB 2,
- and they serve the same function.
-
-`*_stage1_5'
- In GRUB Legacy, Stage 1.5's function was to include enough
- filesystem code to allow the much larger Stage 2 to be read from
- an ordinary filesystem. In this respect, its function was similar
- to `core.img' in GRUB 2. However, `core.img' is much more capable
- than Stage 1.5 was; since it offers a rescue shell, it is
- sometimes possible to recover manually in the event that it is
- unable to load any other modules, for example if partition numbers
- have changed. `core.img' is built in a more flexible way,
- allowing GRUB 2 to support reading modules from advanced disk
- types such as LVM and RAID.
-
- GRUB Legacy could run with only Stage 1 and Stage 2 in some limited
- configurations, while GRUB 2 requires `core.img' and cannot work
- without it.
-
-`stage2'
- GRUB 2 has no single Stage 2 image. Instead, it loads modules from
- `/boot/grub' at run-time.
-
-`stage2_eltorito'
- In GRUB 2, images for booting from CD-ROM drives are now
- constructed using `cdboot.img' and `core.img', making sure that
- the core image contains the `iso9660' module. It is usually best
- to use the `grub-mkrescue' program for this.
-
-`nbgrub'
- There is as yet no equivalent for `nbgrub' in GRUB 2; it was used
- by Etherboot and some other network boot loaders.
-
-`pxegrub'
- In GRUB 2, images for PXE network booting are now constructed using
- `pxeboot.img' and `core.img', making sure that the core image
- contains the `pxe' and `pxecmd' modules. *Note Network::.
-
-
-File: grub.info, Node: Filesystem, Next: Interface, Prev: Images, Up: Top
-
-11 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 `search' (*note
-search::).
-
-* 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
-
-11.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 `(pxe)' 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
-
-11.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 `set root=(hd1,1)' (*note set::), then `/boot/kernel' is the
-same as `(hd1,1)/boot/kernel'.
-
-
-File: grub.info, Node: Block list syntax, Prev: File name syntax, Up: Filesystem
-
-11.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: Environment, Prev: Filesystem, Up: Top
-
-12 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
-
-12.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
-
-12.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
-
-12.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.
-
- Each line in the menu entry can be edited freely, and you can add
-new lines by pressing <RET> at the end of a line. To boot the edited
-entry, press <Ctrl-x>.
-
- Although GRUB unfortunately does not support "undo", you can do
-almost the same thing by just returning to the main menu using <ESC>.
-
-
-File: grub.info, Node: Environment, Next: Commands, Prev: Interface, Up: Top
-
-13 GRUB environment variables
-*****************************
-
-GRUB supports environment variables which are rather like those offered
-by all Unix-like systems. Environment variables have a name, which is
-unique and is usually a short identifier, and a value, which is an
-arbitrary string of characters. They may be set (*note set::), unset
-(*note unset::), or looked up (*note Shell-like scripting::) by name.
-
- A number of environment variables have special meanings to various
-parts of GRUB. Others may be used freely in GRUB configuration files.
-
-* Menu:
-
-* Special environment variables::
-* Environment block::
-
-
-File: grub.info, Node: Special environment variables, Next: Environment block, Up: Environment
-
-13.1 Special environment variables
-==================================
-
-These variables have special meaning to GRUB.
-
-* Menu:
-
-* biosnum::
-* chosen::
-* color_highlight::
-* color_normal::
-* debug::
-* default::
-* fallback::
-* gfxmode::
-* gfxpayload::
-* gfxterm_font::
-* icondir::
-* lang::
-* locale_dir::
-* menu_color_highlight::
-* menu_color_normal::
-* net_pxe_boot_file::
-* net_pxe_dhcp_server_name::
-* net_pxe_domain::
-* net_pxe_extensionspath::
-* net_pxe_hostname::
-* net_pxe_ip::
-* net_pxe_mac::
-* net_pxe_rootpath::
-* pager::
-* prefix::
-* pxe_blksize::
-* pxe_default_gateway::
-* pxe_default_server::
-* root::
-* superusers::
-* theme::
-* timeout::
-
-
-File: grub.info, Node: biosnum, Next: chosen, Up: Special environment variables
-
-13.1.1 biosnum
---------------
-
-When chain-loading another boot loader (*note Chain-loading::), GRUB may
-need to know what BIOS drive number corresponds to the root device
-(*note root::) so that it can set up registers properly. If the
-BIOSNUM variable is set, it overrides GRUB's own means of guessing this.
-
- For an alternative approach which also changes BIOS drive mappings
-for the chain-loaded system, *note drivemap::.
-
-
-File: grub.info, Node: chosen, Next: color_highlight, Prev: biosnum, Up: Special environment variables
-
-13.1.2 chosen
--------------
-
-When executing a menu entry, GRUB sets the CHOSEN variable to the title
-of the entry being executed.
-
- If the menu entry is in one or more submenus, then CHOSEN is set to
-the titles of each of the submenus starting from the top level followed
-by the title of the menu entry itself, separated by `>'.
-
-
-File: grub.info, Node: color_highlight, Next: color_normal, Prev: chosen, Up: Special environment variables
-
-13.1.3 color_highlight
-----------------------
-
-This variable contains the "highlight" foreground and background
-terminal colors, separated by a slash (`/'). Setting this variable
-changes those colors. For the available color names, *note
-color_normal::.
-
- The default is `black/white'.
-
-
-File: grub.info, Node: color_normal, Next: debug, Prev: color_highlight, Up: Special environment variables
-
-13.1.4 color_normal
--------------------
-
-This variable contains the "normal" foreground and background terminal
-colors, separated by a slash (`/'). Setting this variable changes
-those colors. Each color must be a name from the following list:
-
- * black
-
- * blue
-
- * green
-
- * cyan
-
- * red
-
- * magenta
-
- * brown
-
- * light-gray
-
- * dark-gray
-
- * light-blue
-
- * light-green
-
- * light-cyan
-
- * light-red
-
- * light-magenta
-
- * yellow
-
- * white
-
- The default is `white/black'.
-
-
-File: grub.info, Node: debug, Next: default, Prev: color_normal, Up: Special environment variables
-
-13.1.5 debug
-------------
-
-This variable may be set to enable debugging output from various
-components of GRUB. The value is a list of debug facility names
-separated by whitespace or `,', or `all' to enable all available
-debugging output.
-
-
-File: grub.info, Node: default, Next: fallback, Prev: debug, Up: Special environment variables
-
-13.1.6 default
---------------
-
-If this variable is set, it identifies a menu entry that should be
-selected by default, possibly after a timeout (*note timeout::). The
-entry may be identified by number or by title.
-
- If the entry is in a submenu, then it must be identified using the
-titles of each of the submenus starting from the top level followed by
-the number or title of the menu entry itself, separated by `>'. For
-example, take the following menu structure:
-
- Submenu 1
- Menu Entry 1
- Menu Entry 2
- Submenu 2
- Submenu 3
- Menu Entry 3
- Menu Entry 4
- Menu Entry 5
-
- "Menu Entry 3" would then be identified as `Submenu 2>Submenu 3>Menu
-Entry 3'.
-
- This variable is often set by `GRUB_DEFAULT' (*note Simple
-configuration::), `grub-set-default', or `grub-reboot'.
-
-
-File: grub.info, Node: fallback, Next: gfxmode, Prev: default, Up: Special environment variables
-
-13.1.7 fallback
----------------
-
-If this variable is set, it identifies a menu entry that should be
-selected if the default menu entry fails to boot. Entries are
-identified in the same way as for `default' (*note default::).
-
-
-File: grub.info, Node: gfxmode, Next: gfxpayload, Prev: fallback, Up: Special environment variables
-
-13.1.8 gfxmode
---------------
-
-If this variable is set, it sets 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
-`auto', which selects a platform-specific default that should look
-reasonable.
-
- The resolution may be specified as a sequence of one or more modes,
-separated by commas (`,') or semicolons (`;'); each will be tried in
-turn until one is found. Each mode should be either `auto',
-`WIDTHxHEIGHT', or `WIDTHxHEIGHTxDEPTH'.
-
-
-File: grub.info, Node: gfxpayload, Next: gfxterm_font, Prev: gfxmode, Up: Special environment variables
-
-13.1.9 gfxpayload
------------------
-
-If this variable is set, it controls the video mode in which the Linux
-kernel starts up, replacing the `vga=' boot option (*note linux::). It
-may be set to `text' to force the Linux kernel to boot in normal text
-mode, `keep' to preserve the graphics mode set using `gfxmode', or any
-of the permitted values for `gfxmode' to set a particular graphics mode
-(*note gfxmode::).
-
- 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, set this variable to
-`text' and GRUB will tell Linux to boot in normal text mode.
-
- The default is platform-specific. On platforms with a native text
-mode (such as PC BIOS platforms), the default is `text'. Otherwise the
-default may be `auto' or a specific video mode.
-
- This variable is often set by `GRUB_GFXPAYLOAD_LINUX' (*note Simple
-configuration::).
-
-
-File: grub.info, Node: gfxterm_font, Next: icondir, Prev: gfxpayload, Up: Special environment variables
-
-13.1.10 gfxterm_font
---------------------
-
-If this variable is set, it names a font to use for text on the
-`gfxterm' graphical terminal. Otherwise, `gfxterm' may use any
-available font.
-
-
-File: grub.info, Node: icondir, Next: lang, Prev: gfxterm_font, Up: Special environment variables
-
-13.1.11 icondir
----------------
-
-If this variable is set, it names a directory in which the GRUB
-graphical menu should look for icons after looking in the theme's
-`icons' directory. *Note Theme file format::.
-
-
-File: grub.info, Node: lang, Next: locale_dir, Prev: icondir, Up: Special environment variables
-
-13.1.12 lang
-------------
-
-If this variable is set, it names the language code that the `gettext'
-command (*note gettext::) uses to translate strings. For example,
-French would be named as `fr', and Simplified Chinese as `zh_CN'.
-
- `grub-mkconfig' (*note Simple configuration::) will try to set a
-reasonable default for this variable based on the system locale.
-
-
-File: grub.info, Node: locale_dir, Next: menu_color_highlight, Prev: lang, Up: Special environment variables
-
-13.1.13 locale_dir
-------------------
-
-If this variable is set, it names the directory where translation files
-may be found (*note gettext::), usually `/boot/grub/locale'. Otherwise,
-internationalization is disabled.
-
- `grub-mkconfig' (*note Simple configuration::) will set a reasonable
-default for this variable if internationalization is needed and any
-translation files are available.
-
-
-File: grub.info, Node: menu_color_highlight, Next: menu_color_normal, Prev: locale_dir, Up: Special environment variables
-
-13.1.14 menu_color_highlight
-----------------------------
-
-This variable contains the foreground and background colors to be used
-for the highlighted menu entry, separated by a slash (`/'). Setting
-this variable changes those colors. For the available color names,
-*note color_normal::.
-
- The default is the value of `color_highlight' (*note
-color_highlight::).
-
-
-File: grub.info, Node: menu_color_normal, Next: net_pxe_boot_file, Prev: menu_color_highlight, Up: Special environment variables
-
-13.1.15 menu_color_normal
--------------------------
-
-This variable contains the foreground and background colors to be used
-for non-highlighted menu entries, separated by a slash (`/'). Setting
-this variable changes those colors. For the available color names,
-*note color_normal::.
-
- The default is the value of `color_normal' (*note color_normal::).
-
-
-File: grub.info, Node: net_pxe_boot_file, Next: net_pxe_dhcp_server_name, Prev: menu_color_normal, Up: Special environment variables
-
-13.1.16 net_pxe_boot_file
--------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_dhcp_server_name, Next: net_pxe_domain, Prev: net_pxe_boot_file, Up: Special environment variables
-
-13.1.17 net_pxe_dhcp_server_name
---------------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_domain, Next: net_pxe_extensionspath, Prev: net_pxe_dhcp_server_name, Up: Special environment variables
-
-13.1.18 net_pxe_domain
-----------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_extensionspath, Next: net_pxe_hostname, Prev: net_pxe_domain, Up: Special environment variables
-
-13.1.19 net_pxe_extensionspath
-------------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_hostname, Next: net_pxe_ip, Prev: net_pxe_extensionspath, Up: Special environment variables
-
-13.1.20 net_pxe_hostname
-------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_ip, Next: net_pxe_mac, Prev: net_pxe_hostname, Up: Special environment variables
-
-13.1.21 net_pxe_ip
-------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_mac, Next: net_pxe_rootpath, Prev: net_pxe_ip, Up: Special environment variables
-
-13.1.22 net_pxe_mac
--------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: net_pxe_rootpath, Next: pager, Prev: net_pxe_mac, Up: Special environment variables
-
-13.1.23 net_pxe_rootpath
-------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: pager, Next: prefix, Prev: net_pxe_rootpath, Up: Special environment variables
-
-13.1.24 pager
--------------
-
-If set to `1', pause output after each screenful and wait for keyboard
-input. The default is not to pause output.
-
-
-File: grub.info, Node: prefix, Next: pxe_blksize, Prev: pager, Up: Special environment variables
-
-13.1.25 prefix
---------------
-
-The location of the `/boot/grub' directory as an absolute file name
-(*note File name syntax::). This is normally set by GRUB at startup
-based on information provided by `grub-install'. GRUB modules are
-dynamically loaded from this directory, so it must be set correctly in
-order for many parts of GRUB to work.
-
-
-File: grub.info, Node: pxe_blksize, Next: pxe_default_gateway, Prev: prefix, Up: Special environment variables
-
-13.1.26 pxe_blksize
--------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: pxe_default_gateway, Next: pxe_default_server, Prev: pxe_blksize, Up: Special environment variables
-
-13.1.27 pxe_default_gateway
----------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: pxe_default_server, Next: root, Prev: pxe_default_gateway, Up: Special environment variables
-
-13.1.28 pxe_default_server
---------------------------
-
-*Note Network::.
-
-
-File: grub.info, Node: root, Next: superusers, Prev: pxe_default_server, Up: Special environment variables
-
-13.1.29 root
-------------
-
-The root device name (*note Device syntax::). Any file names that do
-not specify an explicit device name are read from this device. The
-default is normally set by GRUB at startup based on the value of
-`prefix' (*note prefix::).
-
- For example, if GRUB was installed to the first partition of the
-first hard disk, then `prefix' might be set to `(hd0,msdos1)/boot/grub'
-and `root' to `hd0,msdos1'.
-
-
-File: grub.info, Node: superusers, Next: theme, Prev: root, Up: Special environment variables
-
-13.1.30 superusers
-------------------
-
-This variable may be set to a list of superuser names to enable
-authentication support. *Note Security::.
-
-
-File: grub.info, Node: theme, Next: timeout, Prev: superusers, Up: Special environment variables
-
-13.1.31 theme
--------------
-
-This variable may be set to a directory containing a GRUB graphical menu
-theme. *Note Theme file format::.
-
- This variable is often set by `GRUB_THEME' (*note Simple
-configuration::).
-
-
-File: grub.info, Node: timeout, Prev: theme, Up: Special environment variables
-
-13.1.32 timeout
----------------
-
-If this variable is set, it specifies the time in seconds to wait for
-keyboard input before booting the default menu entry. A timeout of `0'
-means to boot the default entry immediately without displaying the
-menu; a timeout of `-1' (or unset) means to wait indefinitely.
-
- This variable is often set by `GRUB_TIMEOUT' or
-`GRUB_HIDDEN_TIMEOUT' (*note Simple configuration::).
-
-
-File: grub.info, Node: Environment block, Prev: Special environment variables, Up: Environment
-
-13.2 The GRUB environment block
-===============================
-
-It is often useful to be able to remember a small amount of information
-from one boot to the next. For example, you might want to set the
-default menu entry based on what was selected the last time. GRUB
-deliberately does not implement support for writing files in order to
-minimise the possibility of the boot loader being responsible for file
-system corruption, so a GRUB configuration file cannot just create a
-file in the ordinary way. However, GRUB provides an "environment
-block" which can be used to save a small amount of state.
-
- The environment block is a preallocated 1024-byte file, which
-normally lives in `/boot/grub/grubenv' (although you should not assume
-this). At boot time, the `load_env' command (*note load_env::) loads
-environment variables from it, and the `save_env' (*note save_env::)
-command saves environment variables to it. From a running system, the
-`grub-editenv' utility can be used to edit the environment block.
-
- For safety reasons, this storage is only available when installed on
-a plain disk (no LVM or RAID), using a non-checksumming filesystem (no
-ZFS), and using BIOS or EFI functions (no ATA, USB or IEEE1275).
-
- `grub-mkconfig' uses this facility to implement `GRUB_SAVEDEFAULT'
-(*note Simple configuration::).
-
-
-File: grub.info, Node: Commands, Next: Security, Prev: Environment, Up: Top
-
-14 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.
-
- In rescue mode, only the `insmod' (*note insmod::), `ls' (*note
-ls::), `set' (*note set::), and `unset' (*note unset::) commands are
-normally available. If you end up in rescue mode and do not know what
-to do, then *note GRUB only offers a rescue shell::.
-
-* Menu:
-
-* Menu-specific commands::
-* General commands::
-* Command-line and menu entry commands::
-
-
-File: grub.info, Node: Menu-specific commands, Next: General commands, Up: Commands
-
-14.1 The list of commands for the menu only
-===========================================
-
-The semantics used in parsing the configuration file are the following:
-
- * 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.
-
- These commands can only be used in the menu:
-
-* Menu:
-
-* menuentry:: Start a menu entry
-* submenu:: Group menu entries
-
-
-File: grub.info, Node: menuentry, Next: submenu, Up: Menu-specific commands
-
-14.1.1 menuentry
-----------------
-
- -- Command: menuentry TITLE [`--class=class' ...] [`--users=users']
- [`--hotkey=key'] { COMMAND; ... }
- This defines a GRUB menu entry named TITLE. When this entry is
- selected from the menu, GRUB will set the CHOSEN environment
- variable to TITLE, execute the list of commands given within
- braces, and if the last command in the list returned successfully
- and a kernel was loaded it will execute the `boot' command.
-
- The `--class' option may be used any number of times to group menu
- entries into classes. Menu themes may display different classes
- using different styles.
-
- The `--users' option grants specific users access to specific menu
- entries. *Note Security::.
-
- The `--hotkey' option associates a hotkey with a menu entry. KEY
- may be a single letter, or one of the aliases `backspace', `tab',
- or `delete'.
-
-
-File: grub.info, Node: submenu, Prev: menuentry, Up: Menu-specific commands
-
-14.1.2 submenu
---------------
-
- -- Command: submenu TITLE [`--class=class' ...] [`--users=users']
- [`--hotkey=key'] { MENU ENTRIES ... }
- This defines a submenu. An entry called TITLE will be added to the
- menu; when that entry is selected, a new menu will be displayed
- showing all the entries within this submenu.
-
- All options are the same as in the `menuentry' command (*note
- menuentry::).
-
-
-File: grub.info, Node: General commands, Next: Command-line and menu entry commands, Prev: Menu-specific commands, Up: Commands
-
-14.2 The list of general commands
-=================================
-
-Commands usable anywhere in the menu and in the command-line.
-
-* Menu:
-
-* serial:: Set up a serial device
-* terminal_input:: Manage input terminals
-* terminal_output:: Manage output terminals
-* terminfo:: Define terminal type
-
-
-File: grub.info, Node: serial, Next: terminal_input, Up: General commands
-
-14.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_input' or `terminal_output' command is used (*note
- terminal_input::, *note terminal_output::).
-
- See also *note Serial terminal::.
-
-
-File: grub.info, Node: terminal_input, Next: terminal_output, Prev: serial, Up: General commands
-
-14.2.2 terminal_input
----------------------
-
- -- Command: terminal_input [`--append'|`--remove'] [terminal1]
- [terminal2] ...
- List or select an input terminal.
-
- With no arguments, list the active and available input terminals.
-
- With `--append', add the named terminals to the list of active
- input terminals; any of these may be used to provide input to GRUB.
-
- With `--remove', remove the named terminals from the active list.
-
- With no options but a list of terminal names, make only the listed
- terminal names active.
-
-
-File: grub.info, Node: terminal_output, Next: terminfo, Prev: terminal_input, Up: General commands
-
-14.2.3 terminal_output
-----------------------
-
- -- Command: terminal_output [`--append'|`--remove'] [terminal1]
- [terminal2] ...
- List or select an output terminal.
-
- With no arguments, list the active and available output terminals.
-
- With `--append', add the named terminals to the list of active
- output terminals; all of these will receive output from GRUB.
-
- With `--remove', remove the named terminals from the active list.
-
- With no options but a list of terminal names, make only the listed
- terminal names active.
-
-
-File: grub.info, Node: terminfo, Prev: terminal_output, Up: General commands
-
-14.2.4 terminfo
----------------
-
- -- Command: terminfo [-a|-u|-v] [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.
-
- The currently available terminal types are `vt100', `vt100-color',
- `ieee1275', and `dumb'. If you need other terminal types, please
- contact us to discuss the best way to include support for these in
- GRUB.
-
- The `-a' (`--ascii'), `-u' (`--utf8'), and `-v' (`--visual-utf8')
- options control how non-ASCII text is displayed. `-a' specifies
- an ASCII-only terminal; `-u' specifies logically-ordered UTF-8;
- and `-v' specifies "visually-ordered UTF-8" (in other words,
- arranged such that a terminal emulator without bidirectional text
- support will display right-to-left text in the proper order; this
- is not really proper UTF-8, but a workaround).
-
- If no option or terminal type is specified, the current terminal
- type is printed.
-
-
-File: grub.info, Node: Command-line and menu entry commands, Prev: General commands, Up: Commands
-
-14.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
-* badram:: Filter out bad regions of RAM
-* 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
-* cpuid:: Check for CPU features
-* 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
-* false:: Do nothing, unsuccessfully
-* gettext:: Translate a string
-* gptsync:: Fill an MBR based on GPT entries
-* halt:: Shut down your computer
-* help:: Show help messages
-* initrd:: Load a Linux initrd
-* initrd16:: Load a Linux initrd (16-bit mode)
-* insmod:: Insert a module
-* keystatus:: Check key modifier status
-* linux:: Load a Linux kernel
-* linux16:: Load a Linux kernel (16-bit mode)
-* list_env:: List variables in environment block
-* load_env:: Load variables from environment block
-* loopback:: Make a device from a filesystem image
-* ls:: List devices or files
-* normal:: Enter normal mode
-* normal_exit:: Exit from normal mode
-* parttool:: Modify partition table entries
-* password:: Set a clear-text password
-* password_pbkdf2:: Set a hashed password
-* play:: Play a tune
-* pxe_unload:: Unload the PXE environment
-* read:: Read user input
-* reboot:: Reboot your computer
-* save_env:: Save variables to environment block
-* search:: Search devices by file, label, or UUID
-* sendkey:: Emulate keystrokes
-* set:: Set an environment variable
-* true:: Do nothing, successfully
-* unset:: Unset an environment variable
-* uppermem:: Set the upper memory size
-
-
-File: grub.info, Node: acpi, Next: badram, Up: Command-line and menu entry commands
-
-14.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: badram, Next: blocklist, Prev: acpi, Up: Command-line and menu entry commands
-
-14.3.2 badram
--------------
-
- -- Command: badram addr,mask[,addr,mask...]
- Filter out bad RAM.
-
- This command notifies the memory manager that specified regions of
-RAM ought to be filtered out (usually, because they're damaged). This
-remains in effect after a payload kernel has been loaded by GRUB, as
-long as the loaded kernel obtains its memory map from GRUB. Kernels
-that support this include Linux, GNU Mach, the kernel of FreeBSD and
-Multiboot kernels in general.
-
- Syntax is the same as provided by the Memtest86+ utility
-(http://www.memtest.org/): a list of address/mask pairs. Given a
-page-aligned address and a base address / mask pair, if all the bits of
-the page-aligned address that are enabled by the mask match with the
-base address, it means this page is to be filtered. This syntax makes
-it easy to represent patterns that are often result of memory damage,
-due to physical distribution of memory cells.
-
-
-File: grub.info, Node: blocklist, Next: boot, Prev: badram, Up: Command-line and menu entry commands
-
-14.3.3 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
-
-14.3.4 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
-
-14.3.5 cat
-----------
-
- -- Command: cat [`--dos'] 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
-
- If the `--dos' option is used, then carriage return / new line
- pairs will be displayed as a simple new line. Otherwise, the
- carriage return will be displayed as a control character (`<d>')
- to make it easier to see when boot problems are caused by a file
- formatted using DOS-style line endings.
-
-
-File: grub.info, Node: chainloader, Next: cmp, Prev: cat, Up: Command-line and menu entry commands
-
-14.3.6 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.
-
-
-File: grub.info, Node: cmp, Next: configfile, Prev: chainloader, Up: Command-line and menu entry commands
-
-14.3.7 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: cpuid, Prev: cmp, Up: Command-line and menu entry commands
-
-14.3.8 configfile
------------------
-
- -- Command: configfile file
- Load FILE as a configuration file. If FILE defines any menu
- entries, then show a menu containing them immediately.
-
-
-File: grub.info, Node: cpuid, Next: crc, Prev: configfile, Up: Command-line and menu entry commands
-
-14.3.9 cpuid
-------------
-
- -- Command: cpuid [-l]
- Check for CPU features. This command is only available on x86
- systems.
-
- With the `-l' option, return true if the CPU supports long mode
- (64-bit).
-
- If invoked without options, this command currently behaves as if
- it had been invoked with `-l'. This may change in the future.
-
-
-File: grub.info, Node: crc, Next: date, Prev: cpuid, Up: Command-line and menu entry commands
-
-14.3.10 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
-
-14.3.11 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
-
-14.3.12 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
-
-14.3.13 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: false, Prev: echo, Up: Command-line and menu entry commands
-
-14.3.14 export
---------------
-
- -- Command: export envvar
- Export the environment variable ENVVAR. Exported variables are
- visible to subsidiary configuration files loaded using
- `configfile'.
-
-
-File: grub.info, Node: false, Next: gettext, Prev: export, Up: Command-line and menu entry commands
-
-14.3.15 false
--------------
-
- -- Command: false
- Do nothing, unsuccessfully. This is mainly useful in control
- constructs such as `if' and `while' (*note Shell-like scripting::).
-
-
-File: grub.info, Node: gettext, Next: gptsync, Prev: false, Up: Command-line and menu entry commands
-
-14.3.16 gettext
----------------
-
- -- Command: gettext string
- Translate STRING into the current language.
-
- The current language code is stored in the `lang' variable in
- GRUB's environment (*note lang::). Translation files in MO format
- are read from `locale_dir' (*note locale_dir::), usually
- `/boot/grub/locale'.
-
-
-File: grub.info, Node: gptsync, Next: halt, Prev: gettext, Up: Command-line and menu entry commands
-
-14.3.17 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
-
-14.3.18 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: initrd, Prev: halt, Up: Command-line and menu entry commands
-
-14.3.19 help
-------------
-
- -- Command: help [pattern ...]
- Display helpful information about builtin commands. If you do not
- specify PATTERN, this command shows short descriptions of all
- available commands.
-
- If you specify any PATTERNS, it displays longer information about
- each of the commands whose names begin with those PATTERNS.
-
-
-File: grub.info, Node: initrd, Next: initrd16, Prev: help, Up: Command-line and menu entry commands
-
-14.3.20 initrd
---------------
-
- -- Command: initrd file
- Load an initial ramdisk for a Linux kernel image, and set the
- appropriate parameters in the Linux setup area in memory. This
- may only be used after the `linux' command (*note linux::) has
- been run. See also *note GNU/Linux::.
-
-
-File: grub.info, Node: initrd16, Next: insmod, Prev: initrd, Up: Command-line and menu entry commands
-
-14.3.21 initrd16
-----------------
-
- -- Command: initrd16 file
- Load an initial ramdisk for a Linux kernel image to be booted in
- 16-bit mode, and set the appropriate parameters in the Linux setup
- area in memory. This may only be used after the `linux16' command
- (*note linux16::) has been run. See also *note GNU/Linux::.
-
- This command is only available on x86 systems.
-
-
-File: grub.info, Node: insmod, Next: keystatus, Prev: initrd16, Up: Command-line and menu entry commands
-
-14.3.22 insmod
---------------
-
- -- Command: insmod module
- Insert the dynamic GRUB module called MODULE.
-
-
-File: grub.info, Node: keystatus, Next: linux, Prev: insmod, Up: Command-line and menu entry commands
-
-14.3.23 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: linux, Next: linux16, Prev: keystatus, Up: Command-line and menu entry commands
-
-14.3.24 linux
--------------
-
- -- Command: linux file ...
- Load a Linux kernel image from FILE. The rest of the line is
- passed verbatim as the "kernel command-line". Any initrd must be
- reloaded after using this command (*note initrd::).
-
- On x86 systems, the kernel will be booted using the 32-bit boot
- protocol. Note that this means that the `vga=' boot option will
- not work; if you want to set a special video mode, you will need
- to use GRUB commands such as `set gfxpayload=1024x768' or `set
- gfxpayload=keep' (to keep the same mode as used in GRUB) instead.
- GRUB can automatically detect some uses of `vga=' and translate
- them to appropriate settings of `gfxpayload'. The `linux16'
- command (*note linux16::) avoids this restriction.
-
-
-File: grub.info, Node: linux16, Next: list_env, Prev: linux, Up: Command-line and menu entry commands
-
-14.3.25 linux16
----------------
-
- -- Command: linux16 file ...
- Load a Linux kernel image from FILE in 16-bit mode. The rest of
- the line is passed verbatim as the "kernel command-line". Any
- initrd must be reloaded after using this command (*note
- initrd16::).
-
- The kernel will be booted using the traditional 16-bit boot
- protocol. As well as bypassing problems with `vga=' described in
- *note linux::, this permits booting some other programs that
- implement the Linux boot protocol for the sake of convenience.
-
- This command is only available on x86 systems.
-
-
-File: grub.info, Node: list_env, Next: load_env, Prev: linux16, Up: Command-line and menu entry commands
-
-14.3.26 list_env
-----------------
-
- -- Command: list_env [`-f' file]
- List all variables in the environment block file. *Note
- Environment block::.
-
- The `-f' option overrides the default location of the environment
- block.
-
-
-File: grub.info, Node: load_env, Next: loopback, Prev: list_env, Up: Command-line and menu entry commands
-
-14.3.27 load_env
-----------------
-
- -- Command: load_env [`-f' file]
- Load all variables from the environment block file into the
- environment. *Note Environment block::.
-
- The `-f' option overrides the default location of the environment
- block.
-
-
-File: grub.info, Node: loopback, Next: ls, Prev: load_env, Up: Command-line and menu entry commands
-
-14.3.28 loopback
-----------------
-
- -- Command: loopback [`-d'] device file
- Make the device named DEVICE correspond to the contents of the
- filesystem image in FILE. For example:
-
- loopback loop0 /path/to/image
- ls (loop0)/
-
- With the `-d' option, delete a device previously created using this
- command.
-
-
-File: grub.info, Node: ls, Next: normal, Prev: loopback, Up: Command-line and menu entry commands
-
-14.3.29 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: normal, Next: normal_exit, Prev: ls, Up: Command-line and menu entry commands
-
-14.3.30 normal
---------------
-
- -- Command: normal [file]
- Enter normal mode and display the GRUB menu.
-
- In normal mode, commands, filesystem modules, and cryptography
- modules are automatically loaded, and the full GRUB script parser
- is available. Other modules may be explicitly loaded using
- `insmod' (*note insmod::).
-
- If a FILE is given, then commands will be read from that file.
- Otherwise, they will be read from `$prefix/grub.cfg' if it exists.
-
- `normal' may be called from within normal mode, creating a nested
- environment. It is more usual to use `configfile' (*note
- configfile::) for this.
-
-
-File: grub.info, Node: normal_exit, Next: parttool, Prev: normal, Up: Command-line and menu entry commands
-
-14.3.31 normal_exit
--------------------
-
- -- Command: normal_exit
- Exit normal mode (*note normal::). If this instance of normal
- mode was not nested within another one, then return to rescue mode.
-
-
-File: grub.info, Node: parttool, Next: password, Prev: normal_exit, Up: Command-line and menu entry commands
-
-14.3.32 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: password, Next: password_pbkdf2, Prev: parttool, Up: Command-line and menu entry commands
-
-14.3.33 password
-----------------
-
- -- Command: password user clear-password
- Define a user named USER with password CLEAR-PASSWORD. *Note
- Security::.
-
-
-File: grub.info, Node: password_pbkdf2, Next: play, Prev: password, Up: Command-line and menu entry commands
-
-14.3.34 password_pbkdf2
------------------------
-
- -- Command: password_pbkdf2 user hashed-password
- Define a user named USER with password hash HASHED-PASSWORD. Use
- `grub-mkpasswd-pbkdf2' (*note Invoking grub-mkpasswd-pbkdf2::) to
- generate password hashes. *Note Security::.
-
-
-File: grub.info, Node: play, Next: pxe_unload, Prev: password_pbkdf2, Up: Command-line and menu entry commands
-
-14.3.35 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: pxe_unload, Next: read, Prev: play, Up: Command-line and menu entry commands
-
-14.3.36 pxe_unload
-------------------
-
- -- Command: pxe_unload
- Unload the PXE environment (*note Network::).
-
- This command is only available on PC BIOS systems.
-
-
-File: grub.info, Node: read, Next: reboot, Prev: pxe_unload, Up: Command-line and menu entry commands
-
-14.3.37 read
-------------
-
- -- Command: read [var]
- Read a line of input from the user. If an environment variable
- VAR is given, set that environment variable to the line of input
- that was read, with no terminating newline.
-
-
-File: grub.info, Node: reboot, Next: save_env, Prev: read, Up: Command-line and menu entry commands
-
-14.3.38 reboot
---------------
-
- -- Command: reboot
- Reboot the computer.
-
-
-File: grub.info, Node: save_env, Next: search, Prev: reboot, Up: Command-line and menu entry commands
-
-14.3.39 save_env
-----------------
-
- -- Command: save_env [`-f' file] var ...
- Save the named variables from the environment to the environment
- block file. *Note Environment block::.
-
- The `-f' option overrides the default location of the environment
- block.
-
-
-File: grub.info, Node: search, Next: sendkey, Prev: save_env, Up: Command-line and menu entry commands
-
-14.3.40 search
---------------
-
- -- Command: search [`--file'|`--label'|`--fs-uuid'] [`--set' [var]]
- [`--no-floppy'] name
- Search devices by file (`-f', `--file'), filesystem label (`-l',
- `--label'), or filesystem UUID (`-u', `--fs-uuid').
-
- If the `--set' option is used, the first device found is set as the
- value of environment variable VAR. The default variable is `root'.
-
- The `--no-floppy' option prevents searching floppy devices, which
- can be slow.
-
- The `search.file', `search.fs_label', and `search.fs_uuid'
- commands are aliases for `search --file', `search --label', and
- `search --fs-uuid' respectively.
-
-
-File: grub.info, Node: sendkey, Next: set, Prev: search, Up: Command-line and menu entry commands
-
-14.3.41 sendkey
----------------
-
- -- Command: sendkey [`--num'|`--caps'|`--scroll'|`--insert'|
- `--pause'|`--left-shift'|`--right-shift'|
- `--sysrq'|`--numkey'|`--capskey'|`--scrollkey'|
- `--insertkey'|`--left-alt'|`--right-alt'|
- `--left-ctrl'|`--right-ctrl' `on'|`off']... [`no-led']
- keystroke
- Insert keystrokes into the keyboard buffer when booting.
- Sometimes an operating system or chainloaded boot loader requires
- particular keys to be pressed: for example, one might need to
- press a particular key to enter "safe mode", or when chainloading
- another boot loader one might send keystrokes to it to navigate
- its menu.
-
- You may provide up to 16 keystrokes (the length of the BIOS
- keyboard buffer). Keystroke names may be upper-case or lower-case
- letters, digits, or taken from the following table:
-
- Name Key
- ---------------------------------------------------------------
- escape Escape
- exclam !
- at @
- numbersign #
- dollar $
- percent %
- caret ^
- ampersand &
- asterisk *
- parenleft (
- parenright )
- minus -
- underscore _
- equal =
- plus +
- backspace Backspace
- tab Tab
- bracketleft [
- braceleft {
- bracketright ]
- braceright }
- enter Enter
- control press and release Control
- semicolon ;
- colon :
- quote '
- doublequote "
- backquote `
- tilde ~
- shift press and release left Shift
- backslash \
- bar |
- comma ,
- less <
- period .
- greater >
- slash /
- question ?
- rshift press and release right Shift
- alt press and release Alt
- space space bar
- capslock Caps Lock
- F1 F1
- F2 F2
- F3 F3
- F4 F4
- F5 F5
- F6 F6
- F7 F7
- F8 F8
- F9 F9
- F10 F10
- F11 F11
- F12 F12
- num1 1 (numeric keypad)
- num2 2 (numeric keypad)
- num3 3 (numeric keypad)
- num4 4 (numeric keypad)
- num5 5 (numeric keypad)
- num6 6 (numeric keypad)
- num7 7 (numeric keypad)
- num8 8 (numeric keypad)
- num9 9 (numeric keypad)
- num0 0 (numeric keypad)
- numperiod . (numeric keypad)
- numend End (numeric keypad)
- numdown Down (numeric keypad)
- numpgdown Page Down (numeric keypad)
- numleft Left (numeric keypad)
- numcenter 5 with Num Lock inactive (numeric
- keypad)
- numright Right (numeric keypad)
- numhome Home (numeric keypad)
- numup Up (numeric keypad)
- numpgup Page Up (numeric keypad)
- numinsert Insert (numeric keypad)
- numdelete Delete (numeric keypad)
- numasterisk * (numeric keypad)
- numminus - (numeric keypad)
- numplus + (numeric keypad)
- numslash / (numeric keypad)
- numenter Enter (numeric keypad)
- delete Delete
- insert Insert
- home Home
- end End
- pgdown Page Down
- pgup Page Up
- down Down
- up Up
- left Left
- right Right
-
- As well as keystrokes, the `sendkey' command takes various options
- that affect the BIOS keyboard status flags. These options take an
- `on' or `off' parameter, specifying that the corresponding status
- flag be set or unset; omitting the option for a given status flag
- will leave that flag at its initial state at boot. The `--num',
- `--caps', `--scroll', and `--insert' options emulate setting the
- corresponding mode, while the `--numkey', `--capskey',
- `--scrollkey', and `--insertkey' options emulate pressing and
- holding the corresponding key. The other status flag options are
- self-explanatory.
-
- If the `--no-led' option is given, the status flag options will
- have no effect on keyboard LEDs.
-
- If the `sendkey' command is given multiple times, then only the
- last invocation has any effect.
-
- Since `sendkey' manipulates the BIOS keyboard buffer, it may cause
- hangs, reboots, or other misbehaviour on some systems. If the
- operating system or boot loader that runs after GRUB uses its own
- keyboard driver rather than the BIOS keyboard functions, then
- `sendkey' will have no effect.
-
- This command is only available on PC BIOS systems.
-
-
-File: grub.info, Node: set, Next: true, Prev: sendkey, Up: Command-line and menu entry commands
-
-14.3.42 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: true, Next: unset, Prev: set, Up: Command-line and menu entry commands
-
-14.3.43 true
-------------
-
- -- Command: true
- Do nothing, successfully. This is mainly useful in control
- constructs such as `if' and `while' (*note Shell-like scripting::).
-
-
-File: grub.info, Node: unset, Next: uppermem, Prev: true, Up: Command-line and menu entry commands
-
-14.3.44 unset
--------------
-
- -- Command: unset envvar
- Unset the environment variable ENVVAR.
-
-
-File: grub.info, Node: uppermem, Prev: unset, Up: Command-line and menu entry commands
-
-14.3.45 uppermem
-----------------
-
-This command is not yet implemented for GRUB 2, although it is planned.
-
-
-File: grub.info, Node: Security, Next: Supported kernels, Prev: Commands, Up: Top
-
-15 Authentication and authorisation
-***********************************
-
-By default, the boot loader interface is accessible to anyone with
-physical access to the console: anyone can select and edit any menu
-entry, and anyone can get direct access to a GRUB shell prompt. For
-most systems, this is reasonable since anyone with direct physical
-access has a variety of other ways to gain full access, and requiring
-authentication at the boot loader level would only serve to make it
-difficult to recover broken systems.
-
- However, in some environments, such as kiosks, it may be appropriate
-to lock down the boot loader to require authentication before
-performing certain operations.
-
- The `password' (*note password::) and `password_pbkdf2' (*note
-password_pbkdf2::) commands can be used to define users, each of which
-has an associated password. `password' sets the password in plain
-text, requiring `grub.cfg' to be secure; `password_pbkdf2' sets the
-password hashed using the Password-Based Key Derivation Function (RFC
-2898), requiring the use of `grub-mkpasswd-pbkdf2' (*note Invoking
-grub-mkpasswd-pbkdf2::) to generate password hashes.
-
- In order to enable authentication support, the `superusers'
-environment variable must be set to a list of usernames, separated by
-any of spaces, commas, semicolons, pipes, or ampersands. Superusers
-are permitted to use the GRUB command line, edit menu entries, and
-execute any menu entry. If `superusers' is set, then use of the
-command line is automatically restricted to superusers.
-
- Other users may be given access to specific menu entries by giving a
-list of usernames (as above) using the `--users' option to the
-`menuentry' command (*note menuentry::). If the `--users' option is
-not used for a menu entry, then that entry is unrestricted.
-
- Putting this together, a typical `grub.cfg' fragment might look like
-this:
-
- set superusers="root"
- password_pbkdf2 root grub.pbkdf2.sha512.10000.biglongstring
- password user1 insecure
-
- menuentry "May be run by any user" {
- set root=(hd0,1)
- linux /vmlinuz
- }
-
- menuentry "Superusers only" --users "" {
- set root=(hd0,1)
- linux /vmlinuz single
- }
-
- menuentry "May be run by user1 or a superuser" --users user1 {
- set root=(hd0,2)
- chainloader +1
- }
-
- The `grub-mkconfig' program does not yet have built-in support for
-generating configuration files with authentication. You can use
-`/etc/grub.d/40_custom' to add simple superuser authentication, by
-adding `set superusers=' and `password' or `password_pbkdf2' commands.
-
-
-File: grub.info, Node: Supported kernels, Next: Troubleshooting, Prev: Security, Up: Top
-
-16 Supported boot targets
-*************************
-
-X86 support is summarised in the following table. "Yes" means that the
-kernel works on the given platform, "crashes" means an early kernel
-crash which we hope will be fixed by concerned kernel developers. "no"
-means GRUB doesn't load the given kernel on a given platform.
-"headless" means that the kernel works but lacks console drivers (you
-can still use serial or network console). In case of "no" and
-"crashes" the reason is given in footnote.
- BIOS Coreboot
-BIOS chainloading yes no (1)
-NTLDR yes no (1)
-FreeBSD bootloader yes crashes (1)
-32-bit kFreeBSD yes crashes (2,6)
-64-bit kFreeBSD yes crashes (2,6)
-32-bit kNetBSD yes crashes (1)
-64-bit kNetBSD yes crashes (2)
-32-bit kOpenBSD yes yes
-64-bit kOpenBSD yes yes
-Multiboot yes yes
-Multiboot2 yes yes
-32-bit Linux (legacy protocol) yes no (1)
-64-bit Linux (legacy protocol) yes no (1)
-32-bit Linux (modern protocol) yes yes
-64-bit Linux (modern protocol) yes yes
-32-bit XNU yes ?
-64-bit XNU yes ?
-32-bit EFI chainloader no (3) no (3)
-64-bit EFI chainloader no (3) no (3)
-Appleloader no (3) no (3)
-
- Multiboot Qemu
-BIOS chainloading no (1) no (1)
-NTLDR no (1) no (1)
-FreeBSD bootloader crashes (1) crashes (1)
-32-bit kFreeBSD crashes (6) crashes (6)
-64-bit kFreeBSD crashes (6) crashes (6)
-32-bit kNetBSD crashes (1) crashes (1)
-64-bit kNetBSD yes yes
-32-bit kOpenBSD yes yes
-64-bit kOpenBSD yes yes
-Multiboot yes yes
-Multiboot2 yes yes
-32-bit Linux (legacy protocol) no (1) no (1)
-64-bit Linux (legacy protocol) no (1) no (1)
-32-bit Linux (modern protocol) yes yes
-64-bit Linux (modern protocol) yes yes
-32-bit XNU ? ?
-64-bit XNU ? ?
-32-bit EFI chainloader no (3) no (3)
-64-bit EFI chainloader no (3) no (3)
-Appleloader no (3) no (3)
-
- 32-bit EFI 64-bit EFI
-BIOS chainloading no (1) no (1)
-NTLDR no (1) no (1)
-FreeBSD bootloader crashes (1) crashes (1)
-32-bit kFreeBSD headless headless
-64-bit kFreeBSD headless headless
-32-bit kNetBSD crashes (1) crashes (1)
-64-bit kNetBSD yes yes
-32-bit kOpenBSD headless headless
-64-bit kOpenBSD headless headless
-Multiboot yes yes
-Multiboot2 yes yes
-32-bit Linux (legacy protocol) no (1) no (1)
-64-bit Linux (legacy protocol) no (1) no (1)
-32-bit Linux (modern protocol) yes yes
-64-bit Linux (modern protocol) yes yes
-32-bit XNU yes yes
-64-bit XNU yes (5) yes
-32-bit EFI chainloader yes no (4)
-64-bit EFI chainloader no (4) yes
-Appleloader yes yes
-
- IEEE1275
-BIOS chainloading no (1)
-NTLDR no (1)
-FreeBSD bootloader crashes (1)
-32-bit kFreeBSD crashes (6)
-64-bit kFreeBSD crashes (6)
-32-bit kNetBSD crashes (1)
-64-bit kNetBSD ?
-32-bit kOpenBSD ?
-64-bit kOpenBSD ?
-Multiboot ?
-Multiboot2 ?
-32-bit Linux (legacy protocol) no (1)
-64-bit Linux (legacy protocol) no (1)
-32-bit Linux (modern protocol) ?
-64-bit Linux (modern protocol) ?
-32-bit XNU ?
-64-bit XNU ?
-32-bit EFI chainloader no (3)
-64-bit EFI chainloader no (3)
-Appleloader no (3)
-
- 1. Requires BIOS
-
- 2. Crashes because the memory at 0x0-0x1000 isn't available
-
- 3. EFI only
-
- 4. 32-bit and 64-bit EFI have different structures and work in
- different CPU modes so it's not possible to chainload 32-bit
- bootloader on 64-bit platform and vice-versa
-
- 5. Some modules may need to be disabled
-
- 6. Requires ACPI
-
- PowerPC and Sparc ports support only Linux. MIPS port supports Linux
-and multiboot2.
-
-17 Boot tests
-*************
-
-As you have seen in previous chapter the support matrix is pretty big
-and some of the configurations are only rarely used. To ensure the
-quality bootchecks are available for all x86 targets except EFI
-chainloader, Appleloader and XNU. All x86 platforms have bootcheck
-facility except ieee1275. Multiboot, multiboot2, BIOS chainloader,
-ntldr and freebsd-bootloader boot targets are tested only with a fake
-kernel images. Only Linux is tested among the payloads using Linux
-protocols.
-
- Following variables must be defined:
-
-GRUB_PAYLOADS_DIR directory containing the required kernels
-GRUB_CBFSTOOL cbfstoll from Coreboot package (for coreboot
- platform only)
-GRUB_COREBOOT_ROM empty Coreboot ROM
-GRUB_QEMU_OPTS additional options to be supplied to QEMU
-
- Required files are:
-
-kfreebsd_env.i386 32-bit kFreeBSD device hints
-kfreebsd.i386 32-bit FreeBSD kernel image
-kfreebsd.x86_64, same from 64-bit kFreeBSD
-kfreebsd_env.x86_64
-knetbsd.i386 32-bit NetBSD kernel image
-knetbsd.miniroot.i386 32-bit kNetBSD miniroot.kmod.
-knetbsd.x86_64, same from 64-bit kNetBSD
-knetbsd.miniroot.x86_64
-kopenbsd.i386 32-bit OpenBSD kernel bsd.rd image
-kopenbsd.x86_64 same from 64-bit kOpenBSD
-linux.i386 32-bit Linux
-linux.x86_64 64-bit Linux
-
-
-File: grub.info, Node: Troubleshooting, Next: Invoking grub-install, Prev: Supported kernels, Up: Top
-
-18 Error messages produced by GRUB
-**********************************
-
-* Menu:
-
-* GRUB only offers a rescue shell::
-
-
-File: grub.info, Node: GRUB only offers a rescue shell, Up: Troubleshooting
-
-18.1 GRUB only offers a rescue shell
-====================================
-
-GRUB's normal start-up procedure involves setting the `prefix'
-environment variable to a value set in the core image by
-`grub-install', setting the `root' variable to match, loading the
-`normal' module from the prefix, and running the `normal' command
-(*note normal::). This command is responsible for reading
-`/boot/grub/grub.cfg', running the menu, and doing all the useful
-things GRUB is supposed to do.
-
- If, instead, you only get a rescue shell, this usually means that
-GRUB failed to load the `normal' module for some reason. It may be
-possible to work around this temporarily: for instance, if the reason
-for the failure is that `prefix' is wrong (perhaps it refers to the
-wrong device, or perhaps the path to `/boot/grub' was not correctly
-made relative to the device), then you can correct this and enter
-normal mode manually:
-
- # Inspect the current prefix (and other preset variables):
- set
- # Find out which devices are available:
- ls
- # Set to the correct value, which might be something like this:
- set prefix=(hd0,1)/grub
- set root=(hd0,1)
- insmod normal
- normal
-
- However, any problem that leaves you in the rescue shell probably
-means that GRUB was not correctly installed. It may be more useful to
-try to reinstall it properly using `grub-install DEVICE' (*note
-Invoking grub-install::). When doing this, there are a few things to
-remember:
-
- * Drive ordering in your operating system may not be the same as the
- boot drive ordering used by your firmware. Do not assume that
- your first hard drive (e.g. `/dev/sda') is the one that your
- firmware will boot from. `device.map' (*note Device map::) can be
- used to override this, but it is usually better to use UUIDs or
- file system labels and avoid depending on drive ordering entirely.
-
- * At least on BIOS systems, if you tell `grub-install' to install
- GRUB to a partition but GRUB has already been installed in the
- master boot record, then the GRUB installation in the partition
- will be ignored.
-
- * If possible, it is generally best to avoid installing GRUB to a
- partition (unless it is a special partition for the use of GRUB
- alone, such as the BIOS Boot Partition used on GPT). Doing this
- means that GRUB may stop being able to read its core image due to
- a file system moving blocks around, such as while defragmenting,
- running checks, or even during normal operation. Installing to
- the whole disk device is normally more robust.
-
- * Check that GRUB actually knows how to read from the device and
- file system containing `/boot/grub'. It will not be able to read
- from encrypted devices, nor from file systems for which support
- has not yet been added to GRUB.
-
-
-File: grub.info, Node: Invoking grub-install, Next: Invoking grub-mkconfig, Prev: Troubleshooting, Up: Top
-
-19 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.
-
-`--boot-directory=DIR'
- Install GRUB images under the directory `DIR/grub/' This option is
- useful when you want to install GRUB into a separate partition or
- a removable disk. If this option is not specified then it
- defaults to `/boot', so
-
- grub-install /dev/sda
-
- is equivalent to
-
- grub-install --boot-directory=/boot/ /dev/sda
-
- Here is an example in which you have a separate "boot" partition
- which is mounted on `/mnt/boot':
-
- grub-install --boot-directory=/mnt/boot /dev/sdb
-
-`--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: Invoking grub-mkpasswd-pbkdf2, Prev: Invoking grub-install, Up: Top
-
-20 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: Invoking grub-mkpasswd-pbkdf2, Next: Invoking grub-mkrescue, Prev: Invoking grub-mkconfig, Up: Top
-
-21 Invoking grub-mkpasswd-pbkdf2
-********************************
-
-The program `grub-mkpasswd-pbkdf2' generates password hashes for GRUB
-(*note Security::).
-
- grub-mkpasswd-pbkdf2
-
- `grub-mkpasswd-pbkdf2' accepts the following options:
-
-`-c NUMBER'
-`--iteration-count=NUMBER'
- Number of iterations of the underlying pseudo-random function.
- Defaults to 10000.
-
-`-l NUMBER'
-`--buflen=NUMBER'
- Length of the generated hash. Defaults to 64.
-
-`-s NUMBER'
-`--salt=NUMBER'
- Length of the salt. Defaults to 64.
-
-
-File: grub.info, Node: Invoking grub-mkrescue, Next: Obtaining and Building GRUB, Prev: Invoking grub-mkpasswd-pbkdf2, Up: Top
-
-22 Invoking grub-mkrescue
-*************************
-
-The program `grub-mkrescue' generates a bootable GRUB rescue image
-(*note Making a GRUB bootable CD-ROM::).
-
- grub-mkrescue -o grub.iso
-
- All arguments not explicitly listed as `grub-mkrescue' options are
-passed on directly to `xorriso' in `mkisofs' emulation mode. Options
-passed to `xorriso' will normally be interpreted as `mkisofs' options;
-if the option `--' is used, then anything after that will be
-interpreted as native `xorriso' options.
-
- Non-option arguments specify additional source directories. This is
-commonly used to add extra files to the image:
-
- mkdir -p disk/boot/grub
- (add extra files to `disk/boot/grub')
- grub-mkrescue -o grub.iso disk
-
- `grub-mkrescue' 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'
- Save output in FILE. This "option" is required.
-
-`--modules=MODULES'
- Pre-load the named GRUB modules in the image. Multiple entries in
- MODULES should be separated by whitespace (so you will probably
- need to quote this for your shell).
-
-`--rom-directory=DIR'
- If generating images for the QEMU or Coreboot platforms, copy the
- resulting `qemu.img' or `coreboot.elf' files respectively to the
- DIR directory as well as including them in the image.
-
-`--xorriso=FILE'
- Use FILE as the `xorriso' program, rather than the built-in
- default.
-
-`--grub-mkimage=FILE'
- Use FILE as the `grub-mkimage' program, rather than the built-in
- default.
-
-
-File: grub.info, Node: Obtaining and Building GRUB, Next: Reporting bugs, Prev: Invoking grub-mkrescue, 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.99, so the file you
-should grab is:
-
- `ftp://alpha.gnu.org/gnu/grub/grub-1.99.tar.gz'
-
- To unbundle GRUB use the instruction:
-
- zcat grub-1.99.tar.gz | tar xvf -
-
- which will create a directory called `grub-1.99' 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.99
- ./configure
- make install
-
- Also, the latest version is available using Bazaar. See
-`http://www.gnu.org/software/grub/grub-download.en.html' 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
- encountered 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: Copying This Manual, Prev: Reporting bugs, Up: Top
-
-Appendix C Where GRUB will go
-*****************************
-
-GRUB 2 is now quite stable and used in many production systems. We are
-currently working towards a 2.0 release.
-
- 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: Future, 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)
-* badram: badram. (line 7)
-* blocklist: blocklist. (line 7)
-* boot: boot. (line 7)
-* cat: cat. (line 7)
-* chainloader: chainloader. (line 7)
-* cmp: cmp. (line 7)
-* configfile: configfile. (line 7)
-* cpuid: cpuid. (line 7)
-* crc: crc. (line 7)
-* date: date. (line 7)
-* drivemap: drivemap. (line 7)
-* echo: echo. (line 7)
-* export: export. (line 7)
-* false: false. (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)
-* initrd: initrd. (line 7)
-* initrd16: initrd16. (line 7)
-* insmod: insmod. (line 7)
-* keystatus: keystatus. (line 7)
-* linux: linux. (line 7)
-* linux16: linux16. (line 7)
-* list_env: list_env. (line 7)
-* load_env: load_env. (line 7)
-* loopback: loopback. (line 7)
-* ls: ls. (line 7)
-* menuentry: menuentry. (line 8)
-* normal: normal. (line 7)
-* normal_exit: normal_exit. (line 7)
-* parttool: parttool. (line 7)
-* password: password. (line 7)
-* password_pbkdf2: password_pbkdf2. (line 7)
-* play: play. (line 7)
-* pxe_unload: pxe_unload. (line 7)
-* read: read. (line 7)
-* reboot: reboot. (line 7)
-* save_env: save_env. (line 7)
-* search: search. (line 8)
-* sendkey: sendkey. (line 12)
-* serial: serial. (line 8)
-* set: set. (line 7)
-* submenu: submenu. (line 8)
-* terminal_input: terminal_input. (line 8)
-* terminal_output: terminal_output. (line 8)
-* terminfo: terminfo. (line 7)
-* true: true. (line 7)
-* unset: unset. (line 7)
-
-
-
-Tag Table:
-Node: Top961
-Node: Introduction3282
-Node: Overview3726
-Node: Overview-Footnotes5710
-Ref: Overview-Footnote-15771
-Node: History5932
-Node: Changes from GRUB Legacy8020
-Node: Features10496
-Node: Features-Footnotes16487
-Ref: Features-Footnote-116548
-Ref: Features-Footnote-216694
-Node: Role of a boot loader16839
-Node: Role of a boot loader-Footnotes18177
-Ref: Role of a boot loader-Footnote-118264
-Node: Naming convention18343
-Node: Installation21218
-Node: Installing GRUB using grub-install22321
-Node: Making a GRUB bootable CD-ROM24492
-Node: Making a GRUB bootable CD-ROM-Footnotes26346
-Ref: Making a GRUB bootable CD-ROM-Footnote-126449
-Node: Device map26524
-Node: BIOS installation28701
-Node: Booting32078
-Node: General boot methods32470
-Node: Loading an operating system directly33211
-Node: Chain-loading33942
-Node: OS-specific notes34913
-Node: GNU/Hurd35195
-Node: GNU/Linux36312
-Node: DOS/Windows37935
-Node: Configuration39708
-Node: Simple configuration40250
-Node: Shell-like scripting49686
-Node: Shell-like scripting-Footnotes57596
-Ref: Shell-like scripting-Footnote-157681
-Node: Embedded configuration57808
-Node: Theme file format60641
-Ref: Pixmap-styled progress bar62064
-Ref: Plain progress bar62076
-Ref: An example of the slices (in red) used for a terminal window. This drawing was created and sliced in Inkscape_65505
-Node: Network79727
-Node: Serial terminal82130
-Node: Vendor power-on keys84357
-Node: Images86187
-Node: Filesystem91147
-Node: Device syntax91834
-Node: File name syntax93326
-Node: Block list syntax94080
-Node: Interface94813
-Node: Command-line interface95635
-Node: Command-line interface-Footnotes97576
-Ref: Command-line interface-Footnote-197665
-Node: Menu interface97760
-Node: Menu entry editor98770
-Node: Environment99508
-Node: Special environment variables100212
-Node: biosnum100963
-Node: chosen101477
-Node: color_highlight101919
-Node: color_normal102325
-Node: debug102947
-Node: default103294
-Node: fallback104221
-Node: gfxmode104552
-Node: gfxpayload105285
-Node: gfxterm_font106437
-Node: icondir106736
-Node: lang107052
-Node: locale_dir107521
-Node: menu_color_highlight108030
-Node: menu_color_normal108526
-Node: net_pxe_boot_file109019
-Node: net_pxe_dhcp_server_name109230
-Node: net_pxe_domain109452
-Node: net_pxe_extensionspath109659
-Node: net_pxe_hostname109874
-Node: net_pxe_ip110073
-Node: net_pxe_mac110249
-Node: net_pxe_rootpath110427
-Node: pager110610
-Node: prefix110864
-Node: pxe_blksize111313
-Node: pxe_default_gateway111490
-Node: pxe_default_server111695
-Node: root111891
-Node: superusers112432
-Node: theme112680
-Node: timeout113001
-Node: Environment block113498
-Node: Commands114930
-Node: Menu-specific commands115763
-Node: menuentry116490
-Node: submenu117497
-Node: General commands118005
-Node: serial118501
-Node: terminal_input119546
-Node: terminal_output120212
-Node: terminfo120879
-Node: Command-line and menu entry commands122014
-Node: acpi124985
-Node: badram126024
-Node: blocklist127066
-Node: boot127300
-Node: cat127621
-Node: chainloader128256
-Node: cmp128878
-Node: configfile129429
-Node: cpuid129729
-Node: crc130194
-Node: date130384
-Node: drivemap130923
-Node: echo131726
-Node: export132663
-Node: false132973
-Node: gettext133269
-Node: gptsync133716
-Node: halt134661
-Node: help134987
-Node: initrd135450
-Node: initrd16135862
-Node: insmod136367
-Node: keystatus136589
-Node: linux137227
-Node: linux16138130
-Node: list_env138844
-Node: load_env139198
-Node: loopback139576
-Node: ls140024
-Node: normal140569
-Node: normal_exit141328
-Node: parttool141650
-Node: password143155
-Node: password_pbkdf2143437
-Node: play143845
-Node: pxe_unload144597
-Node: read144876
-Node: reboot145225
-Node: save_env145410
-Node: search145796
-Node: sendkey146574
-Node: set152848
-Node: true153146
-Node: unset153431
-Node: uppermem153637
-Node: Security153838
-Node: Supported kernels156526
-Node: Troubleshooting164014
-Node: GRUB only offers a rescue shell164240
-Node: Invoking grub-install167166
-Node: Invoking grub-mkconfig168544
-Node: Invoking grub-mkpasswd-pbkdf2169181
-Node: Invoking grub-mkrescue169839
-Node: Obtaining and Building GRUB171602
-Node: Reporting bugs172846
-Node: Future175649
-Node: Copying This Manual176049
-Node: GNU Free Documentation License176277
-Node: Index198685
-
-End Tag Table
diff --git a/docs/stamp-1 b/docs/stamp-1
deleted file mode 100644
index 056836e..0000000
--- a/docs/stamp-1
+++ /dev/null
@@ -1,4 +0,0 @@
-@set UPDATED 13 April 2011
-@set UPDATED-MONTH April 2011
-@set EDITION 1.99
-@set VERSION 1.99
diff --git a/docs/stamp-vti b/docs/stamp-vti
deleted file mode 100644
index 647f8f7..0000000
--- a/docs/stamp-vti
+++ /dev/null
@@ -1,4 +0,0 @@
-@set UPDATED 14 May 2011
-@set UPDATED-MONTH May 2011
-@set EDITION 1.99
-@set VERSION 1.99
diff --git a/docs/version-dev.texi b/docs/version-dev.texi
deleted file mode 100644
index 056836e..0000000
--- a/docs/version-dev.texi
+++ /dev/null
@@ -1,4 +0,0 @@
-@set UPDATED 13 April 2011
-@set UPDATED-MONTH April 2011
-@set EDITION 1.99
-@set VERSION 1.99
diff --git a/docs/version.texi b/docs/version.texi
deleted file mode 100644
index 647f8f7..0000000
--- a/docs/version.texi
+++ /dev/null
@@ -1,4 +0,0 @@
-@set UPDATED 14 May 2011
-@set UPDATED-MONTH May 2011
-@set EDITION 1.99
-@set VERSION 1.99