- Add sysutils/grub2-pcbsd

This installs PC-BSD's custom grub 2.02-prerelease, which includes
various enhancements for Boot-Environments and ZFS support
This commit is contained in:
Kris Moore 2014-06-06 15:26:31 +00:00
parent ff9ba3ec57
commit 8f18cb5b10
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=356802
15 changed files with 1596 additions and 0 deletions

View file

@ -344,6 +344,7 @@
SUBDIR += grub2
SUBDIR += grub2-bhyve
SUBDIR += grub2-efi
SUBDIR += grub2-pcbsd
SUBDIR += gsmartcontrol
SUBDIR += gstopd
SUBDIR += gstreamer-plugins-cdio

View file

@ -0,0 +1,92 @@
# Created by: kmoore@FreeBSD.org
# $FreeBSD$
PORTNAME= grub2-pcbsd
PORTVERSION= 2.02p
CATEGORIES= sysutils
MASTER_SITES= http://www.pcbsd.org/~kris/software/ \
ftp://ftp.pcbsd.org/pub/software/
DISTNAME= grub-2.02_1
MAINTAINER= kmoore@FreeBSD.org
COMMENT= Multiboot boot loader
LICENSE= GPLv3
BUILD_DEPENDS= ${LOCALBASE}/bin/flex:${PORTSDIR}/textproc/flex \
${LOCALBASE}/bin/bash:${PORTSDIR}/shells/bash \
help2man:${PORTSDIR}/misc/help2man
WRKSRC= ${WRKDIR}/grub-2.02
CONFLICTS= grub-0* grub2-2*
SSP_UNSAFE= yes
USE_GCC= yes
USE_PYTHON= yes
USE_AUTOTOOLS= automake aclocal autoconf
ACLOCAL_ARGS= -Im4
GNU_CONFIGURE= yes
USES= bison gettext gmake tar:xz
ONLY_FOR_ARCHS= i386 amd64
INFO= grub grub-dev
MAKE_JOBS_UNSAFE= yes
CONFIGURE_ARGS= --disable-werror --localedir=${PREFIX}/share/locale
CONFIGURE_ENV= CPP="${CC} -E" \
LEX=${LOCALBASE}/bin/flex
SUB_FILES= 00_header 10_kfreebsd 10_ktrueos 30_os-prober
OPTIONS_DEFINE= MKFONT FUSE
OPTIONS_DEFAULT=MKFONT
MKFONT_DESC= Build grub-mkfont (require freetype2)
FUSE_DESC= Build grub-mount (require FUSE)
.include <bsd.port.pre.mk>
.if ${ARCH} != "amd64"
EFIEMU= "@comment "
.endif
PLIST_SUB+= EFIEMU=${EFIEMU}
.if ${PORT_OPTIONS:MMKFONT}
LIB_DEPENDS+= libfreetype.so:${PORTSDIR}/print/freetype2
BUILD_DEPENDS+= ${LOCALBASE}/lib/X11/fonts/dejavu/DejaVuSans.ttf:${PORTSDIR}/x11-fonts/dejavu \
${LOCALBASE}/lib/X11/fonts/local/unifont.pcf.gz:${PORTSDIR}/x11-fonts/gnu-unifont
MAN1+= grub-mkfont.1
CONFIGURE_ARGS+= --enable-grub-mkfont
.else
CONFIGURE_ARGS+= --disable-grub-mkfont
MKFONT= "@comment "
.endif
PLIST_SUB+= MKFONT=${MKFONT}
.if ${PORT_OPTIONS:MFUSE}
LIB_DEPENDS+= fuse:${PORTSDIR}/sysutils/fusefs-libs
CONFIGURE_ARGS+= --enable-grub-mount
.else
CONFIGURE_ARGS+= --disable-grub-mount
FUSE= "@comment "
.endif
PLIST_SUB+= FUSE=${FUSE}
post-patch:
@${TOUCH} -t 200001010000 ${WRKSRC}/Makefile.util.def
pre-configure:
@${REINPLACE_CMD} -e 's|python|${PYTHON_CMD}|g' ${WRKSRC}/autogen.sh
cd ${WRKSRC} && ./autogen.sh
post-configure:
@${LN} -sfh /usr/include/machine /usr/include/sys /usr/include/x86 ${WRKSRC}/grub-core
post-install:
@${RM} -rf ${STAGEDIR}${PREFIX}/lib/charset.alias
@${INSTALL_SCRIPT} ${WRKDIR}/00_header ${STAGEDIR}${PREFIX}/etc/grub.d/
@${INSTALL_SCRIPT} ${WRKDIR}/10_kfreebsd ${STAGEDIR}${PREFIX}/etc/grub.d/
@${INSTALL_SCRIPT} ${WRKDIR}/10_ktrueos ${STAGEDIR}${PREFIX}/etc/grub.d/
@${INSTALL_SCRIPT} ${WRKDIR}/30_os-prober ${STAGEDIR}${PREFIX}/etc/grub.d/
.include <bsd.port.post.mk>

View file

@ -0,0 +1,2 @@
SHA256 (grub-2.02_1.tar.xz) = d88d7c7533250df2939acb7a33f92d41fac02fc2bc729d95d89b571604d438b5
SIZE (grub-2.02_1.tar.xz) = 4466312

View file

