SystemFree, the SystemD init replacement, what does it look like? What needs does it take into consideration?
Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Again, just "thinking about it" doesn't make it happen. Many people "think about" world peace... has it happened yet? No, it hasn't.
And for the last time, there already ARE other init systems available. So again, what's yet another "alternative" going to solve? If it were going to solve anything, then we likely wouldn't even be talking about system bloody d. Again, if you're interested in doing something about it, then either learn programming or use something else. Otherwise "just talking about it" is just as pointless as just whingeing about systemd...
Any in case, I've wasted enough time with this pointless discussion...
If you want to discuss the discussion and tell people what they can and cannot discuss I suggest you stay away and keep it to yourself. Otherwise, please stay on topic.
Yet we could easily choose between Xfree86 and Xorg back in the days.
One also had to configure the X server entirely from scratch back in those days - whether it was Xfree86 or X.org. Only X.org really survived, so while there was a choice of sorts, one of the two options declined into irrelevance. But the point being there was a choice - but it involved some work on the part of the end user.
Distribution: Slackware/Salix while testing others
Posts: 1,718
Rep:
Quote:
Originally Posted by zeebra
That's quite on the point and very useful. What I gather from this post:
- SystemFree is only an init system
- SystemFree can run some modules for various task
- One module of SystemFree is a daemon launcher (+ i/o?) or is this "module" part of the init system itself?
- One module of SystemFree is a "shim" or interactive interface (SystemD emulation module)
- Udev definetely needs a fork
Regarding the journal, we have rsyslog and even syslog-ng and other alternatives, there is absolutely no need for journald. Perhaps adding some logging tools to rsyslog instead.
I don't know about Udev as I said earlier. Does it need a fork or a replacement? Is there anyway to easily make Udev independent again? Perhaps roll it back to version x.y and fork that?
So, what do we actually need aside from just the Init (SystemFree) from the SystemD blob? Clearly Udev seems high up the list. But what about security modules? I think the current situation is a bit problematic. PAM, polkit, dbus, consolkit and even things like security modules (SELinux), what do we do about those? Ofcourse they need to be optional, but don't they need a more elegant solution or replacement? I mean, they can live alone, but eventually they will probably be swallowed into the SystemD blob as well. These kind of solutions are attractive, there is a demand for these kind of services, and a SystemFree init system needs to be able to on demand provide some of these same solutions.
From the Kernel side, this is all clear and working with the security module, but I think from the software side (coreutils/GNU etc) we're sorely missing updated system wide security parameters, and in one way or another, these have been attempted patched with various solutions like ACL. Just adding one or two permission parameters to the default GNU DAC could almost make it MAC, and together with a polkit/PAM/dbus/cgroups singular replacement solution, we would have a good security core to offer people to move away from SystemD (and pam, sudo, dbus, polkit, cgroups) without any concerns. Ofcourse, it's unrealistic to believe anyone would touch the old DAC and update it, but if not, the security service could do that in a more simple and elegant way, without having to implement something like SeLinux.
There is a demand for these things above, and if they all become baked into the SystemD blob, we also need solutions for them. Not in SystemFree itself, but in some of the forked packages to go along with it.
Distribution: Slackware/Salix while testing others
Posts: 1,718
Rep:
Quote:
Originally Posted by zeebra
I don't care how it is written really. And there aren't any alternatives to systemD aside from SysV OR independent init systems like found in Slackware or OpenRC. I don't know about OpenRC to be honest, but clearly it is not an alternative to SystemD since almost nobody is using it.
This statement has me question your ability and intent. Thank you, this thread is over for me now.
What it offers that openrc don't?
A replacement for SystemD? I don't know if SystemFree would be much different than OpenRc, but one of the main points of SystemFree would be to fork the necessary parts of SystemD into independent projects again, ie deblob the blob.
I would think it's not possible to run any type of SystemD distro, remove SystemD and replace it with OpenRC and expect to have a running system, or am I wrong?
- Systemfree is ONLY an init (it does one thing and does it well)
- It's written in C (what else?)
- It has no dependencies (taken from SysV)
- It has some clever input/output built into (which can among other handle daemons and modules)
- It has a close relationship with other forked projects
- Together with the forked projects and a "SystemD emulation module" it can replace SystemD with install & remove
- The project supplies a "remove SystemD" script
- Make and make install && pre-packaged for the biggest distroes (sysf+remove script+forks)
I think one good way to separate useful and non-useful forks is to separate those who are implemented in the kernel vs those who are not.
So say, cgroups, it needs a fork, udev needs a fork as they both have something to do with the kernel or are implemented in the kernel. they don't HAVE to be started by SystemFree, but they should be forked into independent projects.
Sounds very promising. Does it reduce boot times over sysvinit? You can't help noticing that this much was achieved by initNG, and development there seems to have slowed/stopped. I'm not aware of what walls it ran into, but you may want to learn from their experience.
Also how you configure this will be important. With sysvinit, you can use config files or Distros are inclined to add great bloat to what was a simple system trying to handle every conceivable system, & setup.
Quote:
Originally Posted by zeebra
So say, cgroups, it needs a fork, udev needs a fork as they both have something to do with the kernel or are implemented in the kernel. they don't HAVE to be started by SystemFree, but they should be forked into independent projects
Frankly, I don't know the area, but I don't understand. This may be an ignorant question, but why fork what the kernel starts? Is there configuring to be done?
And if that's the split, could the kernel-booted apps be forked together?
Some relevant services that exist or need to be forked (or not, just considered), or has something to do with systemd, worth mentioning:
- inetd
- readahead
- consolekit
- syslog
- watchdog
- acpid
- autofs
- pm-utils
- udev
- cryptsetup
- tmpfiles
- auditd
- networkd
- d-bus
- pam
- namespace
SystemFree needs and relies on good daemons and some of these could be merged, but would not be part of SystemFree. Some of them need some improvement to live independent and useful lives, some of them already exist and do their thing well, and some do not exist anymore but has been swallowed up by SystemD and needs to be forked.
Sounds very promising. Does it reduce boot times over sysvinit? You can't help noticing that this much was achieved by initNG, and development there seems to have slowed/stopped. I'm not aware of what walls it ran into, but you may want to learn from their experience.
Also how you configure this will be important. With sysvinit, you can use config files or Distros are inclined to add great bloat to what was a simple system trying to handle every conceivable system, & setup.
Frankly, I don't know the area, but I don't understand. This may be an ignorant question, but why fork what the kernel starts? Is there configuring to be done?
And if that's the split, could the kernel-booted apps be forked together?
I wish you success.
SystemFree would not be procedural, structural or concurrent, but an ideal mix. The aim is to boot whatever environment as fast as possible, but in a structured way with some procedural waiting time to make sure once you're in the system, everything is booted fast, in the right order and complete. The boot priority as far as possible in the init system itself and details about it should be user configurable as well, unless it breaks something, but ofcourse even then if the user insist (experts).
Every boot item should be configurable in scripts alike to sysvinit, and SystemFree should look as much as possible like SysV in /etc with very similar functions, configurations etc. But it should not really be only script based, in essence.
SystemFree will be a lightweight but modular init system with a good structure. So alot of needs should be covered without distroes having to come up with their own solutions. But at it's core it's only an advanced but simple init. As many init functions as possible should be built into it to make it as efficient and complex as it can be as an INIT ONLY piece of software.
I think it makes sense to be able to split system critical things and non-system critical things and group these in two or 3 different init procedures. That way you can boot real fast without starting daemons and software that the system does not need to boot, but rather continue to start these after boot or possibly in between. The user should be able to structure these things as they see fit. If they want make the boot dependent on the network manager and wait for boot to start network manager, then they can do that, or they can structure is to start after boot or at the very end of the boot to see how much extra time that adds to the boot.
SystemFree would not decide how that should look, but would make some suggestions as to how everything is structured, but all except the critical things should be configurable by the user or distro. SystemFree could provide different standard configuration options for different types of system which users could accept or change.
Regarding the Kernel. I meant that software IN systemd which just offers services to Kernel functions. Cgroups is a Kernel function, systemd implements that with software. I think it makes sense to at least likely fork software for SystemFree (as independent projects) from SystemD which has Kernel functions or references (udev). Or better said is Kernel relevant.
Things like cgroupsd need to be able to interface with SystemFree init in some way. This is where the input/output part of SystemFree becomes relevant. That way cgroups is not part of the init, but it's own independent software (daemon) and is something a user can choose to start/install or not.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.