From 6e27b5ea9cc52654b9e9cf4a6110880722b5a4ab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zolt=C3=A1n=20Felleg?= Date: Thu, 13 Jan 2022 17:56:29 +0100 Subject: [PATCH] Updated create-container.sh to link-copy only /usr. --- scripts/create-container.sh | 76 +++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 15 deletions(-) diff --git a/scripts/create-container.sh b/scripts/create-container.sh index bbe698c..ced6965 100755 --- a/scripts/create-container.sh +++ b/scripts/create-container.sh @@ -34,7 +34,7 @@ backup_old_container() "RUNNING") echo "Stopping (the old) container $OLD_CONTAINER_NAME" lxc-stop --name=$OLD_CONTAINER_NAME - echo "Stopped (the old) container $OLD_CONTAINER_NAME" + echo "Stopped (the old) container $OLD_CONTAINER_NAME" ;; "STOPPED") ;; @@ -53,9 +53,23 @@ copy_and_install() "CentOS") YUM_CONFIG=$SCRIPT_PATH/yum.conf.centos YUM_RELEASEVER=$DISTRIBUTION_VERSION - cp --archive --link \ - $LXC_PATH/base.$CONTAINER_OS/rootfs/* \ - $CONTAINER_BUILDROOT + for FQ_DIRECTORY in $BASE_CONTAINER_PATH/rootfs/* + do + DIRECTORY=$(basename $FQ_DIRECTORY) + case "$DIRECTORY" in + "usr") + # common for all containers + cp --archive --link $FQ_DIRECTORY $CONTAINER_BUILDROOT + ;; + "dev" | "proc") + # already mounted, skip + ;; + *) + # each container must have its own version + cp --archive $FQ_DIRECTORY $CONTAINER_BUILDROOT + ;; + esac + done if [ -n "$SPEC_PACKAGES" ] then yum --assumeyes \ @@ -77,9 +91,23 @@ copy_and_install() "Fedora") DNF_CONFIG=$SCRIPT_PATH/dnf.conf.fedora DNF_RELEASEVER=$DISTRIBUTION_VERSION - cp --archive --link \ - $LXC_PATH/base.$CONTAINER_OS/rootfs/* \ - $CONTAINER_BUILDROOT + for FQ_DIRECTORY in $BASE_CONTAINER_PATH/rootfs/* + do + DIRECTORY=$(basename $FQ_DIRECTORY) + case "$DIRECTORY" in + "usr") + # common for all containers + cp --archive --link $FQ_DIRECTORY $CONTAINER_BUILDROOT + ;; + "dev" | "proc") + # already mounted, skip + ;; + *) + # each container must have its own version + cp --archive $FQ_DIRECTORY $CONTAINER_BUILDROOT + ;; + esac + done if [ -n "$SPEC_PACKAGES" ] then dnf --assumeyes \ @@ -101,9 +129,23 @@ copy_and_install() "Rocky") YUM_CONFIG=$SCRIPT_PATH/yum.conf.rocky YUM_RELEASEVER=$DISTRIBUTION_VERSION - cp --archive --link \ - $LXC_PATH/base.$CONTAINER_OS/rootfs/* \ - $CONTAINER_BUILDROOT + for FQ_DIRECTORY in $BASE_CONTAINER_PATH/rootfs/* + do + DIRECTORY=$(basename $FQ_DIRECTORY) + case "$DIRECTORY" in + "usr") + # common for all containers + cp --archive --link $FQ_DIRECTORY $CONTAINER_BUILDROOT + ;; + "dev" | "proc") + # already mounted, skip + ;; + *) + # each container must have its own version + cp --archive $FQ_DIRECTORY $CONTAINER_BUILDROOT + ;; + esac + done if [ -n "$SPEC_PACKAGES" ] then yum --assumeyes \ @@ -254,7 +296,9 @@ set_variables() DISTRIBUTION_FIRST_CHAR=$(echo "$DISTRIBUTION" | cut -c 1 | tr '[A-Z]' '[a-z]') CONTAINER_OS="${DISTRIBUTION_FIRST_CHAR}$DISTRIBUTION_VERSION" - if [ ! -d $LXC_PATH/base.$CONTAINER_OS ] + BASE_CONTAINER_PATH=$LXC_PATH/base.$CONTAINER_OS + + if [ ! -d $BASE_CONTAINER_PATH ] then echo "The container does not have a base container." >&2 return 8 @@ -344,13 +388,15 @@ postinstall() firstboot() { + CONTAINER_ROOTFS=$CONTAINER_PATH/rootfs + if [ -d $CONTAINER_SOURCE_PATH/firstboot ] then - cp --archive $CONTAINER_SOURCE_PATH/firstboot $CONTAINER_BUILDROOT - chmod 755 $CONTAINER_BUILDROOT/firstboot/*.sh - for SCRIPT in $CONTAINER_BUILDROOT/firstboot/*.sh + cp --archive $CONTAINER_SOURCE_PATH/firstboot $CONTAINER_ROOTFS + chmod 755 $CONTAINER_ROOTFS/firstboot/*.sh + for SCRIPT in $CONTAINER_ROOTFS/firstboot/*.sh do - FIRSTBOOT_SCRIPT=$(echo $SCRIPT | sed "s|^$CONTAINER_BUILDROOT||") + FIRSTBOOT_SCRIPT=$(echo $SCRIPT | sed "s|^$CONTAINER_ROOTFS||") echo lxc-attach --name=$CONTAINER_NAME -- $FIRSTBOOT_SCRIPT lxc-attach --name=$CONTAINER_NAME -- $FIRSTBOOT_SCRIPT done -- 2.54.0