InitWare
systemd

InitWare | systemd | |
---|---|---|
19 | 557 | |
189 | 13,772 | |
0.0% | 1.8% | |
2.1 | 10.0 | |
6 months ago | 4 days ago | |
C | C | |
GNU Lesser General Public License v3.0 only | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
InitWare
- What do you understand under "FreeBSD way" and "Linuxism"?
-
These @rustlang ads are getting out of control.
Fear not. They get to be part of the future too.
-
Framework: Open Sourcing Our Firmware
> Yes indeed, I should've expanded to requiring user namespaces and other kernel magic I can't expect from any random box i wanna work on.
That's fair, do have to make sure to avoid to modules that do user systemd services.
Longer term, though, I am hoping https://github.com/InitWare/InitWare will help with the userland part. And I hope to personally help with things like
https://lists.freebsd.org/archives/freebsd-arch/2022-January...
https://lore.kernel.org/lkml/f8457e20-c3cc-6e56-96a4-3090d7d...
to get us more sane cross-platform system calls.
-
Preventing Log4j with Capabilities
I know, but support is still in FreeBSD. My big long term plan is:
1. Work on FreeBSD cross in Nixpkgs, because I need a way to pin forks and run nice tests without going insane. (We already have NetBSD cross.)
2. Rig up a booting image that uses https://github.com/InitWare/InitWare, the fork of systemd.
3. Add support to CloudABI in initware.
4. Bang on drum for other OSes and upstream systemd to implement this stuff we can can good portable abstractions -- I think this is our best shot to get "portable containers".
-
NixOS on Framework Laptop
I haven't bothered to have a beef with systemd, but some of us have discussed https://github.com/InitWare/InitWare to support non-Linux kernels. That would be really fun.
-
OpenBSD 7.0 Released
I'm the first to admit that I'm ignorant of the facts here, but seeing that a systemd fork ran on OpenBSD for the first time two months ago does not give me confidence that it's "an option" in the sense that you can trust it to work well.
And to be pedantic (this is an OpenBSD thread, after all), it's not "systemd", it's a fork of systemd called "InitWare", and the GitHub repo describes it as "alpha software".
Someone also pointed out in the discussion you linked that it doesn't seem to include journald. Here's a relevant PR: https://github.com/InitWare/InitWare/pull/27
-
macOS, meet SystemD: InitWare (fork of systemD) ported to macOS
The project GitHub is found at https://github.com/InitWare/InitWare
- InitWare (a systemd fork) has been ported to macOS
-
Freebsd + Gnome3 => No systemd?
You may have heard of InitWare https://github.com/InitWare/InitWare. Discussions, note that one of the titles is misleading:
- InitWare, a SystemD clone for OpenBSD
systemd
-
IPv6 Is Hard
As per the article mentions of resolving AAAA IPv6 records, a feature was just merged into Linux's systemd-resolved last week.
https://github.com/systemd/systemd/pull/34165
So you can do.
RefuseRecordTypes=AAAA
So there, your DNS won't ever query for IPv6 AAAA records.
(in fact you can refuse any DNS questions like MX, SRV, TXT as well with:
RefuseRecordTypes=MX SRV TXT)
Note - I started adding that feature because some applications were "misbehaving" and querying AAAA records when IPv6 stack was disabled.
-
C stdlib isn't threadsafe and even safe Rust didn't save us
On Linux, a privileged process can change the memory address which the kernel (/proc filesystem) reads argv/etc from... prctl(PR_SET_MM) with the PR_SET_MM_ARG_START/PR_SET_MM_ARG_END arguments. Likewise, with PR_SET_MM_ENV_START/PR_SET_MM_ENV_END.
The API is ugly, and since it needs CAP_SYS_RESOURCE many programs can't use it... but systemd does: https://github.com/systemd/systemd/blob/2635b5dc4a96157c2575...
This shouldn't cause the kind of race conditions we are talking about here, since it isn't changing a single arg, it is changing the whole argv all at once. However, the fact that PR_SET_MM_ARG_START/PR_SET_MM_ARG_END are two separate prctl syscalls potentially introduces a different race condition. If Linux would only provide a prctl to set both at once, that would fix that. The reason it was done this way, is the API was originally designed for checkpoint-restore, in which case the process will be effectively suspended while these calls are made.
-
The Motivation Behind Systemd
The article doesn't even mention this: systemd is not well written software, and far from behaving robust and consistently. Take some time, look through the currently open issues on Github, see for yourself whether you consider this stable software. Machine hanging indefinitely during poweroff/reboot is one of the classics.
[1] https://github.com/systemd/systemd/issues
-
Show HN: Interactive systemd (a better way to work with systemd units)
Idk, when systemd became the main thing I hated it too. But mostly because it was different and I didn't know how to use it. But then I learned and you know what? I agreed. This took awhile though and I had to see the problems they are solving. Otherwise it looks really bloaty and confusing. Like why have things like nspawn? Why use systemd jobs instead of using cron? Why use systemd-homed instead of useradd?
Well a big part of it is security and flexibility.
I write systemd services now instead of cron jobs. With a cron job I can't make private tmps[0]. Cron won't run a job if the computer is off during the job time. Cron can't stagger services. Cron can't wait for other services first. Cron can't be given limited CPU, memory, or other resource limitations.
Nspawn exists to make things highly portable. Chroot on steroids is used for a reason. Being able to containerize things, placing specific capabilities and all that. This is all part of a systemd job anyways. It really makes it a lot easier to give a job the minimum privileges. So often nspawn is a better fit than things like docker.
Same goes for homed. You can do things like setting timezones unique to users. But there's so much more like how it can better handle encryption. And you can do really cool things like move your home directory from one machine to another. This might seem like a non-issue to most people but it isn't. That whole paradigm where your keyboard is just an interface to a machine (i.e. a terminal, and I don't mean the cli. There's a reason that's called a terminal "emulator"). This is a really useful thing when you work on servers.
Look, there's a reason the distros switched over. It's not collective madness.
[0] https://www.redhat.com/en/blog/new-red-hat-enterprise-linux-...
https://systemd.io/
-
Systemd unit activation via dbus
We all know that systemd and dbus are beast of their own, but what I didn't know was that just a simple change on our own service files would lead me to hours of exploration, some documentations that are not properly documentated (don't judge, we all have done that.), and to my surprise, the answer again was very simple.
-
Show HN: Retry a command with exponential backoff and jitter (+ Starlark exprs)
https://github.com/systemd/systemd/issues/6129#issuecomment-...
"core: add RestartSteps= and RestartSecMax= to dynamically increase interval between auto restarts"
-
Why systemd is a problem for embedded Linux
I ran into this issue on an embedded system before it was raised / fixed:
https://github.com/systemd/systemd/issues/8398
FWIW, I'm generally a fan of systemd. That's a pretty minor issue in the grand scheme of things and it's not really "mysterious" -- the behaviour was consistent but didn't line up with the documentation.
In my experience, almost every time I hit an issue with systemd, it's when I'm interacting with it at a (relatively) low level. e.g. Monitoring / controlling units via D-Bus. There is theoretically enough documentation to do that, but it's often incomplete or ambiguous and you're left trying to figure out systemd's behaviour via experimentation.
But as I said, this isn't _really_ a dig against systemd. Even if monitoring service state transitions via D-Bus is finnicky, it's a heck of a lot easier than the alternatives with busybox init or whatever.
-
Varlink – IPC to replace D-Bus gradually in systemd
> Primarily append-based, hence robust to corruption
It's so robust, it doesn't even let you modify the journal if you want to (e.g. https://github.com/systemd/systemd/issues/20673).
> Support for in-line compression
Mind that journald only supports compressing single lines, but not the whole journal (https://github.com/systemd/systemd/issues/31358), which is pretty limiting.
- A Word about Systemd
-
Porting systemd to musl Libc-powered Linux
https://github.com/systemd/systemd/pull/33383
Or that time that systemd mounted efivarfs as rw making it possible to brick your motherboard
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
Or the time back around 2012ish when an update caused the dhcp lease renewal portion to get wedged and took many thousands of servers offline until the service could be manually restarted or the machine rebooted.
Or there was that time when OpenSSH was compromised because they pulled in systemd components to handle notifications:
What are some alternatives?
seL4 - The seL4 microkernel
supervisor - Supervisor process control system for Unix (supervisord)
rtw89 - Driver for Realtek 8852AE, an 802.11ax device
openrc - The OpenRC init system
InitKit - Neo-InitWare is a modular, cross-platform reimplementation of the systemd init system. It is experimental.
tini - A tiny but valid `init` for containers
hummingbird - Hummingbird init system for Linux based operating systems.
earlyoom - earlyoom - Early OOM Daemon for Linux
mu - Project Mu Documentation
s6 - The s6 supervision suite.
finit - Fast init for Linux. Cookies included
zfs - OpenZFS on Linux and FreeBSD
