A while ago, an Obarun user, Dr Saleem Khan (1) urged me to try Spark Linux and it was the first time I heard of it. It must have been during some real busy period and it was since forgotten. While I was trying to clean up the list of linux distributions without systemd the name came up again. Thanks, Saleem.
By no means do I think this is for entry level users to try as a distribution with a full desktop, but for minimalists who are accustomed to arch this is an exercise of how minimal can you get with a ready off the shelf arch base on which you can build from ground up.
The project is severely undocumented, although there is not much to document for an experienced user. Spark (by Jack L. Frost) uses sinit as its init system and ssm which is an inhouse Simple Service Manager by Spark founder.
Sinit according to its source suckless (they suck less) is:
After following the instructions (minimalist) and installing a kernel, configuring a bootloader, /etc/…. stuff, and give it a first try you may find out it will not fully boot. At least don’t expect good graphics or network interface names other than lo. You have to edit /etc/rc.conf and add ‘@eudev’ to the line of ‘services’ to run.
So assuming you have eudev/libeudev installed from the spark repository it should now work and have a linked system. As far as I was told by Jack L. Frost (spark founder)
if you have nvidia eudev may not work so you have to pick an alternative “service” and udev pkg.
edit1: correction to the above by Jack Frost:
eudev will work btw, the issue was about KMS not working on Nvidia cards, and that doesn’t depend on any specific device manager, it’s a kernel/nvidia issue.
After /etc/rc.conf the next important resource to see is /usr/share/ssm/services where all the ready available service scripts are stored. Those also serve as a general template to how to write your own. It is asked by the author that when you do to share them with the author so unless they are faulty can be added to the service script array for more users.
It is relatively common knowledge that /usr/share/… should not be altered by the sys-admin but all custom work should be contained within /etc/ so the distribution can modify, upgrade, replace /usr/share and other root /volumes while the sys-admin keeps his custom stuff on /etc. Some distributions, like Void will encourage you to go and edit /var and other system resources to modify the behavior of the system. So ssm, like s6 and 66, will read first what you have on /etc/ssm and if no customized script exists, it then reads the default script off of /usr/share/ssm/services. The locations that ssm will scan for environment and service files can also be custom defined in /etc/ssm/ssm.conf
The rest of the system is pretty self explanatory, it is wonderfully minimalistic (in my eyes) and once configured as expected, then you can use your familiar arch package manager pacman to install what you wish. If you dare install systemd and lib-systemd CRAP, just make sure that the link /usr/bin/init –> /usr/bin/sinit still holds, so the monster will not run. Hopefully you have your pacman.conf blocking the installation of those two sources of anti-matter evil.
#[spark-testing] #Include = /etc/pacman.d/mirrorlist-spark [spark] Include = /etc/pacman.d/mirrorlist-spark [spark-extra] Include = /etc/pacman.d/mirrorlist-spark
You can substitute the mirrorlist “Include” line with a direct mirror address:
# Spark mirrors ## Germany Server = https://mirror.fleshless.org/spark/$repo Server = https://voidcaller.fleshless.org/spark/$repo Server = https://mirror.vdrandom.org/spark/$repo ## Netherlands Server = https://spike.fleshless.org/mirror/spark/$repo
One thing Spark is lacking from what you may be used at (obarun or arch or artix …) is a keyring. So if you don’t install from the tar ball and have pacman configured to check integrity you may have to add
SigLevel = Never
between the repository name and its address.
edit2: Another correction by Jack Frost:
there’s a key imported directly into the keyring in the Spark rootfs. The package signing key you can find on its own here: https://fleshless.org/pages/pgp.html
The reason this is useless to have on Spark is that both sinit and ssm are just scripts you can read directly, you don’t have to worry about a binary authenticity. But there are binary packages on that repository, so …. What you install in your system can be copy pasted from its git.
I noticed in the sinit rc.conf file this option which turns to be a
hardening option for linux mounting /proc with restricted visibility for
users. Default is 2 but on the above link it is explained what and how it does what it does. I had never seen this before, but other init systems, runit included, can be so complicated (yes even runit by comparison to sinit is spaceship kind of complicated) that unless you are writing a dissertation on init systems or planning to write your own, or fork an existing one, you may not dig so deep, as most of this boot/mounting business is so trivial. You just rely on the distribution to have made all the right choices for you. That is what happens when you think that Void is some kind of wonderful and you end up one morning with half of systemd shoved up your posterior. (Alzheimer’s, not yet, Void, you wish).
The key to this experience is for me ONE. This is what little it takes to boot and run linux, how little you need to build a full Arch based system up, and what enormous “trash” are the majority of distributions adopting while “selling you” security and privacy. How can you control security and privacy when even the logging of the system is some automated labyrinth with binaries (I’m talking about systemd). When you get to the point to exceed the capacity of such a system as sinit and ssm, then you can appreciate more what runit can do better or more, and then what the “marvel” of s6 and 66 can do more than runit.
For the average Jill, Hassan, Yan, Yu-chin, Iris, …. Jack’s system is plenty. You want a desktop with soft swooshy icons to start package management guis and partition tools, and be able to hibernate every 20′ and restart where you left your social media chat again in 5′, then ….. take a hike. This site here has nothing to offer you. You deserve all the control and choke hold IBM/NSA/Oracle/facebook/Google has on you. Are you seeking open and free as in freedom and equality, stick around. Together we may some day find our way. You want free as in beer, then use torrents and download free cracked windows7…11, it is “free”.
PS Jack somewhere on his huge site says that he dislikes disabled people. Not for a moment do we think he means physically disabled but those who use automated IBM tools (like systemd) to run their system. If he meant physically disabled this site here would have been the first to ban him and his work. Although we do not tolerate fascism at all, we have little respect for bureacratic/managerial “middle class” hypocrisy like PC language. We just prefer not to use violent language unless it is for dealing with fascists. Violent language is a form of fascism itself.
Just to make things clearer than Jack.
edit3: after reading the article himself he chose to explain the reason of this hate message, and he definitely has a point if you didn’t know the history of the message.
Addendum 1: The live usage of ssm – how to get dbus running for example:
ls -al /usr/share/ssm/services
lists all services available to run by the name on that list
To manually start/stop a service (dbus for example) on spark
# ssm dbus start # ssm dbus stop
or to have it started from boot on the /etc/rc.conf add it as ‘@dbus’
Addendum 2: If you are using sshfs for mounting network volumes you may notice that you are asked to modprobe fuse and then try again. On /etc/rc.conf if you add ‘fuse’ and uncomment the line for adding modules you will not get those annoying messages anymore.