diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2020-07-14 16:17:30 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2020-07-16 16:29:15 +0200 |
commit | 944da1fc61bd64a47c2bc6415da5e5d5611b6ff5 (patch) | |
tree | 961006f79e6366ed2a0619b889fe6fa7f90a288d /gen_initramfs.sh | |
parent | gen_determineargs.sh: determine_real_args(): Fix unsetting toolchain variable (diff) | |
download | genkernel-944da1fc61bd64a47c2bc6415da5e5d5611b6ff5.tar.gz genkernel-944da1fc61bd64a47c2bc6415da5e5d5611b6ff5.tar.bz2 genkernel-944da1fc61bd64a47c2bc6415da5e5d5611b6ff5.zip |
gen_initramfs.sh: create_initramfs(): Move and unify validation of --compress-initramfs-type to determine_real_args()
This will allow us to error out early if required user space tool
needed to compress initramfs based on specified --compress-initramfs-type
is missing or selected type is invalid/unsupported.
Best/fastest list is based on results from [Link1][Link2][Link3].
Link1: https://events.static.linuxfound.org/sites/events/files/lcjpcojp13_klee.pdf
Link2: https://kernel.ubuntu.com/~cking/boot-speed-eoan-5.3/kernel-compression-method.txt
Link3: https://lwn.net/Articles/817134/
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'gen_initramfs.sh')
-rwxr-xr-x | gen_initramfs.sh | 67 |
1 files changed, 6 insertions, 61 deletions
diff --git a/gen_initramfs.sh b/gen_initramfs.sh index fd9583b..617c656 100755 --- a/gen_initramfs.sh +++ b/gen_initramfs.sh @@ -1770,7 +1770,6 @@ append_data() { } create_initramfs() { - local compress_ext="" print_info 1 "initramfs: >> Initializing ..." # Create empty cpio @@ -1894,6 +1893,8 @@ create_initramfs() { print_info 1 "$(get_indent 1)>> --integrated-initramfs is set; Setting CONFIG_INITRAMFS_* options ..." [ -f "${KCONFIG_MODIFIED_MARKER}" ] && rm "${KCONFIG_MODIFIED_MARKER}" + [ -f "${KCONFIG_REQUIRED_OPTIONS}" ] && rm "${KCONFIG_REQUIRED_OPTIONS}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV_INITRD" "y" kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_SOURCE" "\"${CPIO_ARCHIVE}.cpio\"" kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_UID" "0" @@ -1911,66 +1912,10 @@ create_initramfs() { else if isTrue "${COMPRESS_INITRD}" then - local cmd_xz=$(type -p xz) - local cmd_lzma=$(type -p lzma) - local cmd_bzip2=$(type -p bzip2) - local cmd_gzip=$(type -p gzip) - local cmd_lzop=$(type -p lzop) - local cmd_lz4=$(type -p lz4) - local pkg_xz='app-arch/xz-utils' - local pkg_lzma='app-arch/xz-utils' - local pkg_bzip2='app-arch/bzip2' - local pkg_gzip='app-arch/gzip' - local pkg_lzop='app-arch/lzop' - local pkg_lz4='app-arch/lz4' - local compression - case ${COMPRESS_INITRD_TYPE} in - xz|lzma|bzip2|gzip|lzop|lz4) compression=${COMPRESS_INITRD_TYPE} ;; - lzo) compression=lzop ;; - best|fastest) - local tuple - for tuple in \ - 'CONFIG_RD_XZ cmd_xz xz' \ - 'CONFIG_RD_LZMA cmd_lzma lzma' \ - 'CONFIG_RD_BZIP2 cmd_bzip2 bzip2' \ - 'CONFIG_RD_GZIP cmd_gzip gzip' \ - 'CONFIG_RD_LZO cmd_lzop lzop' \ - 'CONFIG_RD_LZ4 cmd_lz4 lz4' \ - ; do - set -- ${tuple} - local kernel_option=${1} - local cmd_variable_name=${2} - if ${CONFGREP} -q "^${kernel_option}=y" "${ACTUAL_KERNEL_CONFIG}" && test -n "${!cmd_variable_name}" ; then - compression=${3} - [[ ${COMPRESS_INITRD_TYPE} == best ]] && break - fi - done - [[ -z "${compression}" ]] && gen_die "None of the initramfs compression methods we tried are supported by your kernel (config file \"${ACTUAL_KERNEL_CONFIG}\"), strange!?" - ;; - *) - gen_die "Compression '${COMPRESS_INITRD_TYPE}' unknown" - ;; - esac - - # Check for actual availability - local cmd_variable_name=cmd_${compression} - local pkg_variable_name=pkg_${compression} - [[ -z "${!cmd_variable_name}" ]] && gen_die "Compression '${compression}' is not available. Please install package '${!pkg_variable_name}'." - - local compress_ext compress_cmd - case ${compression} in - xz) compress_ext='.xz' compress_cmd="${cmd_xz} -e --check=none -z -f -9" ;; - lzma) compress_ext='.lzma' compress_cmd="${cmd_lzma} -z -f -9" ;; - bzip2) compress_ext='.bz2' compress_cmd="${cmd_bzip2} -z -f -9" ;; - gzip) compress_ext='.gz' compress_cmd="${cmd_gzip} -f -9" ;; - lzop) compress_ext='.lzo' compress_cmd="${cmd_lzop} -f -9" ;; - lz4) compress_ext='.lz4' compress_cmd="${cmd_lz4} -f -9 -l -q" ;; - esac - - print_info 1 "$(get_indent 1)>> Compressing cpio data (${compress_ext}) ..." - print_info 3 "COMMAND: ${compress_cmd} ${CPIO_ARCHIVE}" 1 0 1 - ${compress_cmd} "${CPIO_ARCHIVE}" || gen_die "Compression (${compress_cmd}) failed" - mv -f "${CPIO_ARCHIVE}${compress_ext}" "${CPIO_ARCHIVE}" || gen_die "Rename failed" + print_info 1 "$(get_indent 1)>> Compressing cpio data (${GKICM_LOOKUP_TABLE_EXT[${COMPRESS_INITRD_TYPE}]}) ..." + print_info 3 "COMMAND: ${GKICM_LOOKUP_TABLE_CMD[${COMPRESS_INITRD_TYPE}]} ${CPIO_ARCHIVE}" 1 0 1 + ${GKICM_LOOKUP_TABLE_CMD[${COMPRESS_INITRD_TYPE}]} "${CPIO_ARCHIVE}" || gen_die "Initramfs compression using '${GKICM_LOOKUP_TABLE_CMD[${COMPRESS_INITRD_TYPE}]}' failed" + mv -f "${CPIO_ARCHIVE}${GKICM_LOOKUP_TABLE_EXT[${COMPRESS_INITRD_TYPE}]}" "${CPIO_ARCHIVE}" || gen_die "Rename failed" else print_info 3 "$(get_indent 1)>> --no-compress-initramfs is set; Skipping compression of initramfs ..." fi |