@ -0,0 +1,335 @@
#! /bin/sh
set -e
# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
transform="s,x,x,"
prefix="/usr/local"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
grub_lang=`echo $LANG | cut -d . -f 1`
export TEXTDOMAIN=grub
export TEXTDOMAINDIR="/usr/local/share/locale"
. "${datarootdir}/grub/grub-mkconfig_lib"
# Set indicator that we haven't written device access yet
haveDevAccess=0
# Do this as early as possible, since other commands might depend on it.
# (e.g. the `loadfont' command might need lvm or raid modules)
for i in ${GRUB_PRELOAD_MODULES} ; do
echo "insmod $i"
done
if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi
if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi
if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=auto ; fi
# Check if we have more than one BE, and need to show the menu by default
beNum=`beadm list 2>/dev/null | grep -v 'Mountpoint' | wc -l | awk '{print $1}'`
if [ $beNum -gt 1 ] ; then GRUB_HIDDEN_TIMEOUT=""; fi
if [ "x${GRUB_DEFAULT_BUTTON}" = "x" ] ; then GRUB_DEFAULT_BUTTON="$GRUB_DEFAULT" ; fi
if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi
cat << EOF
if [ -s \$prefix/grubenv ]; then
load_env
fi
EOF
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
set default="${GRUB_DEFAULT_BUTTON}"
else
set default="${GRUB_DEFAULT}"
fi
EOF
else
cat <<EOF
set default="${GRUB_DEFAULT}"
EOF
fi
cat <<EOF
if [ x"\${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "\${prev_saved_entry}" ]; then
set saved_entry="\${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "\${boot_once}" ]; then
saved_entry="\${chosen}"
save_env saved_entry
fi
}
function load_video {
EOF
if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
cat <<EOF
insmod ${GRUB_VIDEO_BACKEND}
EOF
else
# If all_video.mod isn't available load all modules available
# with versions prior to introduction of all_video.mod
cat <<EOF
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
EOF
fi
cat <<EOF
}
EOF
serial=0;
gfxterm=0;
for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
if [ xserial = "x$x" ]; then
serial=1;
fi
if [ xgfxterm = "x$x" ]; then
gfxterm=1;
fi
done
if [ "x$serial" = x1 ]; then
if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
grub_warn "$(gettext "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used.")"
GRUB_SERIAL_COMMAND=serial
fi
echo "${GRUB_SERIAL_COMMAND}"
fi
if [ "x$gfxterm" = x1 ]; then
if [ -n "$GRUB_FONT" ] ; then
# Make the font accessible
if [ $haveDevAccess -ne 1 ] ; then
haveDevAccess=1
prepare_grub_to_access_device `${grub_probe} --target=device "${GRUB_FONT}"`
fi
cat << EOF
if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then
EOF
else
for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" /usr/share/grub ; do
for basename in unicode unifont ascii; do
path="${dir}/${basename}.pf2"
if is_path_readable_by_grub "${path}" > /dev/null ; then
font_path="${path}"
else
continue
fi
break 2
done
done
if [ -n "${font_path}" ] ; then
cat << EOF
if [ x\$feature_default_font_path = xy ] ; then
font=unicode
else
EOF
# Make the font accessible
if [ $haveDevAccess -ne 1 ] ; then
haveDevAccess=1
prepare_grub_to_access_device `${grub_probe} --target=device "${font_path}"`
fi
cat << EOF
font="`make_system_path_relative_to_its_root "${font_path}"`"
fi
if loadfont \$font ; then
EOF
else
cat << EOF
if loadfont unicode ; then
EOF
fi
fi
cat << EOF
set gfxmode=${GRUB_GFXMODE}
load_video
insmod gfxterm
EOF
# Gettext variables and module
if [ "x${LANG}" != "xC" -a "x${grub_lang}" != "xen_US" ] ; then
cat << EOF
set locale_dir=\$prefix/locale
set lang=${grub_lang}
insmod gettext
EOF
fi
cat <<EOF
fi
EOF
fi
case x${GRUB_TERMINAL_INPUT} in
x)
# Just use the native terminal
;;
x*)
cat << EOF
terminal_input ${GRUB_TERMINAL_INPUT}
EOF
;;
esac
case x${GRUB_TERMINAL_OUTPUT} in
x)
# Just use the native terminal
;;
x*)
cat << EOF
terminal_output ${GRUB_TERMINAL_OUTPUT}
EOF
;;
esac
if [ "x$gfxterm" = x1 ]; then
if [ "x$GRUB_THEME" != x ] && [ -f "$GRUB_THEME" ] \
&& is_path_readable_by_grub "$GRUB_THEME"; then
gettext_printf "Found theme: %s\n" "$GRUB_THEME" >&2
if [ $haveDevAccess -ne 1 ] ; then
haveDevAccess=1
prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_THEME"`
fi
cat << EOF
insmod gfxmenu
EOF
themedir="`dirname "$GRUB_THEME"`"
for x in "$themedir"/*.pf2 "$themedir"/f/*.pf2; do
if [ -f "$x" ]; then
cat << EOF
loadfont (\$root)`make_system_path_relative_to_its_root $x`
EOF
fi
done
if [ x"`echo "$themedir"/*.jpg`" != x"$themedir/*.jpg" ] || [ x"`echo "$themedir"/*.jpeg`" != x"$themedir/*.jpeg" ]; then
cat << EOF
insmod jpeg
EOF
fi
if [ x"`echo "$themedir"/*.png`" != x"$themedir/*.png" ]; then
cat << EOF
insmod png
EOF
fi
if [ x"`echo "$themedir"/*.tga`" != x"$themedir/*.tga" ]; then
cat << EOF
insmod tga
EOF
fi
cat << EOF
set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME`
export theme
EOF
elif [ "x$GRUB_BACKGROUND" != x ] && [ -f "$GRUB_BACKGROUND" ] \
&& is_path_readable_by_grub "$GRUB_BACKGROUND"; then
gettext_printf "Found background: %s\n" "$GRUB_BACKGROUND" >&2
case "$GRUB_BACKGROUND" in
*.png) reader=png ;;
*.tga) reader=tga ;;
*.jpg|*.jpeg) reader=jpeg ;;
*) gettext "Unsupported image format" >&2; echo >&2; exit 1 ;;
esac
if [ $haveDevAccess -ne 1 ] ; then
haveDevAccess=1
prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_BACKGROUND"`
fi
cat << EOF
insmod $reader
background_image -m stretch `make_system_path_relative_to_its_root "$GRUB_BACKGROUND"`
EOF
fi
fi
make_timeout ()
{
if [ "x${1}" != "x" ] ; then
if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
verbose=
else
verbose=" --verbose"
fi
cat << EOF
echo "Hold Left-Shift for menu.."
if sleep$verbose --interruptible ${1} ; then
if keystatus --shift; then
set timeout=-1
else
set timeout=0
fi
fi
EOF
else
cat << EOF
set timeout=${2}
EOF
fi
}
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
echo else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
echo fi
else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
fi
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = "xyes" ]; then
cat <<EOF
cmosclean $GRUB_BUTTON_CMOS_ADDRESS
EOF
fi
# Play an initial tune
if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then
echo "play ${GRUB_INIT_TUNE}"
fi
if [ "x${GRUB_BADRAM}" != "x" ] ; then
echo "badram ${GRUB_BADRAM}"
fi

View file

@ -0,0 +1,4 @@
#! /bin/sh
# Exit for now, we can use 10_ktrueos instead
return 0

View file

@ -0,0 +1,298 @@
#!/bin/sh
#
# Copyright 2013 iXsystems (Kris Moore)
# All rights reserved
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted providing that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# Script to detect TrueOS / PC-BSD disk installations and create grub
# entries for them
ROOTFS=`mount | awk '/ \/ / {print $1}'`
BEDS="$( echo ${ROOTFS} | awk -F '/' '{print $2}' )"
if [ "$BEDS" = "dev" ] ; then BEDS="ROOT"; fi
display_loaderopts()
{
# Optional ARG1, set to a ZFS dataset to mount and read values from
if [ -n "$1" ] ; then
fMnt="/mnt.$$"
mkdir $fMnt
mount -t zfs ${1} $fMnt >/dev/null
if [ $? -ne 0 ] ; then
echo "Failed to mount ${1}" >&2
return
fi
else
fMnt=""
fi
# Create our placeholder to save _load entries to parse
touch /tmp/.lRObjs.$$
touch /tmp/.lSysCtls.$$
# Loader files, in order of which to read them
lFiles="${fMnt}/boot/loader.conf.local ${fMnt}/boot/loader.conf ${fMnt}/boot/loader.conf.trueos ${fMnt}/boot/loader.conf.pcbsd"
for f in $lFiles
do
if [ ! -e "$f" ] ; then continue ; fi
# Lets parse any of the _load= lines
grep "_load=" ${f} | grep -v "^#" >/tmp/.lObjs.$$
while read line
do
loadVal="`echo $line | cut -d '=' -f 1`"
# Is this value already set in a higher priority file?
grep -q "^${loadVal}" /tmp/.lRObjs.$$
if [ $? -eq 0 ];then continue; fi
# Save this value for later
echo "$line" >> /tmp/.lRObjs.$$
haveObjs=1
done < /tmp/.lObjs.$$
rm /tmp/.lObjs.$$
# Lets look for any sysctls to set
grep "." ${f} | grep "=" | grep -v "^#" | grep -v "_load" >/tmp/.sObjs.$$
while read line
do
loadVal="`echo $line | cut -d '=' -f 1`"
# Is this value already set in a higher priority file?
grep -q "^${loadVal}" /tmp/.lSysCtls.$$
if [ $? -eq 0 ];then continue; fi
# Save this value for later
echo "$line" >> /tmp/.lSysCtls.$$
haveSysCtls=1
done < /tmp/.sObjs.$$
rm /tmp/.sObjs.$$
done
# Now lets echo out the modules to load
if [ "$haveObjs" = "1" ] ; then
while read line
do
echo "$line" | grep -q '"YES"'
if [ $? -ne 0 ] ; then continue ; fi
module="`echo $line | cut -d '=' -f 1 | sed 's|_load||g'`"
# Try to locate module now
if [ -e "${fMnt}/boot/kernel/${module}.ko" ] ; then
mPath="kernel"
elif [ -e "${fMnt}/boot/modules/${module}.ko" ] ; then
mPath="modules"
else
# This isn't a module that we can see, lets set it as a variable
#echo "No such module $line, setting as a variable" >&2
echo "$line" >> /tmp/.lSysCtls.$$
continue
fi
echo " kfreebsd_module_elf ${loadPrefix}/@/boot/${mPath}/${module}.ko"
done < /tmp/.lRObjs.$$
fi
# Any sysctls to set?
if [ "$haveSysCtls" = "1" ] ; then
while read line
do
# Strip out the vfs.root.mountfrom, we set that elsewhere
echo "$line" | grep -q "vfs.root.mountfrom"
if [ $? -eq 0 ] ; then continue ; fi
val="`echo $line | sed 's|"||g'`"
echo " set kFreeBSD.${val}"
done < /tmp/.lSysCtls.$$
fi
rm /tmp/.lRObjs.$$
rm /tmp/.lSysCtls.$$
if [ -n "$1" ] ; then
umount /mnt.$$ >/dev/null
rmdir /mnt.$$ >/dev/null
fi
}
detect_beadm()
{
which -s beadm
if [ $? -ne 0 ] ; then return 0; fi
# Check if we are running from the installer and use its beadm
if [ -e "/root/beadm.install" ] ; then
BEADM="/root/beadm.install"
else
BEADM="`which beadm`"
fi
${BEADM} list >/dev/null 2>/dev/null
if [ $? -ne 0 ] ; then return 0; fi
if [ -e "/etc/defaults/pcbsd" ] ; then
NICK="PC-BSD"
else
NICK="TrueOS"
fi
# Get list of beadm datasets
for b in `${BEADM} list 2>/dev/null| grep -v "Created" | cut -d ' ' -f 1`
do
# Got a beadm snapshot, lets get the complete dataset name
beLine=`${BEADM} list -a | grep "/$BEDS/${b}"`
cdataset=`echo $beLine | awk '{print $1}'`
cdatadate=`echo $beLine | awk '{print $5}'`
cdatatime=`echo $beLine | awk '{print $6}'`
ztank=`echo $cdataset | cut -d '/' -f 1`
shortdataset="/`echo $cdataset | cut -d '/' -f 2-5`"
# First part of this dataset
cat > /tmp/.grubdataset.$$.1 << EOF
insmod zfs
search --no-floppy -s -l $ztank
EOF
# Second part of loader to save
cat > /tmp/.grubdataset.$$.2 << EOF
kfreebsd_module ${shortdataset}/@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
set kFreeBSD.vfs.root.mountfrom=zfs:$cdataset
EOF
# Now lets look for options in loader.conf to load
loadPrefix="${shortdataset}"
# If this is the current mounted dataset, we can skip mounting it
mount | grep -q -e "$cdataset on / (" -e "$cdataset on /mnt ("
if [ $? -eq 0 ] ; then
display_loaderopts >>/tmp/.grubdataset.$$.2
else
display_loaderopts $cdataset >> /tmp/.grubdataset.$$.2
fi
# Lets start a submenu for each BE
cat << EOF
# Start TrueOS BE Submenu
submenu "${NICK} ($b) - ${cdatadate} ${cdatatime}" {
EOF
# Lets do the default entry first
#################################
cat << EOF
menuentry "Normal Bootup" {
EOF
# Get the dataset guts
cat /tmp/.grubdataset.$$.1
echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel"
echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
cat /tmp/.grubdataset.$$.2
# Set any options
cat << EOF
}
EOF
# Next lets do single user mode
#################################
cat << EOF
menuentry "Single User Mode" {
EOF
# Get the dataset guts
cat /tmp/.grubdataset.$$.1
echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel -s"
echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
cat /tmp/.grubdataset.$$.2
# Set any options
cat << EOF
}
EOF
# Next lets do verbose mode
#################################
cat << EOF
menuentry "Verbose Mode" {
EOF
# Get the dataset guts
cat /tmp/.grubdataset.$$.1
echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel -v"
echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
cat /tmp/.grubdataset.$$.2
# Set any options
cat << EOF
}
EOF
if [ -e "/etc/defaults/pcbsd" ] ; then
# Next lets do display wizard
#################################
cat << EOF
menuentry "Run the Display Wizard" {
EOF
# Get the dataset guts
cat /tmp/.grubdataset.$$.1
echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel"
echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
cat /tmp/.grubdataset.$$.2
# Set any options
cat << EOF
set kFreeBSD.runwiz=YES
}
EOF
# Now for vesa mode
#################################
cat << EOF
menuentry "Run X in vesa mode" {
EOF
# Get the dataset guts
cat /tmp/.grubdataset.$$.1
echo " kfreebsd ${shortdataset}/@/boot/kernel/kernel"
echo " kfreebsd_loadenv ${shortdataset}@/boot/device.hints"
cat /tmp/.grubdataset.$$.2
# Set any options
cat << EOF
set kFreeBSD.xvesa=YES
}
EOF
fi
# Lastly lets close the submenu section
cat << EOF
}
# End TrueOS BE
EOF
done
# Cleanup after ourselves
if [ -e "/tmp/.grubdataset.$$.1" ] ; then
rm /tmp/.grubdataset.$$.1
rm /tmp/.grubdataset.$$.2
fi
}
# Detect our types of disk layouts
detect_beadm

View file

@ -0,0 +1,61 @@
#!/bin/sh
#
# Copyright 2013 iXsystems (Kris Moore)
# All rights reserved
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted providing that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# Script to detect other NON BSD OS's and add to grub.cfg
check_ntfs_part()
{
local disk="$1"
fs_label=`grub-probe --device /dev/${disk} --target=fs_label`
# Check for common windows NTFS labels for bootable partitions
if [ "$fs_label" != "System Reserved" -a "$fs_label" != "OS" -a "$fs_label" != "SYSTEM" ] ; then return; fi
fs_uuid=`grub-probe --device /dev/${disk} --target=fs_uuid`
if [ -z "$fs_uuid" ] ; then
echo "Warning: Could not get fs_uuid for $disk"
return
fi
cat << EOF
menuentry "Microsoft Windows ($disk)" {
search --no-floppy --fs-uuid --set=root $fs_uuid
chainloader +1
}
EOF
}
# Start by looking for disks
for disk in `cd /dev/ && ls ada[0-9]s[0-9] da[0-9]s[0-9] ada[0-9]p[0-9] da[0-9]p[0-9] 2>/dev/null`
do
# Start checking for NTFS
fs_type=`grub-probe --device /dev/${disk} --target=fs 2>/dev/null`
case $fs_type in
ntfs) check_ntfs_part "$disk" ;;
*) ;; # Unknown for now, add more!
esac
done

View file

@ -0,0 +1,20 @@
--- configure.ac.orig 2014-03-03 11:00:26.000000000 -0500
+++ configure.ac 2014-06-05 13:24:29.290891223 -0400
@@ -1389,7 +1389,7 @@
if test x"$starfield_excuse" = x; then
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype; do
+ for dir in . /usr/src /usr/local/lib/X11/fonts/dejavu /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype; do
if test -f "$dir/DejaVuSans.$ext"; then
DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
break 2
@@ -1411,7 +1411,7 @@
FONT_SOURCE=
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do
+ for dir in . /usr/src /usr/local/lib/X11/fonts/local /usr/share/fonts/unifont /usr/share/fonts/uni /usr/share/fonts/truetype/unifont /usr/share/fonts/misc; do
if test -f "$dir/unifont.$ext"; then
md5="$(md5sum "$dir/unifont.$ext"|awk '{ print $1; }')"
# PCF and BDF from version 6.3 isn't hanled properly by libfreetype.

View file

@ -0,0 +1,20 @@
--- grub-core/disk/geli.c.orig 2014-05-15 14:00:10.000000000 -0400
+++ grub-core/disk/geli.c 2014-05-20 14:46:07.604565349 -0400
@@ -225,7 +225,7 @@
/* Look for GELI magic sequence. */
if (grub_memcmp (header->magic, GELI_MAGIC, sizeof (GELI_MAGIC))
- || grub_le_to_cpu32 (header->version) > 5
+ || grub_le_to_cpu32 (header->version) > 7
|| grub_le_to_cpu32 (header->version) < 1)
grub_util_error ("%s", _("wrong ELI magic or version"));
@@ -265,7 +265,7 @@
/* Look for GELI magic sequence. */
if (grub_memcmp (header.magic, GELI_MAGIC, sizeof (GELI_MAGIC))
- || grub_le_to_cpu32 (header.version) > 5
+ || grub_le_to_cpu32 (header.version) > 7
|| grub_le_to_cpu32 (header.version) < 1)
{
grub_dprintf ("geli", "wrong magic %02x\n", header.magic[0]);

View file

@ -0,0 +1,11 @@
--- grub-core/lib/libgcrypt/src/types.h.o 2014-03-03 17:14:46.722210112 -0500
+++ grub-core/lib/libgcrypt/src/types.h 2014-03-03 17:05:54.572824164 -0500
@@ -113,6 +113,8 @@
#endif
#endif
+typedef uint64_t u64;
+
typedef union {
int a;
short b;

View file

@ -0,0 +1,59 @@
--- util/grub-mkconfig.in.orig 2014-06-05 12:39:41.711496387 -0400
+++ util/grub-mkconfig.in 2014-06-05 12:43:08.310985691 -0400
@@ -276,5 +276,56 @@
fi
fi
+# If doing a real grub.cfg update, make sure that our config gets
+# copied to the /default/ ZFS BE
+check_grub_zfs_be()
+{
+
+ ROOTFS=`mount | awk '/ \/ / {print $1}'`
+ BEDS="$( echo ${ROOTFS} | awk -F '/' '{print $2}' )"
+ if [ "$BEDS" = "dev" ] ; then BEDS="ROOT"; fi
+
+ if [ "$grub_cfg" = "/boot/grub/grub.cfg" ] ; then
+ for i in `beadm list -a 2>/dev/null | grep "/${BEDS}/" | awk '{print $1}'`
+ do
+ if ! mount | grep -q "$dTank on / ("; then
+ echo -e "Copying grub.cfg to $dTank...\c" >&2
+ fMnt="/mnt.$$"
+ mkdir $fMnt
+ if ! mount -t zfs ${dTank} $fMnt ; then
+ echo "Failed to mount ${dTank}" >&2
+ return
+ else
+ cp ${grub_cfg} ${fMnt}/boot/grub/grub.cfg
+ echo -e "done" >&2
+ umount ${fMnt} >/dev/null
+ rmdir ${fMnt} >/dev/null
+ fi
+ fi
+ done
+
+ # Check if we can re-stamp the boot-loader
+ TANK=`echo $ROOTFS | cut -d '/' -f 1`
+ for i in `zpool status $TANK | grep ONLINE | awk '{print $1}'`
+ do
+ if [ ! -e "/dev/${i}" ] ; then continue; fi
+ disk=`echo $i | sed 's|.eli||g'`
+
+ # Now get the root of the disk
+ disk=`echo $disk | sed 's|p[1-9]$||g' | sed "s|s[1-9][a-z]||g"`
+ if [ ! -e "/dev/${disk}" ] ; then continue; fi
+
+ # Re-install GRUB on this disk
+ echo "Installing GRUB to $disk" >&2
+ grub-install /dev/${disk}
+ done
+ fi
+
+}
+
gettext "done" >&2
echo >&2
+
+# Check if we need to copy this cfg to the original BE
+check_grub_zfs_be
+

View file

@ -0,0 +1,21 @@
--- util/grub-mkconfig_lib.in.orig 2014-03-03 11:00:26.000000000 -0500
+++ util/grub-mkconfig_lib.in 2014-06-05 12:45:58.532199020 -0400
@@ -139,7 +139,17 @@
echo "insmod ${module}"
done
- fs="`"${grub_probe}" --device $@ --target=fs`"
+ # KPM - 6-24-2013
+ # Add this work-around since GRUB doesn't like to identify ZFS
+ # partitions which are in a raidz configuration, gives Unknown FS error
+ # We can instead look at zpool to see if this device is used though
+ zpool status 2>/dev/null | grep -q "`echo ${device} | sed 's|/dev/||g'`"
+ if [ $? -eq 0 ] ; then
+ fs="zfs"
+ else
+ fs="`"${grub_probe}" --device $@ --target=fs`"
+ fi
+
for module in ${fs} ; do
echo "insmod ${module}"
done

View file

@ -0,0 +1,12 @@
GNU GRUB is a multiboot boot loader. It was derived from GRUB, the GRand
Unified Bootloader, which was originally designed and implemented by Erich
Stefan Boleyn.
This port does not install GRUB on the master boot record of your hard drive.
To do this you will need to read the info page that is installed by the port.
This port includes additional patches and fixes making it work properly
with ZFS boot-environments. Users on UFS will probably want to install the
regular sysutils/grub2 port.
WWW: http://www.gnu.org/software/grub/

View file

@ -0,0 +1,11 @@
#############################################################
To install GRUB on the master boot record of your hard drive
use 'grub-install <drive-to-install>' command.
A typical menu entry in /boot/grub/grub.cfg for FreeBSD:
menuentry "FreeBSD" {
set root="(hd0,msdos1,bsd1)"
kfreebsd /boot/loader
}
Or use grub-mkconfig to create the config file.
#############################################################

View file

@ -0,0 +1,649 @@
%%FUSE%%bin/grub-mount
%%FUSE%%man/man1/grub-mount.1.gz
%%MKFONT%%bin/grub-mkfont
%%MKFONT%%share/grub/themes/starfield/dejavu_10.pf2
%%MKFONT%%share/grub/themes/starfield/dejavu_12.pf2
%%MKFONT%%share/grub/themes/starfield/dejavu_bold_14.pf2
%%MKFONT%%share/grub/themes/starfield/dejavu_14.pf2
%%MKFONT%%share/grub/themes/starfield/dejavu_16.pf2
%%MKFONT%%share/grub/themes/starfield/blob_w.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_c.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_e.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_ne.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_n.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_nw.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_se.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_s.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_sw.png
%%MKFONT%%share/grub/themes/starfield/boot_menu_w.png
%%MKFONT%%share/grub/themes/starfield/slider_c.png
%%MKFONT%%share/grub/themes/starfield/slider_n.png
%%MKFONT%%share/grub/themes/starfield/slider_s.png
%%MKFONT%%share/grub/themes/starfield/starfield.png
%%MKFONT%%share/grub/themes/starfield/README
%%MKFONT%%share/grub/themes/starfield/terminal_box_c.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_e.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_ne.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_n.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_nw.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_se.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_s.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_sw.png
%%MKFONT%%share/grub/themes/starfield/terminal_box_w.png
%%MKFONT%%share/grub/themes/starfield/theme.txt
%%MKFONT%%share/grub/themes/starfield/COPYING.CC-BY-SA-3.0
%%MKFONT%%share/grub/ascii.h
%%MKFONT%%share/grub/ascii.pf2
%%MKFONT%%share/grub/euro.pf2
%%MKFONT%%share/grub/unicode.pf2
%%MKFONT%%share/grub/widthspec.h
%%MKFONT%%man/man1/grub-mkfont.1.gz
bin/grub-editenv
bin/grub-fstest
bin/grub-kbdcomp
bin/grub-menulst2cfg
bin/grub-mkimage
bin/grub-mknetdir
bin/grub-mklayout
bin/grub-mkpasswd-pbkdf2
bin/grub-mkrelpath
bin/grub-mkstandalone
bin/grub-mkrescue
bin/grub-script-check
bin/grub-file
bin/grub-glue-efi
bin/grub-render-label
bin/grub-syslinux2cfg
sbin/grub-macbless
info/dir
lib/grub/i386-pc/archelp.mod
lib/grub/i386-pc/archelp.module
lib/grub/i386-pc/boot_hybrid.image
lib/grub/i386-pc/boot_hybrid.img
lib/grub/i386-pc/cbfs.mod
lib/grub/i386-pc/cbfs.module
lib/grub/i386-pc/cbls.mod
lib/grub/i386-pc/cbls.module
lib/grub/i386-pc/cbmemc.mod
lib/grub/i386-pc/cbmemc.module
lib/grub/i386-pc/cbtable.mod
lib/grub/i386-pc/cbtable.module
lib/grub/i386-pc/cbtime.mod
lib/grub/i386-pc/cbtime.module
lib/grub/i386-pc/cmdline_cat_test.mod
lib/grub/i386-pc/cmdline_cat_test.module
lib/grub/i386-pc/cmosdump.mod
lib/grub/i386-pc/cmosdump.module
lib/grub/i386-pc/disk.mod
lib/grub/i386-pc/disk.module
lib/grub/i386-pc/div_test.mod
lib/grub/i386-pc/div_test.module
lib/grub/i386-pc/eval.mod
lib/grub/i386-pc/eval.module
lib/grub/i386-pc/file.mod
lib/grub/i386-pc/file.module
lib/grub/i386-pc/gcry_dsa.mod
lib/grub/i386-pc/gcry_dsa.module
lib/grub/i386-pc/gcry_idea.mod
lib/grub/i386-pc/gcry_idea.module
lib/grub/i386-pc/gcry_rsa.mod
lib/grub/i386-pc/gcry_rsa.module
lib/grub/i386-pc/gfxterm_background.mod
lib/grub/i386-pc/gfxterm_background.module
lib/grub/i386-pc/gfxterm_menu.mod
lib/grub/i386-pc/gfxterm_menu.module
lib/grub/i386-pc/hfspluscomp.mod
lib/grub/i386-pc/hfspluscomp.module
lib/grub/i386-pc/legacy_password_test.mod
lib/grub/i386-pc/legacy_password_test.module
lib/grub/i386-pc/macbless.mod
lib/grub/i386-pc/macbless.module
lib/grub/i386-pc/macho.mod
lib/grub/i386-pc/macho.module
lib/grub/i386-pc/mda_text.mod
lib/grub/i386-pc/mda_text.module
lib/grub/i386-pc/morse.mod
lib/grub/i386-pc/morse.module
lib/grub/i386-pc/mpi.mod
lib/grub/i386-pc/mpi.module
lib/grub/i386-pc/nativedisk.mod
lib/grub/i386-pc/nativedisk.module
lib/grub/i386-pc/offsetio.mod
lib/grub/i386-pc/offsetio.module
lib/grub/i386-pc/part_dfly.mod
lib/grub/i386-pc/part_dfly.module
lib/grub/i386-pc/pbkdf2_test.mod
lib/grub/i386-pc/pbkdf2_test.module
lib/grub/i386-pc/pcidump.mod
lib/grub/i386-pc/pcidump.module
lib/grub/i386-pc/procfs.mod
lib/grub/i386-pc/procfs.module
lib/grub/i386-pc/progress.mod
lib/grub/i386-pc/progress.module
lib/grub/i386-pc/setjmp_test.mod
lib/grub/i386-pc/setjmp_test.module
lib/grub/i386-pc/signature_test.mod
lib/grub/i386-pc/signature_test.module
lib/grub/i386-pc/sleep_test.mod
lib/grub/i386-pc/sleep_test.module
lib/grub/i386-pc/spkmodem.mod
lib/grub/i386-pc/spkmodem.module
lib/grub/i386-pc/syslinuxcfg.mod
lib/grub/i386-pc/syslinuxcfg.module
lib/grub/i386-pc/testspeed.mod
lib/grub/i386-pc/testspeed.module
lib/grub/i386-pc/tr.mod
lib/grub/i386-pc/tr.module
lib/grub/i386-pc/truecrypt.mod
lib/grub/i386-pc/truecrypt.module
lib/grub/i386-pc/ufs1_be.mod
lib/grub/i386-pc/ufs1_be.module
lib/grub/i386-pc/usbserial_usbdebug.mod
lib/grub/i386-pc/usbserial_usbdebug.module
lib/grub/i386-pc/verify.mod
lib/grub/i386-pc/verify.module
lib/grub/i386-pc/video_colors.mod
lib/grub/i386-pc/video_colors.module
lib/grub/i386-pc/videotest_checksum.mod
lib/grub/i386-pc/videotest_checksum.module
lib/grub/i386-pc/xnu_uuid_test.mod
lib/grub/i386-pc/xnu_uuid_test.module
man/man1/grub-file.1.gz
man/man1/grub-glue-efi.1.gz
man/man1/grub-mknetdir.1.gz
man/man1/grub-render-label.1.gz
man/man1/grub-syslinux2cfg.1.gz
man/man8/grub-macbless.8.gz
etc/grub.d/00_header
etc/grub.d/30_os-prober
etc/grub.d/40_custom
etc/grub.d/41_custom
etc/grub.d/10_kfreebsd
etc/grub.d/10_ktrueos
etc/grub.d/README
etc/bash_completion.d/grub
lib/grub/i386-pc/acpi.mod
lib/grub/i386-pc/acpi.module
lib/grub/i386-pc/adler32.mod
lib/grub/i386-pc/adler32.module
lib/grub/i386-pc/affs.mod
lib/grub/i386-pc/affs.module
lib/grub/i386-pc/afs.mod
lib/grub/i386-pc/afs.module
lib/grub/i386-pc/ahci.mod
lib/grub/i386-pc/ahci.module
lib/grub/i386-pc/all_video.mod
lib/grub/i386-pc/all_video.module
lib/grub/i386-pc/aout.mod
lib/grub/i386-pc/aout.module
lib/grub/i386-pc/at_keyboard.mod
lib/grub/i386-pc/at_keyboard.module
lib/grub/i386-pc/ata.mod
lib/grub/i386-pc/ata.module
lib/grub/i386-pc/backtrace.mod
lib/grub/i386-pc/backtrace.module
lib/grub/i386-pc/bfs.mod
lib/grub/i386-pc/bfs.module
lib/grub/i386-pc/biosdisk.mod
lib/grub/i386-pc/biosdisk.module
lib/grub/i386-pc/bitmap.mod
lib/grub/i386-pc/bitmap.module
lib/grub/i386-pc/bitmap_scale.mod
lib/grub/i386-pc/bitmap_scale.module
lib/grub/i386-pc/blocklist.mod
lib/grub/i386-pc/blocklist.module
lib/grub/i386-pc/boot.image
lib/grub/i386-pc/boot.img
lib/grub/i386-pc/boot.mod
lib/grub/i386-pc/boot.module
lib/grub/i386-pc/bsd.mod
lib/grub/i386-pc/bsd.module
lib/grub/i386-pc/btrfs.mod
lib/grub/i386-pc/btrfs.module
lib/grub/i386-pc/bufio.mod
lib/grub/i386-pc/bufio.module
lib/grub/i386-pc/cat.mod
lib/grub/i386-pc/cat.module
lib/grub/i386-pc/cdboot.image
lib/grub/i386-pc/cdboot.img
lib/grub/i386-pc/chain.mod
lib/grub/i386-pc/chain.module
lib/grub/i386-pc/cmostest.mod
lib/grub/i386-pc/cmostest.module
lib/grub/i386-pc/cmp.mod
lib/grub/i386-pc/cmp.module
lib/grub/i386-pc/command.lst
lib/grub/i386-pc/config.h
lib/grub/i386-pc/configfile.mod
lib/grub/i386-pc/configfile.module
lib/grub/i386-pc/cpio.mod
lib/grub/i386-pc/cpio.module
lib/grub/i386-pc/cpio_be.mod
lib/grub/i386-pc/cpio_be.module
lib/grub/i386-pc/cpuid.mod
lib/grub/i386-pc/cpuid.module
lib/grub/i386-pc/crc64.mod
lib/grub/i386-pc/crc64.module
lib/grub/i386-pc/crypto.lst
lib/grub/i386-pc/crypto.mod
lib/grub/i386-pc/crypto.module
lib/grub/i386-pc/cryptodisk.mod
lib/grub/i386-pc/cryptodisk.module
lib/grub/i386-pc/cs5536.mod
lib/grub/i386-pc/cs5536.module
lib/grub/i386-pc/date.mod
lib/grub/i386-pc/date.module
lib/grub/i386-pc/datehook.mod
lib/grub/i386-pc/datehook.module
lib/grub/i386-pc/datetime.mod
lib/grub/i386-pc/datetime.module
lib/grub/i386-pc/diskboot.image
lib/grub/i386-pc/diskboot.img
lib/grub/i386-pc/diskfilter.mod
lib/grub/i386-pc/diskfilter.module
lib/grub/i386-pc/dm_nv.mod
lib/grub/i386-pc/dm_nv.module
lib/grub/i386-pc/drivemap.mod
lib/grub/i386-pc/drivemap.module
lib/grub/i386-pc/echo.mod
lib/grub/i386-pc/echo.module
lib/grub/i386-pc/efiemu.mod
lib/grub/i386-pc/efiemu.module
%%EFIEMU%%lib/grub/i386-pc/efiemu32.o
%%EFIEMU%%lib/grub/i386-pc/efiemu64.o
lib/grub/i386-pc/ehci.mod
lib/grub/i386-pc/ehci.module
lib/grub/i386-pc/elf.mod
lib/grub/i386-pc/elf.module
lib/grub/i386-pc/exfat.mod
lib/grub/i386-pc/exfat.module
lib/grub/i386-pc/exfctest.mod
lib/grub/i386-pc/exfctest.module
lib/grub/i386-pc/ext2.mod
lib/grub/i386-pc/ext2.module
lib/grub/i386-pc/extcmd.mod
lib/grub/i386-pc/extcmd.module
lib/grub/i386-pc/fat.mod
lib/grub/i386-pc/fat.module
lib/grub/i386-pc/font.mod
lib/grub/i386-pc/font.module
lib/grub/i386-pc/freedos.mod
lib/grub/i386-pc/freedos.module
lib/grub/i386-pc/fs.lst
lib/grub/i386-pc/fshelp.mod
lib/grub/i386-pc/fshelp.module
lib/grub/i386-pc/functional_test.mod
lib/grub/i386-pc/functional_test.module
lib/grub/i386-pc/gcry_arcfour.mod
lib/grub/i386-pc/gcry_arcfour.module
lib/grub/i386-pc/gcry_blowfish.mod
lib/grub/i386-pc/gcry_blowfish.module
lib/grub/i386-pc/gcry_camellia.mod
lib/grub/i386-pc/gcry_camellia.module
lib/grub/i386-pc/gcry_cast5.mod
lib/grub/i386-pc/gcry_cast5.module
lib/grub/i386-pc/gcry_crc.mod
lib/grub/i386-pc/gcry_crc.module
lib/grub/i386-pc/gcry_des.mod
lib/grub/i386-pc/gcry_des.module
lib/grub/i386-pc/gcry_md4.mod
lib/grub/i386-pc/gcry_md4.module
lib/grub/i386-pc/gcry_md5.mod
lib/grub/i386-pc/gcry_md5.module
lib/grub/i386-pc/gcry_rfc2268.mod
lib/grub/i386-pc/gcry_rfc2268.module
lib/grub/i386-pc/gcry_rijndael.mod
lib/grub/i386-pc/gcry_rijndael.module
lib/grub/i386-pc/gcry_rmd160.mod
lib/grub/i386-pc/gcry_rmd160.module
lib/grub/i386-pc/gcry_seed.mod
lib/grub/i386-pc/gcry_seed.module
lib/grub/i386-pc/gcry_serpent.mod
lib/grub/i386-pc/gcry_serpent.module
lib/grub/i386-pc/gcry_sha1.mod
lib/grub/i386-pc/gcry_sha1.module
lib/grub/i386-pc/gcry_sha256.mod
lib/grub/i386-pc/gcry_sha256.module
lib/grub/i386-pc/gcry_sha512.mod
lib/grub/i386-pc/gcry_sha512.module
lib/grub/i386-pc/gcry_tiger.mod
lib/grub/i386-pc/gcry_tiger.module
lib/grub/i386-pc/gcry_twofish.mod
lib/grub/i386-pc/gcry_twofish.module
lib/grub/i386-pc/gcry_whirlpool.mod
lib/grub/i386-pc/gcry_whirlpool.module
lib/grub/i386-pc/gdb.mod
lib/grub/i386-pc/gdb.module
lib/grub/i386-pc/gdb_grub
lib/grub/i386-pc/geli.mod
lib/grub/i386-pc/geli.module
lib/grub/i386-pc/gettext.mod
lib/grub/i386-pc/gettext.module
lib/grub/i386-pc/gfxmenu.mod
lib/grub/i386-pc/gfxmenu.module
lib/grub/i386-pc/gfxterm.mod
lib/grub/i386-pc/gfxterm.module
lib/grub/i386-pc/gmodule.pl
lib/grub/i386-pc/gptsync.mod
lib/grub/i386-pc/gptsync.module
lib/grub/i386-pc/gzio.mod
lib/grub/i386-pc/gzio.module
lib/grub/i386-pc/halt.mod
lib/grub/i386-pc/halt.module
lib/grub/i386-pc/hashsum.mod
lib/grub/i386-pc/hashsum.module
lib/grub/i386-pc/hdparm.mod
lib/grub/i386-pc/hdparm.module
lib/grub/i386-pc/hello.mod
lib/grub/i386-pc/hello.module
lib/grub/i386-pc/help.mod
lib/grub/i386-pc/help.module
lib/grub/i386-pc/hexdump.mod
lib/grub/i386-pc/hexdump.module
lib/grub/i386-pc/hfs.mod
lib/grub/i386-pc/hfs.module
lib/grub/i386-pc/hfsplus.mod
lib/grub/i386-pc/hfsplus.module
lib/grub/i386-pc/http.mod
lib/grub/i386-pc/http.module
lib/grub/i386-pc/iorw.mod
lib/grub/i386-pc/iorw.module
lib/grub/i386-pc/iso9660.mod
lib/grub/i386-pc/iso9660.module
lib/grub/i386-pc/jfs.mod
lib/grub/i386-pc/jfs.module
lib/grub/i386-pc/jpeg.mod
lib/grub/i386-pc/jpeg.module
lib/grub/i386-pc/kernel.exec
lib/grub/i386-pc/kernel.img
lib/grub/i386-pc/keylayouts.mod
lib/grub/i386-pc/keylayouts.module
lib/grub/i386-pc/keystatus.mod
lib/grub/i386-pc/keystatus.module
lib/grub/i386-pc/ldm.mod
lib/grub/i386-pc/ldm.module
lib/grub/i386-pc/legacycfg.mod
lib/grub/i386-pc/legacycfg.module
lib/grub/i386-pc/linux.mod
lib/grub/i386-pc/linux.module
lib/grub/i386-pc/linux16.mod
lib/grub/i386-pc/linux16.module
lib/grub/i386-pc/lnxboot.image
lib/grub/i386-pc/lnxboot.img
lib/grub/i386-pc/loadenv.mod
lib/grub/i386-pc/loadenv.module
lib/grub/i386-pc/loopback.mod
lib/grub/i386-pc/loopback.module
lib/grub/i386-pc/ls.mod
lib/grub/i386-pc/ls.module
lib/grub/i386-pc/lsacpi.mod
lib/grub/i386-pc/lsacpi.module
lib/grub/i386-pc/lsapm.mod
lib/grub/i386-pc/lsapm.module
lib/grub/i386-pc/lsmmap.mod
lib/grub/i386-pc/lsmmap.module
lib/grub/i386-pc/lspci.mod
lib/grub/i386-pc/lspci.module
lib/grub/i386-pc/luks.mod
lib/grub/i386-pc/luks.module
lib/grub/i386-pc/lvm.mod
lib/grub/i386-pc/lvm.module
lib/grub/i386-pc/lzma_decompress.image
lib/grub/i386-pc/lzma_decompress.img
lib/grub/i386-pc/lzopio.mod
lib/grub/i386-pc/lzopio.module
lib/grub/i386-pc/mdraid09.mod
lib/grub/i386-pc/mdraid09.module
lib/grub/i386-pc/mdraid09_be.mod
lib/grub/i386-pc/mdraid09_be.module
lib/grub/i386-pc/mdraid1x.mod
lib/grub/i386-pc/mdraid1x.module
lib/grub/i386-pc/memdisk.mod
lib/grub/i386-pc/memdisk.module
lib/grub/i386-pc/memrw.mod
lib/grub/i386-pc/memrw.module
lib/grub/i386-pc/minicmd.mod
lib/grub/i386-pc/minicmd.module
lib/grub/i386-pc/minix.mod
lib/grub/i386-pc/minix.module
lib/grub/i386-pc/minix2.mod
lib/grub/i386-pc/minix2.module
lib/grub/i386-pc/minix2_be.mod
lib/grub/i386-pc/minix2_be.module
lib/grub/i386-pc/minix3.mod
lib/grub/i386-pc/minix3.module
lib/grub/i386-pc/minix3_be.mod
lib/grub/i386-pc/minix3_be.module
lib/grub/i386-pc/minix_be.mod
lib/grub/i386-pc/minix_be.module
lib/grub/i386-pc/mmap.mod
lib/grub/i386-pc/mmap.module
lib/grub/i386-pc/moddep.lst
lib/grub/i386-pc/modinfo.sh
lib/grub/i386-pc/msdospart.mod
lib/grub/i386-pc/msdospart.module
lib/grub/i386-pc/multiboot.mod
lib/grub/i386-pc/multiboot.module
lib/grub/i386-pc/multiboot2.mod
lib/grub/i386-pc/multiboot2.module
lib/grub/i386-pc/net.mod
lib/grub/i386-pc/net.module
lib/grub/i386-pc/newc.mod
lib/grub/i386-pc/newc.module
lib/grub/i386-pc/nilfs2.mod
lib/grub/i386-pc/nilfs2.module
lib/grub/i386-pc/normal.mod
lib/grub/i386-pc/normal.module
lib/grub/i386-pc/ntfs.mod
lib/grub/i386-pc/ntfs.module
lib/grub/i386-pc/ntfscomp.mod
lib/grub/i386-pc/ntfscomp.module
lib/grub/i386-pc/ntldr.mod
lib/grub/i386-pc/ntldr.module
lib/grub/i386-pc/odc.mod
lib/grub/i386-pc/odc.module
lib/grub/i386-pc/ohci.mod
lib/grub/i386-pc/ohci.module
lib/grub/i386-pc/part_acorn.mod
lib/grub/i386-pc/part_acorn.module
lib/grub/i386-pc/part_amiga.mod
lib/grub/i386-pc/part_amiga.module
lib/grub/i386-pc/part_apple.mod
lib/grub/i386-pc/part_apple.module
lib/grub/i386-pc/part_bsd.mod
lib/grub/i386-pc/part_bsd.module
lib/grub/i386-pc/part_dvh.mod
lib/grub/i386-pc/part_dvh.module
lib/grub/i386-pc/part_gpt.mod
lib/grub/i386-pc/part_gpt.module
lib/grub/i386-pc/part_msdos.mod
lib/grub/i386-pc/part_msdos.module
lib/grub/i386-pc/part_plan.mod
lib/grub/i386-pc/part_plan.module
lib/grub/i386-pc/part_sun.mod
lib/grub/i386-pc/part_sun.module
lib/grub/i386-pc/part_sunpc.mod
lib/grub/i386-pc/part_sunpc.module
lib/grub/i386-pc/partmap.lst
lib/grub/i386-pc/parttool.lst
lib/grub/i386-pc/parttool.mod
lib/grub/i386-pc/parttool.module
lib/grub/i386-pc/password.mod
lib/grub/i386-pc/password.module
lib/grub/i386-pc/password_pbkdf2.mod
lib/grub/i386-pc/password_pbkdf2.module
lib/grub/i386-pc/pata.mod
lib/grub/i386-pc/pata.module
lib/grub/i386-pc/pbkdf2.mod
lib/grub/i386-pc/pbkdf2.module
lib/grub/i386-pc/pci.mod
lib/grub/i386-pc/pci.module
lib/grub/i386-pc/plan9.mod
lib/grub/i386-pc/plan9.module
lib/grub/i386-pc/play.mod
lib/grub/i386-pc/play.module
lib/grub/i386-pc/png.mod
lib/grub/i386-pc/png.module
lib/grub/i386-pc/priority_queue.mod
lib/grub/i386-pc/priority_queue.module
lib/grub/i386-pc/probe.mod
lib/grub/i386-pc/probe.module
lib/grub/i386-pc/pxe.mod
lib/grub/i386-pc/pxe.module
lib/grub/i386-pc/pxeboot.image
lib/grub/i386-pc/pxeboot.img
lib/grub/i386-pc/pxechain.mod
lib/grub/i386-pc/pxechain.module
lib/grub/i386-pc/raid5rec.mod
lib/grub/i386-pc/raid5rec.module
lib/grub/i386-pc/raid6rec.mod
lib/grub/i386-pc/raid6rec.module
lib/grub/i386-pc/read.mod
lib/grub/i386-pc/read.module
lib/grub/i386-pc/reboot.mod
lib/grub/i386-pc/reboot.module
lib/grub/i386-pc/regexp.mod
lib/grub/i386-pc/regexp.module
lib/grub/i386-pc/reiserfs.mod
lib/grub/i386-pc/reiserfs.module
lib/grub/i386-pc/relocator.mod
lib/grub/i386-pc/relocator.module
lib/grub/i386-pc/romfs.mod
lib/grub/i386-pc/romfs.module
lib/grub/i386-pc/scsi.mod
lib/grub/i386-pc/scsi.module
lib/grub/i386-pc/search.mod
lib/grub/i386-pc/search.module
lib/grub/i386-pc/search_fs_file.mod
lib/grub/i386-pc/search_fs_file.module
lib/grub/i386-pc/search_fs_uuid.mod
lib/grub/i386-pc/search_fs_uuid.module
lib/grub/i386-pc/search_label.mod
lib/grub/i386-pc/search_label.module
lib/grub/i386-pc/sendkey.mod
lib/grub/i386-pc/sendkey.module
lib/grub/i386-pc/serial.mod
lib/grub/i386-pc/serial.module
lib/grub/i386-pc/setjmp.mod
lib/grub/i386-pc/setjmp.module
lib/grub/i386-pc/setpci.mod
lib/grub/i386-pc/setpci.module
lib/grub/i386-pc/sfs.mod
lib/grub/i386-pc/sfs.module
lib/grub/i386-pc/sleep.mod
lib/grub/i386-pc/sleep.module
lib/grub/i386-pc/squash4.mod
lib/grub/i386-pc/squash4.module
lib/grub/i386-pc/tar.mod
lib/grub/i386-pc/tar.module
lib/grub/i386-pc/terminal.lst
lib/grub/i386-pc/terminal.mod
lib/grub/i386-pc/terminal.module
lib/grub/i386-pc/terminfo.mod
lib/grub/i386-pc/terminfo.module
lib/grub/i386-pc/test.mod
lib/grub/i386-pc/test.module
lib/grub/i386-pc/test_blockarg.mod
lib/grub/i386-pc/test_blockarg.module
lib/grub/i386-pc/testload.mod
lib/grub/i386-pc/testload.module
lib/grub/i386-pc/tftp.mod
lib/grub/i386-pc/tftp.module
lib/grub/i386-pc/tga.mod
lib/grub/i386-pc/tga.module
lib/grub/i386-pc/time.mod
lib/grub/i386-pc/time.module
lib/grub/i386-pc/trig.mod
lib/grub/i386-pc/trig.module
lib/grub/i386-pc/true.mod
lib/grub/i386-pc/true.module
lib/grub/i386-pc/udf.mod
lib/grub/i386-pc/udf.module
lib/grub/i386-pc/ufs1.mod
lib/grub/i386-pc/ufs1.module
lib/grub/i386-pc/ufs2.mod
lib/grub/i386-pc/ufs2.module
lib/grub/i386-pc/uhci.mod
lib/grub/i386-pc/uhci.module
lib/grub/i386-pc/usb.mod
lib/grub/i386-pc/usb.module
lib/grub/i386-pc/usb_keyboard.mod
lib/grub/i386-pc/usb_keyboard.module
lib/grub/i386-pc/usbms.mod
lib/grub/i386-pc/usbms.module
lib/grub/i386-pc/usbserial_common.mod
lib/grub/i386-pc/usbserial_common.module
lib/grub/i386-pc/usbserial_ftdi.mod
lib/grub/i386-pc/usbserial_ftdi.module
lib/grub/i386-pc/usbserial_pl2303.mod
lib/grub/i386-pc/usbserial_pl2303.module
lib/grub/i386-pc/usbtest.mod
lib/grub/i386-pc/usbtest.module
lib/grub/i386-pc/vbe.mod
lib/grub/i386-pc/vbe.module
lib/grub/i386-pc/vga.mod
lib/grub/i386-pc/vga.module
lib/grub/i386-pc/vga_text.mod
lib/grub/i386-pc/vga_text.module
lib/grub/i386-pc/video.lst
lib/grub/i386-pc/video.mod
lib/grub/i386-pc/video.module
lib/grub/i386-pc/video_bochs.mod
lib/grub/i386-pc/video_bochs.module
lib/grub/i386-pc/video_cirrus.mod
lib/grub/i386-pc/video_cirrus.module
lib/grub/i386-pc/video_fb.mod
lib/grub/i386-pc/video_fb.module
lib/grub/i386-pc/videoinfo.mod
lib/grub/i386-pc/videoinfo.module
lib/grub/i386-pc/videotest.mod
lib/grub/i386-pc/videotest.module
lib/grub/i386-pc/xfs.mod
lib/grub/i386-pc/xfs.module
lib/grub/i386-pc/xnu.mod
lib/grub/i386-pc/xnu.module
lib/grub/i386-pc/xnu_uuid.mod
lib/grub/i386-pc/xnu_uuid.module
lib/grub/i386-pc/xzio.mod
lib/grub/i386-pc/xzio.module
lib/grub/i386-pc/zfs.mod
lib/grub/i386-pc/zfs.module
lib/grub/i386-pc/zfscrypt.mod
lib/grub/i386-pc/zfscrypt.module
lib/grub/i386-pc/zfsinfo.mod
lib/grub/i386-pc/zfsinfo.module
sbin/grub-bios-setup
sbin/grub-probe
sbin/grub-install
sbin/grub-mkconfig
sbin/grub-ofpathname
sbin/grub-set-default
sbin/grub-sparc64-setup
sbin/grub-reboot
share/grub/grub-mkconfig_lib
man/man1/grub-editenv.1.gz
man/man1/grub-fstest.1.gz
man/man1/grub-kbdcomp.1.gz
man/man1/grub-menulst2cfg.1.gz
man/man1/grub-mkimage.1.gz
man/man1/grub-mklayout.1.gz
man/man1/grub-mkpasswd-pbkdf2.1.gz
man/man1/grub-mkrelpath.1.gz
man/man1/grub-mkrescue.1.gz
man/man1/grub-mkstandalone.1.gz
man/man1/grub-script-check.1.gz
man/man8/grub-bios-setup.8.gz
man/man8/grub-install.8.gz
man/man8/grub-mkconfig.8.gz
man/man8/grub-ofpathname.8.gz
man/man8/grub-probe.8.gz
man/man8/grub-reboot.8.gz
man/man8/grub-set-default.8.gz
man/man8/grub-sparc64-setup.8.gz
%%MKFONT%%@dirrm share/grub/themes/starfield
%%MKFONT%%@dirrm share/grub/themes
@dirrm share/grub
@dirrm lib/grub/i386-pc
@dirrm lib/grub
@dirrmtry etc/grub.d
@dirrmtry etc/bash_completion.d