From eeaaf95c9475f806a95a85b5f57664d296c71dba Mon Sep 17 00:00:00 2001 From: torben Date: Thu, 24 Mar 2016 17:42:23 +0100 Subject: Improve openslx config file. --- .../dnbd3-rootfs/hooks/prepare-root-partition.sh | 39 ++++++++------------ dev-tools/example-openslx.config | 41 +++++++++++++++++----- dev-tools/exampleDracutModule/apply-package.sh | 2 ++ 3 files changed, 50 insertions(+), 32 deletions(-) diff --git a/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh b/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh index 79cb6225..b57a915c 100755 --- a/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh +++ b/builder/dnbd3-rootfs/hooks/prepare-root-partition.sh @@ -18,36 +18,27 @@ source /etc/openslx if [[ "$SLX_WRITABLE_DEVICE_IDENTIFIER" != '' ]] && ! persistent_device="$( tools.find_block_device "$SLX_WRITABLE_DEVICE_IDENTIFIER" '' \ - "$SLX_WRITABLE_DEVICE_IDENTIFIER_TIMEOUT" + "$SLX_WRITABLE_DEVICE_IDENTIFIER_TIMEOUT_IN_SECONDS" )" then logging.warn "Failed to find unique device with identifier" \ "\"${SLX_WRITABLE_DEVICE_IDENTIFIER}\"; matched devices:" \ "\"${persistent_device}\"" fi - -# TODO move somewhere else -#tmp_device="$(tools.find_block_device \ - #'$SLX_TMP_PARTITION_IDENTIFIER')" - -#if [ -n $tmp_device ]; then - #mount --type auto "$tmp_device" "$NEWROOT/tmp" -#fi - -if [ -n "$SLX_WRITABLE_DEVICE_STORAGE_FILE" ] && [ -n "$persistent_device" ] +if [ -n "$SLX_WRITABLE_DEVICE_STORAGE_FILE_PATH" ] && [ -n "$persistent_device" ] then persistent_mountpoint=/mnt/slx_writable_device - storage_file=$persistent_mountpoint/$SLX_WRITABLE_DEVICE_STORAGE_FILE - ! mkdir --parents $persistent_mountpoint + storage_file_path="${persistent_mountpoint}/$SLX_WRITABLE_DEVICE_STORAGE_FILE_PATH" + ! mkdir --parents "$(dirname "$storage_file_path")" if ! mount --type auto "$persistent_device" "$persistent_mountpoint"; then logging.warn "Failed to mount $persistent_device, checking filesystem." - ! $SLX_WRITABLE_DEVICE_STORAGE_FILSYSTEM_CHECK_COMMAND \ + ! $SLX_WRITABLE_DEVICE_STORAGE_FILESYSTEM_CHECK_COMMAND \ "$persistent_device" if ! mount --type auto "$persistent_device" "$persistent_mountpoint" then logging.warn "Mounting $persistent_device, still failing," \ "creating new filesystem on device" - $SLX_WRITABLE_DEVICE_STORAGE_FILSYSTEM_CREATE_COMMAND \ + $SLX_WRITABLE_DEVICE_STORAGE_FILESYSTEM_CREATE_COMMAND \ "$persistent_device" fi if ! mount --type auto "$persistent_device" "$persistent_mountpoint" @@ -58,13 +49,13 @@ then fi fi if [ -n "$persistent_device" ]; then - if [ ! -e "$storage_file" ]; then + if [ ! -e "$storage_file_path" ]; then # Create a sparse file. - dd of="$storage_file" bs=1M \ - seek="$SLX_WRITABLE_DEVICE_STORAGE_FILE_MAX_SIZE_MB" count=0 + dd of="$storage_file_path" bs=1M \ + seek="$SLX_WRITABLE_DEVICE_STORAGE_MAXIMUM_FILE_SIZE_IN_MB" count=0 fi persistent_device="$(losetup --find)" - losetup "$persistent_device" "$storage_file" + losetup "$persistent_device" "$storage_file_path" fi fi @@ -77,19 +68,19 @@ if [ -n "$persistent_device" ]; then persistent='P' fi else - ramdisk_size="$SLX_RAMDISK_SIZE" - if [ "$ramdisk_size" = '' ]; then - ramdisk_size="$(awk '/MemTotal/ {print $2}' /proc/meminfo)" + ramdisk_size_in_kb="$SLX_RAMDISK_SIZE_IN_KB" + if [ "$ramdisk_size_in_kb" = '' ]; then + ramdisk_size_in_kb="$(awk '/MemTotal/ {print $2}' /proc/meminfo)" fi # NOTE: If the kernel modul "brd" is compiled into current kernel we can't # configure ram disk size dynamically. In this case it have to be # configured via kernel command line: "brd.rd_size=SITE_IN_KILOBYTE" # statically: #! rmmod brd 2>/dev/null - #modprobe brd max_part=1 rd_size="$ramdisk_size" + #modprobe brd max_part=1 rd_size="$ramdisk_size_in_kb" #writable_device='/dev/ram0' ramdisk_location="$(mktemp)" - dd of="$ramdisk_location" seek="$ramdisk_size" count=0 1>/dev/null + dd of="$ramdisk_location" seek="$ramdisk_size_in_kb" count=0 1>/dev/null writable_device="$(losetup --find)" losetup "$writable_device" "$ramdisk_location" fi diff --git a/dev-tools/example-openslx.config b/dev-tools/example-openslx.config index 47d37c43..57197eec 100644 --- a/dev-tools/example-openslx.config +++ b/dev-tools/example-openslx.config @@ -1,25 +1,50 @@ +# This file contains configuration how the dnbd3 provided read only basic image +# should be injected and made writable by a local writable layer. + +# The openslx config will be placed in "/etc/openslx" in initramfs. + +# Location where this config file should be placed in final booted template +# system. SLX_CONFIGURATION_LOCATION='/opt/openslx/' +# A comma separated list of dnbd3 server host names or ip addresses where +# the read only image should be provided. The first matching ip will be used. SLX_DNBD3_SERVERS='132.230.4.201,132.230.4.202,10.0.2.2' +# dnbd3 image version to use. SLX_DNBD3_RID='0' +# Device name where the read only image should be injected. SLX_DNBD3_DEVICE='/dev/dnbd0' +# Path on remote dnbd3 server for basic readonly image. SLX_DNBD3_IMAGE='archLinux/archLinux.vmdk' -# If empty the whole device is used +# Partition identifier for the system partition, if empty the whole device will +# be used (no partition assumed). SLX_SYSTEM_PARTITION_IDENTIFIER='system' +# Script to run and set the read only device. +# (e.g. "lvm_scan && read_only_partition=/dev/centos/root") +SLX_SYSTEM_PARTITION_PREPARATION_SCRIPT='' +# Device to mount and save the writable binary difference fill in. Empty means +# no writable device should be injected and ram will be used as fallback. SLX_WRITABLE_DEVICE_IDENTIFIER='' -SLX_WRITABLE_DEVICE_IDENTIFIER_TIMEOUT='' -SLX_WRITABLE_DEVICE_STORAGE_FILE='storage.img' +# Time to wait for the writable device in seconds. +SLX_WRITABLE_DEVICE_IDENTIFIER_TIMEOUT_IN_SECONDS=10 +# File path for binary difference file. +SLX_WRITABLE_DEVICE_STORAGE_FILE_PATH='storage.img' # NOTE: if the filesystem is any other than ext4, then the corresponding # filesystem tools have to be added to the initramfs manually. (use the dracut # --install parameter) -SLX_WRITABLE_DEVICE_STORAGE_FILSYSTEM_CREATE_COMMAND='mkfs.ext4' -SLX_WRITABLE_DEVICE_STORAGE_FILSYSTEM_CHECK_COMMAND='fsck.ext4' -SLX_WRITABLE_DEVICE_STORAGE_FILE_MAX_SIZE_MB='1000' +SLX_WRITABLE_DEVICE_STORAGE_FILESYSTEM_CREATE_COMMAND='mkfs.ext4' +SLX_WRITABLE_DEVICE_STORAGE_FILESYSTEM_CHECK_COMMAND='fsck.ext4' +SLX_WRITABLE_DEVICE_STORAGE_MAXIMUM_FILE_SIZE_IN_MB='1000' +# Indicates whether existing persistent file should be taken in account. SLX_WRITABLE_DEVICE_PERSISTENT='no' # If empty we will end up in an empty fstab file. If you want to reuse the # original fstab (from the template system) provide a dummy script like "true". SLX_GENERATE_FSTAB_SCRIPT=' echo "/dev/mapper/root / btrfs subvol=root 0 0" >> "$NEWROOT/etc/fstab" ' -# if empty will use all available ram -SLX_RAMDISK_SIZE='' +# Upper bound for ram using. If empty all available ram will be used. +SLX_RAMDISK_SIZE_IN_KB='' +# Specifies mount options for the final root location where we want to pivot +# root in. SLX_MOUNT_ROOT_OPTIONS='-o subvol=root' +# Path where all the logs should be placed. +SLX_LOG_FILE_PATH='/var/log/openslx' diff --git a/dev-tools/exampleDracutModule/apply-package.sh b/dev-tools/exampleDracutModule/apply-package.sh index 45155408..218740ef 100755 --- a/dev-tools/exampleDracutModule/apply-package.sh +++ b/dev-tools/exampleDracutModule/apply-package.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash # -*- coding: utf-8 -*- +source /etc/openslx + echo -------------------------------------------------------------------------- echo TEST echo -------------------------------------------------------------------------- -- cgit v1.2.3-55-g7522