summaryrefslogtreecommitdiffstats
path: root/abs/core/grub
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2016-01-15 22:29:15 (GMT)
committerBritney Fransen <brfransen@gmail.com>2016-01-15 22:29:15 (GMT)
commit421b1c00b15b19b6d51c59da8befeda9741ae36b (patch)
tree89b84ec56f6891025827d37b119de26d77f61033 /abs/core/grub
parentd3f8722a113faa265a7abc29629fe467b095a1da (diff)
downloadlinhes_pkgbuild-421b1c00b15b19b6d51c59da8befeda9741ae36b.zip
linhes_pkgbuild-421b1c00b15b19b6d51c59da8befeda9741ae36b.tar.gz
linhes_pkgbuild-421b1c00b15b19b6d51c59da8befeda9741ae36b.tar.bz2
grub: update to 2.02.beta2
Diffstat (limited to 'abs/core/grub')
-rw-r--r--abs/core/grub/0001-Fix-security-issue-when-reading-username-and-passwor.patch47
-rwxr-xr-xabs/core/grub/10_archlinux194
-rw-r--r--abs/core/grub/20_memtest86+29
-rw-r--r--abs/core/grub/60_memtest86+32
-rw-r--r--abs/core/grub/PKGBUILD481
-rw-r--r--abs/core/grub/__changelog3
-rw-r--r--abs/core/grub/archlinux_grub_mkconfig_fixes.patch22
-rw-r--r--abs/core/grub/grub-10_linux-detect-archlinux-initramfs.patch54
-rw-r--r--abs/core/grub/grub-2.00-mkinitcpio-0.15.patch11
-rw-r--r--abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch54
-rw-r--r--abs/core/grub/grub-add-GRUB_COLOR_variables.patch32
-rw-r--r--abs/core/grub/grub-intel-ucode.patch26
-rw-r--r--abs/core/grub/grub.cfg8
-rw-r--r--abs/core/grub/grub_bzr_export.sh113
14 files changed, 781 insertions, 325 deletions
diff --git a/abs/core/grub/0001-Fix-security-issue-when-reading-username-and-passwor.patch b/abs/core/grub/0001-Fix-security-issue-when-reading-username-and-passwor.patch
new file mode 100644
index 0000000..aa07f2f
--- /dev/null
+++ b/abs/core/grub/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/abs/core/grub/10_archlinux b/abs/core/grub/10_archlinux
new file mode 100755
index 0000000..f86578a
--- /dev/null
+++ b/abs/core/grub/10_archlinux
@@ -0,0 +1,194 @@
+#!/usr/bin/env bash
+
+##
+## grub-mkconfig helper script specific to Arch Linux
+## Contributed by "Keshav Amburay" <the ddoott ridikulus ddoott rat aatt geemmayil ddoott ccoomm>
+## Updated on 08 February 2014
+##
+## Script based on do_grub_config() function in Arch Linux 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 arch-linux --class arch --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 "Arch Linux ${_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 Arch Linux ${_KERNEL_PKG_} kernel ...'
+ linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
+ echo 'Loading Arch Linux ${_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 "Arch Linux ${_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 Arch Linux ${_KERNEL_PKG_} kernel ...'
+ linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
+ echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel fallback initramfs ...'
+ initrd ${REAL_DIR}/${_INITRAMFS_FALLBACK_}
+}
+
+EOF
+ fi
+
+ if [[ ! -e "/boot/${_INITRAMFS_}" ]] && [[ ! -e "/boot/${_INITRAMFS_FALLBACK_}" ]]; then
+cat << EOF
+
+menuentry "Arch Linux ${_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 Arch Linux ${_KERNEL_PKG_} kernel ...'
+ linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
+}
+
+EOF
+ fi
+
+done
diff --git a/abs/core/grub/20_memtest86+ b/abs/core/grub/20_memtest86+
deleted file mode 100644
index 1d3096f..0000000
--- a/abs/core/grub/20_memtest86+
+++ /dev/null
@@ -1,29 +0,0 @@
-#! /bin/sh -e
-########################################################
-# 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
- cat << EOF
-menuentry "Memory test (memtest86+)" $CLASS {
-EOF
- prepare_grub_to_access_device `${grub_probe} --target=device $MEMTEST86_IMAGE` | sed -e "s/^/ /"
- cat << EOF
- linux16 (\$root)`make_system_path_relative_to_its_root $MEMTEST86_IMAGE`
-}
-EOF
-fi
diff --git a/abs/core/grub/60_memtest86+ b/abs/core/grub/60_memtest86+
new file mode 100644
index 0000000..086f0cc
--- /dev/null
+++ b/abs/core/grub/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/abs/core/grub/PKGBUILD b/abs/core/grub/PKGBUILD
index 460935d..e7daa70 100644
--- a/abs/core/grub/PKGBUILD
+++ b/abs/core/grub/PKGBUILD
@@ -1,90 +1,173 @@
-# Maintainer: Ronald van Haren <ronald.archlinux.org>
-# Contributor: Keshav P R <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+# Maintainer : Ronald van Haren <ronald.archlinux.org>
+# Contributor: Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
-_grub_lua_ver=24
-_grub_ntldr_ver=21
-_grub_915_ver=9
+## "1" to enable IA32-EFI build in Arch x86_64, "0" to disable
+_IA32_EFI_IN_ARCH_X64="1"
-pkgname=('grub-common' 'grub-bios' 'grub-efi-i386')
-pkgbase=grub
-pkgver=2.00
-pkgrel=2
-url="https://www.gnu.org/software/grub/"
-arch=('i686' 'x86_64')
-license=('GPL3')
-makedepends=('xz' 'bdf-unifont' 'ttf-dejavu' 'python2' 'autogen'
- 'texinfo' 'help2man' 'gettext' 'device-mapper' 'fuse')
+## "1" to enable EMU build, "0" to disable
+_GRUB_EMU_BUILD="0"
-source=("http://ftp.gnu.org/gnu/grub/grub-${pkgver}.tar.xz"
- "ftp://ftp.archlinux.org/other/grub2/grub2_extras_lua_r${_grub_lua_ver}.tar.xz"
- "ftp://ftp.archlinux.org/other/grub2/grub2_extras_ntldr-img_r${_grub_ntldr_ver}.tar.xz"
- "ftp://ftp.archlinux.org/other/grub2/grub2_extras_915resolution_r${_grub_915_ver}.tar.xz"
- 'archlinux_grub_mkconfig_fixes.patch'
- 'grub.default'
- 'grub.cfg'
- '20_memtest86+'
- 'grub_bzr_export.sh')
-
-noextract=("grub2_extras_lua_r${_grub_lua_ver}.tar.xz"
- "grub2_extras_ntldr-img_r${_grub_ntldr_ver}.tar.xz"
- "grub2_extras_915resolution_r${_grub_915_ver}.tar.xz")
-
-sha1sums=('274d91e96b56a5b9dd0a07accff69dbb6dfb596b'
- '89290031b974780c6df76893836d2477d4add895'
- 'eb4b35b4c36b64f9405cbcbc538cb205171c1c0a'
- 'd5ae2efec25616028a9d89e98b6e454f1c4c415f'
- '26e4e946190bea1f03632658cf08ba90e11dec57'
- 'dbf493dec4722feb11f0b5c71ad453a18daf0fc5'
- '76ae862a945a8848e6999adf8ad1847f0f7008b9'
- 'ce35d7ae75cd1b5b677e894e528f96add40e77b9'
- '0cfd4e51cdb14a92f06cfd3c607f2aa21f3e55fc')
+_pkgver="2.02"
+_GRUB_GIT_TAG="grub-2.02-beta2"
+_GRUB_EXTRAS_COMMIT=4a56e2c2cc3d78f12f1788c27669a651071dee49
-_build_grub-common_and_bios() {
+_UNIFONT_VER="6.3.20131217"
- ## copy the source for building the common/bios package
- cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub_bios-${pkgver}"
- cd "${srcdir}/grub_bios-${pkgver}"
- #sed -i -e '/gets is a security/d' grub-core/gnulib/stdio.in.h
- ## Apply Archlinux specific fixes to enable grub-mkconfig detect Arch kernels and initramfs
- patch -Np1 -i "${srcdir}/archlinux_grub_mkconfig_fixes.patch"
- echo
+[[ "${CARCH}" == "x86_64" ]] && _EFI_ARCH="x86_64"
+[[ "${CARCH}" == "i686" ]] && _EFI_ARCH="i386"
- ## fix unifont.bdf location so that grub-mkfont can create *.pf2 files
- sed 's|/usr/share/fonts/unifont|/usr/share/fonts/unifont /usr/share/fonts/misc|g' -i "${srcdir}/grub_bios-${pkgver}/configure.ac"
+[[ "${CARCH}" == "x86_64" ]] && _EMU_ARCH="x86_64"
+[[ "${CARCH}" == "i686" ]] && _EMU_ARCH="i386"
- ## 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_bios-${pkgver}/configure.ac"
+pkgname="grub"
+pkgdesc="GNU GRand Unified Bootloader (2)"
+pkgver=2.02.beta2
+pkgrel=6
+epoch=1
+url="https://www.gnu.org/software/grub/"
+arch=('x86_64' 'i686')
+license=('GPL3')
+backup=('boot/grub/grub.cfg' 'etc/default/grub' 'etc/grub.d/40_custom')
+install="${pkgname}.install"
+options=('!makeflags')
- ## add the grub-extra sources
- export GRUB_CONTRIB="${srcdir}/grub_bios-${pkgver}/grub-extras/"
- install -d "${srcdir}/grub_bios-${pkgver}/grub-extras"
+conflicts=('grub-common' 'grub-bios' 'grub-emu' "grub-efi-${_EFI_ARCH}" 'grub-legacy')
+replaces=('grub-common' 'grub-bios' 'grub-emu' "grub-efi-${_EFI_ARCH}")
+provides=('grub-common' 'grub-bios' 'grub-emu' "grub-efi-${_EFI_ARCH}")
- bsdtar xf "${srcdir}/grub2_extras_lua_r${_grub_lua_ver}.tar.xz" \
- -C "${srcdir}/grub_bios-${pkgver}/grub-extras"
+makedepends=('git' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' 'python2' 'autogen'
+ 'texinfo' 'help2man' 'gettext' 'device-mapper' 'fuse')
+depends=('sh' 'xz' 'gettext' 'device-mapper')
+optdepends=('freetype2: For grub-mkfont usage'
+ 'fuse: For grub-mount usage'
+ 'dosfstools: For grub-mkrescue FAT FS and EFI support'
+ 'efibootmgr: For grub-install 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')
+
+if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then
+ makedepends+=('libusbx' 'sdl')
+ optdepends+=('libusbx: For grub-emu USB support'
+ 'sdl: For grub-emu SDL support')
+fi
+
+source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#tag=${_GRUB_GIT_TAG}"
+ "grub-extras::git+git://git.sv.gnu.org/grub-extras.git#commit=${_GRUB_EXTRAS_COMMIT}"
+ "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-detect-archlinux-initramfs.patch'
+ 'grub-intel-ucode.patch'
+ 'grub-add-GRUB_COLOR_variables.patch'
+ '60_memtest86+'
+ 'grub.default'
+ 'grub.cfg')
+
+md5sums=('SKIP'
+ 'SKIP'
+ '728b7439ac733a7c0d56049adec364c7'
+ 'SKIP'
+ '9589ec46a04f9bb4d5da987340a4a324'
+ '945527e0de8d384166a4cf23439ae9ee'
+ 'a678629bc82c4e70c48d28242036d1d7'
+ 'e506ae4a9f9f7d1b765febfa84e10d48'
+ 'be55eabc102f2c60b38ed35c203686d6'
+ 'a03ffd56324520393bf574cefccb893d'
+ 'c8b9511586d57d6f2524ae7898397a46')
+validpgpkeys=('95D2E9AB8740D8046387FD151A09227B1F435A33') #Paul Hardy
+
+_pkgver() {
+ cd "${srcdir}/grub-${_pkgver}/"
+ echo "$(git describe --tags)" | sed -e 's|grub.||g' -e 's|-|\.|g'
+}
- bsdtar xf "${srcdir}/grub2_extras_ntldr-img_r${_grub_ntldr_ver}.tar.xz" \
- -C "${srcdir}/grub_bios-${pkgver}/grub-extras"
+prepare() {
+
+ cd "${srcdir}/grub-${_pkgver}/"
- bsdtar xf "${srcdir}/grub2_extras_915resolution_r${_grub_915_ver}.tar.xz" \
- -C "${srcdir}/grub_bios-${pkgver}/grub-extras"
+ # CVE-2015-8370
+ patch -Np1 -i ../0001-Fix-security-issue-when-reading-username-and-passwor.patch
+
+ msg "Patch to load Intel microcode"
+ patch -Np1 -i "${srcdir}/grub-intel-ucode.patch"
+ echo
- ## Requires python2
- sed 's|python |python2 |g' -i "${srcdir}/grub_bios-${pkgver}/autogen.sh"
+ msg "Patch to detect of Arch Linux initramfs images by grub-mkconfig"
+ patch -Np1 -i "${srcdir}/grub-10_linux-detect-archlinux-initramfs.patch"
+ echo
+
+ 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"
+ echo
+
+ 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 "Fix mkinitcpio 'rw' FS#36275"
+ sed 's| ro | rw |g' -i "${srcdir}/grub-${_pkgver}/util/grub.d/10_linux.in"
+
+ msg "Fix OS naming FS#33393"
+ sed 's|GNU/Linux|Linux|' -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
+ echo
+
+ 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"
+
+}
- ## start the actual build process
- cd "${srcdir}/grub_bios-${pkgver}"
+_build_grub-common_and_bios() {
+
+ msg "Set ARCH dependent variables for bios build"
+ if [[ "${CARCH}" == 'x86_64' ]]; then
+ _EFIEMU="--enable-efiemu"
+ else
+ _EFIEMU="--disable-efiemu"
+ fi
+
+ msg "Copy the source for building the bios part"
+ cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-bios"
+ cd "${srcdir}/grub-${_pkgver}-bios/"
+
+ msg "Add the grub-extra sources for bios build"
+ install -d "${srcdir}/grub-${_pkgver}-bios/grub-extras"
+ cp -r "${srcdir}/grub-extras/915resolution" "${srcdir}/grub-${_pkgver}-bios/grub-extras/915resolution"
+ export GRUB_CONTRIB="${srcdir}/grub-${_pkgver}-bios/grub-extras/"
+
+ msg "Unset all compiler FLAGS for bios build"
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${_pkgver}-bios/"
+
+ msg "Run autogen.sh for bios build"
./autogen.sh
echo
-
- CFLAGS="" ./configure \
+
+ msg "Run ./configure for bios build"
+ ./configure \
--with-platform="pc" \
--target="i386" \
- --host="${CARCH}-unknown-linux-gnu" \
"${_EFIEMU}" \
--enable-mm-debug \
--enable-nls \
--enable-device-mapper \
--enable-cache-stats \
+ --enable-boot-time \
--enable-grub-mkfont \
--enable-grub-mount \
--prefix="/usr" \
@@ -94,42 +177,47 @@ _build_grub-common_and_bios() {
--infodir="/usr/share/info" \
--datarootdir="/usr/share" \
--sysconfdir="/etc" \
- --program-prefix="" \
+ --program-prefix="" \
--with-bootdir="/boot" \
--with-grubdir="grub" \
+ --disable-silent-rules \
--disable-werror
echo
-
- CFLAGS="" make
+
+ msg "Run make for bios build"
+ make
echo
-
}
-_build_grub-efi-i386() {
-
- ## copy the source for building the efi package
- cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub_efi-${pkgver}"
- cd "${srcdir}/grub_efi-${pkgver}"
- #sed -i -e '/gets is a security/d' grub-core/gnulib/stdio.in.h
- export GRUB_CONTRIB="${srcdir}/grub_efi-${pkgver}/grub-extras/"
- install -d "${srcdir}/grub_efi-${pkgver}/grub-extras"
-
- bsdtar xf "${srcdir}/grub2_extras_lua_r${_grub_lua_ver}.tar.xz" \
- -C "${srcdir}/grub_efi-${pkgver}/grub-extras"
-
- cd "${srcdir}/grub_efi-${pkgver}"
+_build_grub-efi() {
+
+ msg "Copy the source for building the ${_EFI_ARCH} efi part"
+ cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}"
+ cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
+
+ msg "Unset all compiler FLAGS for ${_EFI_ARCH} efi build"
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
+
+ msg "Run autogen.sh for ${_EFI_ARCH} efi build"
./autogen.sh
echo
-
- CFLAGS="" ./configure \
+
+ msg "Run ./configure for ${_EFI_ARCH} efi build"
+ ./configure \
--with-platform="efi" \
- --target="i386" \
- --host="${CARCH}-unknown-linux-gnu" \
+ --target="${_EFI_ARCH}" \
--disable-efiemu \
--enable-mm-debug \
--enable-nls \
--enable-device-mapper \
--enable-cache-stats \
+ --enable-boot-time \
--enable-grub-mkfont \
--enable-grub-mount \
--prefix="/usr" \
@@ -142,108 +230,167 @@ _build_grub-efi-i386() {
--program-prefix="" \
--with-bootdir="/boot" \
--with-grubdir="grub" \
+ --disable-silent-rules \
--disable-werror
echo
-
- CFLAGS="" make
+
+ msg "Run make for ${_EFI_ARCH} efi build"
+ make
echo
+
+}
+_build_grub-emu() {
+
+ msg "Copy the source for building the emu part"
+ cp -r "${srcdir}/grub-${_pkgver}/" "${srcdir}/grub-${_pkgver}-emu/"
+
+ msg "Unset all compiler FLAGS for emu build"
+ unset CFLAGS
+ unset CPPFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+ unset MAKEFLAGS
+
+ cd "${srcdir}/grub-${_pkgver}-emu/"
+
+ msg "Run autogen.sh for emu build"
+ ./autogen.sh
+ echo
+
+ msg "Run ./configure for emu build"
+ ./configure \
+ --with-platform="emu" \
+ --target="${_EMU_ARCH}" \
+ --enable-mm-debug \
+ --enable-nls \
+ --enable-device-mapper \
+ --enable-cache-stats \
+ --enable-grub-mkfont \
+ --enable-grub-mount \
+ --enable-grub-emu-usb=no \
+ --enable-grub-emu-sdl=no \
+ --disable-grub-emu-pci \
+ --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
+ echo
+
+ msg "Run make for emu build"
+ make
+ echo
+
}
build() {
-
- ## set architecture dependent variables
- if [[ "${CARCH}" == 'x86_64' ]]; then
- _EFIEMU="--enable-efiemu"
- else
- _EFIEMU="--disable-efiemu"
- fi
-
- _HOST="${CARCH}"
-
- cd "${srcdir}/grub-${pkgver}"
- # _get_locale_files
- sed -i -e '/gets is a security/d' grub-core/gnulib/stdio.in.h
+
+ cd "${srcdir}/grub-${_pkgver}/"
+
+ msg "Build grub bios stuff"
_build_grub-common_and_bios
echo
-
- _build_grub-efi-i386
+
+ msg "Build grub ${_EFI_ARCH} efi stuff"
+ _build_grub-efi
echo
-
+
+ if [[ "${CARCH}" == "x86_64" ]] && [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then
+ msg "Build grub i386 efi stuff"
+ _EFI_ARCH="i386" _build_grub-efi
+ echo
+ fi
+
+ if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then
+ msg "Build grub emu stuff"
+ _build_grub-emu
+ echo
+ fi
+
}
-package_grub-common() {
-
- pkgdesc="GNU GRand Unified Bootloader - Utilities and Common Files"
- depends=('sh' 'xz' 'freetype2' 'gettext' 'device-mapper' 'fuse')
- conflicts=('grub-legacy' 'grub')
- replaces=('grub2-common')
- provides=('grub2-common')
- backup=('boot/grub/grub.cfg' 'etc/default/grub' 'etc/grub.d/40_custom')
- optdepends=('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')
- install="grub.install"
- options=('strip' 'purge' 'docs' 'zipman' '!emptydirs')
-
- cd "${srcdir}/grub_bios-${pkgver}"
+_package_grub-common_and_bios() {
+
+ cd "${srcdir}/grub-${_pkgver}-bios/"
+
+ msg "Run make install for bios build"
make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
echo
-
- ## install extra /etc/grub.d/ files
- install -D -m0755 "${srcdir}/20_memtest86+" "${pkgdir}/etc/grub.d/20_memtest86+"
-
- ## install /etc/default/grub (used by grub-mkconfig)
+
+ msg "Remove gdb debugging related files for bios build"
+ rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/i386-pc"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+ msg "Install extra /etc/grub.d/ files"
+ install -D -m0755 "${srcdir}/60_memtest86+" "${pkgdir}/etc/grub.d/60_memtest86+"
+
+ msg "Install /etc/default/grub (used by grub-mkconfig)"
install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
-
- ## install grub.cfg (needed so it doesn't get removed on upgrading because it was previously here)
+
+ msg "Install grub.cfg for backup array"
install -D -m0644 "${srcdir}/grub.cfg" "${pkgdir}/boot/grub/grub.cfg"
-
- # remove platform specific files
- rm -rf "${pkgdir}/usr/lib/grub/i386-pc/"
-
+
}
-package_grub-bios() {
-
- pkgdesc="GNU GRand Unified Bootloader - i386 PC BIOS Modules"
- depends=("grub-common=${pkgver}")
- options=('!strip' '!emptydirs')
- replaces=('grub2-bios')
- provides=('grub2-bios')
-
- cd "${srcdir}/grub_bios-${pkgver}"
- make DESTDIR="${pkgdir}/" install
+_package_grub-efi() {
+
+ cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
+
+ msg "Run make install for ${_EFI_ARCH} efi build"
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
echo
-
- ## remove non platform-specific files
- rm -rf "${pkgdir}"/{boot,etc,usr/{share,bin,sbin}}
-
- ## remove gdb debugging related files
- rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.module || true
- rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.image || true
- rm -f "${pkgdir}/usr/lib/grub/i386-pc"/{kernel.exec,gdb_grub,gmodule.pl} || true
-
+
+ msg "Remove gdb debugging related files for ${_EFI_ARCH} efi build"
+ rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
}
-package_grub-efi-i386() {
-
- pkgdesc="GNU GRand Unified Bootloader - i386 UEFI Modules"
- depends=("grub-common=${pkgver}" 'dosfstools' 'efibootmgr')
- options=('!strip' '!emptydirs')
- replaces=('grub2-efi-i386')
- provides=('grub2-efi-i386')
-
- cd "${srcdir}/grub_efi-${pkgver}"
- make DESTDIR="${pkgdir}/" install
+_package_grub-emu() {
+
+ cd "${srcdir}/grub-${_pkgver}-emu/"
+
+ msg "Run make install for emu build"
+ make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
echo
+
+ msg "Remove gdb debugging related files for emu build"
+ rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/*.module || true
+ rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/*.image || true
+ rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/{kernel.exec,gdb_grub,gmodule.pl} || true
+
+}
- ## remove non platform-specific files
- rm -rf "${pkgdir}"/{boot,etc,usr/{share,bin,sbin}}
-
- ## remove gdb debugging related files
- rm -f "${pkgdir}/usr/lib/grub/i386-efi"/*.module || true
- rm -f "${pkgdir}/usr/lib/grub/i386-efi"/*.image || true
- rm -f "${pkgdir}/usr/lib/grub/i386-efi"/{kernel.exec,gdb_grub,gmodule.pl} || true
-
+package() {
+
+ cd "${srcdir}/grub-${_pkgver}/"
+
+ msg "Package grub ${_EFI_ARCH} efi stuff"
+ _package_grub-efi
+
+ if [[ "${CARCH}" == "x86_64" ]] && [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then
+ msg "Package grub i386 efi stuff"
+ _EFI_ARCH="i386" _package_grub-efi
+ echo
+ fi
+
+ if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then
+ msg "Package grub emu stuff"
+ _package_grub-emu
+ echo
+ fi
+
+ msg "Package grub bios stuff"
+ _package_grub-common_and_bios
+
}
diff --git a/abs/core/grub/__changelog b/abs/core/grub/__changelog
index 0be82a4..608798d 100644
--- a/abs/core/grub/__changelog
+++ b/abs/core/grub/__changelog
@@ -1 +1,2 @@
- -e '/gets is a security/d' grub-core/gnulib/stdio.in.h
+PKGBUILD:
+- change dep python to python2
diff --git a/abs/core/grub/archlinux_grub_mkconfig_fixes.patch b/abs/core/grub/archlinux_grub_mkconfig_fixes.patch
index c8bd3e4..c87a428 100644
--- a/abs/core/grub/archlinux_grub_mkconfig_fixes.patch
+++ b/abs/core/grub/archlinux_grub_mkconfig_fixes.patch
@@ -1,8 +1,8 @@
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
-index 516be86..5f37db2 100644
+index db58ab9..e66e139 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
-@@ -213,6 +213,8 @@ export GRUB_DEFAULT \
+@@ -212,6 +212,8 @@ export GRUB_DEFAULT \
GRUB_THEME \
GRUB_GFXPAYLOAD_LINUX \
GRUB_DISABLE_OS_PROBER \
@@ -12,10 +12,10 @@ index 516be86..5f37db2 100644
GRUB_SAVEDEFAULT \
GRUB_ENABLE_CRYPTODISK \
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
-index 765bfdc..b148558 100644
+index 9838720..dbb5dd2 100644
--- a/util/grub.d/00_header.in
+++ b/util/grub.d/00_header.in
-@@ -115,6 +115,14 @@ cat <<EOF
+@@ -125,6 +125,14 @@ cat <<EOF
EOF
@@ -31,7 +31,7 @@ index 765bfdc..b148558 100644
gfxterm=0;
for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
-index 14402e8..64c9bb5 100644
+index e27d6f7..0a255f5 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -87,6 +87,8 @@ linux_entry ()
@@ -49,7 +49,7 @@ index 14402e8..64c9bb5 100644
fi
- if [ x$type != xrecovery ] ; then
+ if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then
- save_default_entry | sed -e "s/^/\t/"
+ save_default_entry | grub_add_tab
fi
@@ -132,7 +134,8 @@ linux_entry ()
@@ -60,7 +60,7 @@ index 14402e8..64c9bb5 100644
+
+ message="$(gettext_printf "Loading Linux %s ..." "${version}")"
sed "s/^/$submenu_indentation/" << EOF
- echo '$message'
+ echo '$(echo "$message" | grub_quote)'
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
@@ -190,7 +193,22 @@ while [ "x$list" != "x" ] ; do
alt_version=`echo $version | sed -e "s,\.old$,,g"`
@@ -115,11 +115,11 @@ index 14402e8..64c9bb5 100644
+ done
+ fi
+
- if [ "x$is_first_entry" = xtrue ]; then
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
-@@ -239,8 +274,11 @@ while [ "x$list" != "x" ] ; do
- echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
+@@ -240,8 +275,11 @@ while [ "x$list" != "x" ] ; do
+ is_top_level=false
fi
+ if ! test -e "/etc/arch-release" ; then
@@ -135,7 +135,7 @@ index 14402e8..64c9bb5 100644
# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
+if ! test -e "/etc/arch-release" ; then
- if [ x"$is_first_entry" != xtrue ]; then
+ if [ x"$is_top_level" != xtrue ]; then
echo '}'
fi
+fi
diff --git a/abs/core/grub/grub-10_linux-detect-archlinux-initramfs.patch b/abs/core/grub/grub-10_linux-detect-archlinux-initramfs.patch
new file mode 100644
index 0000000..18d9d52
--- /dev/null
+++ b/abs/core/grub/grub-10_linux-detect-archlinux-initramfs.patch
@@ -0,0 +1,54 @@
+From b470ffd22e43acc7c11231180187a720efd88de1 Mon Sep 17 00:00:00 2001
+From: Keshav Amburay <the.ridikulus.rat@gmail.com>
+Date: Sat, 5 Apr 2014 20:40:51 -0400
+Subject: [PATCH] 10_linux: Detect Arch Linux main and fallback initramfs
+ images
+
+---
+ util/grub.d/10_linux.in | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 00d1931..7d4086b 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -81,6 +81,8 @@ linux_entry ()
+ case $type in
+ recovery)
+ title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
++ fallback)
++ title="$(gettext_printf "%s, with Linux %s (fallback initramfs)" "${os}" "${version}")" ;;
+ *)
+ title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
+ esac
+@@ -180,7 +182,7 @@ while [ "x$list" != "x" ] ; do
+ 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}"
+
+@@ -236,6 +238,18 @@ while [ "x$list" != "x" ] ; do
+
+ 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}"
+--
+1.9.1
+
diff --git a/abs/core/grub/grub-2.00-mkinitcpio-0.15.patch b/abs/core/grub/grub-2.00-mkinitcpio-0.15.patch
new file mode 100644
index 0000000..1af848f
--- /dev/null
+++ b/abs/core/grub/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/abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch b/abs/core/grub/grub-2.00.5086-fix-lvm-parsing.patch
new file mode 100644
index 0000000..60128ba
--- /dev/null
+++ b/abs/core/grub/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; \ No newline at end of file
diff --git a/abs/core/grub/grub-add-GRUB_COLOR_variables.patch b/abs/core/grub/grub-add-GRUB_COLOR_variables.patch
new file mode 100644
index 0000000..c113a81
--- /dev/null
+++ b/abs/core/grub/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/abs/core/grub/grub-intel-ucode.patch b/abs/core/grub/grub-intel-ucode.patch
new file mode 100644
index 0000000..de6bd28
--- /dev/null
+++ b/abs/core/grub/grub-intel-ucode.patch
@@ -0,0 +1,26 @@
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index d2e2a8f..f67e50f 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -65,6 +65,12 @@ case x"$GRUB_FS" in
+ ;;
+ esac
+
++intel_ucode=
++if test -e "/boot/intel-ucode.img" ; then
++ gettext_printf "Found Intel Microcode image\n" >&2
++ intel_ucode="$(make_system_path_relative_to_its_root /boot/intel-ucode.img)"
++fi
++
+ title_correction_code=
+
+ linux_entry ()
+@@ -136,7 +142,7 @@ EOF
+ message="$(gettext_printf "Loading initial ramdisk ...")"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$message" | grub_quote)'
+- initrd ${rel_dirname}/${initrd}
++ initrd ${intel_ucode} ${rel_dirname}/${initrd}
+ EOF
+ fi
+ sed "s/^/$submenu_indentation/" << EOF
diff --git a/abs/core/grub/grub.cfg b/abs/core/grub/grub.cfg
index 1f08102..9d9144f 100644
--- a/abs/core/grub/grub.cfg
+++ b/abs/core/grub/grub.cfg
@@ -78,7 +78,7 @@ set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
-menuentry 'Arch GNU/Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-ad4103fa-d940-47ca-8506-301d8071d467' {
+menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-ad4103fa-d940-47ca-8506-301d8071d467' {
load_video
set gfxpayload=keep
insmod gzio
@@ -91,11 +91,11 @@ menuentry 'Arch GNU/Linux, with Linux core repo kernel' --class arch --class gnu
search --no-floppy --fs-uuid --set=root ad4103fa-d940-47ca-8506-301d8071d467
fi
echo 'Loading Linux core repo kernel ...'
- linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 ro quiet
+ linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux.img
}
-menuentry 'Arch GNU/Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-ad4103fa-d940-47ca-8506-301d8071d467' {
+menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-ad4103fa-d940-47ca-8506-301d8071d467' {
load_video
set gfxpayload=keep
insmod gzio
@@ -108,7 +108,7 @@ menuentry 'Arch GNU/Linux, with Linux core repo kernel (Fallback initramfs)' --c
search --no-floppy --fs-uuid --set=root ad4103fa-d940-47ca-8506-301d8071d467
fi
echo 'Loading Linux core repo kernel ...'
- linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 ro quiet
+ linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-fallback.img
}
diff --git a/abs/core/grub/grub_bzr_export.sh b/abs/core/grub/grub_bzr_export.sh
deleted file mode 100644
index ff8f99e..0000000
--- a/abs/core/grub/grub_bzr_export.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env bash
-
-## For actual repos
-
-# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/lua lua
-# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/gpxe gpxe
-# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/ntldr-img ntldr-img
-# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/915resolution 915resolution
-
-## For launchpad mirror
-
-# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-lua lua
-# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-gpxe gpxe
-# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-ntldr-img ntldr-img
-# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-915resolution 915resolution
-
-## grub-extras zfs is integrated into grub bzr main repo and is no longer needed separately.
-
-_WD="${PWD}/"
-_OUTPUT_DIR="${_WD}/"
-
-_ACTUAL_PKGVER="2.00"
-
-_GRUB_BZR_REPO_DIR="${_WD}/grub_mainline_BZR/"
-_GRUB_BZR_EXP_REPO_DIR="${_WD}/grub_experimental_BZR/"
-_GRUB_EXTRAS_REPOS_DIR="${_WD}/grub_extras_BZR/"
-
-_MAIN_SNAPSHOT() {
-
- cd "${_GRUB_BZR_REPO_DIR}/"
- echo
-
- _REVNUM="$(bzr revno ${_GRUB_BZR_REPO_DIR})"
- bzr export --root="grub-${_ACTUAL_PKGVER}" --format="tar" "${_OUTPUT_DIR}/grub_r${_REVNUM}.tar"
- echo
-
- cd "${_OUTPUT_DIR}/"
-
- xz -9 "${_OUTPUT_DIR}/grub_r${_REVNUM}.tar"
- echo
-
-}
-
-_EXP_SNAPSHOT() {
-
- cd "${_GRUB_BZR_EXP_REPO_DIR}/"
- echo
-
- _REVNUM="$(bzr revno ${_GRUB_BZR_EXP_REPO_DIR})"
- bzr export --root="grub-${_ACTUAL_PKGVER}" --format="tar" "${_OUTPUT_DIR}/grub_exp_r${_REVNUM}.tar"
- echo
-
- cd "${_OUTPUT_DIR}/"
-
- xz -9 "${_OUTPUT_DIR}/grub_exp_r${_REVNUM}.tar"
- echo
-
-}
-
-_EXTRAS_SNAPSHOT() {
-
- cd "${_GRUB_EXTRAS_REPOS_DIR}/${_GRUB_EXTRAS_NAME}/"
- echo
-
- _REVNUM="$(bzr revno ${_GRUB_EXTRAS_REPOS_DIR}/${_GRUB_EXTRAS_NAME})"
- bzr export --root="${_GRUB_EXTRAS_NAME}" --format="tar" "${_OUTPUT_DIR}/grub_extras_${_GRUB_EXTRAS_NAME}_r${_REVNUM}.tar"
- echo
-
- cd "${_OUTPUT_DIR}/"
- echo
-
- xz -9 "${_OUTPUT_DIR}/grub_extras_${_GRUB_EXTRAS_NAME}_r${_REVNUM}.tar"
- echo
-
-}
-
-echo
-
-set -x -e
-
-echo
-
-_MAIN_SNAPSHOT
-
-echo
-
-# _EXP_SNAPSHOT
-
-echo
-
-_GRUB_EXTRAS_NAME="lua"
-_EXTRAS_SNAPSHOT
-
-# _GRUB_EXTRAS_NAME="gpxe"
-# _EXTRAS_SNAPSHOT
-
-_GRUB_EXTRAS_NAME="ntldr-img"
-_EXTRAS_SNAPSHOT
-
-_GRUB_EXTRAS_NAME="915resolution"
-_EXTRAS_SNAPSHOT
-
-echo
-
-set +x +e
-
-echo
-
-unset _WD
-unset _OUTPUT_DIR
-unset _GRUB_BZR_REPO_DIR
-unset _GRUB_EXTRAS_REPOS_DIR
-unset _GRUB_EXTRAS_NAME