aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2020-07-14 16:17:30 +0200
committerThomas Deutschmann <whissi@gentoo.org>2020-07-16 16:29:15 +0200
commit944da1fc61bd64a47c2bc6415da5e5d5611b6ff5 (patch)
tree961006f79e6366ed2a0619b889fe6fa7f90a288d /gen_initramfs.sh
parentgen_determineargs.sh: determine_real_args(): Fix unsetting toolchain variable (diff)
downloadgenkernel-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-xgen_initramfs.sh67
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