summaryrefslogtreecommitdiffstats
path: root/builder
diff options
context:
space:
mode:
authorjandob2016-01-07 16:42:58 +0100
committerjandob2016-01-07 16:42:58 +0100
commitdcd15c54bd70ef7c9cdf92a957e93053ff2bde47 (patch)
treebe41014ee47834674f96a90cef0727b65da11066 /builder
parentchange hooks variable scoping (diff)
parentIntegrate new systemd cli option. (diff)
downloadsystemd-init-dcd15c54bd70ef7c9cdf92a957e93053ff2bde47.tar.gz
systemd-init-dcd15c54bd70ef7c9cdf92a957e93053ff2bde47.tar.xz
systemd-init-dcd15c54bd70ef7c9cdf92a957e93053ff2bde47.zip
merge
Diffstat (limited to 'builder')
-rwxr-xr-xbuilder/build-initramfs.sh104
-rwxr-xr-xbuilder/dnbd3-rootfs/module-setup.sh6
m---------builder/dnbd3-rootfs/scripts/rebash0
3 files changed, 63 insertions, 47 deletions
diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh
index a513b752..550826cc 100755
--- a/builder/build-initramfs.sh
+++ b/builder/build-initramfs.sh
@@ -51,6 +51,7 @@
# PATTERN. By default, grep prints the matching lines.
## region ensure presence of needed dependencies
+
set -o errexit
build_initramfs__needed_location="$(dirname "${BASH_SOURCE[0]}")/dnbd3-rootfs"
if ! [[ -d "$build_initramfs__needed_location" ]]; then
@@ -71,6 +72,7 @@ if ! [[ -d "$build_initramfs__needed_location" ]]; then
rm --recursive --force "$build_initramfs__temporary_repository_location"
fi
set +o errexit
+
## endregion
source "$(dirname "${BASH_SOURCE[0]}")/dnbd3-rootfs/scripts/rebash/core.sh"
@@ -78,12 +80,15 @@ core.import exceptions
exceptions.activate
core.import logging
core.import utils
+core.import change_root
+
# endregion
logging.set_commands_log_level debug
logging.set_log_level critical
# region properties
+
build_initramfs_file_path='/boot/initramfs.img'
build_initramfs_dracut_parameter='--force --no-hostonly'
build_initramfs_verbose='no'
@@ -91,12 +96,16 @@ build_initramfs_debug='no'
build_initramfs_target=''
build_initramfs_create_system_image=''
build_initramfs_cleanup='no'
+build_initramfs_use_systemd_in_initramfs='no'
build_initramfs_dependencies=(cpio git test shift mktemp cat rm sed gzip curl \
- tar grep make gcc cmake readlink dirname dmsetup fakeroot fakechroot \
- chroot qemu-nbd)
+ tar grep make gcc cmake readlink dirname dmsetup chroot qemu-nbd)
+
# endregion
+
# region functions
+
## region command line interface
+
function build_initramfs_print_usage_message() {
# Prints a description about how to use this program.
logging.cat << EOF
@@ -133,6 +142,10 @@ function build_initramfs_print_command_line_option_description() {
explicitly speicifed current system will be used as template system
(default).
+-s --use-systemd-in-initramfs Use Systemd as init process in initramfs
+ (improved performance but less features)
+ (default: "$build_initramfs_use_systemd_in_initramfs").
+
Additional dracut parameter and normal parameter can be deleimiter via a single
dash (-) (default: "$build_initramfs_dracut_parameter").
EOF
@@ -178,6 +191,10 @@ function build_initramfs_parse_command_line() {
shift
build_initramfs_cleanup='yes'
;;
+ -s|--use-systemd-in-initramfs)
+ shift
+ build_initramfs_use_systemd_in_initramfs='yes'
+ ;;
-i|--create-system-image)
shift
build_initramfs_create_system_image="$1"
@@ -232,7 +249,9 @@ function build_initramfs_parse_command_line() {
}
## endregion
+
## region helper
+
function build_initramfs_initialize_dracut() {
# Downloads and compiles dracut.
#
@@ -285,10 +304,15 @@ function build_initramfs_cleanup() {
clean
return $?
}
+
## endregion
+
# endregion
+
# region controller
+
## region dependency checks
+
utils.dependency_check "${build_initramfs_dependencies[*]}"
# TODO check for existing kernel headers.
# Find lib locations: $(gcc -print-prog-name=cc1plus) -v
@@ -296,12 +320,16 @@ if ! ldconfig --print-cache | grep libz.so; then
logging.critical "You have to install the compression library \"libz\". Otherwise we aren't able to compile dnbd3 for your kernel."
exit 1
fi
+
## endregion
+
if ! build_initramfs_parse_command_line "$@"; then
build_initramfs_print_help_message "$0"
exit 1
fi
+
## region handle delegated operations to specified target
+
if [[ "$build_initramfs_target" != '' ]]; then
build_initramfs__target="$build_initramfs_target"
if [[ -f "$build_initramfs_target" ]]; then
@@ -310,28 +338,10 @@ if [[ "$build_initramfs_target" != '' ]]; then
#qemu-nbd "$build_initramfs_target" "$build_initramfs__target"
fi
if [[ -d "$build_initramfs__target" ]]; then
- build_initramfs__temporary_working_directory="$(fakeroot \
- fakechroot chroot "$build_initramfs__target" mktemp --directory)"
+ build_initramfs__temporary_working_directory="$(chroot \
+ "$build_initramfs__target" mktemp --directory)"
mount --bind "$(pwd)" \
"${build_initramfs__target}${build_initramfs__temporary_working_directory}"
-
- # TODO implement a more nice chroot method
- mkdir --parents "${build_initramfs__temporary_working_directory}/proc"
- mount /proc \
- "${build_initramfs__temporary_working_directory}/proc" --types \
- proc --options nosuid,noexec,nodev
- mkdir --parents "${build_initramfs__temporary_working_directory}/dev"
- mount udev "${build_initramfs__temporary_working_directory}/dev" \
- --types devtmpfs --options mode=0755,nosuid
- mkdir --parents \
- "${build_initramfs__temporary_working_directory}/dev/pts"
- mount devpts "${build_initramfs__temporary_working_directory}/dev/pts" \
- --types devpts --options mode=0620,gid=5,nosuid,noexec
- mkdir --parents \
- "${build_initramfs__temporary_working_directory}/dev/shm"
- mount shm "${build_initramfs__temporary_working_directory}/dev/shm" \
- --types tmpfs --options mode=1777,nosuid,nodev
-
build_initramfs__parameter_skip=false
build_initramfs__parameter_to_forward=()
for build_initramfs__parameter; do
@@ -345,37 +355,32 @@ if [[ "$build_initramfs_target" != '' ]]; then
build_initramfs__parameter_to_forward+=("$build_initramfs__parameter")
fi
done
- # NOTE: We temporary patch dracut to avoid removing the environment
- # variables "LD_LIBRARY_PATH" and "LD_PRELOAD" to get "fakechroot"
- # working with dracut. So we should remove this variables before
- # running the patched dracut version to follow the initial intention.
- unset LD_LIBRARY_PATH
- unset LD_PRELOAD
- # TODO
- # patch dracut.sh temporary:
- # unset LD_LIBRARY_PATH
- # unset LD_PRELOAD
- # have to be removed! Since they broke the fakechroot environment.
- # TODO check FAKECHROOT_CMD_SUBST
- FAKECHROOT_CMD_SUBST=/usr/bin/ldconfig=/usr/bin/ldconfig fakeroot \
- fakechroot chroot "${build_initramfs__target}" \
+ # NOTE: We would have to temporary patch dracut to avoid removing the
+ # environment variables "LD_LIBRARY_PATH" and "LD_PRELOAD" to get
+ # "fakechroot" working with dracut. So we should remove this variables
+ # before running the patched dracut version to follow the initial
+ # intention. You should first do:
+ # >>> unset LD_LIBRARY_PATH
+ # >>> unset LD_PRELOAD
+ # and patch "dracut.sh" temporary to comment out:
+ # >>> unset LD_LIBRARY_PATH
+ # >>> unset LD_PRELOAD
+ # To avoid to broke the "fakechroot" environment pipe the ldconfig call
+ # to the native one:
+ # >>> FAKECHROOT_CMD_SUBST=/usr/bin/ldconfig=/usr/bin/ldconfig
+ change_root "${build_initramfs__target}" \
"${build_initramfs__temporary_working_directory}/${BASH_SOURCE[0]}" \
${build_initramfs__parameter_to_forward[*]}
-
- umount /proc
- umount /dev
- umount /dev/pts
- umount /dev/shm
-
- umount "${build_initramfs__target}${build_initramfs__temporary_working_directory}"
-
mv "${build_initramfs__target}/$build_initramfs_file_path" \
"$build_initramfs_file_path"
fi
exit 0
fi
+
## endregion
+
## region handle dependencies which can be resolved automatically
+
logging.info 'Checking dracut.'
if ! [[ -f "$(dirname "${BASH_SOURCE[0]}")/dracut/dracut-install" ]]; then
logging.info "Dracut isn't available yet loading it."
@@ -399,8 +404,11 @@ then
"$build_initramfs__dracut_modules_target"
fi
fi
+
## endregion
+
## region prepare and perform final dracut call
+
build_initramfs__loglevel=''
if [ "$build_initramfs_verbose" == 'yes' ]; then
build_initramfs__loglevel='--verbose'
@@ -410,6 +418,9 @@ if [ "$build_initramfs_debug" == 'yes' ]; then
build_initramfs__loglevel="$build_initramfs__loglevel --stdlog 4"
build_initramfs__modules="$build_initramfs__modules i18n terminfo"
fi
+if [ "$build_initramfs_use_systemd_in_initramfs" == 'yes' ]; then
+ build_initramfs__modules="$build_initramfs__modules systemd systemd-initrd dracut-systemd"
+fi
if [[ "$build_initramfs_create_system_image" != '' ]]; then
logging.info 'Create system image.'
build_initramfs_create_qcow2_system "$build_initramfs_create_system_image"
@@ -427,9 +438,14 @@ else
exceptions.activate
fi
exceptions.deactivate
+
## endregion
+
# endregion
+
# region vim modline
+
# vim: set tabstop=4 shiftwidth=4 expandtab:
# vim: foldmethod=marker foldmarker=region,endregion:
+
# endregion
diff --git a/builder/dnbd3-rootfs/module-setup.sh b/builder/dnbd3-rootfs/module-setup.sh
index 3b60417d..87484fb3 100755
--- a/builder/dnbd3-rootfs/module-setup.sh
+++ b/builder/dnbd3-rootfs/module-setup.sh
@@ -188,10 +188,10 @@ install() {
mount fdisk mkfs.xfs env busybox ps agetty \
insmod blockdev partx dmsetup sed cut awk tr insmod qemu-nbd \
blockdev partx dmsetup cat cut awk losetup dd mkfs.ext4 grep \
- basename dirname sort diff mktemp nohup genfstab mountpoint qemu-img
+ basename dirname sort mktemp diff qemu-img
# Production:
- # inst_multiple insmod blockdev partx dmsetup cat cut awk tr \
- # losetup dd mkfs.ext4 grep
+ # inst_multiple insmod qemu-nbd blockdev partx dmsetup sed cat cut awk tr \
+ # losetup dd mkfs.ext4 grep basename dirname mktemp diff
}
# region vim modline
diff --git a/builder/dnbd3-rootfs/scripts/rebash b/builder/dnbd3-rootfs/scripts/rebash
-Subproject b77bbd65f70f56c5941f0368c2e488c470072af
+Subproject 46681d9d6caef2c14b10f4512f12176a7b0c1f4