diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2020-01-12 22:56:30 +0100 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2020-01-12 23:17:25 +0100 |
commit | d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5 (patch) | |
tree | 023bf4c19196cf5b89dcfdd2ff2a001fc8c08a7c | |
parent | gen_compile.sh: compile_kernel(): Improve error message when kernel binary wa... (diff) | |
download | genkernel-d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5.tar.gz genkernel-d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5.tar.bz2 genkernel-d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5.zip |
gen_initramfs.sh: create_initramfs(): Outsource compression method handling into set_initramfs_compression_method()
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
-rwxr-xr-x | gen_configkernel.sh | 67 | ||||
-rwxr-xr-x | gen_initramfs.sh | 63 |
2 files changed, 68 insertions, 62 deletions
diff --git a/gen_configkernel.sh b/gen_configkernel.sh index 69430508..ea7701ff 100755 --- a/gen_configkernel.sh +++ b/gen_configkernel.sh @@ -113,6 +113,73 @@ determine_kernel_config_file() { fi } +set_initramfs_compression_method() { + [[ ${#} -ne 1 ]] \ + && gen_die "$(get_useful_function_stack "${FUNCNAME}")Invalid usage of ${FUNCNAME}(): Function takes exactly one argument (${#} given)!" + + local kernel_config=${1} + + local compress_config=NONE + local -a KNOWN_INITRAMFS_COMPRESSION_TYPES=() + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( NONE ) + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( GZIP ) + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( BZIP2 ) + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZMA ) + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( XZ ) + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZO ) + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZ4 ) + + case ${COMPRESS_INITRD_TYPE} in + gz) + compress_config='GZIP' + ;; + bz2) + compress_config='BZIP2' + ;; + lzma) + compress_config='LZMA' + ;; + xz|best|fastest) + compress_config='XZ' + ;; + lzop) + compress_config='LZO' + ;; + lz4) + compress_config='LZ4' + ;; + esac + + local KNOWN_INITRAMFS_COMPRESSION_TYPE + local KOPTION_VALUE + for KNOWN_INITRAMFS_COMPRESSION_TYPE in "${KNOWN_INITRAMFS_COMPRESSION_TYPES[@]}" + do + KOPTION_VALUE=n + if [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "${compress_config}" ]] + then + KOPTION_VALUE=y + fi + + if [ ${KV_NUMERIC} -ge 4010 ] + then + kconfig_set_opt "${kernel_config}" "CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}" + + if [[ "${KOPTION_VALUE}" == "y" && "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" != "NONE" ]] + then + # Make sure that the kernel can decompress our initramfs + kconfig_set_opt "${kernel_config}" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}" + fi + else + [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "NONE" ]] && continue + + # In <linux-4.10, to control used initramfs compression, we have to + # disable every supported compression type except compression type + # we want to use, (see $KERNEL_DIR/usr/Makefile). + kconfig_set_opt "${kernel_config}" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}" + fi + done +} + config_kernel() { local diff_cmd="$(which zdiff 2>/dev/null)" if [ -z "${diff_cmd}" ] diff --git a/gen_initramfs.sh b/gen_initramfs.sh index 8620414d..783d9a77 100755 --- a/gen_initramfs.sh +++ b/gen_initramfs.sh @@ -1859,40 +1859,6 @@ create_initramfs() { sed -i '/^.*CONFIG_INITRAMFS_SOURCE=.*$/d' "${KERNEL_OUTPUTDIR}/.config" \ || gen_die "failed to delete CONFIG_INITRAMFS_SOURCE from '${KERNEL_OUTPUTDIR}/.config'" - local compress_config=NONE - local -a KNOWN_INITRAMFS_COMPRESSION_TYPES=() - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( NONE ) - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( GZIP ) - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( BZIP2 ) - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZMA ) - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( XZ ) - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZO ) - KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZ4 ) - - if isTrue "${COMPRESS_INITRD}" - then - case ${COMPRESS_INITRD_TYPE} in - gz) - compress_config='GZIP' - ;; - bz2) - compress_config='BZIP2' - ;; - lzma) - compress_config='LZMA' - ;; - xz|best|fastest) - compress_config='XZ' - ;; - lzop) - compress_config='LZO' - ;; - lz4) - compress_config='LZ4' - ;; - esac - fi - print_info 1 "$(get_indent 1)>> --integrated-initramfs is set; Setting CONFIG_INITRAMFS_* options ..." [ -f "${KCONFIG_MODIFIED_MARKER}" ] && rm "${KCONFIG_MODIFIED_MARKER}" @@ -1901,34 +1867,7 @@ create_initramfs() { kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_UID" "0" kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_GID" "0" - local KNOWN_INITRAMFS_COMPRESSION_TYPE - local KOPTION_VALUE - for KNOWN_INITRAMFS_COMPRESSION_TYPE in "${KNOWN_INITRAMFS_COMPRESSION_TYPES[@]}" - do - KOPTION_VALUE=n - if [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "${compress_config}" ]] - then - KOPTION_VALUE=y - fi - - if [ ${KV_NUMERIC} -ge 4010 ] - then - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}" - - if [[ "${KOPTION_VALUE}" == "y" && "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" != "NONE" ]] - then - # Make sure that the kernel can decompress our initramfs - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}" - fi - else - [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "NONE" ]] && continue - - # In <linux-4.10, to control used initramfs compression, we have to - # disable every supported compression type except compression type - # we want to use, (see $KERNEL_DIR/usr/Makefile). - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}" - fi - done + set_initramfs_compression_method "${KERNEL_OUTPUTDIR}/.config" if [ -f "${KCONFIG_MODIFIED_MARKER}" ] then |