summaryrefslogtreecommitdiffstats
path: root/builder/build-initramfs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'builder/build-initramfs.sh')
-rwxr-xr-xbuilder/build-initramfs.sh270
1 files changed, 0 insertions, 270 deletions
diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh
deleted file mode 100755
index d1a8017f..00000000
--- a/builder/build-initramfs.sh
+++ /dev/null
@@ -1,270 +0,0 @@
-#!/usr/bin/env bash
-# -*- coding: utf-8 -*-
-# region header
-# Copyright Torben Sickert (info["~at~"]torben.website) 29.10.2015
-# Janosch Dobler (info["~at~"]jandob.com) 29.10.2015
-# Jonathan Bauer (jonathan.bauer@rz.uni-freiburg.de) 19.09.2019
-
-# License
-# -------
-# This library written by Torben Sickert and Janosch Dobler stand under a
-# creative commons naming 3.0 unported license.
-# see http://creativecommons.org/licenses/by/3.0/deed.de
-## endregion
-
-# I think this are the same...
-declare -rg _root_dir="$(readlink -f $(dirname ${BASH_SOURCE[0]}))"
-declare -rg _repo_dir="${_root_dir}"
-
-file_path='/boot/initramfs.img'
-dracut_parameter=(--force --no-hostonly)
-verbose='no'
-debug='no'
-target=''
-cleanup='no'
-full_cleanup='no'
-use_systemd_in_initramfs='no'
-
-print_help_message() {
- echo "help"
-}
-
-parse_command_line() {
- while true; do
- case "$1" in
- -h|--help)
- shift
- print_help_message "$0"
- exit 0
- ;;
- -v|--verbose)
- shift
- verbose='yes'
- ;;
- -d|--debug)
- shift
- debug='yes'
- ;;
- -p|--file-path)
- local given_argument="$1"
- shift
- file_path="$1"
- if [[ "$file_path" == '' ]]; then
- echo \
- "Error with given option \"$given_argument\": This option needs a path to save initramfs image to."
- return 1
- fi
- shift
- ;;
- -c|--cleanup)
- shift
- cleanup='yes'
- ;;
- -f|--full-cleanup)
- shift
- full_cleanup='yes'
- ;;
- -s|--use-systemd-in-initramfs)
- shift
- use_systemd_in_initramfs='yes'
- ;;
- -t|--target)
- local given_argument="$1"
- shift
- target="$1"
- if [[ "$target" == '' ]]; then
- echo \
- "Error with given option \"$given_argument\": This option needs a path create initramfs from."
- return 1
- fi
- shift
- ;;
- -i|--init)
- shift
- initialize='yes'
- ;;
- -k|--kernel-version)
- local given_argument="$1"
- shift
- kernel_version="$1"
- if [ -z "$kernel_version" ]; then
- echo \
- "Error with given option \"$given_argument\": This option needs a kernel version to build the initramfs for."
- return 1
- fi
- shift
- ;;
- -H|--kernel-headers)
- local given_argument="$1"
- shift
- kernel_headers="$1"
- if [ -z "$kernel_headers" ]; then
- echo \
- "Error with given option \"$given_argument\": This option needs the path to the kernel headers."
- return 1
- fi
- shift
- ;;
- -q|--qcow-handler)
- local given_argument="$1"
- shift
- qcow_handler="$1"
- if [ -z "$qcow_handler" ]; then
- echo \
- "Error with given option \"$given_argument\": This options needs to be either 'xmount' or 'kernel'."
- return 1
- fi
- shift
- ;;
- -u|--update)
- shift
- update='yes'
- ;;
- -)
- shift
- while [[ "$1" =~ ^.+$ ]]; do
- dracut_parameter+=("$1")
- shift
- done
- ;;
- '')
- break
- ;;
- *)
- echo \
- "Error with given option \"$1\": This argument is not available."
- return 1
- esac
- done
-
- return 0
-}
-## endregion
-## region helper
-initialize_dracut() {
- pushd "${_root_dir}/dracut"
- # NOTE: On virtualbox shared folder symlinks are not allowed.
- # NOTE: make the dracut-install binary (dracut-install resolves
- # dependencies etc.)
- echo 'Compiling dracut.'
- ./configure
- make install/dracut-install
- # NOTE: We have to copy the binary to current instead of symlinking
- # them since this feature isn't supported in shared virtual box machine
- # folders.
- # If symlinks would be available we could simply use:
- # >>> make dracut-install
- popd
- cp "${_root_dir}/dracut/install/dracut-install" \
- "${_root_dir}/dracut/dracut-install"
- return $?
-}
-
-# The idea here was to source each module-setup.sh from our
-# custom dracut modules and call their clean() function.
-# TODO: Does this still work?
-cleanup() {
- local plugin_path
- plugin_path="${_root_dir}/modules.d/dnbd3-rootfs"
- source "${plugin_path}/module-setup.sh"
- moddir="$(cd "$plugin_path" &>/dev/null && pwd)"
- clean
- return $?
-}
-main() {
- if ! parse_command_line "$@"; then
- print_help_message "$0"
- exit 1
- fi
- # if no kernel was specified as dracut argument, use the running kernel's version
- echo "Building for:"
- if [ -z "$kernel_version" ]; then
- kernel_version="$(uname -r)"
- fi
- echo " * kernel version: $kernel_version"
- # similar for kernel headers needed to compile dnbd3 against.
- if [ -z "$kernel_headers" ]; then
- kernel_headers="/lib/modules/${kernel_version}/build"
- fi
- if [ ! -f "${kernel_headers}/Makefile" ]; then
- echo 'Missing core dependency "linux-headers" for version to compile against given or current kernel.'
- fi
- echo " * kernel headers: $kernel_headers"
- [ -n "$qcow_handler" ] && echo " * qcow2 handler: $qcow_handler"
- export _QCOW_HANDLER="$qcow_handler"
-
- if [ "$update" == "yes" ]; then
- pushd "${_repo_dir}"
- git pull
- popd
- fi
-
- echo 'Checking dracut...'
- if [[ ! -f "${_root_dir}/dracut/dracut-install" ]]; then
- echo "Dracut isn't available yet loading it."
- initialize_dracut
- fi
-
- for _dracut_module_dir in "${_repo_dir}/modules.d/"*; do
- [ -d "${_dracut_module_dir}" ] || continue
- _dracut_module="$(basename $_dracut_module_dir)"
- # TODO allow module-specific priority
- _dracut_module_target="${_root_dir}/dracut/modules.d/00${_dracut_module}"
- if [[ ! -L "$_dracut_module_target" || "$(readlink \
- "$_dracut_module_target")" != "$_dracut_module_dir" ]]; then
- echo \
- "Link ${_dracut_module} plugin into dracut modules folder ($_dracut_module_dir -> $_dracut_module_target)."
- if ! ln --symbolic --force "$_dracut_module_dir" "$_dracut_module_target"; then
- echo \
- "Linking \"$_dracut_module_dir\" to \"$_dracut_module_target\" failed." \
- " We will copy them. So we have to recopy it every time to ensure that recompiled things take effect."
- cp --recursive --force --no-target-directory \
- "$_dracut_module_dir" \
- "$_dracut_module_target"
- fi
- fi
- done
-
- _loglevel=''
- if [ "$verbose" == 'yes' ]; then
- _loglevel='--verbose'
- fi
- _modules=(dnbd3-rootfs conf-tgz)
- echo "Default modules: ${_modules[@]}"
- if [ "$debug" == 'yes' ]; then
- _loglevel="$_loglevel --stdlog 4"
- _modules+=(i18n terminfo)
- fi
- if [ "$use_systemd_in_initramfs" == 'yes' ]; then
- _modules+=(systemd systemd-initrd dracut-systemd)
- fi
- # Preprocess done - start build, cleanup or full cleanup
- if [[ "$full_cleanup" == 'yes' ]]; then
- echo 'Removing all modules.'
- rm "${_repo_dir}" "${_root_dir}/dracut" --recursive --force
- elif [[ "$cleanup" == 'yes' ]]; then
- echo 'Removing distribution specific files.'
- cleanup
- else
- . "${_repo_dir}/modules.d/dnbd3-rootfs/helper/build.inc"
- build_initialize_components
- if [[ "$initialize" == 'yes' ]]; then
- echo "Initialized."
- exit 0
- fi
- echo 'Build initramfs.'
-
- "${_root_dir}/dracut/dracut.sh" --local \
- $_loglevel --modules "${_modules[*]}" --conf /etc/dracut.conf \
- --confdir /etc/dracut.conf.d "${dracut_parameter[@]}" \
- --kver "${kernel_version}" "$file_path"
- _return_code=$?
- if [ "$_return_code" != 0 ]; then
- echo 'Building initial ram file system failed.'
- exit 1
- fi
- # NOTE: dracut generate the initramfs with 0600 permissions
- chmod 0644 "${file_path}"
- fi
-}
-main "$@"