Hey there. I can tell you all about how the execution environment works and looks like. The key to the puzzle is show the typical execution chain starts from /snap/bin/stuff
, a symlink to /usr/bin/snap
, being a convenient way to do snap run stuff
. This is in turn equivalent to snap run stuff.stuff
which means run app stuff from the snap stuff. This follows to running /usr/bin/snap-confine
with constructs the execution environment (a separate mount namespace sharing some of the mount points with the main mount namespace, apparmor profile applied, seccomp profile applied and some cgroup changes) and runs /usr/lib/snapd/snap-exec
(now already on the inside of the mount namespace) which finally reads the snap’s meta.yaml
to run the correct command.
Now as for not having systemd you will run into issues when the mount namespaces are changed as systemd-less systems don’t have implicit sharing of mount events (mount --make-rshared /
). Having said that, what happens if you install a trivial snap and run it with snap run hello
?