diff options
author | Jonathan Bauer | 2018-08-21 16:43:14 +0200 |
---|---|---|
committer | Jonathan Bauer | 2018-08-21 16:43:14 +0200 |
commit | 89a9ed699ec08ba17683cb568d9165968a422953 (patch) | |
tree | c3672533921f51a5b4a5f12c8d345c7b5a520b24 | |
parent | [haveged] introduce new module (diff) | |
download | systemd-init-89a9ed699ec08ba17683cb568d9165968a422953.tar.gz systemd-init-89a9ed699ec08ba17683cb568d9165968a422953.tar.xz systemd-init-89a9ed699ec08ba17683cb568d9165968a422953.zip |
introduce --kernel-version option
to specify the kernel version to build the initramfs for.
-rwxr-xr-x | builder/build-initramfs.sh | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh index 2addea63..fa957721 100755 --- a/builder/build-initramfs.sh +++ b/builder/build-initramfs.sh @@ -159,6 +159,10 @@ print_command_line_option_description() { explicitly specified current system will be used as template system (default: "$target"). +-k --kernel-version Creates an image for the given kernel version. Will + require the presence of kernel headers for this version. + (default: "$(uname -r)") + -s --use-systemd-in-initramfs Use Systemd as init process in initramfs (improved performance but less features) (default: "$use_systemd_in_initramfs"). @@ -331,11 +335,21 @@ parse_command_line() { shift initialize='yes' ;; + -k|--kernel-version) + local given_argument="$1" + shift + kernel_version="$1" + if [ -z "$kernel_version" ]; then + logging.critical \ + "Error with given option \"$given_argument\": This option needs a kernel version to build the initramfs for." + return 1 + fi + shift + ;; -) shift while [[ "$1" =~ ^.+$ ]]; do dracut_parameter+=("$1") - [ "$1" == "--kver" ] && kernel_version="$2" shift done ;; @@ -468,7 +482,6 @@ initialize_dnbd3_rootfs_module() { logging.info "Could not find dnbd3, building it..." # fallback to running kernel if the kernel version was not # specified as the dracut argument '--kver' - [ -z "$kernel_version" ] && kernel_version="$(uname -r)" if ! CMAKE_FLAGS="-DKERNEL_VERSION=${kernel_version}" \ build_compile_dnbd3 "${_deps_base_dir}/dnbd3/"; then logging.error "Failed to build dnbd3." @@ -519,10 +532,17 @@ main() { `main` ' exceptions.activate + # region sanity check kernel version + # if no kernel was specified as dracut argument, use the running kernel's version + if [ -z "$kernel_version" ]; then + kernel_version="$(uname -r)" + fi + # endregion # region dependency checks and command line parsing + logging.info "Building for kernel version: ${kernel_version}." result=0 - if ! [ -f "/lib/modules/$(uname --kernel-release)/build/Makefile" ]; then - logging.critical 'Missing core dependency "linux-headers" to compile against given or current kernel.' + if ! [ -f "/lib/modules/${kernel_version}/build/Makefile" ]; then + logging.critical 'Missing core dependency "linux-headers" for version to compile against given or current kernel.' fi dependency_check core dependencies utils_dependency_check program || \ result=$? @@ -679,7 +699,7 @@ main() { "${_root_dir}/dracut/dracut.sh" --local \ $_loglevel --modules "$_modules" --conf /etc/dracut.conf \ --confdir /etc/dracut.conf.d "${dracut_parameter[@]}" \ - "$file_path" + --kver "${kernel_version}" "$file_path" _return_code=$? logging.set_commands_level "$_commands_log_level_backup" logging.set_level "$_log_level_backup" |