* new upstream release

* pacman hooks - remove info file handling from install script
* fix Intel ucode handling (FS#47941)
* remove trailing white spaces from PKGBUILD
This commit is contained in:
Christian Hesse 2016-07-29 07:59:10 +00:00
parent 25ca70055e
commit b7cfff4062
10 changed files with 110 additions and 519 deletions

54
0002-intel-ucode.patch Normal file
View File

@ -0,0 +1,54 @@
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 5a78513..39bd854 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -136,10 +136,12 @@ EOF
if test -n "${initrd}" ; then
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
message="$(gettext_printf "Loading initial ramdisk ...")"
- sed "s/^/$submenu_indentation/" << EOF
- echo '$(echo "$message" | grub_quote)'
- initrd ${rel_dirname}/${initrd}
-EOF
+ printf ' %s\n' "echo '$(echo "$message" | grub_quote)'" | sed "s/^/$submenu_indentation/"
+ printf ' %s ' 'initrd' | sed "s/^/$submenu_indentation/"
+ for i in ${initrd}; do
+ printf ' %s/%s' "${rel_dirname}" "${i}"
+ done
+ printf '\n'
fi
sed "s/^/$submenu_indentation/" << EOF
}
@@ -189,6 +191,11 @@ while [ "x$list" != "x" ] ; do
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
+ for i in intel-ucode.img; do
+ if test -e "${dirname}/${i}" ; then
+ initrd+=" ${i}"
+ fi
+ done
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
@@ -198,7 +205,7 @@ while [ "x$list" != "x" ] ; do
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
"initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
if test -e "${dirname}/${i}" ; then
- initrd="$i"
+ initrd+=" $i"
break
fi
done
@@ -217,7 +224,7 @@ while [ "x$list" != "x" ] ; do
fi
if test -n "${initrd}" ; then
- gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
+ gettext_printf "Found initrd image(s) in %s:%s\n" "${dirname}" "${initrd}" >&2
elif test -z "${initramfs}" ; then
# "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's
# no initrd or builtin initramfs, it can't work here.
--
2.7.1

View File

@ -1,194 +0,0 @@
#!/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

127
PKGBUILD
View File

@ -9,8 +9,8 @@ _IA32_EFI_IN_ARCH_X64="1"
_GRUB_EMU_BUILD="0"
_pkgver="2.02"
_GRUB_GIT_TAG="grub-2.02-beta2"
_GRUB_EXTRAS_COMMIT=4a56e2c2cc3d78f12f1788c27669a651071dee49
_GRUB_GIT_TAG="grub-2.02-beta3"
_GRUB_EXTRAS_COMMIT="f2a079441939eee7251bf141986cdd78946e1d20"
_UNIFONT_VER="6.3.20131217"
@ -22,8 +22,8 @@ _UNIFONT_VER="6.3.20131217"
pkgname="grub"
pkgdesc="GNU GRand Unified Bootloader (2)"
pkgver=2.02.beta2
pkgrel=6
pkgver=2.02.beta3
pkgrel=1
epoch=1
url="https://www.gnu.org/software/grub/"
arch=('x86_64' 'i686')
@ -41,7 +41,7 @@ makedepends=('git' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' 'python' 'autogen'
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'
'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'
@ -58,9 +58,9 @@ source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#tag=${_GRUB_GIT_TAG}
"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'
'0002-intel-ucode.patch'
'0003-10_linux-detect-archlinux-initramfs.patch'
'0004-add-GRUB_COLOR_variables.patch'
'60_memtest86+'
'grub.default'
'grub.cfg')
@ -70,8 +70,8 @@ md5sums=('SKIP'
'728b7439ac733a7c0d56049adec364c7'
'SKIP'
'9589ec46a04f9bb4d5da987340a4a324'
'e582a1ca6b06444e891f3b46af13d563'
'945527e0de8d384166a4cf23439ae9ee'
'a678629bc82c4e70c48d28242036d1d7'
'e506ae4a9f9f7d1b765febfa84e10d48'
'be55eabc102f2c60b38ed35c203686d6'
'a03ffd56324520393bf574cefccb893d'
@ -84,80 +84,77 @@ _pkgver() {
}
prepare() {
cd "${srcdir}/grub-${_pkgver}/"
# 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"
patch -Np1 -i "${srcdir}/0002-intel-ucode.patch"
echo
msg "Patch to detect of Arch Linux initramfs images by grub-mkconfig"
patch -Np1 -i "${srcdir}/grub-10_linux-detect-archlinux-initramfs.patch"
patch -Np1 -i "${srcdir}/0003-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"
patch -Np1 -i "${srcdir}/0004-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"
}
_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
msg "Run ./configure for bios build"
./configure \
--with-platform="pc" \
@ -183,31 +180,30 @@ _build_grub-common_and_bios() {
--disable-silent-rules \
--disable-werror
echo
msg "Run make for bios build"
make
echo
}
_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
msg "Run ./configure for ${_EFI_ARCH} efi build"
./configure \
--with-platform="efi" \
@ -233,31 +229,29 @@ _build_grub-efi() {
--disable-silent-rules \
--disable-werror
echo
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" \
@ -284,113 +278,102 @@ _build_grub-emu() {
--disable-silent-rules \
--disable-werror
echo
msg "Run make for emu build"
make
echo
}
build() {
cd "${srcdir}/grub-${_pkgver}/"
msg "Build grub bios stuff"
_build_grub-common_and_bios
echo
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_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
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"
msg "Install grub.cfg for backup array"
install -D -m0644 "${srcdir}/grub.cfg" "${pkgdir}/boot/grub/grub.cfg"
}
_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
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-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
}
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
}

