aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2019-07-14 11:43:59 +0200
committerThomas Deutschmann <whissi@gentoo.org>2019-07-14 13:58:16 +0200
commit3d071ae86e9b3a08250382f970b2eaea0db85090 (patch)
tree08168b25ce7d0101c7d139d217cf04321c0bcfb5 /gen_configkernel.sh
parentRework --mdadm support (diff)
downloadgenkernel-3d071ae86e9b3a08250382f970b2eaea0db85090.tar.gz
genkernel-3d071ae86e9b3a08250382f970b2eaea0db85090.tar.bz2
genkernel-3d071ae86e9b3a08250382f970b2eaea0db85090.zip
Rework --luks support
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'gen_configkernel.sh')
-rwxr-xr-xgen_configkernel.sh65
1 files changed, 65 insertions, 0 deletions
diff --git a/gen_configkernel.sh b/gen_configkernel.sh
index 63f38b0..5ab0d43 100755
--- a/gen_configkernel.sh
+++ b/gen_configkernel.sh
@@ -270,6 +270,71 @@ config_kernel() {
&& required_kernel_options+=( 'CONFIG_FILE_LOCKING' )
fi
+ # Make sure all modules required for cryptsetup/LUKS are enabled in the kernel, if --luks
+ if isTrue "${CMD_LUKS}"
+ then
+ print_info 2 "$(get_indent 1)>> Ensure that required kernel options for LUKS support are set ..."
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLOCK" "y"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO" "y"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_MD" "y"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_NET" "y"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_DM" "${cfg_CONFIG_BLK_DEV_DM}" &&
+ required_kernel_options+=( 'CONFIG_BLK_DEV_DM' )
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DM_CRYPT" "${cfg_CONFIG_BLK_DEV_DM}" &&
+ required_kernel_options+=( 'CONFIG_DM_CRYPT' )
+
+ local cfg_CONFIG_CRYPTO_AES=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_AES")
+ case "${cfg_CONFIG_CRYPTO_AES}" in
+ y|m) ;; # Do nothing
+ *) cfg_CONFIG_CRYPTO_AES=${newcfg_setting}
+ esac
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_XTS" "${cfg_CONFIG_CRYPTO_AES}" &&
+ required_kernel_options+=( 'CONFIG_CRYPTO_XTS' )
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_SHA256" "${cfg_CONFIG_CRYPTO_AES}" &&
+ required_kernel_options+=( 'CONFIG_CRYPTO_SHA256' )
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_AES" "${cfg_CONFIG_CRYPTO_AES}" &&
+ required_kernel_options+=( 'CONFIG_CRYPTO_AES' )
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_USER_API_HASH" "${cfg_CONFIG_CRYPTO_AES}" &&
+ required_kernel_options+=( 'CONFIG_CRYPTO_USER_API_HASH' )
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_USER_API_SKCIPHER" "${cfg_CONFIG_CRYPTO_AES}" &&
+ required_kernel_options+=( 'CONFIG_CRYPTO_USER_API_SKCIPHER' )
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_USER_API_AEAD" "${cfg_CONFIG_CRYPTO_AES}"
+
+ local cfg_CONFIG_X86=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_X86")
+ case "${cfg_CONFIG_X86}" in
+ y|m)
+ cfg_CONFIG_X86=yes
+ ;;
+ *)
+ cfg_CONFIG_X86=no
+ ;;
+ esac
+
+ local cfg_CONFIG_64BIT=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_64BIT")
+ case "${cfg_CONFIG_64BIT}" in
+ y|m)
+ cfg_CONFIG_64BIT=yes
+ ;;
+ *)
+ cfg_CONFIG_64BIT=no
+ ;;
+ esac
+
+ if isTrue "${cfg_CONFIG_X86}"
+ then
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_AES_NI_INTEL" "${cfg_CONFIG_CRYPTO_AES}"
+
+ if isTrue "${cfg_CONFIG_64BIT}"
+ then
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_SHA1_SSSE3" "${cfg_CONFIG_CRYPTO_AES}"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_SHA256_SSSE3" "${cfg_CONFIG_CRYPTO_AES}"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_AES_X86_64" "${cfg_CONFIG_CRYPTO_AES}"
+ else
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_AES_586" "${cfg_CONFIG_CRYPTO_AES}"
+ fi
+ fi
+ fi
+
# Make sure multipath modules are enabled in the kernel, if --multipath
if isTrue "${CMD_MULTIPATH}"
then