This article explains where and how Split Linux deviates from a vanilla Void Live CD.
As of release 20210112 Split is less than 1000 lines of code away from Void. Since this number includes textual explanations like the README files verifying the code is simple.
The relevant packages are splitlinux-lxc-conf and splitlinux-tor-router with its Docker image of a tor-router:
# 400 lines for packages cat splitlinux-*/template splitlinux-lxc-conf/files/* splitlinux-tor-router/files/splitlinux-tor-router/* | wc -l # 331 lines for tor-router cat tor-router/(README.md|build.sh) tor-router/src/* | wc -l
The actual ISO build sources split-mklive make up the rest:
# 231 lines of custumization git diff --stat 708e7c197f84bfdded2f75e2e12d6b5c9da88d52 7fbea40caad24486928bbc3957045950806ad07e dracut build-x86-images.sh.in keys/
void-mklive/blob/master/dracut/vmklive/services.sh#L27 enables all services by default. Docker is therefore started automatically since it is installed as a dependency of splitlinux-tor-router via build-x86-images.sh.
The dockerized tor-router along with its network bridges is setup and configured by
split-mklive/dracut/vmklive/splitlinux.sh (called from
module-setup.sh) sets up an additional
lxc group which has sudo-rights to check the status of containers (
lxc-info), start a container (
lxc-start) and attach to it (
WARNING: This allows any host-system user to attach into any other user's guest container. Until this is mitigated (maybe through using Xpra1), Split Linux is unfit for machines used by multiple entities.
For users belonging to the
lxc group of the host system,
xinit will be run upon login by the
Booting from USB 3 on a low-end system takes about 65 seconds: