summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu>2016-01-20 21:07:15 -0300
committercoadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu>2016-01-20 21:12:23 -0300
commit4908ab12e48bd3b9c9676689e9cc074d91e9243f (patch)
tree44b84f6c47e2a86c144b9e6cd9228ac51afaf83a
parent56e5a39f8f249f5600a230291c0338445371965e (diff)
add grub-git (uboot only) to [libre]
-rw-r--r--libre/grub-git/0001-Fix-security-issue-when-reading-username-and-passwor.patch47
-rw-r--r--libre/grub-git/0069-Backport-gnulib-fixes-for-C11.-Fixes-Savannah-bug-37.patch50
-rw-r--r--libre/grub-git/09_parabola195
-rw-r--r--libre/grub-git/60_memtest86+32
-rw-r--r--libre/grub-git/PKGBUILD528
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+-devicetree-file.patch92
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+am335x_boneblack-devicetree-file.patch92
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle+-devicetree-file.patch92
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle-devicetree-file.patch58
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm-devicetree-file.patch58
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm_ab-devicetree-file.patch58
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-parabola-initramfs.patch126
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-detect-udoo-devicetree-file.patch58
-rw-r--r--libre/grub-git/grub-10_linux-20_linux_xen-rebrand-free-distros.patch44
-rw-r--r--libre/grub-git/grub-2.00-fix-docs.patch21
-rw-r--r--libre/grub-git/grub-2.00-mkinitcpio-0.15.patch11
-rw-r--r--libre/grub-git/grub-2.00.5086-fix-lvm-parsing.patch54
-rw-r--r--libre/grub-git/grub-add-GRUB_COLOR_variables.patch32
-rw-r--r--libre/grub-git/grub.default50
-rw-r--r--libre/grub-git/grub.install33
20 files changed, 1731 insertions, 0 deletions
diff --git a/libre/grub-git/0001-Fix-security-issue-when-reading-username-and-passwor.patch b/libre/grub-git/0001-Fix-security-issue-when-reading-username-and-passwor.patch
new file mode 100644
index 000000000..aa07f2ffc
--- /dev/null
+++ b/libre/grub-git/0001-Fix-security-issue-when-reading-username-and-passwor.patch
@@ -0,0 +1,47 @@
+From e16eeda1200deabd0d3a4af968d526d62845a85f Mon Sep 17 00:00:00 2001
+From: Hector Marco-Gisbert <hecmargi@upv.es>
+Date: Fri, 13 Nov 2015 16:21:09 +0100
+Subject: [PATCH] Fix security issue when reading username and password
+
+ This patch fixes two integer underflows at:
+ * grub-core/lib/crypto.c
+ * grub-core/normal/auth.c
+
+Resolves: CVE-2015-8370
+
+Signed-off-by: Hector Marco-Gisbert <hecmargi@upv.es>
+Signed-off-by: Ismael Ripoll-Ripoll <iripoll@disca.upv.es>
+---
+ grub-core/lib/crypto.c | 2 +-
+ grub-core/normal/auth.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/grub-core/lib/crypto.c b/grub-core/lib/crypto.c
+index 010e550..524a3d8 100644
+--- a/grub-core/lib/crypto.c
++++ b/grub-core/lib/crypto.c
+@@ -468,7 +468,7 @@ grub_password_get (char buf[], unsigned buf_size)
+ break;
+ }
+
+- if (key == '\b')
++ if (key == '\b' && cur_len)
+ {
+ cur_len--;
+ continue;
+diff --git a/grub-core/normal/auth.c b/grub-core/normal/auth.c
+index c6bd96e..5782ec5 100644
+--- a/grub-core/normal/auth.c
++++ b/grub-core/normal/auth.c
+@@ -172,7 +172,7 @@ grub_username_get (char buf[], unsigned buf_size)
+ break;
+ }
+
+- if (key == '\b')
++ if (key == '\b' && cur_len)
+ {
+ cur_len--;
+ grub_printf ("\b");
+--
+2.6.4
+
diff --git a/libre/grub-git/0069-Backport-gnulib-fixes-for-C11.-Fixes-Savannah-bug-37.patch b/libre/grub-git/0069-Backport-gnulib-fixes-for-C11.-Fixes-Savannah-bug-37.patch
new file mode 100644
index 000000000..e043633af
--- /dev/null
+++ b/libre/grub-git/0069-Backport-gnulib-fixes-for-C11.-Fixes-Savannah-bug-37.patch
@@ -0,0 +1,50 @@
+From d09689a5a2863043d007c1acb9bf0a8d1d3b776d Mon Sep 17 00:00:00 2001
+From: Colin Watson <cjwatson@ubuntu.com>
+Date: Fri, 28 Dec 2012 06:43:35 +0000
+Subject: [PATCH 069/364] Backport gnulib fixes for C11. Fixes Savannah bug
+ #37738.
+
+* grub-core/gnulib/stdio.in.h (gets): Warn on use only if
+HAVE_RAW_DECL_GETS.
+* m4/stdio_h.m4 (gl_STDIO_H): Check for gets.
+---
+ ChangeLog | 8 ++++++++
+ grub-core/gnulib/stdio.in.h | 6 ++++--
+ m4/stdio_h.m4 | 2 +-
+ 3 files changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/grub-core/gnulib/stdio.in.h b/grub-core/gnulib/stdio.in.h
+index 80b9dbf..a8b00c6 100644
+--- a/grub-core/gnulib/stdio.in.h
++++ b/grub-core/gnulib/stdio.in.h
+@@ -138,10 +138,12 @@ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
+ #endif
+
+ /* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
++ so any use of gets warrants an unconditional warning; besides, C11
++ removed it. */
+ #undef gets
++#if HAVE_RAW_DECL_GETS
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
++#endif
+
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
+index f5650cd..8458bec 100644
+--- a/m4/stdio_h.m4
++++ b/m4/stdio_h.m4
+@@ -37,7 +37,7 @@ AC_DEFUN([gl_STDIO_H],
+ dnl corresponding gnulib module is not in use, and which is not
+ dnl guaranteed by C89.
+ gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
+- ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
++ ]], [dprintf fpurge fseeko ftello getdelim getline gets popen renameat
+ snprintf tmpfile vdprintf vsnprintf])
+ ])
+
+--
+1.8.1.4
+
diff --git a/libre/grub-git/09_parabola b/libre/grub-git/09_parabola
new file mode 100644
index 000000000..90a9062a3
--- /dev/null
+++ b/libre/grub-git/09_parabola
@@ -0,0 +1,195 @@
+#!/usr/bin/env bash
+
+##
+## grub-mkconfig helper script specific to Parabola GNU/Linux-libre
+## Contributed by "Keshav Amburay" <the ddoott ridikulus ddoott rat aatt geemmayil ddoott ccoomm>
+## Rebranded for Parabola by "André Silva" <emulatorman@parabola.nu>
+## Updated on 08 February 2014
+##
+## Script based on do_grub_config() function in Arch Archboot ISO Installer/Setup script
+## Some parts taken from /etc/grub.d/10_linux script shipped by GRUB(2) upstream
+##
+## This script can be freely distributed and/or modified
+## 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.
+##
+## This script 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.
+##
+
+_FUNC_GRUB_FILE_PRESENT() {
+
+ [[ -z "${GRUB_PLATFORM}" ]] && GRUB_PLATFORM="x86"
+
+ if [[ "${GRUB_PLATFORM}" == "x86" ]]; then
+ check="--is-x86-linux32"
+ elif [[ "${GRUB_PLATFORM}" == "i386-xen-pae" ]]; then
+ check="--is-i386-xen-pae-domu"
+ elif [[ "${GRUB_PLATFORM}" == "x86_64-xen" ]]; then
+ check="--is-x86_64-xen-domu"
+ else
+ check="--is-${GRUB_PLATFORM}-linux"
+ fi
+
+ case "${GRUB_PLATFORM}" in
+ x86)
+ list="$(for i in "${GRUB_ROOT}"/boot/vmlinuz-linux* ; do
+ if grub_file_is_not_garbage "${i}" && "${grub_file}" ${check} "${i}" ; then echo -n "${i} " ; fi
+ done)" ;;
+ *)
+ list="$(for i in "${GRUB_ROOT}"/boot/vmlinuz-linux* ; do
+ if grub_file_is_not_garbage "${i}" && "${grub_file}" ${check} "${i}" ; then echo -n "${i} " ; fi
+ done)" ;;
+ esac
+}
+
+set -e
+
+prefix="/usr"
+exec_prefix="${prefix}"
+datarootdir="/usr/share"
+datadir="${datarootdir}"
+sysconfdir="/etc"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+. "${sysconfdir}/default/grub"
+
+export TEXTDOMAIN="grub"
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class parabola --class gnu-linux --class gnu --class os"
+
+[[ "${grub_file}" != "" ]] && _FUNC_GRUB_FILE_PRESENT
+
+BOOT_PART_FS_UUID="$(${grub_probe} --target="fs_uuid" "/boot" 2>/dev/null)"
+BOOT_PART_HINTS_STRING="$(${grub_probe} --target="hints_string" "/boot" 2>/dev/null || true)"
+BOOT_PART_FS="$(${grub_probe} --target="fs" "/boot" 2>/dev/null)"
+
+ROOT_PART_GRUB_DEVICE="$(${grub_probe} --target=device / || true)"
+ROOT_PART_FS="$(${grub_probe} --device ${ROOT_PART_GRUB_DEVICE} --target=fs 2> /dev/null || echo "unknown")"
+
+if [[ "${GRUB_LINUX_ROOT_DEVICE}" == "" ]]; then
+
+ case "${ROOT_PART_FS}" in
+ btrfs)
+ rootsubvol="$(make_system_path_relative_to_its_root /)"
+ rootsubvol="${rootsubvol#/}"
+ if [[ "${rootsubvol}" != "" ]]; then
+ GRUB_LINUX_ROOT_DEVICE="subvol=${rootsubvol}"
+ fi
+ ;;
+ zfs)
+ rpool="$(${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true)"
+ bootfs="$(make_system_path_relative_to_its_root / | sed -e "s,@$,,")"
+ GRUB_LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
+ ;;
+ esac
+
+ if [[ "${GRUB_DEVICE_UUID}" == "" ]] || \
+ [[ "${GRUB_DISABLE_LINUX_UUID}" == "true" ]] || \
+ [[ ! -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ]] || \
+ uses_abstraction "${GRUB_DEVICE}" lvm ; then
+ GRUB_LINUX_ROOT_DEVICE="${GRUB_DEVICE}"
+ else
+ GRUB_LINUX_ROOT_DEVICE="UUID=${GRUB_DEVICE_UUID}"
+ fi
+fi
+
+[[ "${GRUB_LINUX_PARAMS}" == "" ]] && GRUB_LINUX_PARAMS="${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+for _KERNEL_ in ${list} ; do
+
+ echo "Found linux image: ${_KERNEL_}" >&2
+
+ basename="$(basename "${_KERNEL_}")"
+ dirname="$(dirname "${_KERNEL_}")"
+ REAL_DIR="$(make_system_path_relative_to_its_root "${dirname}")"
+
+ _KERNEL_FILE_="$(echo ${_KERNEL_} | sed 's,/boot/,,g')"
+ _KERNEL_PKG_="pkg-$(echo ${_KERNEL_FILE_} | sed 's,vmlinuz-,,g')"
+
+ _INITRAMFS_="${_KERNEL_FILE_/vmlinuz-/initramfs-}.img"
+
+ if [[ -e "/boot/${_INITRAMFS_}" ]]; then
+
+ echo "Found initramfs image: /boot/${_INITRAMFS_}" >&2
+
+cat << EOF
+
+menuentry "Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel" ${CLASS} {
+ $(save_default_entry)
+ if [ x\$feature_all_video_module = xy ]; then
+ insmod all_video
+ fi
+ set gfxpayload=keep
+ insmod ${BOOT_PART_FS}
+ if [ x\$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root ${BOOT_PART_HINTS_STRING} ${BOOT_PART_FS_UUID}
+ else
+ search --no-floppy --fs-uuid --set=root ${BOOT_PART_FS_UUID}
+ fi
+ echo 'Loading Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel ...'
+ linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
+ echo 'Loading Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel initramfs ...'
+ initrd ${REAL_DIR}/${_INITRAMFS_}
+}
+
+EOF
+ fi
+
+ _INITRAMFS_FALLBACK_="${_KERNEL_FILE_/vmlinuz-/initramfs-}-fallback.img"
+
+ if [[ -e "/boot/${_INITRAMFS_FALLBACK_}" ]]; then
+
+ echo "Found fallback initramfs image: /boot/${_INITRAMFS_FALLBACK_}" >&2
+
+cat << EOF
+
+menuentry "Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel (fallback initramfs)" ${CLASS} {
+ $(save_default_entry)
+ if [ x\$feature_all_video_module = xy ]; then
+ insmod all_video
+ fi
+ set gfxpayload=keep
+ insmod ${BOOT_PART_FS}
+ if [ x\$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root ${BOOT_PART_HINTS_STRING} ${BOOT_PART_FS_UUID}
+ else
+ search --no-floppy --fs-uuid --set=root ${BOOT_PART_FS_UUID}
+ fi
+ echo 'Loading Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel ...'
+ linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
+ echo 'Loading Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel fallback initramfs ...'
+ initrd ${REAL_DIR}/${_INITRAMFS_FALLBACK_}
+}
+
+EOF
+ fi
+
+ if [[ ! -e "/boot/${_INITRAMFS_}" ]] && [[ ! -e "/boot/${_INITRAMFS_FALLBACK_}" ]]; then
+cat << EOF
+
+menuentry "Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel (no initramfs)" ${CLASS} {
+ $(save_default_entry)
+ if [ x\$feature_all_video_module = xy ]; then
+ insmod all_video
+ fi
+ set gfxpayload=keep
+ insmod ${BOOT_PART_FS}
+ if [ x\$feature_platform_search_hint = xy ]; then
+ search --no-floppy --fs-uuid --set=root ${BOOT_PART_HINTS_STRING} ${BOOT_PART_FS_UUID}
+ else
+ search --no-floppy --fs-uuid --set=root ${BOOT_PART_FS_UUID}
+ fi
+ echo 'Loading Parabola GNU/Linux-libre ${_KERNEL_PKG_} kernel ...'
+ linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
+}
+
+EOF
+ fi
+
+done
diff --git a/libre/grub-git/60_memtest86+ b/libre/grub-git/60_memtest86+
new file mode 100644
index 000000000..086f0cc84
--- /dev/null
+++ b/libre/grub-git/60_memtest86+
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+########################################################
+# This script generates a memtest86+ entry on grub.cfg #
+# if memtest is installed on the system. #
+########################################################
+
+prefix="/usr"
+exec_prefix="${prefix}"
+
+datarootdir="/usr/share"
+datadir="${datarootdir}"
+
+. "${datadir}/grub/grub-mkconfig_lib"
+
+MEMTEST86_IMAGE="/boot/memtest86+/memtest.bin"
+CLASS="--class memtest86 --class gnu --class tool"
+
+if [ -e "${MEMTEST86_IMAGE}" ] && is_path_readable_by_grub "${MEMTEST86_IMAGE}" ; then
+ ## image exists, create menu entry
+ echo "Found memtest86+ image: ${MEMTEST86_IMAGE}" >&2
+ _GRUB_MEMTEST_HINTS_STRING="$(${grub_probe} --target=hints_string ${MEMTEST86_IMAGE})"
+ _GRUB_MEMTEST_FS_UUID="$(${grub_probe} --target=fs_uuid ${MEMTEST86_IMAGE})"
+ _GRUB_MEMTEST_REL_PATH="$(make_system_path_relative_to_its_root ${MEMTEST86_IMAGE})"
+ cat << EOF
+if [ "\${grub_platform}" == "pc" ]; then
+ menuentry "Memory Tester (memtest86+)" ${CLASS} {
+ search --fs-uuid --no-floppy --set=root ${_GRUB_MEMTEST_HINTS_STRING} ${_GRUB_MEMTEST_FS_UUID}
+ linux16 ${_GRUB_MEMTEST_REL_PATH} ${GRUB_CMDLINE_MEMTEST86}
+ }
+fi
+EOF
+fi
diff --git a/libre/grub-git/PKGBUILD b/libre/grub-git/PKGBUILD
new file mode 100644
index 000000000..e0b0a1a2e
--- /dev/null
+++ b/libre/grub-git/PKGBUILD
@@ -0,0 +1,528 @@
+# Maintainer: André Silva <emulatorman@parabola.nu>
+# Maintainer: Márcio Silva <coadde@parabola.nu>
+
+_UNIFONT_VER='8.0.01'
+
+pkgbase='grub-git'
+pkgname+=('grub-am335x_bone-git' 'grub-udoo-git' 'grub-omap3_beagle-git'
+ 'grub-omap3_beagle_xm-git' 'grub-omap3_beagle_xm_ab-git')
+pkgdesc='GNU GRand Unified Bootloader (2), (Parabola rebranded)'
+pkgver='r9296.92bbf25'
+pkgrel='1'
+url='https://www.gnu.org/software/grub/'
+arch=('armv7h')
+license=('GPL3')
+backup=('etc/default/grub' 'etc/grub.d/40_custom')
+install="grub.install"
+options=('!makeflags')
+depends=('sh' 'xz' 'gettext' 'device-mapper')
+makedepends=('git' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' 'python' 'autogen'
+ 'texinfo' 'help2man' 'gettext' 'device-mapper' 'fuse')
+
+optdepends=('freetype2: For grub-mkfont usage'
+ 'fuse: For grub-mount usage'
+ 'dosfstools: For grub-mkrescue FAT FS and EFI support'
+ 'libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue'
+ 'os-prober: To detect other OSes when generating grub.cfg in BIOS systems'
+ 'mtools: For grub-mkrescue FAT FS support')
+
+source=("grub-${pkgver}::git+git://git.sv.gnu.org/grub.git"
+ "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz"
+ "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz.sig"
+ '0001-Fix-security-issue-when-reading-username-and-passwor.patch'
+ 'grub-10_linux-20_linux_xen-detect-parabola-initramfs.patch'
+ 'grub-add-GRUB_COLOR_variables.patch'
+ '60_memtest86+'
+ 'grub.default'
+ 'grub-10_linux-20_linux_xen-detect-am335x_bone+am335x_boneblack-devicetree-file.patch'
+ 'grub-10_linux-20_linux_xen-detect-omap3_beagle-devicetree-file.patch'
+ 'grub-10_linux-20_linux_xen-detect-omap3_beagle_xm-devicetree-file.patch'
+ 'grub-10_linux-20_linux_xen-detect-omap3_beagle_xm_ab-devicetree-file.patch'
+ 'grub-10_linux-20_linux_xen-detect-udoo-devicetree-file.patch'
+ 'grub-10_linux-20_linux_xen-rebrand-free-distros.patch')
+
+md5sums=('SKIP'
+ '31cd5b872d38a3a3581ef1f7b2ef1216'
+ 'SKIP'
+ '9589ec46a04f9bb4d5da987340a4a324'
+ '3a9bb9bafe0062388e11f72f0e80ba7e'
+ 'e506ae4a9f9f7d1b765febfa84e10d48'
+ 'be55eabc102f2c60b38ed35c203686d6'
+ '8d1dd54ae4a1b550c097e056892ce953'
+ 'a46695e19b588a53b8bac9e3b3c56096'
+ '803f5b5f56ba6d74ca84aea67659116e'
+ 'b2c20ce3aa7944636b3ea499b40f2160'
+ '7e3245bdd30e291f44ab8a00b8a38f3e'
+ '95b721dfe74f42df52b7ae94e0e7c067'
+ 'e0133ad89ab3014210d4599f396a556e')
+
+validpgpkeys=('95D2E9AB8740D8046387FD151A09227B1F435A33') #Paul Hardy
+
+pkgver() {
+ cd "${srcdir}/grub-${pkgver}"
+ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
+
+prepare() {
+ cd "${srcdir}/grub-${pkgver}/"
+
+ msg 'CVE-2015-8370'
+ patch -Np1 -i "${srcdir}/0001-Fix-security-issue-when-reading-username-and-passwor.patch"
+
+ msg 'Patch to detect of Parabola GNU/Linux-libre initramfs images by grub-mkconfig'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-detect-parabola-initramfs.patch"
+
+ msg 'Patch to enable GRUB_COLOR_* variables in grub-mkconfig'
+ ## Based on http://lists.gnu.org/archive/html/grub-devel/2012-02/msg00021.html
+ patch -Np1 -i "${srcdir}/grub-add-GRUB_COLOR_variables.patch"
+
+ msg 'Fix DejaVuSans.ttf location so that grub-mkfont can create *.pf2 files for starfield theme'
+ sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "${srcdir}/grub-${pkgver}/configure.ac"
+
+ msg 'Rebranding for some free distros'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-rebrand-free-distros.patch"
+
+ msg "Fix mkinitcpio 'rw' FS#36275"
+ sed 's| ro | rw |g' -i "${srcdir}/grub-${pkgver}/util/grub.d/10_linux.in"
+
+ # msg 'autogen.sh requires python (2/3). since bzr is in makedepends, use python2 and no need to pull python3'
+ # sed 's|python |python2 |g' -i "${srcdir}/grub-${pkgver}/autogen.sh"
+
+ msg 'Pull in latest language files'
+ ./linguas.sh
+
+ msg 'Remove not working langs which need LC_ALL=C.UTF-8'
+ sed -e 's#en@cyrillic en@greek##g' -i "${srcdir}/grub-${pkgver}/po/LINGUAS"
+
+ msg 'Avoid problem with unifont during compile of grub, http://savannah.gnu.org/bugs/?40330 and https://bugs.archlinux.org/task/37847'
+ cp "${srcdir}/unifont-${_UNIFONT_VER}.bdf" "${srcdir}/grub-${pkgver}/unifont.bdf"
+}
+
+_build_grub-uboot_am335x-bone() {
+ msg "Copy the source for building the U-Boot (am335x-bone) part"
+ cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub-${pkgver}-uboot_am335x-bone"
+ cd "${srcdir}/grub-${pkgver}-uboot_am335x-bone/"
+
+ msg 'Patch to detect am335x-bone device tree blob file (dtb)'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-detect-am335x_bone+am335x_boneblack-devicetree-file.patch"
+
+ msg 'change memory adapted for am335x-bone support'
+ sed -i '\|arm_uboot_ldflags| s|0x08000000|0x82000000|
+ \|GRUB_KERNEL_ARM_UBOOT_LINK_ADDR| s|0x08000000|0x82000000|
+ ' grub-core/Makefile.core.def \
+ include/grub/offsets.h
+ #sed -i '\|LINUX_ADDRESS| s|start_of_ram [+] 0x8000|0x82000000|
+ # \|LINUX_INITRD_ADDRESS| s|start_of_ram [+] 0x02000000|0x88080000|
+ # \|LINUX_FDT_ADDRESS| s|LINUX_INITRD_ADDRESS [-] 0x10000|0x88000000|
+ # ' include/grub/arm/linux.h
+ sed -i '\|grub_arm_disable_caches_mmu|,+4 d
+ ' grub-core/loader/arm/linux.c
+
+ msg 'Unset all compiler FLAGS for U-Boot (am335x-bone) build'
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${pkgver}-uboot_am335x-bone/"
+
+ msg 'Run autogen.sh for U-Boot (am335x-bone) build'
+ ./autogen.sh
+
+ msg 'Run ./configure for U-Boot (am335x-bone) build'
+ ./configure \
+ --with-platform='uboot' \
+ --target='arm' \
+ --disable-efiemu \
+ --enable-mm-debug \
+ --enable-nls \
+ --enable-device-mapper \
+ --enable-cache-stats \
+ --enable-boot-time \
+ --enable-grub-mkfont \
+ --enable-grub-mount \
+ --prefix='/usr' \
+ --bindir='/usr/bin' \
+ --sbindir='/usr/bin' \
+ --mandir='/usr/share/man' \
+ --infodir='/usr/share/info' \
+ --datarootdir='/usr/share' \
+ --sysconfdir='/etc' \
+ --program-prefix='' \
+ --with-bootdir='/boot' \
+ --with-grubdir='grub' \
+ --disable-silent-rules \
+ --disable-werror
+
+ msg 'Run make for U-Boot (am335x-bone) build'
+ make
+}
+
+_build_grub-uboot_omap3_beagle() {
+ msg "Copy the source for building the U-Boot (omap3_beagle) part"
+ cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub-${pkgver}-uboot_omap3_beagle"
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle/"
+
+ msg 'Patch to detect omap3_beagle device tree blob file (dtb)'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-detect-omap3_beagle-devicetree-file.patch"
+
+ msg 'change memory adapted for omap3_beagle support'
+ sed -i '\|arm_uboot_ldflags| s|0x08000000|0x82000000|
+ \|GRUB_KERNEL_ARM_UBOOT_LINK_ADDR| s|0x08000000|0x82000000|
+ ' grub-core/Makefile.core.def \
+ include/grub/offsets.h
+ #sed -i '\|LINUX_ADDRESS| s|start_of_ram [+] 0x8000|0x82000000|
+ # \|LINUX_INITRD_ADDRESS| s|start_of_ram [+] 0x02000000|0x88080000|
+ # \|LINUX_FDT_ADDRESS| s|LINUX_INITRD_ADDRESS [-] 0x10000|0x88000000|
+ # ' include/grub/arm/linux.h
+ sed -i '\|grub_arm_disable_caches_mmu|,+4 d
+ ' grub-core/loader/arm/linux.c
+
+ msg 'Unset all compiler FLAGS for U-Boot (omap3_beagle) build'
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle/"
+
+ msg 'Run autogen.sh for U-Boot (omap3_beagle) build'
+ ./autogen.sh
+
+ msg 'Run ./configure for U-Boot (omap3_beagle) build'
+ ./configure \
+ --with-platform='uboot' \
+ --target='arm' \
+ --disable-efiemu \
+ --enable-mm-debug \
+ --enable-nls \
+ --enable-device-mapper \
+ --enable-cache-stats \
+ --enable-boot-time \
+ --enable-grub-mkfont \
+ --enable-grub-mount \
+ --prefix='/usr' \
+ --bindir='/usr/bin' \
+ --sbindir='/usr/bin' \
+ --mandir='/usr/share/man' \
+ --infodir='/usr/share/info' \
+ --datarootdir='/usr/share' \
+ --sysconfdir='/etc' \
+ --program-prefix='' \
+ --with-bootdir='/boot' \
+ --with-grubdir='grub' \
+ --disable-silent-rules \
+ --disable-werror
+
+ msg 'Run make for U-Boot (omap3_beagle) build'
+ make
+}
+
+_build_grub-uboot_omap3_beagle_xm() {
+ msg "Copy the source for building the U-Boot (omap3_beagle_xm) part"
+ cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm"
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm/"
+
+ msg 'Patch to detect omap3_beagle_xm device tree blob file (dtb)'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm-devicetree-file.patch"
+
+ msg 'change memory adapted for omap3_beagle_xm support'
+ sed -i '\|arm_uboot_ldflags| s|0x08000000|0x82000000|
+ \|GRUB_KERNEL_ARM_UBOOT_LINK_ADDR| s|0x08000000|0x82000000|
+ ' grub-core/Makefile.core.def \
+ include/grub/offsets.h
+ #sed -i '\|LINUX_ADDRESS| s|start_of_ram [+] 0x8000|0x82000000|
+ # \|LINUX_INITRD_ADDRESS| s|start_of_ram [+] 0x02000000|0x88080000|
+ # \|LINUX_FDT_ADDRESS| s|LINUX_INITRD_ADDRESS [-] 0x10000|0x88000000|
+ # ' include/grub/arm/linux.h
+ sed -i '\|grub_arm_disable_caches_mmu|,+4 d
+ ' grub-core/loader/arm/linux.c
+
+ msg 'Unset all compiler FLAGS for U-Boot (omap3_beagle_xm) build'
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm/"
+
+ msg 'Run autogen.sh for U-Boot (omap3_beagle_xm) build'
+ ./autogen.sh
+
+ msg 'Run ./configure for U-Boot (omap3_beagle_xm) build'
+ ./configure \
+ --with-platform='uboot' \
+ --target='arm' \
+ --disable-efiemu \
+ --enable-mm-debug \
+ --enable-nls \
+ --enable-device-mapper \
+ --enable-cache-stats \
+ --enable-boot-time \
+ --enable-grub-mkfont \
+ --enable-grub-mount \
+ --prefix='/usr' \
+ --bindir='/usr/bin' \
+ --sbindir='/usr/bin' \
+ --mandir='/usr/share/man' \
+ --infodir='/usr/share/info' \
+ --datarootdir='/usr/share' \
+ --sysconfdir='/etc' \
+ --program-prefix='' \
+ --with-bootdir='/boot' \
+ --with-grubdir='grub' \
+ --disable-silent-rules \
+ --disable-werror
+
+ msg 'Run make for U-Boot (omap3_beagle_xm) build'
+ make
+}
+
+_build_grub-uboot_omap3_beagle_xm_ab() {
+ msg "Copy the source for building the U-Boot (omap3_beagle_xm_ab) part"
+ cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm_ab"
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm_ab/"
+
+ msg 'Patch to detect omap3_beagle_xm_ab device tree blob file (dtb)'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm_ab-devicetree-file.patch"
+
+ msg 'change memory adapted for omap3_beagle_xm_ab support'
+ sed -i '\|arm_uboot_ldflags| s|0x08000000|0x82000000|
+ \|GRUB_KERNEL_ARM_UBOOT_LINK_ADDR| s|0x08000000|0x82000000|
+ ' grub-core/Makefile.core.def \
+ include/grub/offsets.h
+ #sed -i '\|LINUX_ADDRESS| s|start_of_ram [+] 0x8000|0x82000000|
+ # \|LINUX_INITRD_ADDRESS| s|start_of_ram [+] 0x02000000|0x88080000|
+ # \|LINUX_FDT_ADDRESS| s|LINUX_INITRD_ADDRESS [-] 0x10000|0x88000000|
+ # ' include/grub/arm/linux.h
+ sed -i '\|grub_arm_disable_caches_mmu|,+4 d
+ ' grub-core/loader/arm/linux.c
+
+ msg 'Unset all compiler FLAGS for U-Boot (omap3_beagle_xm_ab) build'
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm_ab/"
+
+ msg 'Run autogen.sh for U-Boot (omap3_beagle_xm_ab) build'
+ ./autogen.sh
+
+ msg 'Run ./configure for U-Boot (omap3_beagle_xm_ab) build'
+ ./configure \
+ --with-platform='uboot' \
+ --target='arm' \
+ --disable-efiemu \
+ --enable-mm-debug \
+ --enable-nls \
+ --enable-device-mapper \
+ --enable-cache-stats \
+ --enable-boot-time \
+ --enable-grub-mkfont \
+ --enable-grub-mount \
+ --prefix='/usr' \
+ --bindir='/usr/bin' \
+ --sbindir='/usr/bin' \
+ --mandir='/usr/share/man' \
+ --infodir='/usr/share/info' \
+ --datarootdir='/usr/share' \
+ --sysconfdir='/etc' \
+ --program-prefix='' \
+ --with-bootdir='/boot' \
+ --with-grubdir='grub' \
+ --disable-silent-rules \
+ --disable-werror
+
+ msg 'Run make for U-Boot (omap3_beagle_xm_ab) build'
+ make
+}
+
+_build_grub-uboot_udoo() {
+ msg "Copy the source for building the U-Boot (udoo) part"
+ cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub-${pkgver}-uboot_udoo"
+ cd "${srcdir}/grub-${pkgver}-uboot_udoo/"
+
+ msg 'Patch to detect udoo device tree blob file (dtb)'
+ patch -Np1 -i "${srcdir}/grub-10_linux-20_linux_xen-detect-udoo-devicetree-file.patch"
+
+ msg 'change memory adapted for udoo support'
+ sed -i '\|arm_uboot_ldflags| s|0x08000000|0x12000000|
+ \|GRUB_KERNEL_ARM_UBOOT_LINK_ADDR| s|0x08000000|0x12000000|
+ ' grub-core/Makefile.core.def \
+ include/grub/offsets.h
+ #sed -i '\|LINUX_ADDRESS| s|start_of_ram [+] 0x8000|0x12000000|
+ # \|LINUX_INITRD_ADDRESS| s|start_of_ram [+] 0x02000000|0x12A00000|
+ # \|LINUX_FDT_ADDRESS| s|LINUX_INITRD_ADDRESS [-] 0x10000|0x18000000|
+ # ' include/grub/arm/linux.h
+ sed -i '\|grub_arm_disable_caches_mmu|,+4 d
+ ' grub-core/loader/arm/linux.c
+
+ msg 'Unset all compiler FLAGS for U-Boot (udoo) build'
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${pkgver}-uboot_udoo/"
+
+ msg 'Run autogen.sh for U-Boot (udoo) build'
+ ./autogen.sh
+
+ msg 'Run ./configure for U-Boot (udoo) build'
+ ./configure \
+ --with-platform='uboot' \
+ --target='arm' \
+ --disable-efiemu \
+ --enable-mm-debug \
+ --enable-nls \
+ --enable-device-mapper \
+ --enable-cache-stats \
+ --enable-boot-time \
+ --enable-grub-mkfont \
+ --enable-grub-mount \
+ --prefix='/usr' \
+ --bindir='/usr/bin' \
+ --sbindir='/usr/bin' \
+ --mandir='/usr/share/man' \
+ --infodir='/usr/share/info' \
+ --datarootdir='/usr/share' \
+ --sysconfdir='/etc' \
+ --program-prefix='' \
+ --with-bootdir='/boot' \
+ --with-grubdir='grub' \
+ --disable-silent-rules \
+ --disable-werror
+
+ msg 'Run make for U-Boot (udoo) build'
+ make
+}
+
+build() {
+ cd "${srcdir}/grub-${pkgver}/"
+
+ msg 'Build grub U-Boot for BeagleBone and BeagleBone Black (am335x-bone) stuff'
+ _build_grub-uboot_am335x-bone
+
+ msg 'Build grub U-Boot for BeagleBoard (omap3_beagle) stuff'
+ _build_grub-uboot_omap3_beagle
+
+ msg 'Build grub U-Boot for BeagleBoard-xM (omap3_beagle_xm) stuff'
+ _build_grub-uboot_omap3_beagle_xm
+
+ msg 'Build grub U-Boot for BeagleBoard-xM rev A/B (omap3_beagle_xm_ab) stuff'
+ _build_grub-uboot_omap3_beagle_xm_ab
+
+ msg 'Build grub U-Boot for UDOO (udoo) stuff'
+ _build_grub-uboot_udoo
+}
+
+package_grub-am335x_bone-git() {
+ pkgdesc='GNU GRand Unified Bootloader (2) for BeagleBone and BeagleBone Black (am335x-bone), (Parabola rebranded)'
+ provides=('grub-am335x_bone')
+ conflicts=('grub-am335x_bone')
+
+ cd "${srcdir}/grub-${pkgver}-uboot_am335x-bone/"
+
+ msg 'Package grub U-Boot stuff'
+
+ msg 'Run make install for U-Boot build'
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
+
+ msg 'Remove gdb debugging related files for U-Boot build'
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+ msg 'Install /etc/default/grub (used by grub-mkconfig)'
+ install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
+}
+
+package_grub-omap3_beagle-git() {
+ pkgdesc='GNU GRand Unified Bootloader (2) for BeagleBoard (omap3_beagle), (Parabola rebranded)'
+ provides=('grub-beagleboard' 'grub-omap3_beagle')
+ conflicts=('grub-omap3_beagle')
+
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle/"
+
+ msg 'Package grub U-Boot stuff'
+
+ msg 'Run make install for U-Boot build'
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
+
+ msg 'Remove gdb debugging related files for U-Boot build'
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+ msg 'Install /etc/default/grub (used by grub-mkconfig)'
+ install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
+}
+
+package_grub-omap3_beagle_xm-git() {
+ pkgdesc='GNU GRand Unified Bootloader (2) for BeagleBoard-xM (omap3_beagle_xm), (Parabola rebranded)'
+ provides=('grub-beagleboard' 'grub-omap3_beagle_xm')
+ conflicts=('grub-omap3_beagle_xm')
+
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm/"
+
+ msg 'Package grub U-Boot stuff'
+
+ msg 'Run make install for U-Boot build'
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
+
+ msg 'Remove gdb debugging related files for U-Boot build'
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+ msg 'Install /etc/default/grub (used by grub-mkconfig)'
+ install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
+}
+
+package_grub-omap3_beagle_xm_ab-git() {
+ pkgdesc='GNU GRand Unified Bootloader (2) for BeagleBoard-xM rev A/B (omap3_beagle_xm_ab), (Parabola rebranded)'
+ provides=('grub-beagleboard' 'grub-omap3_beagle_xm_ab')
+ conflicts=('grub-omap3_beagle_xm_ab')
+
+ cd "${srcdir}/grub-${pkgver}-uboot_omap3_beagle_xm_ab/"
+
+ msg 'Package grub U-Boot stuff'
+
+ msg 'Run make install for U-Boot build'
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
+
+ msg 'Remove gdb debugging related files for U-Boot build'
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+ msg 'Install /etc/default/grub (used by grub-mkconfig)'
+ install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
+}
+
+package_grub-udoo-git() {
+ pkgdesc='GNU GRand Unified Bootloader (2) for UDOO (udoo), (Parabola rebranded)'
+ provides=('grub-udoo')
+ conflicts=('grub-udoo')
+
+ cd "${srcdir}/grub-${pkgver}-uboot_udoo/"
+
+ msg 'Package grub U-Boot stuff'
+
+ msg 'Run make install for U-Boot build'
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
+
+ msg 'Remove gdb debugging related files for U-Boot build'
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/arm-uboot"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+ msg 'Install /etc/default/grub (used by grub-mkconfig)'
+ install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
+}
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+-devicetree-file.patch
new file mode 100644
index 000000000..b620a39d0
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+-devicetree-file.patch
@@ -0,0 +1,92 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-10-16 08:28:56.901970897 -0300
++++ b/util/grub.d/10_linux.in 2015-10-16 08:30:45.112786124 -0300
+@@ -139,6 +139,25 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-bone.dtb
++EOF
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb
++EOF
++ fi
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +241,16 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-bone.dtb" >&2
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-boneblack.dtb" >&2
++ fi
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-10-16 08:28:56.901970897 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-10-16 08:31:03.152921373 -0300
+@@ -132,6 +132,25 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-bone.dtb
++EOF
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb
++EOF
++ fi
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +254,16 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-bone.dtb" >&2
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-boneblack.dtb" >&2
++ fi
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+am335x_boneblack-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+am335x_boneblack-devicetree-file.patch
new file mode 100644
index 000000000..b620a39d0
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-am335x_bone+am335x_boneblack-devicetree-file.patch
@@ -0,0 +1,92 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-10-16 08:28:56.901970897 -0300
++++ b/util/grub.d/10_linux.in 2015-10-16 08:30:45.112786124 -0300
+@@ -139,6 +139,25 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-bone.dtb
++EOF
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb
++EOF
++ fi
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +241,16 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-bone.dtb" >&2
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-boneblack.dtb" >&2
++ fi
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-10-16 08:28:56.901970897 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-10-16 08:31:03.152921373 -0300
+@@ -132,6 +132,25 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-bone.dtb
++EOF
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb
++EOF
++ fi
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +254,16 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-bone.dtb" >&2
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-boneblack.dtb" >&2
++ fi
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle+-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle+-devicetree-file.patch
new file mode 100644
index 000000000..b620a39d0
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle+-devicetree-file.patch
@@ -0,0 +1,92 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-10-16 08:28:56.901970897 -0300
++++ b/util/grub.d/10_linux.in 2015-10-16 08:30:45.112786124 -0300
+@@ -139,6 +139,25 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-bone.dtb
++EOF
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb
++EOF
++ fi
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +241,16 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-bone.dtb" >&2
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-boneblack.dtb" >&2
++ fi
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-10-16 08:28:56.901970897 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-10-16 08:31:03.152921373 -0300
+@@ -132,6 +132,25 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-bone.dtb
++EOF
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree file ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/am335x-boneblack.dtb
++EOF
++ fi
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +254,16 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BONE' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-bone.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-bone.dtb" >&2
++ fi
++ elif [ "$(cat /sys/devices/platform/bone_capemgr/baseboard/board-name)" = 'A335BNLT' ]; then
++ if test -f "${dirname}/dtbs/${version}/am335x-boneblack.dtb" ; then
++ gettext_printf "Found device tree file: %s\n" "${dirname}/dtbs/${version}/am335x-boneblack.dtb" >&2
++ fi
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle-devicetree-file.patch
new file mode 100644
index 000000000..0e5bc382a
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle-devicetree-file.patch
@@ -0,0 +1,58 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/10_linux.in 2015-09-27 18:43:26.911364096 -0300
+@@ -139,6 +139,14 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/omap3-beagle.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/omap3-beagle.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +230,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/omap3-beagle.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/omap3-beagle.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-09-27 18:47:34.953427471 -0300
+@@ -132,6 +132,14 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/omap3-beagle.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/omap3-beagle.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +243,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/omap3-beagle.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/omap3-beagle.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm-devicetree-file.patch
new file mode 100644
index 000000000..387ebbcc5
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm-devicetree-file.patch
@@ -0,0 +1,58 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/10_linux.in 2015-09-27 18:43:26.911364096 -0300
+@@ -139,6 +139,14 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/omap3-beagle-xm.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/omap3-beagle-xm.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +230,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/omap3-beagle-xm.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/omap3-beagle-xm.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-09-27 18:47:34.953427471 -0300
+@@ -132,6 +132,14 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/omap3-beagle-xm.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/omap3-beagle-xm.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +243,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/omap3-beagle-xm.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/omap3-beagle-xm.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm_ab-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm_ab-devicetree-file.patch
new file mode 100644
index 000000000..31b59890e
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-omap3_beagle_xm_ab-devicetree-file.patch
@@ -0,0 +1,58 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/10_linux.in 2015-09-27 18:43:26.911364096 -0300
+@@ -139,6 +139,14 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +230,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-09-27 18:47:34.953427471 -0300
+@@ -132,6 +132,14 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +243,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/omap3-beagle-xm-ab.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-parabola-initramfs.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-parabola-initramfs.patch
new file mode 100644
index 000000000..8184871b5
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-parabola-initramfs.patch
@@ -0,0 +1,126 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/10_linux.in 2015-09-27 15:34:19.822404966 -0300
+@@ -80,9 +80,11 @@
+ if [ x$type != xsimple ] ; then
+ case $type in
+ recovery)
+- title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
++ title="$(gettext_printf "%s, %s kernel (recovery mode)" "${os}" "${version}")" ;;
++ fallback)
++ title="$(gettext_printf "%s, %s kernel (fallback initramfs)" "${os}" "${version}")" ;;
+ *)
+- title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
++ title="$(gettext_printf "%s, %s kernel" "${os}" "${version}")" ;;
+ esac
+ if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+ replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+@@ -94,7 +96,7 @@
+ else
+ echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+ fi
+- if [ x$type != xrecovery ] ; then
++ if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then
+ save_default_entry | grub_add_tab
+ fi
+
+@@ -126,7 +128,7 @@
+ fi
+ printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
+ fi
+- message="$(gettext_printf "Loading Linux %s ..." ${version})"
++ message="$(gettext_printf "Loading %s kernel ..." ${version})"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$message" | grub_quote)'
+ linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+@@ -182,7 +184,7 @@
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+- version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
++ version=`echo $basename | sed -e "s,vmlinuz-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+@@ -238,6 +240,18 @@
+
+ linux_entry "${OS}" "${version}" advanced \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
++
++ if test -e "${dirname}/initramfs-${version}-fallback.img" ; then
++ initrd="initramfs-${version}-fallback.img"
++
++ if test -n "${initrd}" ; then
++ gettext_printf "Found fallback initramfs image: %s\n" "${dirname}/${initrd}" >&2
++ fi
++
++ linux_entry "${OS}" "${version}" fallback \
++ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
++ fi
++
+ if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+ linux_entry "${OS}" "${version}" recovery \
+ "single ${GRUB_CMDLINE_LINUX}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-09-27 15:35:00.589739244 -0300
+@@ -88,9 +88,11 @@
+ fi
+ if [ x$type != xsimple ] ; then
+ if [ x$type = xrecovery ] ; then
+- title="$(gettext_printf "%s, with Xen %s and Linux %s (recovery mode)" "${os}" "${xen_version}" "${version}")"
++ title="$(gettext_printf "%s, with Xen %s and %s kernel (recovery mode)" "${os}" "${xen_version}" "${version}")"
++ elif [ x$type = xfallback ] ; then
++ title="$(gettext_printf "%s, with Xen %s and %s kernel (fallback initramfs)" "${os}" "${xen_version}" "${version}")"
+ else
+- title="$(gettext_printf "%s, with Xen %s and Linux %s" "${os}" "${xen_version}" "${version}")"
++ title="$(gettext_printf "%s, with Xen %s and %s kernel" "${os}" "${xen_version}" "${version}")"
+ fi
+ replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+ if [ x"Xen ${xen_version}>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+@@ -103,7 +105,7 @@
+ title="$(gettext_printf "%s, with Xen hypervisor" "${os}")"
+ echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+ fi
+- if [ x$type != xrecovery ] ; then
++ if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then
+ save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
+ fi
+
+@@ -112,7 +114,7 @@
+ fi
+ printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
+ xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
+- lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
++ lmessage="$(gettext_printf "Loading %s kernel ..." ${version})"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$xmessage" | grub_quote)'
+ if [ "\$grub_platform" = "pc" -o "\$grub_platform" = "" ]; then
+@@ -210,7 +212,7 @@
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+- version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
++ version=`echo $basename | sed -e "s,vmlinuz-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+@@ -252,6 +254,18 @@
+
+ linux_entry "${OS}" "${version}" "${xen_version}" advanced \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
++
++ if test -e "${dirname}/initramfs-${version}-fallback.img" ; then
++ initrd="initramfs-${version}-fallback.img"
++
++ if test -n "${initrd}" ; then
++ gettext_printf "Found fallback initramfs image: %s\n" "${dirname}/${initrd}" >&2
++ fi
++
++ linux_entry "${OS}" "${version}" "${xen_version}" fallback \
++ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
++ fi
++
+ if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" recovery \
+ "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-detect-udoo-devicetree-file.patch b/libre/grub-git/grub-10_linux-20_linux_xen-detect-udoo-devicetree-file.patch
new file mode 100644
index 000000000..7cd6be6b4
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-detect-udoo-devicetree-file.patch
@@ -0,0 +1,58 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/10_linux.in 2015-09-27 18:43:26.911364096 -0300
+@@ -139,6 +139,14 @@
+ initrd ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/imx6q-udoo.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/imx6q-udoo.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -222,6 +230,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/imx6q-udoo.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/imx6q-udoo.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-09-27 18:47:34.953427471 -0300
+@@ -132,6 +132,14 @@
+ module --nounzip ${rel_dirname}/${initrd}
+ EOF
+ fi
++ if test -d "${rel_dirname}/dtbs/${version}/imx6q-udoo.dtb" ; then
++ # TRANSLATORS: Device tree path isn't identifier. Should be translated.
++ message="$(gettext_printf "Loading devices tree path ...")"
++ sed "s/^/$submenu_indentation/" << EOF
++ echo '$(echo "$message" | grub_quote)'
++ devicetree ${rel_dirname}/dtbs/${version}/imx6q-udoo.dtb
++EOF
++ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ }
+ EOF
+@@ -235,6 +243,10 @@
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
++ if test -d "${dirname}/dtbs/${version}/imx6q-udoo.dtb" ; then
++ gettext_printf "Found device tree directory: %s\n" "${dirname}/dtbs/${version}/imx6q-udoo.dtb" >&2
++ fi
++
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
diff --git a/libre/grub-git/grub-10_linux-20_linux_xen-rebrand-free-distros.patch b/libre/grub-git/grub-10_linux-20_linux_xen-rebrand-free-distros.patch
new file mode 100644
index 000000000..47added0d
--- /dev/null
+++ b/libre/grub-git/grub-10_linux-20_linux_xen-rebrand-free-distros.patch
@@ -0,0 +1,44 @@
+diff -Nur a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+--- a/util/grub.d/10_linux.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/10_linux.in 2015-09-27 14:58:23.533917184 -0300
+@@ -31,7 +31,17 @@
+ if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=GNU/Linux
+ else
+- OS="${GRUB_DISTRIBUTOR} GNU/Linux"
++ if echo ${GRUB_DISTRIBUTOR} | grep -qi Parabola ; then
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux-libre"
++ elif echo ${GRUB_DISTRIBUTOR} | grep -qi Blag ; then
++ OS="${GRUB_DISTRIBUTOR} Linux and GNU"
++ elif echo ${GRUB_DISTRIBUTOR} | grep -qi Musix ; then
++ OS="${GRUB_DISTRIBUTOR} GNU+Linux"
++ elif echo ${GRUB_DISTRIBUTOR} | grep -qi Dragora ; then
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux-libre"
++ else
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux"
++ fi
+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+ fi
+
+diff -Nur a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
+--- a/util/grub.d/20_linux_xen.in 2015-09-27 14:14:45.544730230 -0300
++++ b/util/grub.d/20_linux_xen.in 2015-09-27 14:59:16.319319658 -0300
+@@ -31,7 +31,17 @@
+ if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=GNU/Linux
+ else
+- OS="${GRUB_DISTRIBUTOR} GNU/Linux"
++ if echo ${GRUB_DISTRIBUTOR} | grep -qi Parabola ; then
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux-libre"
++ elif echo ${GRUB_DISTRIBUTOR} | grep -qi Blag ; then
++ OS="${GRUB_DISTRIBUTOR} Linux and GNU"
++ elif echo ${GRUB_DISTRIBUTOR} | grep -qi Musix ; then
++ OS="${GRUB_DISTRIBUTOR} GNU+Linux"
++ elif echo ${GRUB_DISTRIBUTOR} | grep -qi Dragora ; then
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux-libre"
++ else
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux"
++ fi
+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+ fi
+
diff --git a/libre/grub-git/grub-2.00-fix-docs.patch b/libre/grub-git/grub-2.00-fix-docs.patch
new file mode 100644
index 000000000..0aa481154
--- /dev/null
+++ b/libre/grub-git/grub-2.00-fix-docs.patch
@@ -0,0 +1,21 @@
+From 40d6b00fa48ae9c1cecf143da5c6061f6ffcb719 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com
+Date: Tue, 12 Mar 2013 15:23:02 -0400
+Subject: [PATCH] Fix docs
+
+I think the doc generation tools got stricter, so fix up the .texi file
+to work.
+
+diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
+--- a/docs/grub-dev.texi
++++ b/docs/grub-dev.texi
+@@ -1394,8 +1394,8 @@ grub_video_blit_glyph (&glyph, color, 0,
+
+ @node Bitmap API
+ @section Bitmap API
+-@itemize
+ @subsection grub_video_bitmap_create
++@itemize
+ @item Prototype:
+ @example
+ 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)
diff --git a/libre/grub-git/grub-2.00-mkinitcpio-0.15.patch b/libre/grub-git/grub-2.00-mkinitcpio-0.15.patch
new file mode 100644
index 000000000..1af848fa3
--- /dev/null
+++ b/libre/grub-git/grub-2.00-mkinitcpio-0.15.patch
@@ -0,0 +1,11 @@
+--- util/grub.d/10_linux.in.old 2013-07-28 08:55:47.825946239 +0200
++++ util/grub.d/10_linux.in 2013-07-28 08:56:14.082201512 +0200
+@@ -138,7 +138,7 @@
+ message="$(gettext_printf "Loading Linux %s ..." "${version}")"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$message" | grub_quote)'
+- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
++ linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} rw ${args}
+ EOF
+ if test -n "${initrd}" ; then
+ # TRANSLATORS: ramdisk isn't identifier. Should be translated.
diff --git a/libre/grub-git/grub-2.00.5086-fix-lvm-parsing.patch b/libre/grub-git/grub-2.00.5086-fix-lvm-parsing.patch
new file mode 100644
index 000000000..9a2eb3ff7
--- /dev/null
+++ b/libre/grub-git/grub-2.00.5086-fix-lvm-parsing.patch
@@ -0,0 +1,54 @@
+There is no explicit option to turn off alignment; it is implicitly
+disabled if one of --separator or --nameprefixes option is used.
+
+--separator was added in 2007, --nameprefixes - in 2009. So let's use
+--separator to extend range of versions we are compatible with. Note that
+one or another must be used, current parsing is broken otherwise.
+
+Signed-off-by: Andrey Borzenkov <address@hidden>
+
+---
+ util/getroot.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/util/getroot.c b/util/getroot.c
+index 2ad8a55..3afcf96 100644
+--- a/util/getroot.c
++++ b/util/getroot.c
+@@ -1322,7 +1322,7 @@ grub_util_get_dev_abstraction (const char *os_dev)
+ static void
+ pull_lvm_by_command (const char *os_dev)
+ {
+- char *argv[6];
++ char *argv[8];
+ int fd;
+ pid_t pid;
+ FILE *mdadm;
+@@ -1351,12 +1351,17 @@ pull_lvm_by_command (const char *os_dev)
+
+ /* execvp has inconvenient types, hence the casts. None of these
+ strings will actually be modified. */
++ /* by default PV name is left aligned in 10 character field, meaning that
++ we do not know where name ends. Using dummy --separator disables
++ alignment. We have a single field, so separator itself is not output */
+ argv[0] = (char *) "vgs";
+ argv[1] = (char *) "--options";
+ argv[2] = (char *) "pv_name";
+ argv[3] = (char *) "--noheadings";
+- argv[4] = vgname;
+- argv[5] = NULL;
++ argv[4] = (char *) "--separator";
++ argv[5] = (char *) ":";
++ argv[6] = vgname;
++ argv[7] = NULL;
+
+ pid = exec_pipe (argv, &fd);
+ free (vgname);
+@@ -1376,6 +1381,7 @@ pull_lvm_by_command (const char *os_dev)
+ while (getline (&buf, &len, mdadm) > 0)
+ {
+ char *ptr;
++ /* LVM adds two spaces as standard prefix */
+ for (ptr = buf; ptr < buf + 2 && *ptr == ' '; ptr++);
+ if (*ptr == '\0')
+ continue;
diff --git a/libre/grub-git/grub-add-GRUB_COLOR_variables.patch b/libre/grub-git/grub-add-GRUB_COLOR_variables.patch
new file mode 100644
index 000000000..c113a81d5
--- /dev/null
+++ b/libre/grub-git/grub-add-GRUB_COLOR_variables.patch
@@ -0,0 +1,32 @@
+diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
+index 3390ba9..c416489 100644
+--- a/util/grub-mkconfig.in
++++ b/util/grub-mkconfig.in
+@@ -218,6 +218,8 @@ export GRUB_DEFAULT \
+ GRUB_THEME \
+ GRUB_GFXPAYLOAD_LINUX \
+ GRUB_DISABLE_OS_PROBER \
++ GRUB_COLOR_NORMAL \
++ GRUB_COLOR_HIGHLIGHT \
+ GRUB_INIT_TUNE \
+ GRUB_SAVEDEFAULT \
+ GRUB_ENABLE_CRYPTODISK \
+diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
+index d2e7252..8259f45 100644
+--- a/util/grub.d/00_header.in
++++ b/util/grub.d/00_header.in
+@@ -125,6 +125,14 @@ cat <<EOF
+
+ EOF
+
++if [ x$GRUB_COLOR_NORMAL != x ] && [ x$GRUB_COLOR_HIGHLIGHT != x ] ; then
++ cat << EOF
++set menu_color_normal=$GRUB_COLOR_NORMAL
++set menu_color_highlight=$GRUB_COLOR_HIGHLIGHT
++
++EOF
++fi
++
+ serial=0;
+ gfxterm=0;
+ for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
diff --git a/libre/grub-git/grub.default b/libre/grub-git/grub.default
new file mode 100644
index 000000000..56585a47d
--- /dev/null
+++ b/libre/grub-git/grub.default
@@ -0,0 +1,50 @@
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="Parabola"
+GRUB_CMDLINE_LINUX_DEFAULT="quiet"
+GRUB_CMDLINE_LINUX=""
+
+# Preload both GPT and MBR modules so that they are not missed
+GRUB_PRELOAD_MODULES="part_gpt part_msdos"
+
+# Uncomment to enable Hidden Menu, and optionally hide the timeout count
+#GRUB_HIDDEN_TIMEOUT=5
+#GRUB_HIDDEN_TIMEOUT_QUIET=true
+
+# Uncomment to use basic console
+GRUB_TERMINAL_INPUT=console
+
+# Uncomment to disable graphical terminal
+#GRUB_TERMINAL_OUTPUT=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+GRUB_GFXMODE=auto
+
+# Uncomment to allow the kernel use the same resolution used by grub
+GRUB_GFXPAYLOAD_LINUX=keep
+
+# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
+# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+GRUB_DISABLE_RECOVERY=true
+
+# Uncomment and set to the desired menu colors. Used by normal and wallpaper
+# modes only. Entries specified as foreground/background.
+GRUB_COLOR_NORMAL="magenta/black"
+GRUB_COLOR_HIGHLIGHT="white/magenta"
+
+# Uncomment one of them for the gfx desired, a image background or a gfxtheme
+#GRUB_BACKGROUND="/path/to/wallpaper"
+#GRUB_THEME="/path/to/gfxtheme"
+
+# Uncomment to get a beep at GRUB start
+#GRUB_INIT_TUNE="480 440 1"
+
+#GRUB_SAVEDEFAULT="true"
+
+# Disable advanced submenu
+GRUB_DISABLE_SUBMENU="y"
diff --git a/libre/grub-git/grub.install b/libre/grub-git/grub.install
new file mode 100644
index 000000000..9188b357a
--- /dev/null
+++ b/libre/grub-git/grub.install
@@ -0,0 +1,33 @@
+infodir="usr/share/info"
+filelist=('grub.info' 'grub-dev.info')
+
+post_install() {
+ if [ -f /boot/grub/grub.cfg.pacsave ]; then
+ echo "Copying /boot/grub/grub.cfg.pacsave to /boot/grub/grub.cfg"
+ install -D -m0644 /boot/grub/grub.cfg.pacsave /boot/grub/grub.cfg
+ fi
+
+ cat << 'EOM'
+Generating grub.cfg.example config file...
+This may fail on some machines running a custom kernel.
+EOM
+
+ grub-mkconfig -o /boot/grub/grub.cfg.example 2> /dev/null
+ echo "done."
+
+ for file in ${filelist[@]}; do
+ install-info ${infodir}/${file}.gz ${infodir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ for file in ${filelist[@]}; do
+ install-info ${infodir}/${file}.gz ${infodir}/dir 2> /dev/null
+ done
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete ${infodir}/${file} ${infodir}/dir 2> /dev/null
+ done
+}