summaryrefslogtreecommitdiffstats
path: root/builder
diff options
context:
space:
mode:
authorjandob2016-01-21 17:41:00 +0100
committerjandob2016-01-21 17:41:00 +0100
commit9b89d1346861065516ed8e2129156e24dca67fff (patch)
tree33a2f7a3af03adb1af2c21a51564d72b80b2906b /builder
parentset qemu submodule to libxmount_input branch (diff)
downloadsystemd-init-9b89d1346861065516ed8e2129156e24dca67fff.tar.gz
systemd-init-9b89d1346861065516ed8e2129156e24dca67fff.tar.xz
systemd-init-9b89d1346861065516ed8e2129156e24dca67fff.zip
bugfixes
Diffstat (limited to 'builder')
-rwxr-xr-xbuilder/dnbd3-rootfs/binaries/nbd/Makefile15
-rwxr-xr-xbuilder/dnbd3-rootfs/hooks/fetch-config.sh1
-rwxr-xr-xbuilder/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh13
-rwxr-xr-xbuilder/dnbd3-rootfs/hooks/prepare-root-partition.sh8
-rwxr-xr-xbuilder/dnbd3-rootfs/module-setup.sh42
-rw-r--r--builder/dnbd3-rootfs/scripts/build.sh81
6 files changed, 73 insertions, 87 deletions
diff --git a/builder/dnbd3-rootfs/binaries/nbd/Makefile b/builder/dnbd3-rootfs/binaries/nbd/Makefile
deleted file mode 100755
index 2bd08b8e..00000000
--- a/builder/dnbd3-rootfs/binaries/nbd/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-obj-m += nbd.o
-
-all: build
-
-build: update
- make --directory /lib/modules/$(shell uname --kernel-release)/build M=$(PWD) modules
-
-install:
- make --directory /lib/modules/$(shell uname --kernel-release)/build M=$(PWD) modules_install
-
-clean:
- make --directory /lib/modules/$(shell uname --kernel-release)/build M=$(PWD) clean
-
-update:
- curl --location --remote-name "https://raw.githubusercontent.com/torvalds/linux/v$(shell uname --kernel-release | cut --delimiter='.' --fields=1-2)/drivers/block/nbd.c"
diff --git a/builder/dnbd3-rootfs/hooks/fetch-config.sh b/builder/dnbd3-rootfs/hooks/fetch-config.sh
index 299e3135..709d49a9 100755
--- a/builder/dnbd3-rootfs/hooks/fetch-config.sh
+++ b/builder/dnbd3-rootfs/hooks/fetch-config.sh
@@ -20,7 +20,6 @@ slx_server_base="$(getargs slxbase=)"
logging.info 'Getting configuration file.'
IFS_backup="$IFS"
IFS=","
-host
for host in ${slx_server}; do
logging.info "Trying host \"$host\"."
if wget --timeout 5 "http://${host}/${slx_server_base}${configuration_file_name}" \
diff --git a/builder/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh b/builder/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh
index 02d697d3..653dc9a7 100755
--- a/builder/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh
+++ b/builder/dnbd3-rootfs/hooks/load-custom-kernel-modules.sh
@@ -1,13 +1,6 @@
( # subshell for variable scoping
-NBD_MOD_PATH="/usr/lib/modules/current/extra/nbd.ko"
DNBD3_MOD_PATH="/usr/lib/modules/current/extra/dnbd3.ko"
-# do we actually have our modules?
-if [ ! -e "${NBD_MOD_PATH}" ]; then
- warn "No such file of directory: ${NBD_MOD_PATH}"
- emergency_shell -n "Error in $0"
- exit 1
-fi
if [ ! -e "${DNBD3_MOD_PATH}" ]; then
warn "No such file of directory: ${DNBD3_MOD_PATH}"
emergency_shell -n "Error in $0"
@@ -20,10 +13,4 @@ if ! insmod "${DNBD3_MOD_PATH}"; then
emergency_shell -n "Error in $0"
exit 1
fi
-
-if ! modprobe nbd max_part=16; then
- warn "Failed to load NBD kernel module..."
- emergency_shell -n "Error in $0"
- exit 1
-fi
) || exit $?
diff --git a/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh b/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh
index 3af24960..a9407287 100755
--- a/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh
+++ b/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh
@@ -36,7 +36,7 @@ if [[ $return_code != 0 ]]; then
exit 1
fi
# endregion
-
+# region scan partitions
read_only_device=""
if ! qemu-img info --output json "$SLX_DNBD3_DEVICE" | grep '"format": "raw"'
then
@@ -51,7 +51,9 @@ else
udevadm settle
read_only_device="$loop_device"
fi
-# region detect read-only partition
+# endregion
+
+# region find read-only partition
for i in 0.5 1 2; do
if read_only_partition=$(utils.find_block_device \
"$SLX_SYSTEM_PARTITION_IDENTIFIER" "$read_only_device"); then
@@ -65,7 +67,7 @@ for i in 0.5 1 2; do
done
# endregion
-# region detect writable partition
+# region find writable partition
if ! persistent_device=$(utils.find_block_device \
"$SLX_WRITABLE_DEVICE_IDENTIFIER"); then
logging.warn "Failed to find unique device with identifier" \
diff --git a/builder/dnbd3-rootfs/module-setup.sh b/builder/dnbd3-rootfs/module-setup.sh
index 8b16e71a..b86273be 100755
--- a/builder/dnbd3-rootfs/module-setup.sh
+++ b/builder/dnbd3-rootfs/module-setup.sh
@@ -15,16 +15,11 @@ clean() {
# NOTE: This method is currently triggered manually and not supported by
# dracut itself.
- if [[ -f "$moddir/binaries/nbd/nbd.ko" ]]; then
- build_clean_nbd "$moddir/binaries/nbd/"
- fi
- if [[ -f "$moddir/binaries/dnbd3/build/dnbd3.ko" || ! -f "$moddir/binaries/dnbd3/build/dnbd3-client" ]]; then
- build_clean_dnbd3 "$moddir/binaries/dnbd3/"
- fi
- if [[ -f "$moddir/binaries/systemd-preserve-process-marker/systemd-preserve-process-marker" ]]; then
- build_clean_systemd_preserve_process_marker \
- "$moddir/binaries/systemd-preserve-process-marker/"
- fi
+ build_clean_xmount "$moddir/binaries/xmount/"
+ build_clean_qemu_xmount "$moddir/binaries/qemu-xmount/"
+ build_clean_dnbd3 "$moddir/binaries/dnbd3/"
+ build_clean_systemd_preserve_process_marker \
+ "$moddir/binaries/systemd-preserve-process-marker/"
return 0
}
@@ -32,8 +27,13 @@ check() {
exceptions.activate
- if [[ ! -f "$moddir/binaries/nbd/nbd.ko" ]]; then
- build_compile_nbd "$moddir/binaries/nbd/"
+ if [[ ! -f "$moddir/binaries/xmount/trunk/build/src/xmount" ]] || \
+ [[ ! -f "$moddir/binaries/xmount/trunk/build/libxmount_input/libxmount_input_raw/libxmount_input_raw.so" ]]
+ then
+ build_compile_xmount "$moddir/binaries/xmount/"
+ fi
+ if [[ ! -f "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" ]]; then
+ build_compile_qemu_xmount "$moddir/binaries/qemu-xmount/"
fi
if [[ ! -f "$moddir/binaries/dnbd3/build/dnbd3.ko" ]] || \
[[ ! -f "$moddir/binaries/dnbd3/build/dnbd3-client" ]]
@@ -76,8 +76,6 @@ depends() {
installkernel() {
inst "$moddir/binaries/dnbd3/build/dnbd3.ko" \
/usr/lib/modules/current/extra/dnbd3.ko
- inst "$moddir/binaries/nbd/nbd.ko" \
- /usr/lib/modules/current/extra/nbd.ko
# Debugging:
instmods cfg80211 rfkill vboxsf nls_iso8859_1 ppdev nls_cp437 iosf_mbi \
@@ -108,6 +106,19 @@ install() {
/usr/bin/device-add-write-layer
inst "$moddir/scripts/container-unpack-xmount.sh" \
/usr/bin/container-unpack-xmount
+ # xmount
+ inst "$moddir/binaries/xmount/trunk/build/src/xmount" /usr/bin/xmount
+ inst_dir /usr/lib/xmount
+ inst "$moddir/binaries/xmount/trunk/build/libxmount_input/libxmount_input_raw/libxmount_input_raw.so" \
+ /usr/local/lib/xmount/libxmount_input_raw.so
+ inst "$moddir/binaries/xmount/trunk/build/libxmount_morphing/libxmount_morphing_combine/libxmount_morphing_combine.so" \
+ /usr/local/lib/xmount/libxmount_morphing_combine.so
+ inst "$moddir/binaries/xmount/trunk/build/libxmount_morphing/libxmount_morphing_raid/libxmount_morphing_raid.so" \
+ /usr/local/lib/xmount/libxmount_morphing_raid.so
+ inst "$moddir/binaries/xmount/trunk/build/libxmount_morphing/libxmount_morphing_unallocated/libxmount_morphing_unallocated.so" \
+ /usr/local/lib/xmount/libxmount_morphing_unallocated.so
+ inst "$moddir/binaries/qemu-xmount/libxmount_input_qemu.so" \
+ /usr/local/lib/xmount/libxmount_input_qemu.so
# endregion
@@ -183,9 +194,6 @@ install() {
insmod blockdev partx dmsetup sed cut awk tr insmod \
blockdev partx dmsetup cat cut awk losetup dd mkfs.ext4 grep \
basename dirname sort mktemp diff qemu-img genfstab mountpoint xmount
- for file in "/usr/local/lib/xmount/*"; do
- inst_simple $file
- done
# Production:
# inst_multiple insmod blockdev partx dmsetup sed cat cut awk tr touch \
# losetup grep basename dirname mktemp diff sleep wget mount sort \
diff --git a/builder/dnbd3-rootfs/scripts/build.sh b/builder/dnbd3-rootfs/scripts/build.sh
index 186bdef4..1aa835ab 100644
--- a/builder/dnbd3-rootfs/scripts/build.sh
+++ b/builder/dnbd3-rootfs/scripts/build.sh
@@ -1,10 +1,49 @@
source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh"
core.import logging
-build_clean_qemu_nbd() {
- # removes qemu-nbd.
+build_compile_qemu_xmount() {
+ # Downloads and compiles qemu libxmount.
#
- rm --recursive --force "$1/*"
+ # Provides the following file:
+ # "$1/libxmount_input_qemu.so"
+
+ pushd "$1"
+ ./configure --enable-xmount-input --extra-cflags=-fPIC \
+ --python=$(which python2)
+ make libxmount_input_qemu.so
+ local ret=$?
+ popd
+ return $ret
+}
+build_clean_qemu_xmount() {
+ pushd "$1"
+ make clean
+ popd
+ return $?
+}
+build_compile_xmount() {
+ # Downloads and compiles xmount
+ #
+ # Provides the following files:
+ # "$1/trunk/build/libxmount_input/libxmount_input_raw/libxmount_input_raw.so"
+ # "$1/trunk/build/src/xmount"
+ pushd "$1"
+ mkdir -p trunk/build
+ cd trunk/build
+ cmake -DCMAKE_BUILD_TYPE=Release ..
+ make
+ local ret=$?
+ popd
+ return $ret
+}
+build_clean_xmount() {
+ rm -rf "$1/trunk/build"
+}
+build_clean_qemu_nbd() {
+ pushd "$1"
+ make clean
+ popd
+ return $?
}
build_compile_qemu_nbd() {
# Downloads and compiles qemu-nbd.
@@ -23,8 +62,6 @@ build_compile_qemu_nbd() {
#yaourt --noconfirm -S glib2-static glibc-static pcre-static
#exit
pushd "$(dirname $1)"
- [ ! -e qemu ] && git clone git://git.qemu.org/qemu.git qemu
- cd qemu
# TODO check what other features can be disabled
# --static
./configure --target-list=x86_64-linux-user \
@@ -75,10 +112,7 @@ build_compile_dnbd3() {
# ...
# Provides the following file:
# "$1/build/dnbd3.ko"
- pushd "$1/.."
- rm --recursive --force "$1"
- git clone git://git.openslx.org/dnbd3.git
- cd dnbd3
+ pushd "$1"
./build.sh
popd
return $?
@@ -117,32 +151,3 @@ build_clean_systemd_preserve_process_marker() {
popd
return $?
}
-build_mount_partition() {
- # Mounts a partition at given offset.
- #
- # Examples:
- #
- # >>> build_mount_partition /dev/DEVICE_NAME PARTITION_IDENTIFIER
- # ...
- local device="$1"
- local partition_identifier="$2"
- local loop_device="$(losetup --find)"
-
- local sector_size="$(blockdev --getbsz "$device")"
- local partition_info="(partx --raw --noheadings --output START,NAME,UUID \
- "$device" 2>/dev/null| grep part)"
- local offset_sectors="$(echo "$partition_identifier" | \
- cut --delimiter=' ' --fields=1)"
- if [ -z "$offset_sectors" ]; then
- logging.warn "could not find partition with identifier \"$partition_identifier\" on device $device"
- return 1
- fi
- # NOTE: Could overflow on 32bit systems
- # logging.warn "$(("$offset_sectors"*512))"
- local offset_bytes="$(echo | awk -v x="$offset_sectors" -v y="$sector_size" '{print x * y}')"
-
- # NOTE: Test if mount works directly (problem with btrfs device id).
- # mount --verbose --options loop,offset="$offset_bytes" "$device" "$mount_point"
- losetup --verbose --offset "$offset_bytes" "$loop_device" "$device"
- echo "$loop_device"
-}