View File

@ -1,143 +0,0 @@
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index db58ab9..e66e139 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -212,6 +212,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 9838720..dbb5dd2 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/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index e27d6f7..0a255f5 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -87,6 +87,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
@@ -100,7 +102,7 @@ linux_entry ()
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
@@ -132,7 +134,8 @@ linux_entry ()
fi
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
fi
- message="$(gettext_printf "Loading Linux %s ..." ${version})"
+
+ 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}
@@ -190,7 +193,22 @@ while [ "x$list" != "x" ] ; do
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+ if test -e "/etc/arch-release" ; then
+ if echo "${basename}" | grep -q 'vmlinuz-linux' ; then
+ version="`echo "${basename}" | sed -e 's,vmlinuz-linux,,g'`"
+
+ if [ "x${version}" = "x" ] ; then
+ version="core repo kernel"
+ else
+ version="`echo "${version}" | sed -e 's,-,,g'`"
+ version="${version} kernel"
+ fi
+ fi
+ fi
+
initrd=
+ initrd_arch="`echo "${basename}" | sed -e 's,vmlinuz,initramfs,g'`"
+
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
@@ -198,7 +216,8 @@ while [ "x$list" != "x" ] ; do
"initramfs-genkernel-${version}" \
"initramfs-genkernel-${alt_version}" \
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
- "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" \
+ "${initrd_arch}.img" ; do
if test -e "${dirname}/${i}" ; then
initrd="$i"
break
@@ -226,6 +245,22 @@ while [ "x$list" != "x" ] ; do
linux_root_device_thisversion=${GRUB_DEVICE}
fi
+ if test -e "/etc/arch-release" ; then
+ is_first_entry="false"
+
+ linux_entry "${OS}" "${version}" true \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+ for i in "${initrd_arch}-fallback.img" "initramfs-${version}-fallback.img" ; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="${i}"
+ linux_entry "${OS}" "${version}" fallback \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ break
+ fi
+ done
+ 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}"
@@ -240,8 +275,11 @@ while [ "x$list" != "x" ] ; do
is_top_level=false
fi
+ if ! test -e "/etc/arch-release" ; then
linux_entry "${OS}" "${version}" advanced \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ fi
+
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
linux_entry "${OS}" "${version}" recovery \
"single ${GRUB_CMDLINE_LINUX}"
@@ -252,8 +290,10 @@ done
# 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_top_level" != xtrue ]; then
echo '}'
fi
+fi
echo "$title_correction_code"

View File

@ -1,11 +0,0 @@
--- 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.

View File

@ -1,54 +0,0 @@
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;

View File

@ -1,26 +0,0 @@
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

View File

@ -1,6 +1,3 @@
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"
@ -11,23 +8,8 @@ post_install() {
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
}