Brujo has been a programmer since the age of 10 and he has more than 15 years in the industry. He was a VB, .NET, Java and Haskell programmer until he found Erlang 8 years ago. He’s now Inaka's CTO and Erlang Solutions’ Tech Lead and Trainer. He’s an active member of the open-source community and his blog (Erlang Battleground on Medium) was the most active Erlang blog of 2016.
21 October 2016
SystemD Conference 2016
I realized I have never really sat down and learned systemd. I was mostly exposed to it via NixOS when writing NixOS modules and time came to dig a bit deeper. Systemd man pages are invaluable source of information. Initially they might be a bit overwhelming, but soon you start to appreciate the long explanation.
journalctl became one of the tools I can not really work without. To be worry free when it comes to logging and to not be a awk/grep wizard when it comes to accessing logs is something everybody new to systemd will appreciate.
Some (hopefully) useful commands I wrote down during Lennart's journald presentation:
- journalctl -r - show logs in reverse order
- journalctl -b - show logs since last boot
- journalctl -k - show kernel logs
- journalctl -p warning - show logs with warning priority
- journalctl -p error - show logs with error priority
- journalctl --since=2016-08-01 - show logs since
- journalctl --until=2016-08-03 - show logs until
- journalctl --until=today - show logs until midnight today
- journalctl --since=yesterday - show logs since yesterday midnight
- journalctl --since=-2week - show logs for last 2 weeks
- journalctl -u <unit-name> - show logs of certain unit
- journalctl /dev/sda - show kernel message of device
- journalctl -o json - show logs in json format
And you can mix more or less or of the above options.
To serve journald events over the networks there is systemd-journal-gatewaydservice which is disabled by default.
Every log message can now provide MESSAGE_ID (generated via journalctl --new-id128) to be able to use journal's catalog capabilities. If this gains traction, it could really help to have better documentation with every error that shows up in journal.
Currently we can limit globally how much space logs will take. Option to have this per service would be very nice and might happen in future.
Containers were the hot topic at systemd conference. Not about their current usage, but more or less looking into the future and how containers might look.
- Vincent Batts: What’s next for containers?
- Alban Crequy, Luca BRUNO: Securing services and containers: rkt meets systemd
- Lennart Poettering: State of the Union/Portable Services
- Djalal Harouni: Apps sandboxing in systemd
Apart from great talks I was not aware that there are commands to pull / import /export containers from command line
% machinectl pull-tar <url> % machinectl pull-raw <url> % machinectl import-tar <name> <file> % machinectl import-raw <name> <file> % machinectl export-tar <name> <file> % machinectl export-raw <name> <file>
Not something revolutionary, but this commands can be useful to quickly share images with coworkers.
Lennart also presented another tool called mkosi which is aiming to build legacy free OS images. You can consider it as a replacement for deboostrap and dnf. I wonder if this is a place were Nix could be used, since we already have a way of creating images of non NixOS distribution.
All the negativity that some people have towards systemd, got me convinced that systemd is one big monolith and that it can not be stripped down to the bare minimum. Last and this year show us that systemd on embedded devices is growing and while there still are problems those problems are possible to solve.
- Gustavo Sverzut Barbieri: Demystifying systemd for embedded systems
- Jens Georg: Automotive startup and device management
- Michael: Reconciling Systemd and Customer Requirements
Listening to all the talks about embedded systems got me thinking what kind of build systems do they use and could Nix be a possible solution. Knowing the strong points of Nix (the build tool), reproducibility, composability, etc... must be features that would get some developers in embedded world interested. But to unlock this space for Nix, a basic support for ARM should be there, maybe just in a form of binary channel for a small subset of packages.
One of pain points of my current setup (no desktop manager like kde/gnome/xfce, only i3 window manager) is that I have to manually mount every USB stick. I was not aware that systemd could also handle this.
/dev/sdb1 /mnt/usb auto noauto,x-systemd.automount 0 2
Looks like systemd community is really tackling the hard problems. While there is anetworkd which manages networking (there was also a talk about it: Lennart Poettering, Tom Gundersen: What you didn't know about networkd) there is also work in progress to have have a utility to manage wireless networks, Marcel Holtmann: New Wireless Daemon for Linux.
I think the last area where Linux feels painful would be Printing. systemd-printing anybody? :)
Systemd unit files allow us to specify services in a declarative way. With systemd growing in scope we are more and more seeing a need for a better way of managing services. We have seen to talk about configuration management.
We have seen an very nice presentation of a even more awesome tool called Mgmt(James (purpleidea) Shubin: Next Generation Config Mgmt). While still a bit unpolished you can easily see being it superior to many existing configuration tools out there.
Completely different approach to Configuration management took NixOS. And I had an honor to speak about it (NixOS - Reproducible Linux Distribution built around systemd). I tried my best to explain the core principles of how Nix works, but sadly I was short in time to show all the demos. Still I have learned few things when presenting Nix/NixOS:
- Don't mention functional, ignore it
- There is no Nix Expression Language, but a JSON-like syntax
- Not everybody sees the benefits of reproducibility in first 5 seconds, show examples
- Nix is not for everybody and for every use case
New NixOS release is here, what are you waiting! :)
25 Jul 2016
A video exploring the potential of fast simulated...
08 Aug 2016
Gradle did come to stay with us. Although...
22 Aug 2016
Software Testing is not for Attention...
19 Sep 2016
New video from #droidconpl2015 is out!...
19 Sep 2016
Last night I attended a software testing...
21 Oct 2016
A summary of my visit from SystemD Conference...
24 Oct 2016
Up until yesterday, I had only gone...
24 Oct 2016
Updating sources (versions, revisions, tags)...
14 Nov 2016
Elixir is a joy to work with, an easy...
16 Nov 2016
A few weeks ago I attended Mobiconf, one of...
20 Jan 2017
When you can’t bang! This story...
26 Jan 2017
I have been using Ruby/Rails for 8 years and...
07 Feb 2017
I am an old Java man, I never allocated many of...
07 Feb 2017
Earlier today, Dorothy Graham presented...
07 Feb 2017
I have seen great posts about Elixir release...
22 Feb 2017
I first time I came across the term of "dark...
22 Feb 2017
You probably know...
22 Feb 2017
I am quite happy to share that I have...
06 Mar 2017
Who will find this interesting If you’re...
07 Mar 2017
A peer2peer and/or crowdfunding, blockchain...