mrrl-containers

MRRL version of container scripts
git clone https://ccx.te2000.cz/git/mrrl-containers
Log | Files | Refs

commit 34a2c37284c8d0a9acbfb8f7ea481cd5185480a3
parent f8fb5b1688504334c7f775353ea0a66ab5d8b0b8
Author: Jan Pobříslo <ccx@te2000.cz>
Date:   Sun, 20 Feb 2022 11:54:18 +0000

Bind-mount /mnt to tmpfs, use CONTAINER_MNT_DIRS to precreate directories there.
Diffstat:
Mservice_scripts/generic/run | 3++-
Mzsh-functions/confz_containers_init | 14++++++++++----
2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/service_scripts/generic/run b/service_scripts/generic/run @@ -12,6 +12,7 @@ multisubstitute { define CONTAINER_TMPFS /run/containers/${CONTAINER_NAME}.${CONTAINER_USER} # define CONTAINER_DATA /mnt/volumes/containers/user/${CONTAINER_USER}/${CONTAINER_NAME} define -s tmpfs_dirs "home run tmp inbox run/inbox tmp/.X11-unix" + importas -D ns -sCn CONTAINER_MNT_DIRS } getpid NS_PID @@ -24,7 +25,7 @@ foreground { } if { rm -rf ${CONTAINER_TMPFS} } -if { mkdir -p ${CONTAINER_TMPFS}/${tmpfs_dirs} } +if { mkdir -p ${CONTAINER_TMPFS}/${tmpfs_dirs} ${CONTAINER_TMPFS}/mnt/${CONTAINER_MNT_DIRS} } if { chmod 1770 ${CONTAINER_TMPFS}/${tmpfs_dirs} } if { chown root:${CONTAINER_USER} ${CONTAINER_TMPFS}/${tmpfs_dirs} } if { mount -a --fstab data/fstab } diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -235,9 +235,10 @@ confz_container_service_sysroot_check() { confz_container_service_generic_check() { local uid gid container_user_dir svc_dir container - local -a fstab + local -a fstab mnt_dirs checkvars containers_dir svscan_dir image_name user defvar fstab_extra '' + defvar mnt_dirs_extra 'ns' defvar container_name "$vars[image_name]" container=$vars[container_name] @@ -269,12 +270,15 @@ confz_container_service_generic_check() { require fs_l filename=$vars[containers_dir]/home/$vars[user]/$container \ destination=../../user/$vars[user]/$container/home/$vars[user] + mnt_dirs=( ns $=mnt_dirs_extra ) + fstab=( $vars[containers_dir]/systems/$vars[image_name]$'\t'$container_user_dir/root$'\tnone\tbind,ro,nosuid,nodev\t0 0' $container_user_dir/home$'\t'$container_user_dir/root/home$'\tnone\tbind,nosuid,nodev\t0 0' /run/containers/$container.$vars[user]/run$'\t'$container_user_dir/root/run$'\tnone\tbind,nosuid,nodev\t0 0' /run/containers/$container.$vars[user]/tmp$'\t'$container_user_dir/root/tmp$'\tnone\tbind,nosuid,nodev\t0 0' /run/containers/$container.$vars[user]/inbox$'\t'$container_user_dir/root/.inbox$'\tnone\tbind,ro,nosuid,nodev\t0 0' + /run/containers/$container.$vars[user]/mnt$'\t'$container_user_dir/root/mnt$'\tnone\tbind,ro,nosuid,nodev\t0 0' "${(f@)vars[fstab_extra]}" ) @@ -288,6 +292,8 @@ confz_container_service_generic_check() { content=$vars[user] require fs_contentnl filename=$svc_dir/env/CONTAINER_NAME \ content=$container + require fs_contentnl filename=$svc_dir/env/CONTAINER_MNT_DIRS \ + content="$mnt_dirs" } confz_container_service_alsa_check() { @@ -464,9 +470,9 @@ confz_container_generic_layout_check() { require fs_m filename="$vars[root]/mnt" mode=0755 require fs_o filename="$vars[root]/mnt" owner=$vars[uid]:$vars[gid] - require fs_d filename="$vars[root]/mnt/ns" - require fs_m filename="$vars[root]/mnt/ns" mode=0755 - require fs_o filename="$vars[root]/mnt/ns" owner=$vars[uid]:$vars[gid] + # require fs_d filename="$vars[root]/mnt/ns" + # require fs_m filename="$vars[root]/mnt/ns" mode=0755 + # require fs_o filename="$vars[root]/mnt/ns" owner=$vars[uid]:$vars[gid] require fs_d filename="$vars[root]/run" require fs_m filename="$vars[root]/run" mode=0755