summaryrefslogtreecommitdiffstats
path: root/source/a/elilo
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/elilo')
-rwxr-xr-xsource/a/elilo/elilo.SlackBuild35
-rw-r--r--source/a/elilo/elilo.double.kernel.size.limit.diff17
-rw-r--r--source/a/elilo/eliloconfig18
-rw-r--r--source/a/elilo/slack-desc10
4 files changed, 59 insertions, 21 deletions
diff --git a/source/a/elilo/elilo.SlackBuild b/source/a/elilo/elilo.SlackBuild
index 2fa31a7af..1dc1004c6 100755
--- a/source/a/elilo/elilo.SlackBuild
+++ b/source/a/elilo/elilo.SlackBuild
@@ -1,6 +1,6 @@
-#!/bin/sh
+#!/bin/bash
-# Copyright 2013, 2014, 2016 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2013, 2014, 2016, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,9 +20,11 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PKGNAM=elilo
VERSION=${VERSION:-$(echo $PKGNAM*.tar.?z* | rev | cut -f 2 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-6}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -32,7 +34,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
@@ -50,6 +51,14 @@ else
LIBDIRSUFFIX=""
fi
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
@@ -58,11 +67,16 @@ mkdir elilo
cd elilo
tar xvf $CWD/${PKGNAM}-$VERSION-all.tar.?z* || exit 1
tar xvf elilo-${VERSION}-source.tar.gz || exit 1
-# This is a rebuilt version of the x86_64 elilo (which is really the only
-# useful one), fetched from $TMP/elilo/elilo-${VERSION}-source/ after
-# running this script. Elilo can be rather fragile, so we don't want to
-# rebuild it all the time and risk breaking it.
-tar xvf $CWD/elilo.x64.rebuilt.tar.xz || exit 1
+
+# The tarball extracted below contains rebuilt versions of the x86_64 and
+# ia32 elilo, which were extracted from $TMP/elilo/elilo-${VERSION}-source/
+# after building under both architectures. This approach simplifies making
+# changes to other parts of the package without needlessly complicating
+# things, as the loaders themselves seldom need to be rebuilt. Besides,
+# elilo can be rather fragile, so we don't want to rebuild it without a
+# good reason and risk breaking it.
+tar xvf $CWD/elilo.loader.binaries.tar.xz || exit 1
+
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
cd elilo-${VERSION}-source || cd elilo || exit
@@ -71,6 +85,9 @@ sed -i "s,/usr/lib,/usr/lib${LIBDIRSUFFIX},g" Make.defaults
sed -i "s,EFICRT0.*= /usr/lib${LIBDIRSUFFIX},EFICRT0 = /usr/lib${LIBDIRSUFFIX}/gnuefi,g" Make.defaults
sed -i "s,dpkg-architecture -qDEB_BUILD_ARCH,uname -m,g" Make.defaults
+# Increase kernel size limit from 8MB to 16MB (nobody will ever need more than 640K ;-):
+zcat $CWD/elilo.double.kernel.size.limit.diff.gz | patch -p1 --verbose || exit 1
+
# We will build this from source.
# However, we will package the pre-built EFI binaries, since we would
# like to include both 32-bit and 64-bit x86 EFI loaders in the
diff --git a/source/a/elilo/elilo.double.kernel.size.limit.diff b/source/a/elilo/elilo.double.kernel.size.limit.diff
new file mode 100644
index 000000000..305655ceb
--- /dev/null
+++ b/source/a/elilo/elilo.double.kernel.size.limit.diff
@@ -0,0 +1,17 @@
+Nowadays x86_64 bzImage with a lot of built-in drivers may well be over 8 MB and
+it will not boot with kernel_size limited at 8 MB. Increase the limit to 16 MB.
+
+Reading file size at runtime could be a better solution.
+
+diff -uNr elilo-3.16-source.orig/x86_64/bzimage.c elilo-3.16-source/x86_64/bzimage.c
+--- elilo-3.16-source.orig/x86_64/bzimage.c 2012-11-19 22:01:04.000000000 +0100
++++ elilo-3.16-source/x86_64/bzimage.c 2014-05-14 13:44:00.352004159 +0200
+@@ -34,7 +34,7 @@
+ boot_params_t *param_start = NULL;
+ UINTN param_size = 0;
+
+-UINTN kernel_size = 0x800000; /* 8M (default x86_64 bzImage size limit) */
++UINTN kernel_size = 0xFFFFFF;
+
+ static VOID *
+ bzImage_alloc()
diff --git a/source/a/elilo/eliloconfig b/source/a/elilo/eliloconfig
index 912d65057..c31d137e9 100644
--- a/source/a/elilo/eliloconfig
+++ b/source/a/elilo/eliloconfig
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2013, 2016 Patrick Volkerding, Sebeka, Minnesota, USA
+# Copyright 2013, 2016, 2017 Patrick Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -75,9 +75,9 @@ if [ ! -d /sys/firmware/efi ]; then
exit
fi
-# If there's no vfat mounted on /boot/efi or /mnt/boot/efi, forget it:
+# If there's no vfat mounted on /boot/efi or $T_PX/boot/efi, forget it:
if ! mount | grep vfat | grep -wq /boot/efi ; then
- if ! mount | grep vfat | grep -wq /mnt/boot/efi ; then
+ if ! mount | grep vfat | grep -wq $T_PX/boot/efi ; then
if [ "$T_PX" = "/" ]; then
echo "ERROR: No EFI System Partition mounted on /boot/efi."
fi
@@ -86,12 +86,16 @@ if ! mount | grep vfat | grep -wq /boot/efi ; then
fi
# Figure out the device and partition number of the ESP:
+DEVLEN=8
+PARTLEN=9
if mount | grep vfat | grep -wq /boot/efi ; then
- EFI_DEVICE=$(mount | grep vfat | grep -w /boot/efi | cut -b 1-8)
- EFI_PARTITION=$(mount | grep vfat | grep -w /boot/efi | cut -f 1 -d ' ' | cut -b 9- | tr -d [a-z])
+ mount | grep vfat | grep -w /boot/efi | grep -q -e nvme -e mmcblk && DEVLEN=12 && PARTLEN=14
+ EFI_DEVICE=$(mount | grep vfat | grep -w /boot/efi | cut -b 1-${DEVLEN})
+ EFI_PARTITION=$(mount | grep vfat | grep -w /boot/efi | cut -f 1 -d ' ' | cut -b ${PARTLEN}- | tr -d [a-z])
else
- EFI_DEVICE=$(mount | grep vfat | grep -w /mnt/boot/efi | cut -b 1-8)
- EFI_PARTITION=$(mount | grep vfat | grep -w /mnt/boot/efi | cut -f 1 -d ' ' | cut -b 9- | tr -d [a-z])
+ mount | grep vfat | grep -w $T_PX/boot/efi | grep -q -e nvme -e mmcblk && DEVLEN=12 && PARTLEN=14
+ EFI_DEVICE=$(mount | grep vfat | grep -w $T_PX/boot/efi | cut -b 1-${DEVLEN})
+ EFI_PARTITION=$(mount | grep vfat | grep -w $T_PX/boot/efi | cut -f 1 -d ' ' | cut -b ${PARTLEN}- | tr -d [a-z])
fi
# There better be a kernel:
diff --git a/source/a/elilo/slack-desc b/source/a/elilo/slack-desc
index acacac071..68e333fc1 100644
--- a/source/a/elilo/slack-desc
+++ b/source/a/elilo/slack-desc
@@ -1,16 +1,16 @@
# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description. Line
+# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in. You must
-# make exactly 11 lines for the formatting to be correct. It's also
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler-----------------------------------------------------|
elilo: elilo (Linux Loader for EFI-based platforms)
elilo:
elilo: This is elilo, a boot loader originally developed by HP for IA-64
-elilo: systems. This is used to load the kernel and initial ramdisk on
-elilo: machines that use UEFI. Since most UEFI implementations are 64-bit,
+elilo: systems. This is used to load the kernel and initial ramdisk on
+elilo: machines that use UEFI. Since most UEFI implementations are 64-bit,
elilo: the 64-bit EFI binary is generally the one to use (even for loading
elilo: a 32-bit kernel).
elilo: