2017-09-13

pid 1 rage

Ok so most of the linux world have gone bonkers and converted to systemd (except slackware - the original rude boy).
I tried to like systemd (well, not really) but it is impossible. It is a gigantic tire fire of badness, reminds me of the clusterf*** that is pulse-audio (hint, hint, know what I mean).

So I thought to myself; if I must have a gigantic monolithic opaque pid 1 process (flying in the face of all that is unix) then by jove it must be something else. Enter RancherOS as one of the dists that do not use systemd. It has a glorious solution, it runs docker as pid 1 and most of the OS services are actually docker containers. It is so fantastically insane that it is really brilliant.

So I'm in the process of converting "the cluster", i.e. my 3 raspberry pi machines to rancher OS. It is not straight forward but this is the process I use. So caveat # 1. My workstation is a windows machine for the reason that I must play starcraft 2 and that does not run on linux. So I got a cheap USB connected SD card reader to write my SD cards. I use Rufus as the utility of choice to write images to the SD card. It has worked really well.

However, the RancherOS on the pi does not auto-expand the root partition. There is also the little snag of having to write the initial cloud-config.yml file with the SSH-keys so I can get at the pi after it has booted. In dire need of a linux machine that can hack the SD-card I tried virtualization. Luckily VirtualBox can expose USB devices to a guest. So I booted up my virtual linux, mounted the SD card reader through USB and by magic it appears. So I can run gparted on the sd card from the virtual linux machine and resize the rootfs. After that it is just a matter of creating a /var/lib/rancher/conf/cloud-config.yml with all the SSH keys on the SD card. Plug it into the pi and boot.

And it freaking works. After a while the pi snagged an IP from the dhcp-server and I could SSH into it. Now to do this a couple of more times and then all my servers are on RancherOS and systemd is just a bad memory on the bare metal servers. It will still haunt many of the docker images but maybe I can force supervisord to be pid 1 :-)