summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2020-09-02 15:57:41 +0200
committerThomas Deutschmann <whissi@gentoo.org>2020-09-02 15:58:56 +0200
commit449a46321dd855a52f7ce17cd486e43ff7ba6872 (patch)
treeef5dd60cd108cc38ec38e1ed1ac51671e6a86bdf /sys-kernel/genkernel
parentdev-db/tinycdb: new upstream release (diff)
downloadgentoo-449a46321dd855a52f7ce17cd486e43ff7ba6872.tar.gz
gentoo-449a46321dd855a52f7ce17cd486e43ff7ba6872.tar.bz2
gentoo-449a46321dd855a52f7ce17cd486e43ff7ba6872.zip
sys-kernel/genkernel: fix {ROOT,SWAP}_KEYDEV usage
Rev bump containing some post release fixes including a patch which will try to determine filesystem used for {ROOT,SWAP}_KEYDEV to trigger module autoloading in case used filesystem wasn't built into kernel. Package-Manager: Portage-3.0.4, Repoman-3.0.1 Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'sys-kernel/genkernel')
-rw-r--r--sys-kernel/genkernel/files/genkernel-4.1.2-post-release-fixes.patch190
-rw-r--r--sys-kernel/genkernel/genkernel-4.1.2-r1.ebuild (renamed from sys-kernel/genkernel/genkernel-4.1.2.ebuild)2
2 files changed, 192 insertions, 0 deletions
diff --git a/sys-kernel/genkernel/files/genkernel-4.1.2-post-release-fixes.patch b/sys-kernel/genkernel/files/genkernel-4.1.2-post-release-fixes.patch
new file mode 100644
index 00000000000..1faa26d8b3e
--- /dev/null
+++ b/sys-kernel/genkernel/files/genkernel-4.1.2-post-release-fixes.patch
@@ -0,0 +1,190 @@
+--- a/defaults/initrd.defaults
++++ b/defaults/initrd.defaults
+@@ -101,9 +101,11 @@ GK_UDEV_TIMEOUT=120
+ GK_USERINTERACTION_DISABLED_STATEFILE='/tmp/user-interaction.disabled'
+
+ CRYPT_ENV_FILE='/etc/CRYPT_ENV.conf'
+-CRYPT_KEYFILE_ROOT='/tmp/root.key'
+-CRYPT_KEYFILE_SWAP='/tmp/swap.key'
++CRYPT_ROOT_KEYDEV_FSTYPE='auto'
++CRYPT_ROOT_KEYFILE='/tmp/root.key'
+ CRYPT_ROOT_OPENED_LOCKFILE='/tmp/ROOT.opened'
++CRYPT_SWAP_KEYDEV_FSTYPE='auto'
++CRYPT_SWAP_KEYFILE='/tmp/swap.key'
+ CRYPT_SWAP_OPENED_LOCKFILE='/tmp/SWAP.opened'
+
+ ZFS_ENC_ENV_FILE='/etc/ZFS_ENC_ENV.conf'
+--- a/defaults/initrd.scripts
++++ b/defaults/initrd.scripts
+@@ -1780,7 +1780,7 @@ openLUKS() {
+ exit 1
+ fi
+
+- case $1 in
++ case ${1} in
+ root)
+ local TYPE=ROOT
+ ;;
+@@ -1789,8 +1789,12 @@ openLUKS() {
+ ;;
+ esac
+
+- eval local LUKS_DEVICE='"${CRYPT_'${TYPE}'}"' LUKS_NAME="$1" LUKS_KEY='"${CRYPT_'${TYPE}'_KEY}"'
+- eval local LUKS_KEYDEV='"${CRYPT_'${TYPE}'_KEYDEV}"' LUKS_TRIM='"${CRYPT_'${TYPE}'_TRIM}"'
++ local LUKS_NAME="${1}"
++ eval local LUKS_DEVICE='"${CRYPT_'${TYPE}'}"'
++ eval local LUKS_KEY='"${CRYPT_'${TYPE}'_KEY}"'
++ eval local LUKS_KEYDEV='"${CRYPT_'${TYPE}'_KEYDEV}"'
++ eval local LUKS_KEYDEV_FSTYPE='"${CRYPT_'${TYPE}'_KEYDEV_FSTYPE}"'
++ eval local LUKS_TRIM='"${CRYPT_'${TYPE}'_TRIM}"'
+ eval local OPENED_LOCKFILE='"${CRYPT_'${TYPE}'_OPENED_LOCKFILE}"'
+ local DEV_ERROR=0 KEY_ERROR=0 KEYDEV_ERROR=0
+ local mntkey="/mnt/key/" crypt_filter_ret=
+@@ -1886,7 +1890,10 @@ openLUKS() {
+ # At this point a device was recognized, now let's see if the key is there
+ [ ! -d "${mntkey}" ] && mkdir -p "${mntkey}" >/dev/null 2>&1
+
+- if ! run mount -n -o ro ${REAL_LUKS_KEYDEV} ${mntkey} >/dev/null 2>&1
++ # determine fs -- 'auto' will not trigger module loading!
++ LUKS_KEYDEV_FSTYPE=$(determine_fs "${REAL_LUKS_KEYDEV}" "${LUKS_KEYDEV_FSTYPE}")
++
++ if ! run mount -n -t ${LUKS_KEYDEV_FSTYPE} -o ro ${REAL_LUKS_KEYDEV} ${mntkey} >/dev/null 2>&1
+ then
+ KEYDEV_ERROR=1
+ bad_msg "Mounting of device ${REAL_LUKS_KEYDEV} failed." ${CRYPT_SILENT}
+--- a/defaults/linuxrc
++++ b/defaults/linuxrc
+@@ -2,7 +2,7 @@
+
+ # shellcheck source=initrd.defaults
+ . /etc/initrd.defaults
+-# shellche2ck source=initrd.scripts
++# shellcheck source=initrd.scripts
+ . /etc/initrd.scripts
+
+ # shellcheck source=/dev/null
+@@ -257,6 +257,9 @@ do
+ root_keydev=*)
+ CRYPT_ROOT_KEYDEV=${x#*=}
+ ;;
++ root_keydev_fstype=*)
++ CRYPT_ROOT_KEYDEV_FSTYPE=${x#*=}
++ ;;
+ root_trim=*)
+ CRYPT_ROOT_TRIM=${x#*=}
+ ;;
+@@ -266,6 +269,9 @@ do
+ swap_keydev=*)
+ CRYPT_SWAP_KEYDEV=${x#*=}
+ ;;
++ swap_keydev_fstype=*)
++ CRYPT_SWAP_KEYDEV_FSTYPE=${x#*=}
++ ;;
+ real_resume=*|resume=*)
+ REAL_RESUME=${x#*=}
+ ;;
+--- a/defaults/login-remote.sh
++++ b/defaults/login-remote.sh
+@@ -24,10 +24,10 @@ fi
+ receivefile() {
+ case ${1} in
+ root)
+- file=${CRYPT_KEYFILE_ROOT}
++ file=${CRYPT_ROOT_KEYFILE}
+ ;;
+ swap)
+- file=${CRYPT_KEYFILE_SWAP}
++ file=${CRYPT_SWAP_KEYFILE}
+ ;;
+ '')
+ bad_msg "No keyfile specified." "${CRYPT_SILENT}"
+--- a/defaults/unlock-luks.sh
++++ b/defaults/unlock-luks.sh
+@@ -43,8 +43,11 @@ main() {
+ exit 1
+ fi
+
+- eval local LUKS_DEVICE='"${CRYPT_'${TYPE}'}"' LUKS_NAME="${NAME}" LUKS_KEY='"${CRYPT_KEYFILE_'${TYPE}'}"'
+- eval local LUKS_TRIM='"${CRYPT_'${TYPE}'_TRIM}"' OPENED_LOCKFILE='"${CRYPT_'${TYPE}'_OPENED_LOCKFILE}"'
++ local LUKS_NAME="${NAME}"
++ eval local LUKS_DEVICE='"${CRYPT_'${TYPE}'}"'
++ eval local LUKS_KEY='"${CRYPT_'${TYPE}'_KEY}"'
++ eval local LUKS_TRIM='"${CRYPT_'${TYPE}'_TRIM}"'
++ eval local OPENED_LOCKFILE='"${CRYPT_'${TYPE}'_OPENED_LOCKFILE}"'
+
+ while true
+ do
+--- a/doc/genkernel.8.txt
++++ b/doc/genkernel.8.txt
+@@ -646,6 +646,9 @@ recognized by the kernel itself.
+ root_key. If unset while using root_key, it will automatically
+ look for the device in every boot.
+
++*root_keydev_fstype*=<...>::
++ Used filesystem for *root_keydev*. See *rootfstype* for more details.
++
+ *root_trim*=(yes|no)::
+ Enables TRIM support for a LUKS-based root device. Only useful
+ with SSD setups. Have a look at 'https://en.wikipedia.org/wiki/TRIM'
+@@ -657,6 +660,9 @@ recognized by the kernel itself.
+ *swap_keydev*=<...>::
+ Same as root_keydev for swap.
+
++*swap_keydev_fstype*=<...>::
++ Used filesystem for *swap_keydev*. See *rootfstype* for more details.
++
+ *crypt_silent*::
+ Set this to silent all the output related to the cryptographic
+ software, and in case your encrypted device isn't open with the
+@@ -790,7 +796,8 @@ when not set. This will allow remote user to provide answer through
+ *rootfstype*=<...>::
+ Specify the file system type to mount the real root filesystem as.
+ This can be useful when support for ext2/ext3/ext4 are
+- in competition. Default is "auto".
++ in competition or used filesystem was not built into kernel.
++ Default is "auto".
+
+ *docache*::
+ *nocache*::
+--- a/gen_determineargs.sh
++++ b/gen_determineargs.sh
+@@ -415,7 +415,6 @@ determine_real_args() {
+ set_config_with_override BOOL GENZIMAGE CMD_GENZIMAGE "no"
+ set_config_with_override BOOL KEYMAP CMD_KEYMAP "yes"
+ set_config_with_override BOOL DOKEYMAPAUTO CMD_DOKEYMAPAUTO "no"
+- set_config_with_override STRING BUSYBOX_CONFIG CMD_BUSYBOX_CONFIG
+ set_config_with_override STRING STRIP_TYPE CMD_STRIP_TYPE "modules"
+ set_config_with_override BOOL INSTALL CMD_INSTALL "yes"
+ set_config_with_override BOOL CLEANUP CMD_CLEANUP "yes"
+--- a/gen_funcs.sh
++++ b/gen_funcs.sh
+@@ -1853,7 +1853,7 @@ check_disk_space_requirements() {
+ gen_die "--check-free-disk-space-bootdir value '${CHECK_FREE_DISK_SPACE_BOOTDIR}' is not a valid number!"
+ fi
+
+- available_free_disk_space=$(unset POSIXLY_CORRECT && df -BM "${BOOTDIR}" | awk '$3 ~ /[0-9]+/ { print $4 }')
++ available_free_disk_space=$(unset POSIXLY_CORRECT && LC_ALL="C" df -BM "${BOOTDIR}" | awk '$3 ~ /[0-9]+/ { print $4 }')
+ if [ -n "${available_free_disk_space}" ]
+ then
+ print_info 2 '' 1 0
+@@ -1890,7 +1890,7 @@ check_disk_space_requirements() {
+ gen_die "--check-free-disk-space-kerneloutputdir value '${CHECK_FREE_DISK_SPACE_KERNELOUTPUTDIR}' is not a valid number!"
+ fi
+
+- available_free_disk_space=$(unset POSIXLY_CORRECT && df -BM "${KERNEL_OUTPUTDIR}" | awk '$3 ~ /[0-9]+/ { print $4 }')
++ available_free_disk_space=$(unset POSIXLY_CORRECT && LC_ALL="C" df -BM "${KERNEL_OUTPUTDIR}" | awk '$3 ~ /[0-9]+/ { print $4 }')
+ if [ -n "${available_free_disk_space}" ]
+ then
+ print_info 2 '' 1 0
+--- a/genkernel.conf
++++ b/genkernel.conf
+@@ -378,7 +378,7 @@ DEFAULT_KERNEL_SOURCE="/usr/src/linux"
+ # Compress generated initramfs
+ #COMPRESS_INITRD="yes"
+
+-# Types of compression: best, xz, lzma, bzip2, gzip, lzop, fastest
++# Types of compression: best, xz, lzma, bzip2, gzip, lzop, lz4, zstd, fastest
+ # "best" selects the best available compression method
+ # "fastest" selects the fastest available compression method
+ #COMPRESS_INITRD_TYPE="best"
+
diff --git a/sys-kernel/genkernel/genkernel-4.1.2.ebuild b/sys-kernel/genkernel/genkernel-4.1.2-r1.ebuild
index c48043e7994..a35eee96e20 100644
--- a/sys-kernel/genkernel/genkernel-4.1.2.ebuild
+++ b/sys-kernel/genkernel/genkernel-4.1.2-r1.ebuild
@@ -120,6 +120,8 @@ if [[ ${PV} == 9999* ]]; then
DEPEND="${DEPEND} app-text/asciidoc"
fi
+PATCHES=( "${FILESDIR}"/${P}-post-release-fixes.patch )
+
src_unpack() {
if [[ ${PV} == 9999* ]]; then
git-r3_src_unpack