[HN Gopher] Systemd by Example ___________________________________________________________________ Systemd by Example Author : Foxboron Score : 285 points Date : 2022-01-25 12:56 UTC (10 hours ago) (HTM) web link (systemd-by-example.com) (TXT) w3m dump (systemd-by-example.com) | throwawaymanbot wrote: | Anthony-G wrote: | I just tried the first exercise of creating a default target and | this web application is a great learning resource for Systemd. It | should be noted that it works best as a complement to the | author's series on _Systemd by example_ 1. | | I also love how the web application works without requiring | multiple JavaScript dependencies hosted on third-party servers. | | 1 https://seb.jambor.dev/posts/systemd-by-example-part-1-minim... | zibzab wrote: | I was just wondering why everything loaded so fast and was so | fluid... | ghoshbishakh wrote: | Wow wonderful set of articles. A big thanks! Wanted to understand | this stuff for a long time but could not give enough time to | navigate the dense documentation. | mkaic wrote: | I just learned the _absolute basics_ of systemd the other day | while trying to set up an auto-restarting game server on an RPi | for my little sibling, and finding helpful examples was extremely | difficult. This seems like a perfect solution! | synergy20 wrote: | I like all those 'learnXbyexample' sites, though I really hope I | can have a drop down menu or side-bar to access the TOC instead | of going back to homepage each time for next subject. | egberts1 wrote: | folkhack wrote: | This is outstanding... I really wish I would have had this | learning systemd as it would have saved me _hours_. Let's be real | - a lot of Linux fundamental stuff is still pretty terse. | Learning tools like this really smooth it out and optimize how | long it takes to wrap your head around a concept. Also, I am a | _huge_ advocate for hands-on in regards to retention. | | Adding to my favorites and will be passing this on over the years | - thank you for such a great resource. | native_samples wrote: | If anything the biggest problem the systemd docs have is | verbosity. It's all classic UNIX man pages, a billion pages of | detail on every possible setting with no useful examples | anywhere. Fortunately the core system is simple enough that the | learning curve isn't too steep but I'd really hate to try and | learn it from the official docs. They don't even apply CSS to | the HTML versions of the docs. | westurner wrote: | Wikipedia: https://en.wikipedia.org/wiki/Systemd | | Web: https://systemd.io/ | | Src: https://github.com/systemd/systemd | | Systemd manpage index: | https://www.freedesktop.org/software/systemd/man/ | | https://www.freedesktop.org/software/systemd/man/systemd.htm. | .. : man 1 systemd man systemd | man init | | ...: man systemctl man journalctl | man systemd.timer man systemd-resolved | | The Arch Linux wiki docs for systemd are succinct: | https://wiki.archlinux.org/title/systemd | | Fedora docs > "Understanding and administering systemd" | https://docs.fedoraproject.org/en-US/quick- | docs/understandin... | | RHEL7 System Administrator's Guide > "Chapter 10. Managing | Services with SystemD" | https://access.redhat.com/documentation/en- | us/red_hat_enterp... | folkhack wrote: | This isn't a knock but it's exactly what I was talking | about and why I find OP's learning tool to be so valuable. | | Lots of folks learn by example and hands-on labs. | Personally, I'd much rather learn the basic ropes by | jumping into a tool like OP's vs. finding/digging through | all of these resources. I'll also criticize to say you | likely already know much about systemd, and were able to | pull/filter these resources much easier vs someone | completely new to the concepts. | | To illustrate further: vim is another tool that has | outstanding learning resources, everything from very quick | "hey get started" examples docs all the way up to adventure | games. If I had to go back and relearn vim I would | absolutely do it this way vs. digging on man pages like | when I was a kid in the 90's. Personally, I learn by doing. | | --- | | Overall - OP's thingy is what I would call a "rich | interactive learning tool." It's anecdotal, and obvious | projection - but _for me_, interactive learning tools | optimize the time it takes to fully "grok" a subject from | scratch vs. jumping into a bunch of docs/man pages. | westurner wrote: | I often find the `## Usage Examples` heading in manages | to be most helpful, too. | | ~Examples as Integration Tests as _executable_ notebooks | with output and state _assertions_ may incur less | technical debt. | | How to manage containers with [MicroShift] k8s/k3d _with | systemd_ might be a good example. | Foxboron wrote: | Well, we also have a very nice manpage viewer. | | I think systemd.directives(7) is an often overlooked | manpage. | | https://man.archlinux.org/man/systemd.directives.7 | westurner wrote: | FWIW, the man.vim vim plugin does grep and some syntax | highlighting. https://github.com/vim-utils/vim-man | Arnavion wrote: | TIL about that manpage. I've always been guessing at | which level in the hierarchy would contain a particular | option ("Is it service-specific? Or maybe applies to all | execs? Or maybe applies to all units?") and just giving | up and opening them all in parallel. | native_samples wrote: | Yes, the Arch docs are the best. But they aren't from the | systemd project itself, are they? | folkhack wrote: | And, as a Debian user who often finds himself on the Arch | docs - there's a ton of distro-specific stuff in the Arch | wiki. And rightfully so - it's a wiki for a distro. | | These sorta landmines when trying to just research/digest | a concept can really suck. OP's tool really eloquently | breaks things down to _just_ core concepts so you can | quickly start to grok what I consider to be a relatively | complex tool. | Arnavion wrote: | In my experience very little of it is distro-specific, | especially if you're on a distro that has similar | components as Arch. I'm on OpenSUSE Tumbleweed, which | also uses systemd, etc and is a rolling distro with the | latest versions of everything, so a lot of the wiki | articles apply directly as long as I translate the | package names. | folkhack wrote: | Agree - but there's still bits and pieces that don't | translate over to other distros which can suck if you're | jumping into to learning something. When I read the Arch | Wiki as a Debian user I realize I'm reading it through | the lens of someone using a different distro. | | Overall I use the Arch wiki very often and it's because | of the exact point you're making - I'm just being | pedantic saying those slight distro differences can be a | pain. | morganvachon wrote: | Agreed, I have generally avoided systemd as I don't feel it's | fully baked yet (not trying to start a flame war, that is just | my experience and I'm sure it's fine for others). Still, I need | to really learn it both for when I am ready to use it daily and | just to have it in my wheelhouse for supporting others. A guide | like this seems like a great way to go "hands on" without | spinning up an instance and fumbling through it blindly. | | Hopefully this guide will stay up to date given the "move fast, | break things, wontfix" approach the systemd authors currently | have with the project. | Foxboron wrote: | >Hopefully this guide will stay up to date given the "move | fast, break things, wontfix" approach the systemd authors | currently have with the project. | | The core dependency principles around targets, services and | startup does not see a lot of change, so this concern is not | really realistic. You'll see more of this around the | supporting utilities (networkd, resolved, and so on). | Klasiaster wrote: | It's on version 250. How many stable releases do you need to | feel that it is "fully baked"? The software is of course | evolving and new features are added but breaking changes are | rare. | cies wrote: | Since systemd I never had to learn about my init system, it | basically just works. For to reasons. | | 1. On desktop the old init systems were quite good already, | before systemd was introduced. Systemd made it better, as I've | been told: I never had any beef with it (oh boy did I have beef | with init systems in the old days, not only on desktop...), I did | not do any benchmarks to see that it shaved off a few seconds in | startup time (and helps remove lots of fragile network mgmt | code). | | 2. On server I now use Docker. It has no init system. And when I | need one I use one that fits the docker world (i.e. supervisor). | mdaniel wrote: | > It has no init system. | | Apologies that I can't link directly to the "--init" flag but | docker actually _does_ have an init, it 's just (err, was?) | compiled into the binary: | https://docs.docker.com/engine/reference/commandline/run/#op... | | My recollection is that it either adopted, or inspired, | https://github.com/Yelp/dumb-init#readme which folks used to | put into their Dockerfile as the init system back in the day | | Folks (ahem, I'm looking at you, eks-anywhere[0]) who bundle | systemd into a docker container are gravely misguided, and the | ones which do so for the ability to launch sshd alongside the | actual container's main process are truly, truly lost | | 0: https://github.com/aws/eks- | anywhere/issues/838#issuecomment-... | rmetzler wrote: | Just the other day I noted on Twitter how bad the official | systemd website is for users. I'm looking forward to this site | recovering from HN hug. | steeleduncan wrote: | Out of curiosity, how is this implemented? Is there a javascript | VM running in the browser, a remote VM or can systemd be run in a | container? | zamadatix wrote: | There is a link to a post at the top which gives a detailed | overview https://seb.jambor.dev/posts/systemd-by-example-the- | playgrou... | | but the short of it is it creates a limited remote container | and pipes the CLI back and forth. | pc86 wrote: | Site appears to be down | BrightOne wrote: | HN hug! | setheron wrote: | Wow. This is amazing. This is the bar needed for many learning | resources. | | Thank you. | mikepurvis wrote: | Maybe slightly off topic, but I'd love to hear about people's | experiences using systemd as process manager inside a container, | specifically for the unprivileged container case, where systemd | would be launched in user mode, so _only_ doing process | management, without all the other kernel-hook stuff going on. | | I really like systemd, and I really don't like supervisor. So I'd | love to figure out how to make this work. | | I know the easiest thing would be to ignore the user mode | business and just use podman, where the work has already been | done [1], but at least in the short term that doesn't help for | more restricted environments like cloud kubernetes. | | [1]: https://www.redhat.com/sysadmin/improved-systemd-podman | drran wrote: | Systemd can be used in a docker container only when lot of | system services are masked. See my old CentOS 6 with systemd in | docker container project as example: | https://github.com/vlisivka/docker-centos7-systemd-unpriv | mikepurvis wrote: | That's fascinating-- thanks for pointing it out. I definitely | assumed the issue was with the daemon itself, and not with | the services it was trying to start. | mrweasel wrote: | May I ask why you'd want to use a process manager inside a | container? I just consider Docker my process manager. If my | application crashed, Docker will deal with it. | mikepurvis wrote: | A valid question-- certainly there's a school of thought that | says one process per container, end of story. | | However, there are lots of applications out there (especially | legacy ones, think stuff like Zoneminder) which are made up | of multiple small daemon-type processes sharing state across | ports and maybe even the filesystem, and have a strong | reliance on system services like cron or log rotation. Yes, | with effort an application like this could be be fully | "ported" to a container-native setup, but the path of least | resistance is often to just make the container environment | present as being more like a full VM. | tifadg1 wrote: | I've reverted from podman to docker as the podman ecosystem | isn't there - docker-compose, cadvisor, some networking - all | require tinkering to run. | | My interim solution is running docker containers as user, using | a simple USER directive. Straightforward and still added | security benefits. ___________________________________________________________________ (page generated 2022-01-25 23:01 UTC)