summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2018-08-21 16:43:14 +0200
committerJonathan Bauer2018-08-21 16:43:14 +0200
commit89a9ed699ec08ba17683cb568d9165968a422953 (patch)
treec3672533921f51a5b4a5f12c8d345c7b5a520b24
parent[haveged] introduce new module (diff)
downloadsystemd-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-xbuilder/build-initramfs.sh30
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"