mrrl-containers

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

commit 1cb47b4c736b921c9b977dd0efef940800814e8b
parent f6716a398908f0c2965315a59a5fa11ea796dcf6
Author: Jan Pobrislo <ccx@te2000.cz>
Date:   Wed, 16 Dec 2020 16:24:35 +0100

WIP confz script
Diffstat:
Mzsh-functions/confz_containers_init | 58+++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 53 insertions(+), 5 deletions(-)

diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -94,20 +94,20 @@ confz_container_user_setup_check() { defvar container_root $vars[containers_dir]/$vars[container_name] defvar nameserver 127.0.0.1 - local U=$vars[containers_dir]/user/$vars[user] - local D=$U/$vars[container_name] + local D=$vars[containers_dir]/user/$vars[user]/$vars[container_name] + local S=$vars[containers_dir]/service/$vars[container_name] local uid=$(awk </etc/passwd -F: -v USER=ccx '$1 == USER {print $3}') [[ "$uid" =~ '[0-9]+' ]] || die "Could not get uid for ${(qqq)uid}" require fs_d flags= filename=$vars[containers_dir]/user - require fs_d flags= filename=$U + require fs_d flags= filename=$vars[containers_dir]/user/$vars[user] require fs_d flags= filename=$D require fs_d flags= filename=$D/changes require fs_d flags= filename=$D/union require fs_d flags= filename=$D/work require fs_c flags= filename=$D/fstab \ - content_call="containers_fstab_gen ${(qqq)vars[container_root]} ${(qqq)U}" + content_call="containers_fstab_gen ${(qqq)vars[container_root]} ${(qqq)D}" require fs_d flags= filename=$D/changes/dev require fs_d flags= filename=$D/changes/dev/shm require fs_d flags= filename=$D/changes/dev/pts @@ -117,7 +117,7 @@ confz_container_user_setup_check() { content_call="printf '%\n' $vars[nameserver]" require fs_d flags= filename=$D/changes/home require fs_d flags= filename=$D/changes/home/$vars[user] - require fs_o owner=$uid filename=$U/changes/home/$vars[user] + require fs_o owner=$uid filename=$D/changes/home/$vars[user] require fs_d flags= filename=$vars[containers_dir]/home require fs_d flags= filename=$vars[containers_dir]/home/$vars[user] @@ -125,4 +125,52 @@ confz_container_user_setup_check() { filename=$vars[containers_dir]/home/$vars[user]/$vars[container_name] \ destination=../../user/$vars[user]/$vars[container_name]/union/home/$vars[user] + require fs_d flags= filename=$vars[containers_dir]/service + +#$S d o0:0 m755 + require fs_d flags= filename=$S +#$S/event d o0:100 m3730 + require fs_d flags= filename=$S/event +#$S/clone-newpid cN o0:0 m644 + require fs_c flags= filename=$S/clone-newpid \ + content_call=true + +#$S/down cN o0:0 m644 + require fs_c flags= filename=$S/down \ + content_call=true + +#$S/run o0:0 m755 + require fs_c flags= filename=$S/run \ + content_call="container_svc_run $uid:100 ${(q)D}" + +#$S/finish o0:0 m755 + require fs_c flags= filename=$S/finish \ + content_call="container_svc_finish ${(q)D}" + +#$S/supervise d o0:0 m755 + require fs_d flags= filename=$S/supervise +#$S/supervise/control p o1000:0 m600 +#$S/supervise/death_tally cN o0:0 m644 +#$S/supervise/lock cN o1000:0m644 +#$S/supervise/status B QAAAAF6FoQIIEY80QAAAAF6FoQIIEY80AAAAAAAAAAAAABQ= +#o0:0 m644 + + +} + +container_svc_run() { + local uid_gid=$1 + local D=$2 + printf '%s\n' \ + "C #!/command/execlineb" \ + " if { mount -a --fstab $vars[containers_dir]/user/$vars[user]/$vars[container_name]/fstab }" \ + " env HOST=$vars[container_name] RUN_CHOWN=$uid_gid /root/ns_run $vars[containers_dir]/user/$vars[user]/$vars[container_name]/union -u $uid_gid /home/$vars[user]/run/init" +} + +container_svc_finish() { + local D=$1 + printf '%s\n' \ + "C #!/command/execlineb" \ + " foreground { umount $vars[containers_dir]/user/$vars[user]/$vars[container_name]/union/run }" \ + " umount $vars[containers_dir]/user/$vars[user]/$vars[container_name]/union" }