commit: 769a07fd3e947ffb216ea94887d752a27ea212d9 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> AuthorDate: Sun Jul 28 14:33:25 2019 +0000 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org> CommitDate: Mon Jul 29 20:00:24 2019 +0000 URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=769a07fd
Make initramfs and kernel filename customizable New options like --initramfs-filename or --kernel-filename will allow user to customize filenames used when installing initramfs or kernel into $BOOTDIR. Therefore --kernelname (KNAME) option was removed. Filename can contain placeholders like '%%ARCH%%' which will get replaced at runtime. Man page contains more information. Bug: https://bugs.gentoo.org/395095 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org> defaults/config.sh | 7 +++ doc/genkernel.8.txt | 90 +++++++++++++++++++++++---- gen_bootloader.sh | 12 ++-- gen_cmdline.sh | 40 ++++++++++-- gen_compile.sh | 26 ++++---- gen_configkernel.sh | 2 +- gen_determineargs.sh | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++- gen_funcs.sh | 7 +++ gen_initramfs.sh | 10 +-- gen_package.sh | 98 +++++++++++++++-------------- genkernel | 33 +++++----- genkernel.conf | 22 +++++-- 12 files changed, 407 insertions(+), 109 deletions(-) diff --git a/defaults/config.sh b/defaults/config.sh index 3546299..7232671 100644 --- a/defaults/config.sh +++ b/defaults/config.sh @@ -21,6 +21,13 @@ KERNEL_SUPPORT_MICROCODE=no # Arch-specific defaults that can be overridden in the config file or on the # command line. # +DEFAULT_INITRAMFS_FILENAME="initramfs-genkernel-%%ARCH%%-%%KV%%" +DEFAULT_INITRAMFS_SYMLINK_NAME="initramfs" +DEFAULT_KERNEL_FILENAME="kernel-genkernel-%%ARCH%%-%%KV%%" +DEFAULT_KERNEL_SYMLINK_NAME="kernel" +DEFAULT_SYSTEMMAP_FILENAME="System.map-%%ARCH%%-%%KV%%" +DEFAULT_SYSTEMMAP_SYMLINK_NAME="System.map" + DEFAULT_COMPRESS_INITRD=yes DEFAULT_COMPRESS_INITRD_TYPE=best diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt index f1ccbe6..e94fa12 100644 --- a/doc/genkernel.8.txt +++ b/doc/genkernel.8.txt @@ -150,16 +150,20 @@ KERNEL COMPILATION are copied over. *--*[*no-*]*symlink*:: - Manages, or does not manage, symlinks in '/boot' like the manual - kernel "make install" process does. A kernel (or, depending on - options, kernelz) symlink will link to the most recently built - kernel image and a kernel.old (or kernelz.old) symlink will link - to the second most recently built image, if one exists. Similar - symlinks (both * and *.old) are managed for initramfs and System.map. - The corresponding work products (i.e., the actual kernel - and initramfs images, and System.map) are also managed accordingly. - NOTE: Specifying *--symlink* does nothing unless - *--install* is also specified. +Manages, or does not manage, symlinks in '/boot' like the manual +kernel "make install" process does. A 'kernel' (or, depending on +options, 'kernelz') symlink will link to the most recently built +kernel image and a 'kernel.old' (or 'kernelz.old') symlink will link +to the second most recently built image, if one exists. Similar +symlinks (with and without '.old' suffix) are managed for initramfs and +System.map. The corresponding work products (i.e., the actual kernel +and initramfs images, and System.map) are also managed accordingly. ++ +The symlink name can be controlled via *--kernel-symlink-name* and/or +*--initramfs-symlink-name* option. + +NOTE: Specifying *--symlink* does nothing unless *--install* is also +specified. *--*[*no-*]*oldconfig*:: Runs, or does not run, "make oldconfig" before compilation. Specifying @@ -428,9 +432,22 @@ INTERNALS OUTPUT SETTINGS ~~~~~~~~~~~~~~~ -*--kernname*=<...>:: - Tag the kernel and initrd with a name, if not defined this - option defaults to genkernel. +*--initramfs-filename*=<...>:: +Set initramfs filename which will be used when initramfs will be installed +into *BOOTDIR* (implies *--install* option). Please see +*--kernel-filename* option for available placeholders and restrictions. ++ +By default, initramfs filename will be set to 'initramfs-genkernel-%%ARCH%%-%%KV%%'. + +*--initramfs-symlink-name*=<...>:: +Set initramfs symlink name which will be used when initramfs will be +installed into *BOOTDIR* (implies *--install* option) and *--symlink* +option is given. Please see *--kernel-filename* option for available +placeholders and restrictions. ++ +By default, initramfs symlink name will be set to 'initramfs'. + +NOTE: Initramfs filename and initramfs symlink name must be different. *--minkernpackage*=<file>:: Archive file created using tar containing kernel and initramfs. @@ -445,11 +462,58 @@ NOTE: No modules outside of the initramfs will be included! Archive file created using tar containing kernel binary, content of '/lib/modules' and the kernel config after the callbacks have run. +*--kernel-filename*=<...>:: +Set kernel filename which will be used when kernel will be installed +into *BOOTDIR* (implies *--install* option). The following placeholders +are available: ++ +[horizontal] +*%%ARCH%%*::: +Will be replaced with genkernel arch value, for example 'x86_64'. +*%%KV%%*::: +Will be replaced with kernel version, for example '5.2.3-gentoo'. + ++ +Kernel filename is only allowed to contain characters like 'a-z' or 'A-Z', +'0-9', '_', '.' and '-'. ++ +By default, kernel name will be set to 'kernel-genkernel-%%ARCH%%-%%KV%%'. + +NOTE: When setting a custom kernel name make sure that your bootloader and +tools like *kexec* when used are recognizing your custom kernel name. + *--*[*no-*]*kernel-sources*:: This option is only valid if kerncache is defined If there is a valid kerncache no checks will be made against a kernel source tree. +*--kernel-symlink-name*=<...>:: +Set kernel symlink name which will be used when kernel will be installed +into *BOOTDIR* (implies *--install* option) and *--symlink* option is +given. Please see *--kernel-filename* option for available placeholders +and restrictions. ++ +By default, kernel symlink name will be set to 'kernel'. + +NOTE: Kernel filename and kernel symlink name must be different. + +*--systemmap-filename*=<...>:: +Set System.map filename which will be used when kernel will be installed +into *BOOTDIR* (implies *--install* option). Please see +*--kernel-filename* option for available placeholders and restrictions. ++ +By default, System.map filename will be set to 'System.map-genkernel-%%ARCH%%-%%KV%%'. + +*--systemmap-symlink-name*=<...>:: +Set System.map symlink name which will be used when kernel will be +installed into *BOOTDIR* (implies *--install* option) and *--symlink* +option is given. Please see *--kernel-filename* option for available +placeholders and restrictions. ++ +By default, System.map symlink name will be set to 'System.map'. + +NOTE: System.map filename and System.map symlink name must be different. + *--initramfs-overlay*=<dir>:: Directory structure to include in the initramfs, only available on >=2.6 kernels. diff --git a/gen_bootloader.sh b/gen_bootloader.sh index b215cd8..5202047 100755 --- a/gen_bootloader.sh +++ b/gen_bootloader.sh @@ -102,12 +102,12 @@ set_bootloader_grub() { # Add grub configuration to grub.conf echo "# Genkernel generated entry, see GRUB documentation for details" >> ${GRUB_CONF} echo "title=Gentoo Linux ($KV)" >> ${GRUB_CONF} - printf "%b\n" "\tkernel /kernel-${KNAME}-${ARCH}-${KV} root=${GRUB_ROOTFS}" >> ${GRUB_CONF} + printf "%b\n" "\tkernel /${GK_FILENAME_KERNEL} root=${GRUB_ROOTFS}" >> ${GRUB_CONF} if isTrue "${BUILD_RAMDISK}" then if [ "${PAT}" -gt '4' ] then - printf "%b\n" "\tinitrd /initramfs-${KNAME}-${ARCH}-${KV}" >> ${GRUB_CONF} + printf "%b\n" "\tinitrd /${GK_FILENAME_INITRAMFS}" >> ${GRUB_CONF} fi fi echo >> ${GRUB_CONF} @@ -129,14 +129,14 @@ set_bootloader_grub() { } set_bootloader_grub_duplicate_default_replace_kernel_initrd() { - sed -r -e "/^[[:space:]]*kernel/s/kernel-[[:alnum:][:punct:]]+/kernel-${KNAME}-${ARCH}-${KV}/" - | - sed -r -e "/^[[:space:]]*initrd/s/init(rd|ramfs)-[[:alnum:][:punct:]]+/init\1-${KNAME}-${ARCH}-${KV}/" + sed -r -e "/^[[:space:]]*kernel/s/kernel-[[:alnum:][:punct:]]+/${GK_FILENAME_KERNEL}/" - | + sed -r -e "/^[[:space:]]*initrd/s/init(rd|ramfs)-[[:alnum:][:punct:]]+/${GK_FILENAME_INITRAMFS}/" } set_bootloader_grub_check_for_existing_entry() { local GRUB_CONF=$1 - if grep -q "^[[:space:]]*kernel[[:space:]=]*.*/kernel-${KNAME}-${ARCH}-${KV}\([[:space:]]\|$\)" "${GRUB_CONF}" && - grep -q "^[[:space:]]*initrd[[:space:]=]*.*/initramfs-${KNAME}-${ARCH}-${KV}\([[:space:]]\|$\)" "${GRUB_CONF}" + if grep -q "^[[:space:]]*kernel[[:space:]=]*.*/${GK_FILENAME_KERNEL}\([[:space:]]\|$\)" "${GRUB_CONF}" && + grep -q "^[[:space:]]*initrd[[:space:]=]*.*/${GK_FILENAME_INITRAMFS}\([[:space:]]\|$\)" "${GRUB_CONF}" then return 0 fi diff --git a/gen_cmdline.sh b/gen_cmdline.sh index 5d62a64..6fbf309 100755 --- a/gen_cmdline.sh +++ b/gen_cmdline.sh @@ -182,8 +182,10 @@ longusage() { echo " --postclear Clear all tmp files and caches after genkernel has run" echo " --no-postclear Do not clean up after genkernel has run" echo " Output Settings" - echo " --kernname=<...> Tag the kernel and initramfs with a name; If not defined" - echo " the option defaults to 'genkernel'" + echo " --kernel-filename=<...>" + echo " Set kernel filename" + echo " --kernel-symlink-name=<...>" + echo " Set kernel symlink name" echo " --minkernpackage=<archive>" echo " Archive file created using tar containing kernel and" echo " initramfs" @@ -196,9 +198,13 @@ longusage() { echo " --no-kernel-sources This option is only valid if kerncache is" echo " defined. If there is a valid kerncache no checks" echo " will be made against a kernel source tree" + echo " --initramfs-filename=<...>" + echo " Set initramfs filename" echo " --initramfs-overlay=<dir>" echo " Directory structure to include in the initramfs," echo " only available on 2.6 kernels" + echo " --initramfs-symlink-name=<...>" + echo " Set initramfs symlink name" echo " --firmware Enable copying of firmware into initramfs" echo " --firmware-dir=<dir>" echo " Specify directory to copy firmware from (defaults" @@ -229,6 +235,10 @@ longusage() { echo " Strip debug symbols from none, all, installed kernel (obsolete) or" echo " modules (default)" echo " --no-strip Don't strip installed kernel or modules, alias for --strip=none" + echo " --systemmap-filename=<...>" + echo " Set System.map filename" + echo " --systemmap-symlink-name=<...>" + echo " Set System.map symlink name" echo echo "For a detailed list of supported initramfs options and flags; issue:" echo " man 8 genkernel" @@ -670,9 +680,13 @@ parse_cmdline() { CMD_KERNCACHE="${*#*=}" print_info 3 "KERNCACHE: ${CMD_KERNCACHE}" ;; - --kernname=*) - CMD_KERNNAME="${*#*=}" - print_info 3 "KERNNAME: ${CMD_KERNNAME}" + --kernel-filename=*) + CMD_KERNEL_FILENAME="${*#*=}" + print_info 3 "CMD_KERNEL_FILENAME: ${CMD_KERNEL_FILENAME}" + ;; + --kernel-symlink-name=*) + CMD_KERNEL_SYMLINK_NAME="${*#*=}" + print_info 3 "CMD_KERNEL_SYMLINK_NAME: ${CMD_KERNEL_SYMLINK_NAME}" ;; --symlink|--no-symlink) CMD_SYMLINK=$(parse_optbool "$*") @@ -682,10 +696,26 @@ parse_cmdline() { CMD_KERNEL_SOURCES=$(parse_optbool "$*") print_info 3 "CMD_KERNEL_SOURCES: ${CMD_KERNEL_SOURCES}" ;; + --initramfs-filename=*) + CMD_INITRAMFS_FILENAME="${*#*=}" + print_info 3 "CMD_INITRAMFS_FILENAME: ${CMD_INITRAMFS_FILENAME}" + ;; --initramfs-overlay=*) CMD_INITRAMFS_OVERLAY="${*#*=}" print_info 3 "CMD_INITRAMFS_OVERLAY: ${CMD_INITRAMFS_OVERLAY}" ;; + --initramfs-symlink-name=*) + CMD_INITRAMFS_SYMLINK_NAME="${*#*=}" + print_info 3 "CMD_INITRAMFS_SYMLINK_NAME: ${CMD_INITRAMFS_SYMLINK_NAME}" + ;; + --systemmap-filename=*) + CMD_SYSTEMMAP_FILENAME="${*#*=}" + print_info 3 "CMD_SYSTEMMAP_FILENAME: ${CMD_SYSTEMMAP_FILENAME}" + ;; + --systemmap-symlink-name=*) + CMD_SYSTEMMAP_SYMLINK_NAME="${*#*=}" + print_info 3 "CMD_SYSTEMMAP_SYMLINK_NAME: ${CMD_SYSTEMMAP_SYMLINK_NAME}" + ;; --linuxrc=*) CMD_LINUXRC="${*#*=}" print_info 3 "CMD_LINUXRC: ${CMD_LINUXRC}" diff --git a/gen_compile.sh b/gen_compile.sh index b3a8382..dd2e7d7 100755 --- a/gen_compile.sh +++ b/gen_compile.sh @@ -303,38 +303,38 @@ compile_kernel() { # if source != outputdir, we need this: tmp_kernel_binary="${KERNEL_OUTPUTDIR}"/"${tmp_kernel_binary}" tmp_kernel_binary2="${KERNEL_OUTPUTDIR}"/"${tmp_kernel_binary2}" - systemmap="${KERNEL_OUTPUTDIR}"/System.map + local tmp_systemmap="${KERNEL_OUTPUTDIR}"/System.map if isTrue "${CMD_INSTALL}" then copy_image_with_preserve \ - "kernel" \ + "${GK_FILENAME_KERNEL_SYMLINK}" \ "${tmp_kernel_binary}" \ - "kernel-${KNAME}-${ARCH}-${KV}" + "${GK_FILENAME_KERNEL}" copy_image_with_preserve \ - "System.map" \ - "${systemmap}" \ - "System.map-${KNAME}-${ARCH}-${KV}" + "${GK_FILENAME_SYSTEMMAP_SYMLINK}" \ + "${tmp_systemmap}" \ + "${GK_FILENAME_SYSTEMMAP}" if isTrue "${GENZIMAGE}" then copy_image_with_preserve \ "kernelz" \ "${tmp_kernel_binary2}" \ - "kernelz-${KV}" + "${GK_FILENAME_KERNELZ}" fi else - cp "${tmp_kernel_binary}" "${TMPDIR}/kernel-${KNAME}-${ARCH}-${KV}" \ - || gen_die "Could not copy the kernel binary to '${TMPDIR}'!" + cp "${tmp_kernel_binary}" "${TMPDIR}/${GK_FILENAME_TEMP_KERNEL}" \ + || gen_die "Could not copy kernel binary '${tmp_kernel_binary}' to '${TMPDIR}'!" - cp "${systemmap}" "${TMPDIR}/System.map-${KNAME}-${ARCH}-${KV}" \ - || gen_die "Could not copy System.map to '${TMPDIR}'!" + cp "${tmp_systemmap}" "${TMPDIR}/${GK_FILENAME_TEMP_SYSTEMMAP}" \ + || gen_die "Could not copy System.map '${tmp_systemmap}' to '${TMPDIR}'!" if isTrue "${GENZIMAGE}" then - cp "${tmp_kernel_binary2}" "${TMPDIR}/kernelz-${KV}" \ - || gen_die "Could not copy the kernelz binary to '${TMPDIR}'!" + cp "${tmp_kernel_binary2}" "${TMPDIR}/${GK_FILENAME_TEMP_KERNELZ}" \ + || gen_die "Could not copy kernelz binary '${tmp_kernel_binary2}' to '${TMPDIR}'!" fi fi } diff --git a/gen_configkernel.sh b/gen_configkernel.sh index 9a33717..124852e 100755 --- a/gen_configkernel.sh +++ b/gen_configkernel.sh @@ -27,7 +27,7 @@ determine_kernel_config_file() { then print_info 1 "Default configuration was forced. Will ignore any user kernel configuration!" else - kconfig_candidates=( "/etc/kernels/kernel-config-${ARCH}-${KV}" ${kconfig_candidates[@]} ) + kconfig_candidates=( "/etc/kernels/${GK_FILENAME_CONFIG}" ${kconfig_candidates[@]} ) fi local f diff --git a/gen_determineargs.sh b/gen_determineargs.sh index 3674cf0..2689f86 100755 --- a/gen_determineargs.sh +++ b/gen_determineargs.sh @@ -83,6 +83,168 @@ determine_KV() { fi } +determine_output_filenames() { + print_info 5 '' 1 0 + + GK_FILENAME_CONFIG="kernel-config-${ARCH}-${KV}" + GK_FILENAME_KERNELZ="kernelz-${KV}" + GK_FILENAME_TEMP_CONFIG="config-${ARCH}-${KV}" + GK_FILENAME_TEMP_INITRAMFS="initramfs-${ARCH}-${KV}" + GK_FILENAME_TEMP_KERNEL="kernel-${ARCH}-${KV}" + GK_FILENAME_TEMP_KERNELZ="kernelz-${ARCH}-${KV}" + GK_FILENAME_TEMP_SYSTEMMAP="System.map-${ARCH}-${KV}" + + isTrue "${CMD_INSTALL}" || return + + # Do we have values? + if [ -z "${KERNEL_FILENAME}" ] + then + gen_die "--kernel-filename must be set to a non-empty value!" + elif [ -z "${KERNEL_SYMLINK_NAME}" ] + then + gen_die "--kernel-symlink-name must be set to a non-empty value!" + elif [ -z "${SYSTEMMAP_FILENAME}" ] + then + gen_die "--systemmap-filename must be set to a non-empty value!" + elif [ -z "${SYSTEMMAP_SYMLINK_NAME}" ] + then + gen_die "--systemmap-symlink-name must be set to a non-empty value!" + elif [ -z "${INITRAMFS_FILENAME}" ] + then + gen_die "--initramfs-filename must be set to a non-empty value!" + elif [ -z "${INITRAMFS_FILENAME}" ] + then + gen_die "--initramfs-filename must be set to a non-empty value!" + fi + + # Kernel + GK_FILENAME_KERNEL=$(arch_replace "${KERNEL_FILENAME}") + GK_FILENAME_KERNEL=$(kv_replace "${GK_FILENAME_KERNEL}") + + if [ -z "${GK_FILENAME_KERNEL}" ] + then + gen_die "Internal error: Variable 'GK_FILENAME_KERNEL' is empty!" + else + print_info 5 "GK_FILENAME_KERNEL set to '${GK_FILENAME_KERNEL}' (was: '${KERNEL_FILENAME}')" + fi + + # Kernel symlink + GK_FILENAME_KERNEL_SYMLINK=$(arch_replace "${KERNEL_SYMLINK_NAME}") + GK_FILENAME_KERNEL_SYMLINK=$(kv_replace "${GK_FILENAME_KERNEL_SYMLINK}") + + if [ -z "${GK_FILENAME_KERNEL_SYMLINK}" ] + then + gen_die "Internal error: Variable 'GK_FILENAME_KERNEL_SYMLINK' is empty!" + else + print_info 5 "GK_FILENAME_KERNEL_SYMLINK set to '${GK_FILENAME_KERNEL_SYMLINK}' (was: '${KERNEL_SYMLINK_NAME}')" + fi + + if [[ "${GK_FILENAME_KERNEL}" == "${GK_FILENAME_KERNEL_SYMLINK}" ]] + then + gen_die "--kernel-filename cannot be identical with --kernel-symlink-name!" + fi + + # System.map + GK_FILENAME_SYSTEMMAP=$(arch_replace "${SYSTEMMAP_FILENAME}") + GK_FILENAME_SYSTEMMAP=$(kv_replace "${GK_FILENAME_SYSTEMMAP}") + + if [ -z "${GK_FILENAME_SYSTEMMAP}" ] + then + gen_die "Internal error: Variable 'GK_FILENAME_SYSTEMMAP' is empty!" + else + print_info 5 "GK_FILENAME_SYSTEMMAP set to '${GK_FILENAME_SYSTEMMAP}' (was: '${SYSTEMMAP_FILENAME}')" + fi + + # System.map symlink + GK_FILENAME_SYSTEMMAP_SYMLINK=$(arch_replace "${SYSTEMMAP_SYMLINK_NAME}") + GK_FILENAME_SYSTEMMAP_SYMLINK=$(kv_replace "${GK_FILENAME_SYSTEMMAP_SYMLINK}") + + if [ -z "${GK_FILENAME_SYSTEMMAP_SYMLINK}" ] + then + gen_die "Internal error: Variable 'GK_FILENAME_SYSTEMMAP_SYMLINK' is empty!" + else + print_info 5 "GK_FILENAME_SYSTEMMAP_SYMLINK set to '${GK_FILENAME_SYSTEMMAP_SYMLINK}' (was: '${SYSTEMMAP_SYMLINK_NAME}')" + fi + + if [[ "${GK_FILENAME_SYSTEMMAP}" == "${GK_FILENAME_SYSTEMMAP_SYMLINK}" ]] + then + gen_die "--systemmap-filename cannot be identical with --systemmap-symlink-name!" + fi + + # Initramfs + GK_FILENAME_INITRAMFS=$(arch_replace "${INITRAMFS_FILENAME}") + GK_FILENAME_INITRAMFS=$(kv_replace "${GK_FILENAME_INITRAMFS}") + + if [ -z "${GK_FILENAME_INITRAMFS}" ] + then + gen_die "Internal error: Variable 'GK_FILENAME_INITRAMFS' is empty!" + else + print_info 5 "GK_FILENAME_INITRAMFS set to '${GK_FILENAME_INITRAMFS}' (was: '${INITRAMFS_FILENAME}')" + fi + + # Initramfs symlink + GK_FILENAME_INITRAMFS_SYMLINK=$(arch_replace "${INITRAMFS_SYMLINK_NAME}") + GK_FILENAME_INITRAMFS_SYMLINK=$(kv_replace "${GK_FILENAME_INITRAMFS_SYMLINK}") + + if [ -z "${GK_FILENAME_INITRAMFS_SYMLINK}" ] + then + gen_die "Internal error: Variable 'GK_FILENAME_INITRAMFS_SYMLINK' is empty!" + else + print_info 5 "GK_FILENAME_INITRAMFS_SYMLINK set to '${GK_FILENAME_INITRAMFS_SYMLINK}' (was: '${INITRAMFS_SYMLINK_NAME}')" + fi + + if [[ "${GK_FILENAME_INITRAMFS}" == "${GK_FILENAME_INITRAMFS_SYMLINK}" ]] + then + gen_die "--initramfs-filename cannot be identical with --initramfs-symlink-name!" + fi + + # Make sure we have unique filenames + if [[ "${GK_FILENAME_KERNEL}" == "${GK_FILENAME_INITRAMFS}" ]] + then + gen_die "--kernel-filename cannot be identical with --initramfs-filename!" + elif [[ "${GK_FILENAME_KERNEL}" == "${GK_FILENAME_SYSTEMMAP}" ]] + then + gen_die "--kernel-filename cannot be identical with --systemmap-filename!" + elif [[ "${GK_FILENAME_INITRAMFS}" == "${GK_FILENAME_SYSTEMMAP}" ]] + then + gen_die "--initramfs-filename cannot be identical with --systemmap-filename!" + fi + + if [[ "${GK_FILENAME_KERNEL_SYMLINK}" == "${GK_FILENAME_INITRAMFS_SYMLINK}" ]] + then + gen_die "--kernel-symlink-name cannot be identical with --initramfs-symlink-name!" + elif [[ "${GK_FILENAME_KERNEL_SYMLINK}" == "${GK_FILENAME_SYSTEMMAP_SYMLINK}" ]] + then + gen_die "--kernel-symlink-name cannot be identical with --systemmap-symlink-name!" + elif [[ "${GK_FILENAME_INITRAMFS_SYMLINK}" == "${GK_FILENAME_SYSTEMMAP_SYMLINK}" ]] + then + gen_die "--initramfs-symlink-name cannot be identical with --systemmap-symlink-name!" + fi + + local -a filename_vars + filename_vars+=( 'GK_FILENAME_INITRAMFS;--initramfs-filename' ) + filename_vars+=( 'GK_FILENAME_INITRAMFS_SYMLINK;--initramfs-symlink-name' ) + filename_vars+=( 'GK_FILENAME_KERNEL;--kernel-filename' ) + filename_vars+=( 'GK_FILENAME_KERNEL_SYMLINK;--kernel-symlink-name' ) + filename_vars+=( 'GK_FILENAME_SYSTEMMAP;--systemmap-filename' ) + filename_vars+=( 'GK_FILENAME_SYSTEMMAP_SYMLINK;--systemmap-symlink-name' ) + + local valid_filename_pattern='^[a-zA-Z0-9_.-]{1,}$' + local filename_combo filename_varname filename_option + + for filename_combo in "${filename_vars[@]}" + do + filename_combo=( ${filename_combo//;/ } ) + filename_varname=${filename_combo[0]} + filename_option=${filename_combo[1]} + + if [[ ! "${!filename_varname}" =~ ${valid_filename_pattern} ]] + then + gen_die "${filename_varname} value '${!filename_varname}' does not match regex '${valid_filename_pattern}'. Check ${filename_option} option!" + fi + done +} + determine_real_args() { # Unset known variables which will interfere with _tc-getPROG(). local tc_var tc_varname_build tc_vars=$(get_tc_vars) @@ -101,7 +263,12 @@ determine_real_args() { set_config_with_override STRING LOGFILE CMD_LOGFILE "/var/log/genkernel.conf" set_config_with_override STRING KERNEL_DIR CMD_KERNEL_DIR "${DEFAULT_KERNEL_SOURCE}" set_config_with_override BOOL KERNEL_SOURCES CMD_KERNEL_SOURCES "yes" - set_config_with_override STRING KNAME CMD_KERNNAME "genkernel" + set_config_with_override STRING INITRAMFS_FILENAME CMD_INITRAMFS_FILENAME "${DEFAULT_INITRAMFS_FILENAME}" + set_config_with_override STRING INITRAMFS_SYMLINK_NAME CMD_INITRAMFS_SYMLINK_NAME "${DEFAULT_INITRAMFS_SYMLINK_NAME}" + set_config_with_override STRING KERNEL_FILENAME CMD_KERNEL_FILENAME "${DEFAULT_KERNEL_FILENAME}" + set_config_with_override STRING KERNEL_SYMLINK_NAME CMD_KERNEL_SYMLINK_NAME "${DEFAULT_KERNEL_SYMLINK_NAME}" + set_config_with_override STRING SYSTEMMAP_FILENAME CMD_SYSTEMMAP_FILENAME "${DEFAULT_SYSTEMMAP_FILENAME}" + set_config_with_override STRING SYSTEMMAP_SYMLINK_NAME CMD_SYSTEMMAP_SYMLINK_NAME "${DEFAULT_SYSTEMMAP_SYMLINK_NAME}" set_config_with_override STRING CHECK_FREE_DISK_SPACE_BOOTDIR CMD_CHECK_FREE_DISK_SPACE_BOOTDIR set_config_with_override STRING CHECK_FREE_DISK_SPACE_KERNELOUTPUTDIR CMD_CHECK_FREE_DISK_SPACE_KERNELOUTPUTDIR diff --git a/gen_funcs.sh b/gen_funcs.sh index e0b679a..a1fe98a 100755 --- a/gen_funcs.sh +++ b/gen_funcs.sh @@ -298,6 +298,13 @@ cache_replace() { var_replace "CACHE" "${GK_V_CACHEDIR}" "${1}" } +kv_replace() { + [[ ${#} -ne 1 ]] \ + && gen_die "$(get_useful_function_stack "${FUNCNAME}")Invalid usage of ${FUNCNAME}(): Function takes exactly one argument (${#} given)!" + + var_replace "KV" "${KV}" "${1}" +} + gen_die() { set +x diff --git a/gen_initramfs.sh b/gen_initramfs.sh index 9c07c54..fb269b8 100755 --- a/gen_initramfs.sh +++ b/gen_initramfs.sh @@ -1536,7 +1536,7 @@ create_initramfs() { print_info 1 "initramfs: >> Initializing ..." # Create empty cpio - CPIO_ARCHIVE="${TMPDIR}/initramfs-${KNAME}-${ARCH}-${KV}" + CPIO_ARCHIVE="${TMPDIR}/${GK_FILENAME_TEMP_INITRAMFS}" append_data 'devices' # WARNING, must be first! append_data 'base_layout' append_data 'auxilary' "${BUSYBOX}" @@ -1826,8 +1826,8 @@ create_initramfs() { [[ -z ${mkimage_cmd} ]] && gen_die "mkimage is not available. Please install package 'dev-embedded/u-boot-tools'." local mkimage_args="-A ${ARCH} -O linux -T ramdisk -C ${compression:-none} -a 0x00000000 -e 0x00000000" print_info 1 "$(get_indent 1)>> Wrapping initramfs using mkimage ..." - print_info 2 "$(get_indent 1)${mkimage_cmd} ${mkimage_args} -n initramfs-${KNAME}-${ARCH}-${KV} -d ${CPIO_ARCHIVE} ${CPIO_ARCHIVE}.uboot" - ${mkimage_cmd} ${mkimage_args} -n "initramfs-${KNAME}-${ARCH}-${KV}" -d "${CPIO_ARCHIVE}" "${CPIO_ARCHIVE}.uboot" >> ${LOGFILE} 2>&1 || gen_die "Wrapping initramfs using mkimage failed" + print_info 2 "$(get_indent 1)${mkimage_cmd} ${mkimage_args} -n ${GK_FILENAME_TEMP_INITRAMFS} -d ${CPIO_ARCHIVE} ${CPIO_ARCHIVE}.uboot" + ${mkimage_cmd} ${mkimage_args} -n "${GK_FILENAME_TEMP_INITRAMFS}" -d "${CPIO_ARCHIVE}" "${CPIO_ARCHIVE}.uboot" >> ${LOGFILE} 2>&1 || gen_die "Wrapping initramfs using mkimage failed" mv -f "${CPIO_ARCHIVE}.uboot" "${CPIO_ARCHIVE}" || gen_die "Rename failed" fi fi @@ -1837,9 +1837,9 @@ create_initramfs() { if ! isTrue "${INTEGRATED_INITRAMFS}" then copy_image_with_preserve \ - "initramfs" \ + "${GK_FILENAME_INITRAMFS_SYMLINK}" \ "${CPIO_ARCHIVE}" \ - "initramfs-${KNAME}-${ARCH}-${KV}" + "${GK_FILENAME_INITRAMFS}" fi fi } diff --git a/gen_package.sh b/gen_package.sh index 0240b80..aad52de 100755 --- a/gen_package.sh +++ b/gen_package.sh @@ -7,31 +7,37 @@ gen_minkernpackage() { mkdir "${TEMP}/minkernpackage" || gen_die "Failed to create '${TEMP}/minkernpackage'!" if [ -n "${KERNCACHE}" ] then - "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" kernel-${ARCH}-${KV} \ - || gen_die "Failed to extract 'kernel-${ARCH}-${KV}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" + "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" "${GK_FILENAME_TEMP_KERNEL}" \ + || gen_die "Failed to extract '${GK_FILENAME_TEMP_KERNEL}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" - mv "${TEMP}"/minkernpackage/{kernel-${ARCH}-${KV},kernel-${KNAME}-${ARCH}-${KV}} \ - || gen_die "Failed to rename '${TEMP}/minkernpackage/kernel-${ARCH}-${KV}' to 'kernel-${KNAME}-${ARCH}-${KV}'!" - - "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" System.map-${ARCH}-${KV} \ - || gen_die "Failed to extract 'System.map-${ARCH}-${KV}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" + if [[ "${GK_FILENAME_TEMP_KERNEL}" != "${GK_FILENAME_KERNEL}" ]] + then + mv "${TEMP}"/minkernpackage/{${GK_FILENAME_TEMP_KERNEL},${GK_FILENAME_KERNEL}} \ + || gen_die "Failed to rename '${TEMP}/minkernpackage/${GK_FILENAME_TEMP_KERNEL}' to '${GK_FILENAME_KERNEL}'!" + fi - mv "${TEMP}"/minkernpackage/{System.map-${ARCH}-${KV},System.map-${KNAME}-${ARCH}-${KV}} \ - || gen_die "Failed to rename '${TEMP}/minkernpackage/System.map-${ARCH}-${KV}' to 'System.map-${KNAME}-${ARCH}-${KV}'!" + "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" "${GK_FILENAME_TEMP_SYSTEMMAP}" \ + || gen_die "Failed to extract '${GK_FILENAME_TEMP_SYSTEMMAP}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" - "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" config-${ARCH}-${KV} \ - || gen_die "Failed to extract 'config-${ARCH}-${KV}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" + if [[ "${GK_FILENAME_TEMP_SYSTEMMAP}" != "${GK_FILENAME_SYSTEMMAP}" ]] + then + mv "${TEMP}"/minkernpackage/{${GK_FILENAME_TEMP_SYSTEMMAP},${GK_FILENAME_SYSTEMMAP}} \ + || gen_die "Failed to rename '${TEMP}/minkernpackage/${GK_FILENAME_TEMP_SYSTEMMAP}' to '${GK_FILENAME_SYSTEMMAP}'!" + fi - mv "${TEMP}"/minkernpackage/{config-${ARCH}-${KV},config-${KNAME}-${ARCH}-${KV}} \ - || gen_die "Failed to rename '${TEMP}/minkernpackage/config-${ARCH}-${KV}' to 'config-${KNAME}-${ARCH}-${KV}'!" + "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" "${GK_FILENAME_TEMP_CONFIG}" \ + || gen_die "Failed to extract '${GK_FILENAME_TEMP_CONFIG}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" if isTrue "${GENZIMAGE}" then - "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" kernelz-${ARCH}-${KV} \ - || gen_die "Failed to extract 'kernelz-${ARCH}-${KV}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" + "${TAR_COMMAND}" -x -C "${TEMP}"/minkernpackage -f "${KERNCACHE}" "${GK_FILENAME_TEMP_KERNELZ}" \ + || gen_die "Failed to extract '${GK_FILENAME_TEMP_KERNELZ}' from '${KERNCACHE}' to '${TEMP}/minkernpackage'!" - mv "${TEMP}"/minkernpackage/{kernelz-${ARCH}-${KV},kernelz-${KNAME}-${ARCH}-${KV}} \ - || gen_die "Failed to rename '${TEMP}/minkernpackage/kernelz-${ARCH}-${KV}' to 'kernelz-${KNAME}-${ARCH}-${KV}'!" + if [[ "${GK_FILENAME_TEMP_KERNELZ}" != "${GK_FILENAME_KERNELZ}" ]] + then + mv "${TEMP}"/minkernpackage/{${GK_FILENAME_TEMP_KERNELZ},${GK_FILENAME_KERNELZ}} \ + || gen_die "Failed to rename '${TEMP}/minkernpackage/${GK_FILENAME_TEMP_KERNELZ}' to '${GK_FILENAME_KERNELZ}'!" + fi fi else local tmp_kernel_binary=$(find_kernel_binary ${KERNEL_BINARY}) @@ -42,13 +48,13 @@ gen_minkernpackage() { cd "${KERNEL_OUTPUTDIR}" || gen_die "Failed to chdir to '${KERNEL_OUTPUTDIR}'!" - cp "${tmp_kernel_binary}" "${TEMP}/minkernpackage/kernel-${KNAME}-${ARCH}-${KV}" \ + cp "${tmp_kernel_binary}" "${TEMP}/minkernpackage/${GK_FILENAME_TEMP_KERNEL}" \ || gen_die "Could not copy the kernel binary '${tmp_kernel_binary}' for the min kernel package!" - cp "System.map" "${TEMP}/minkernpackage/System.map-${KNAME}-${ARCH}-${KV}" \ + cp "System.map" "${TEMP}/minkernpackage/${GK_FILENAME_TEMP_SYSTEMMAP}" \ || gen_die "Could not copy '${KERNEL_OUTPUTDIR}/System.map' for the min kernel package!" - cp ".config" "${TEMP}/minkernpackage/config-${KNAME}-${ARCH}-${KV}" \ + cp ".config" "${TEMP}/minkernpackage/${GK_FILENAME_TEMP_CONFIG}" \ || gen_die "Could not copy the kernel config '${KERNEL_OUTPUTDIR}/.config' for the min kernel package!" if isTrue "${GENZIMAGE}" @@ -59,7 +65,7 @@ gen_minkernpackage() { gen_die "Failed to locate kernel binary '${KERNEL_BINARY_2}'!" fi - cp "${tmp_kernel_binary2}" "${TEMP}/minkernpackage/kernelz-${KNAME}-${ARCH}-${KV}" \ + cp "${tmp_kernel_binary2}" "${TEMP}/minkernpackage/${GK_FILENAME_TEMP_KERNEL}" \ || gen_die "Could not copy the kernelz binary '${tmp_kernel_binary2}' for the min kernel package!" fi fi @@ -68,8 +74,8 @@ gen_minkernpackage() { then if isTrue "${BUILD_RAMDISK}" then - cp "${TMPDIR}/initramfs-${KV}" "${TEMP}/minkernpackage/initramfs-${KNAME}-${ARCH}-${KV}" \ - || gen_die "Could not copy the initramfs '${TMPDIR}/initramfs-${KV}' for the min kernel package!" + cp "${TMPDIR}/${GK_FILENAME_TEMP_INITRAMFS}" "${TEMP}/minkernpackage/${GK_FILENAME_TEMP_INITRAMFS}" \ + || gen_die "Could not copy the initramfs '${TMPDIR}/${GK_FILENAME_TEMP_INITRAMFS}' for the min kernel package!" fi fi @@ -117,23 +123,23 @@ gen_kerncache() { cd "${KERNEL_OUTPUTDIR}" || gen_die "Failed to chdir to '${KERNEL_OUTPUTDIR}'!" - cp -aL "${tmp_kernel_binary}" "${TEMP}/kerncache/kernel-${ARCH}-${KV}" \ + cp -aL "${tmp_kernel_binary}" "${TEMP}/kerncache/${GK_FILENAME_TEMP_KERNEL}" \ || gen_die "Could not copy the kernel binary '${tmp_kernel_binary}' for the kernel package!" - cp -aL "${KERNEL_OUTPUTDIR}/.config" "${TEMP}/kerncache/config-${ARCH}-${KV}" \ + cp -aL "${KERNEL_OUTPUTDIR}/.config" "${TEMP}/kerncache/${GK_FILENAME_TEMP_CONFIG}" \ || gen_die "Could not copy the kernel config '${KERNEL_OUTPUTDIR}/.config' for the kernel package!" if isTrue "$(is_gzipped "${KERNEL_CONFIG}")" then # Support --kernel-config=/proc/config.gz, mainly - zcat "${KERNEL_CONFIG}" > "${TEMP}/kerncache/config-${ARCH}-${KV}.orig" \ + zcat "${KERNEL_CONFIG}" > "${TEMP}/kerncache/${GK_FILENAME_TEMP_CONFIG}.orig" \ || gen_die "Could not copy the kernel config '${KERNEL_CONFIG}' for the kernel package!" else - cp -aL "${KERNEL_CONFIG}" "${TEMP}/kerncache/config-${ARCH}-${KV}.orig" \ + cp -aL "${KERNEL_CONFIG}" "${TEMP}/kerncache/${GK_FILENAME_TEMP_CONFIG}.orig" \ || gen_die "Could not copy the kernel config '${KERNEL_CONFIG}' for the kernel package!" fi - cp -aL "${KERNEL_OUTPUTDIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}" \ + cp -aL "${KERNEL_OUTPUTDIR}/System.map" "${TEMP}/kerncache/${GK_FILENAME_TEMP_SYSTEMMAP}" \ || gen_die "Could not copy the System.map '${KERNEL_OUTPUTDIR}/System.map' for the kernel package!" if isTrue "${GENZIMAGE}" @@ -144,7 +150,7 @@ gen_kerncache() { gen_die "Failed locate kernelz binary '${KERNEL_BINARY_2}'!" fi - cp -aL "${tmp_kernel_binary2}" "${TEMP}/kerncache/kernelz-${ARCH}-${KV}" \ + cp -aL "${tmp_kernel_binary2}" "${TEMP}/kerncache/${GK_FILENAME_TEMP_KERNELZ}" \ || gen_die "Could not copy the kernelz '${tmp_kernel_binary2}' for the kernel package!" fi @@ -179,22 +185,22 @@ gen_kerncache_extract_kernel() { || gen_die "Failed to extract '${KERNCACHE}' to '${TEMP}'!" copy_image_with_preserve \ - "kernel" \ - "${TEMP}/kernel-${ARCH}-${KV}" \ - "kernel-${KNAME}-${ARCH}-${KV}" + "${GK_FILENAME_KERNEL_SYMLINK}" \ + "${TEMP}/${GK_FILENAME_TEMP_KERNEL}" \ + "${GK_FILENAME_KERNEL}" if isTrue "${GENZIMAGE}" then copy_image_with_preserve \ "kernelz" \ - "${TEMP}/kernelz-${ARCH}-${KV}" \ - "kernelz-${KNAME}-${ARCH}-${KV}" + "${TEMP}/${GK_FILENAME_TEMP_KERNELZ}" \ + "${GK_FILENAME_KERNELZ}" fi copy_image_with_preserve \ - "System.map" \ - "${TEMP}/System.map-${ARCH}-${KV}" \ - "System.map-${KNAME}-${ARCH}-${KV}" + "${GK_FILENAME_SYSTEMMAP_SYMLINK}" \ + "${TEMP}/${GK_FILENAME_TEMP_SYSTEMMAP}" \ + "${GK_FILENAME_SYSTEMMAP}" } gen_kerncache_extract_modules() { @@ -217,11 +223,11 @@ gen_kerncache_extract_config() { mkdir -p /etc/kernels || gen_die "Failed to create '/etc/kernels'!" fi - "${TAR_COMMAND}" -xf "${KERNCACHE}" -C /etc/kernels config-${ARCH}-${KV} \ - || gen_die "Failed to extract kerncache config 'config-${ARCH}-${KV}' from '${KERNCACHE}' to '/etc/kernels'!" + "${TAR_COMMAND}" -xf "${KERNCACHE}" -C /etc/kernels "${GK_FILENAME_TEMP_CONFIG}" \ + || gen_die "Failed to extract kerncache config '${GK_FILENAME_TEMP_CONFIG}' from '${KERNCACHE}' to '/etc/kernels'!" - mv /etc/kernels/config-${ARCH}-${KV} /etc/kernels/kernel-config-${ARCH}-${KV} \ - || gen_die "Failed to rename kernelcache config '/etc/kernels/config-${ARCH}-${KV}' to '/etc/kernels/kernel-config-${ARCH}-${KV}'!" + mv /etc/kernels/${GK_FILENAME_TEMP_CONFIG} /etc/kernels/${GK_FILENAME_CONFIG} \ + || gen_die "Failed to rename kernelcache config '/etc/kernels/${GK_FILENAME_TEMP_CONFIG}' to '/etc/kernels/${GK_FILENAME_CONFIG}'!" } gen_kerncache_is_valid() { @@ -237,20 +243,20 @@ gen_kerncache_is_valid() { BUILD_KERNEL="no" # Can make this more secure .... - if [ -e "${TEMP}/config-${ARCH}-${KV}" -a -e "${TEMP}/kernel-${ARCH}-${KV}" ] + if [ -e "${TEMP}/${GK_FILENAME_TEMP_CONFIG}" -a -e "${TEMP}/${GK_FILENAME_TEMP_KERNEL}" ] then print_info 1 '' 1 0 print_info 1 'Valid kerncache found; No sources will be used ...' KERNCACHE_IS_VALID="yes" fi else - if [ -e "${TEMP}/config-${ARCH}-${KV}" -a -e "${KERNEL_CONFIG}" ] + if [ -e "${TEMP}/${GK_FILENAME_TEMP_CONFIG}" -a -e "${KERNEL_CONFIG}" ] then - if [ -e "${TEMP}/config-${ARCH}-${KV}.orig" ] + if [ -e "${TEMP}/${GK_FILENAME_TEMP_CONFIG}.orig" ] then - local test1=$(grep -v "^#" "${TEMP}/config-${ARCH}-${KV}.orig" | md5sum | cut -d " " -f 1) + local test1=$(grep -v "^#" "${TEMP}/${GK_FILENAME_TEMP_CONFIG}.orig" | md5sum | cut -d " " -f 1) else - local test1=$(grep -v "^#" "${TEMP}/config-${ARCH}-${KV}" | md5sum | cut -d " " -f 1) + local test1=$(grep -v "^#" "${TEMP}/${GK_FILENAME_TEMP_CONFIG}" | md5sum | cut -d " " -f 1) fi if isTrue "$(is_gzipped "${KERNEL_CONFIG}")" diff --git a/genkernel b/genkernel index da3d2d8..3c125c9 100755 --- a/genkernel +++ b/genkernel @@ -174,6 +174,8 @@ determine_KV determine_kernel_arch +determine_output_filenames + determine_kernel_config_file setup_cache_dir @@ -219,6 +221,8 @@ then determine_KV if [ -f "${TEMP}/.old_kv" ] then + determine_output_filenames + old_KV=$(cat "${TEMP}/.old_kv") print_info 1 "$(get_indent 1)>> Kernel version has changed (probably due to config change) since genkernel start:" print_info 1 "$(get_indent 1)>> We are now building Linux kernel ${BOLD}${KV}${NORMAL} for ${BOLD}${ARCH}${NORMAL} ..." @@ -237,9 +241,9 @@ then if isTrue "${SAVE_CONFIG}" then - print_info 1 "$(get_indent 1)>> Saving config of successful build to '/etc/kernels/kernel-config-${ARCH}-${KV}' ..." + print_info 1 "$(get_indent 1)>> Saving config of successful build to '/etc/kernels/${GK_FILENAME_CONFIG}' ..." [ ! -e '/etc/kernels' ] && mkdir -p /etc/kernels - cp "${KERNEL_OUTPUTDIR}/.config" "/etc/kernels/kernel-config-${ARCH}-${KV}" || \ + cp "${KERNEL_OUTPUTDIR}/.config" "/etc/kernels/${GK_FILENAME_CONFIG}" || \ print_warning 1 "Unable to copy the kernel configuration file; Ignoring non-fatal error ..." # Just a warning because ordinary users are not allowed to write in /etc fi @@ -373,16 +377,16 @@ then esac else print_info 1 '' - print_info 1 "You will find the kernel image in '${TMPDIR}/kernel-${KNAME}-${ARCH}-${KV}'." + print_info 1 "You will find the kernel image in '${TMPDIR}/${GK_FILENAME_TEMP_KERNEL}'." if isTrue "${GENZIMAGE}" then - print_info 1 "You will find the kernelz binary in '${TMPDIR}/kernelz-${KV}'." + print_info 1 "You will find the kernelz binary in '${TMPDIR}/${GK_FILENAME_TEMP_KERNELZ}'." fi if isTrue "${BUILD_RAMDISK}" then - print_info 1 "You will find the initramfs in '${TMPDIR}/initramfs-${KNAME}-${ARCH}-${KV}'." + print_info 1 "You will find the initramfs in '${TMPDIR}/${GK_FILENAME_TEMP_INITRAMFS}'." fi fi @@ -396,26 +400,27 @@ then if isTrue "${show_warning_initramfs_is_required}" && isTrue "${BUILD_RAMDISK}" then - INITRAMFS_INSTALLED_IN="${TMPDIR}" - isTrue "${CMD_INSTALL}" && INITRAMFS_INSTALLED_IN="${BOOTDIR}" + INITRAMFS_FILE="${TMPDIR}/${GK_FILENAME_TEMP_INITRAMFS}" + isTrue "${CMD_INSTALL}" && INITRAMFS_FILE="${BOOTDIR}/${GK_FILENAME_INITRAMFS}" print_warning 1 '' 1 0 print_warning 1 "If you require Genkernel's hardware detection features, you ${BOLD}MUST${NORMAL}" - print_warning 1 "tell your bootloader to use the provided initramfs file (${INITRAMFS_INSTALLED_IN}/initramfs-${KNAME}-${ARCH}-${KV})." + print_warning 1 "tell your bootloader to use the provided initramfs file '${INITRAMFS_FILE}'." + unset INITRAMFS_FILE fi unset show_warning_initramfs_is_required fi if isTrue "${BUILD_RAMDISK}" then - if ! isTrue "${BUILD_KERNEL}" && ! isTrue "${CMD_INSTALL}" - then - print_info 1 '' - print_info 1 "You will find the initramfs in '${TMPDIR}/initramfs-${KNAME}-${ARCH}-${KV}'." - elif ! isTrue "${BUILD_KERNEL}" && isTrue "${CMD_INSTALL}" + if ! isTrue "${BUILD_KERNEL}" then + INITRAMFS_FILE="${TMPDIR}/${GK_FILENAME_TEMP_INITRAMFS}" + isTrue "${CMD_INSTALL}" && INITRAMFS_FILE="${BOOTDIR}/${GK_FILENAME_INITRAMFS}" + print_info 1 '' - print_info 1 "You will find the initramfs in '${BOOTDIR}/initramfs-${KNAME}-${ARCH}-${KV}'." + print_info 1 "You will find the initramfs in '${INITRAMFS_FILE}'." + unset INITRAMFS_FILE fi print_warning 1 '' 1 0 diff --git a/genkernel.conf b/genkernel.conf index 0c1a2e7..23e015b 100644 --- a/genkernel.conf +++ b/genkernel.conf @@ -172,7 +172,7 @@ NOCOLOR="false" # Run the specified command in the current environment after the kernel and # modules have been compiled, useful to rebuild external kernel module # (see MODULEREBUILD above) or installing additional -# files (use 'copy_image_with_preserve dtb path/to/dtb dtb ${KNAME}-${ARCH}-${KV}') +# files (use 'copy_image_with_preserve dtb path/to/dtb dtb <kernelname>') #CMD_CALLBACK="" @@ -279,10 +279,13 @@ DEFAULT_KERNEL_SOURCE="/usr/src/linux" # =========MISC KERNEL CONFIGURATION============ # -# Tag the kernel and initramfs with a name: -# If not defined the option defaults to -# 'genkernel' -#KNAME="genkernel" +# Set kernel filename which will be used when kernel will be installed +# into BOOTDIR. See man page to learn more about available placeholders. +#KERNEL_FILENAME="kernel-genkernel-%%ARCH%%-%%KV%%" + +# Set kernel symlink name which will be used when kernel will be installed +# into BOOTDIR and SYMLINK option is enabled +#KERNEL_SYMLINK_NAME="kernel" # This option will set kernel option CONFIG_LOCALVERSION. # Use special value "UNSET" to unset already set CONFIG_LOCALVERSION. @@ -312,6 +315,15 @@ DEFAULT_KERNEL_SOURCE="/usr/src/linux" # =========MISC INITRAMFS CONFIGURATION============ # +# Set initramfs filename which will be used when initramfs will be +# installed into BOOTDIR. See man page to learn more about available +# placeholders. +#INITRAMFS_FILENAME="initramfs-genkernel-%%ARCH%%-%%KV%%" + +# Set initramfs symlink name which will be used when initramfs will be +# installed into BOOTDIR and SYMLINK option is enabled +#INITRAMFS_SYMLINK_NAME="initramfs" + # Copy all compiled kernel modules to the initramfs #ALLRAMDISKMODULES="no"
