diff --git a/pkg/init/Dockerfile b/pkg/init/Dockerfile index 0d2dbcd0b..850066d8e 100644 --- a/pkg/init/Dockerfile +++ b/pkg/init/Dockerfile @@ -12,3 +12,4 @@ WORKDIR / COPY --from=mirror /out/ / COPY init / COPY etc etc/ +COPY bin bin/ diff --git a/pkg/init/etc/init.d/rcS b/pkg/init/bin/rc.init similarity index 97% rename from pkg/init/etc/init.d/rcS rename to pkg/init/bin/rc.init index 339a428ba..308b36d5d 100755 --- a/pkg/init/etc/init.d/rcS +++ b/pkg/init/bin/rc.init @@ -110,3 +110,10 @@ mount --make-rshared /var # make / rshared mount --make-rshared / + +# execute other init processes +INITS="$(find /etc/init.d -type f | sort)" +for f in $INITS +do + $f & +done diff --git a/pkg/init/bin/rc.shutdown b/pkg/init/bin/rc.shutdown new file mode 100755 index 000000000..f91b45e26 --- /dev/null +++ b/pkg/init/bin/rc.shutdown @@ -0,0 +1,13 @@ +#!/bin/sh + +[ "$1" = "reboot" ] && exec /sbin/reboot + +# poweroff + +/usr/sbin/killall5 -15 +/bin/sleep 5 +/usr/sbin/killall5 -9 +/sbin/swapoff -a +/bin/echo "Unmounting filesystems" +/bin/umount -a -r +/sbin/poweroff -f diff --git a/pkg/init/etc/init.d/containers b/pkg/init/etc/init.d/010-containerd similarity index 74% rename from pkg/init/etc/init.d/containers rename to pkg/init/etc/init.d/010-containerd index 982a1bafc..afae70c7f 100755 --- a/pkg/init/etc/init.d/containers +++ b/pkg/init/etc/init.d/010-containerd @@ -1,5 +1,19 @@ #!/bin/sh +# set global ulimits TODO move to /etc/limits.conf +ulimit -n 1048576 +ulimit -p unlimited + +# bring up containerd +printf "\nStarting containerd\n" +/usr/bin/containerd & + +# wait for socket to be there +while [ ! -S /run/containerd/containerd.sock ] +do + sleep 0.1 +done + # start onboot containers, run to completion if [ -d /containers/onboot ] diff --git a/pkg/init/etc/init.d/containerd b/pkg/init/etc/init.d/containerd deleted file mode 100755 index f62710d7e..000000000 --- a/pkg/init/etc/init.d/containerd +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -# bring up containerd -ulimit -n 1048576 -ulimit -p unlimited - -printf "\nStarting containerd\n" -mkdir -p /var/log -exec /usr/bin/containerd diff --git a/pkg/init/etc/inittab b/pkg/init/etc/inittab index 8ef3e8565..1c4e4bfb4 100644 --- a/pkg/init/etc/inittab +++ b/pkg/init/etc/inittab @@ -1,15 +1,9 @@ # /etc/inittab -::sysinit:/etc/init.d/rcS -::once:/etc/init.d/containerd -::once:/etc/init.d/containers +::sysinit:/bin/rc.init # Stuff to do for the 3-finger salute -::ctrlaltdel:/sbin/reboot +::ctrlaltdel:/bin/rc.shutdown reboot -# Stuff to do before rebooting -::shutdown:/usr/sbin/killall5 -15 -::shutdown:/bin/sleep 5 -::shutdown:/usr/sbin/killall5 -9 -::shutdown:/bin/echo "Unmounting filesystems" -::shutdown:/bin/umount -a -r +# Stuff to do on shutdown +::shutdown:/bin/rc.shutdown poweroff