From 8e6b0685c15144d39949c0f4df2a1d807a6cfda4 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 16 Nov 2012 11:48:15 +0000 Subject: fish --- docs/Makefile.in | 1232 ------------ docs/grub-dev.info | 2171 -------------------- docs/grub.info | 5228 ------------------------------------------------- docs/stamp-1 | 4 - docs/stamp-vti | 4 - docs/version-dev.texi | 4 - docs/version.texi | 4 - 7 files changed, 8647 deletions(-) delete mode 100644 docs/Makefile.in delete mode 100644 docs/grub-dev.info delete mode 100644 docs/grub.info delete mode 100644 docs/stamp-1 delete mode 100644 docs/stamp-vti delete mode 100644 docs/version-dev.texi delete mode 100644 docs/version.texi (limited to 'docs') 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 -***** - -[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 -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 , 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/-' (for BIOS-based machines -`/usr/lib/grub/i386-pc'). Hereafter, the directory where GRUB images are -initially placed (normally `/usr/lib/grub/-') 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: - - - 85:3 - - - 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: - - - - Move forward one character. - - - - Move back one character. - - - - Move to the start of the line. - - - - Move the the end of the line. - - - - Delete the character underneath the cursor. - - - - Delete the character to the left of the cursor. - - - Kill the text from the current cursor position to the end of the - line. - - - Kill backward from the cursor to the beginning of the line. - - - Yank the killed text back into the buffer at the cursor. - - - - Move up through the history list. - - - - 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 key (or ) -will display a listing of the available commands, and if the cursor is -after the first word, the `' 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 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 -(which operates exactly like the non-config-file version of GRUB, but -allows one to return to the menu if desired by pressing ) or to -edit any of the "boot entries" by pressing . - - If you protect the menu interface with a password (*note Security::), -all you can do is choose an entry by pressing , or press

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 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 at the end of a line. To boot the edited -entry, press . - - Although GRUB unfortunately does not support "undo", you can do -almost the same thing by just returning to the main menu using . - - -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 (`') - 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 -, 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 -***** - -[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 -- cgit v1.2.3