Linux Snippets

Ubuntu update procedure

Brain dump.

# from here:
apt-get update && apt-get --with-new-pkgs upgrade 

# restart

# do it again
apt-get update && apt-get --with-new-pkgs upgrade 

# remove shit
apt autoremove



# done.


Desktop shit

Win10 & Veracrypt & systemd-boot

There are some things seemingly nobody does. For example, …

  • double-booting Win10 and Linux
  • on an UEFI System
  • while the Win10 Partition is encrypted using VeraCrypt.

Yes, it’s a complex scenario, but since MS in all of his (money-grabbing) wisdom does not include BitLocker in Win10 Home, this is a necessary precaution. I’ll not go over the installation of both systems (pretty straightforward, and Arch Linux has – as always – a nice Wiki entry about it).

Unfortunately, Win10 likes to break its own boot manager on updates, which is very scary (“Your Windows partition is damaged”), and super annoying, but I think I got the solution now.

So, the Linux-based (of course) solution for Windows 10 and VeraCrypt is:

# esp partition - /loader/entries/winvera.conf
title Windows 10 VeraCrypt
efi /EFI/VeraCrypt/DcsBoot.efi

This is in fact all you need to do. Now, if Windows fucks up its own boot loader, it seems systemd-boot just ignores everything, loads the correct VeraCrypt bootloader (as it is supposed to be), and all is well.

It can happen though that Windows places its own boot manager back in front of systemd-boot again, so it’s used as the default one. Then use one of the methods described here, and you should be fine. (This did not happen to me, it always used the correct boot manager but fucked up Windows boot)


Ugly ligatures in Linux

Unfortunately boohomil went off grid. I still haven’t replicated his config fully. And it still sucks.

One more step was fixing those super-ugly ligatures in Linux. Works at least in LibreOffice (just restart the app to see changes).


crontab and nano

Ever used update-alternatives to switch everything to vim and … crontab -e still used nano?

Well, I had this. I found the answer:



General things

Install Arch with full disk encryption, btrfs and EFI

I recently had to re-install my beloved Arch Linux. For security I need (and use) full disk encryption. This is a cheatsheet for the whole procedure, because although the Arch Linux Wiki is excellent, it is also huge and sometimes you must pick your stuff together from many pages.

This is what I am doing here ­čÖé

NOTE: Usually you only have to follow the one subsection I link to!


One after another, we will do the following steps

  • Download and prepare Arch USB stick (skipped, you should know that ­čśë
  • Prepare the hard disk
  • Prepare the disk partitions
  • Add LVM “inside” the crypted partition
  • Create filesystems & mount partitions
  • Install arch
  • Configure boot manager

Prepare the hard disk

Use parted to init the disk and …

  1. init the disk using a GPT partitioning scheme, then create
  2. a GPT boot partition and put 100% of the remaining space in another partition (the first two actions behind the link)

Prepare the disk partitions


  1. use the cryptsetup command to encrypt the main (big) partition,
  2. and create a file system on the boot partition (remember: it must be FAT32 for EFI boot, and it must be unencrypted!)

Add an LVM “inside” the encrypted partition

Cause we want “properly” encrypted swap (you can also encrypt swap using a /dev/random key every time, but then you will not persist data between reboots and you can’t do things like suspend-to-disk), we need at least two “partitions” “inside” the crypted volume. Sounds like LVM on LUKS? It does. We already used it ­čÖé .

  1. Create LVM partitions inside the encrypted volume (Don’t forget to use cryptsetup luksOpen before, usually in step 1 in the last section ­čÖé

NOTE: Do not follow the above link down to “prepare the boot partition”, cause they use ext2 and we need FAT32 for EFI boot partitions. Just don’t.

I use the name “secure” for the VG, and I use btrfs cause I am so incredibly elite, and so we don’t need to set a specific size for the / and /home “partitions” and can just use btrfs subvolumes, while still being able to wipe the system without the home directories. That’s pretty neat if you need it (I never did, but now I can ;). So that’s the final setup:

/dev/mapper/secure-swap    40 GB, swap
/dev/mapper/secure-system  rest, btrfs with 2 subvols: root & home

Create filesystems & mount partitions

Of course, Arch has already a wiki page section for that. I did it 3 times in a different way until I found it and had to do it again. So here is my summary.

$ mkfs.btrfs /dev/mapper/secure-system
$ mount /dev/mapper/secure-system /mnt
$ btrfs subvolume create /mnt/@
$ btrfs subvolume create /mnt/@home
$ btrfs subvolume create /mnt/@snapshots 
$ umount /mnt

$ mount -o subvol=@ /dev/mapper/crypted-system /mnt
$ mkdir -p /mnt/home /mnt/boot
$ mount -o subvol=@home /dev/mapper/crypted-system /mnt/home
$ mount /dev/sda1 /mnt/boot

NOTE: /boot is not on an encrypted partition ­čśë , and the leading “@” is a convention for subvolumes which should be mounted somewhere. I also don’t use compress=…┬á parameters, cause I don’t need / want transparent compression.

Install arch

Then you follow up with the usual installation procedure, but you stop at the “Initramfs” section. Here we will pick up again.

Configure boot manager

We are using systemd-boot. Or bootctl, as the binary is called. It should be already installed. The procedure is also outlined here. We also enable TRIM support, it seems to lessen security, but it raises SSD performance and life time.

  1. First, check if your system EFI is all right.
  2. Optionally install the Intel microcode updater package if you have an Intel CPU by doing pacman -S intel-ucode.
  3. Then run … bootctl –path=/boot install to install systemd-boot.

Now create those files (all inside /mnt and relative to it, but of course you should be in a chroot right now :):

title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img       # ONLY FOR INTEL CPUs!!
initrd /initramfs-linux.img
options luks.uuid=FS_UUID root=/dev/mapper/secure-system rootflags=subvol=@ rd.luks.options=discard

You can get FS_UUID in the options line above by using the blkid command. If you don’t want to copy the UUID by hand, you can start console mouse support with copy-on-mark and paste-on-middleclick with gpm -m /dev/input/mice -t imps2. Note that the FS_UUID is the UUID of the encrypted luks partition, and not the filesystem within!

The list of normal and dm-crypt related kernel parameters … well, is also in the Arch wiki.

default arch    # the file above without .conf extension, can have wildcards!!
timeout 2
editor  0
# Just MODIFY that file, to be precisely this line:
HOOKS=(base systemd autodetect modconf keyboard sd-vconsole block sd-encrypt sd-lvm2 filesystems fsck)

The key idea is to use the “systemd” parameters instead of the “normal” ones. The full list of hooks is of course also available, and the order is important.

Now execute:

mkinitcpio -p linux

… and actually, that should be it.

$ reboot


  • 2018-03-27 fixed a typo in the HOOKS documentation, clarified kernel boot parameters

The year of … the Printer.

Ah, ich bin langsam – der Post schimmelt schon eine Weile hier vor sich hin, weil ich den Screenshot hochlade. Jetzt isses soweit. Es geht also weiter mit: Drucken. Denn irgendwann lief das System schlie├člich, und ich kam an den Punkt, an dem ich etwas drucken wollte. Gnome war installiert, Firefox auch, also theoretisch (kenne ich ja vom Mac, da verrichtet CUPS ja auch hervorragende Dienste) einfach die WebGui aufrufen, Drucker ausw├Ąhlen, fertig.

Zuallererst musste ich an Linus denken: root-Passwort-Eingabe f├╝r die Administration von CUPS n├Âtig. Hm. Egal, eingegeben, dann “Add Printer” geklickt, und erst mal erfreut folgendes gesehen:


Hm. Sieht erst mal gut aus, oder? Na, jedenfalls bis man sich die Frage stellt: Welcher der Drucker ist jetzt genau der hier im B├╝ro? Nur Typenbezeichnungen, kein Standort, keine IP? Nicht optimal.

Der Einfachheit halber einfach manuell installieren. IP vom Kollegen erfragt, und los. Und stop. Drucker URL eingeben … nur wie? Mit “http://”? Oder “lpd://”? Oder “ipp://”? Und hier dann mit oder ohne “/ipp” am Ende? Ich entschied mich f├╝r “ipp://” ohne “/ipp”. Dann bitte “Make and Model” ausw├Ąhlen, Brother war nicht in der Liste, Ende.

Aber kein Problem, Brother gibt ja eigens Linux-Treiber raus. Nur nicht auf der “normalen” Brother-Downloads-Seite, die hat nur Mac und Windows-Treiber. Hm. Ich bin faul, also mal die Variante versucht, die fr├╝her mal ging: Zur├╝ck, HP Drucker ausgew├Ąhlt, PCL6, Testseite gedruckt, klappt … nicht. Na gut, w├Ąre auch nicht sch├Ân gewesen, aber trotzdem.

Nochmal zur├╝ck, Drucker gel├Âscht. Dann Google bem├╝ht, die “richtige normale” Brother-Homepage f├╝r den Linux-Support gefunden (w├Ąre unter Support -> Linux gewesen, und nicht Support -> Downloads, aber ehrlich, wer schaut noch den Rest der Seite an wenn er das Bild unten sieht? Ich jedenfalls nicht).

brother-homepageDort gibts f├╝r das von mir gesuchte Modell 5 Treiber zum herunterladen, und zwar folgende:

  • LPR driver (jeweils als rpm + deb)
  • cupswrapper driver (jeweils als rpm + deb)
  • ppd file

Aha. Ich entschied mich f├╝r PPD, ich bin ja CUPS, ne, und nochmal von vorn: Drucker hinzuf├╝gen, manuell, URL diesmal mit “ipp://…/ipp” (also mit “/ipp” am Ende), und siehe da – jetzt kamen auch automatisch Brother-Ger├Ąte in der Liste (WTF?), wenn auch nicht das Modell hier im B├╝ro. Daher runtergeladenes PPD eingebunden, best├Ątigt, Testseite gedruckt, fertig.

Nicht so ganz optimal.


The year of … the Installation.

Wie versprochen – ein klein wenig gemecker ├╝ber die Linux Desktop Bem├╝hungen. Erste H├╝rde: Die Installation.

Meine Wahl fiel auf Arch Linux, das sollte gut sein, und ich wollte nicht auf den Ubuntu-Zug aufspringen. Bedingungen: Vollverschl├╝sselte Festplatte (incl. Swap und System), verlangt der Kunde. Ist prinzipiell gut dokumentiert, auch durch eine Howto eines Kollegen. Aber ich wollte statt LVM auf Partition mal BTRFS testen – wenn schon denn schon.

Um es kurz zu machen – die Installation dauerte knapp 3 Tage.

Zuerst bootete das System nicht. Grub 2 wollte partout nicht starten und hing – auch nach mehrfachem neu schreiben des Bootsektors – in einer Boot-Loop fest. Zwischendrin hatte ich Arch schon aufgegeben und es mit Ubuntu 13.04 versucht – nur auch hier startete Grub nicht durch, sondern hing einfach. Schlie├člich gelang mir ein Systemstart nach einem vollst├Ąndigen ├ťberschreiben der ersten 50 MB der Festplatte durch /dev/random, und einer Neuinstallation von Arch vom allerersten Schritt an.

Anschlie├čend installierte ich Grafiktreiber, X, Gnome, aktivierte Swap in der /etc/crypttab und startete neu.

Der Laptop startete, ich muss mein Passwort f├╝r die Festplatten-Entschl├╝sselung eingeben, der Bildschirm flackert, und der Rechner steht. Erste Vermutung: Grafiktreiber. Keinerlei Debug-Meldungen nirgendwo.

Nach einer weiteren Arch Neuinstallation, da ich irgendwann einfach nicht weiter wusste, kam ich irgendwann durch Zufall und Faulheit auf den Trichter, dass es nicht die Grafik war (denn die ging dann auf einmal), sondern ein fehlerhaftes Einbinden der swap-Partition in der /etc/crypttab. Stand – wie ich im Nachhinein erfuhr – auch sehr klein im Kleingedruckten. So halb meine Schuld also, dennoch sehr, sehr schlecht zu diagnostizieren, und mit enormem Zeitverlust verbunden. Dass vergesse ich auch so schnell nicht wieder.


The Year Of The Linux Desktop!

Ein neuer Blog, ├╝ber Linux, Puppet, Systemadministration, und was mir sonst noch so technisches einf├Ąllt. Erstes Thema: Der Linux Desktop.

Es ist eine Ewigkeit her, seitdem ich haupts├Ąchlich mit dem Linux-Desktop gearbeitet habe. Linux Server? St├Ąndig. Dauernd. Immer. Aber Linux Desktop? ├ťber 7 Jahre nicht mehr, mindestens. Und jetzt – die erste Frage in meinem aktuellen Projekt war: Was magst haben? Linux? Windows? ­čÖé . Oh wie geil – Linux nat├╝rlich! Endlich konnte ich mal mit einer der aktuellen, vielgelobten, gut gereiften Linux-Distris arbeiten.

Dennoch bin ich von der Entwicklung der letzten Jahre alles andere als begeistert. In den n├Ąchsten Posts erl├Ąutere ich anhand einiger Beispiele aus erster Hand, warum.

Und ja, ich fange mein neues Blog mit einem klein wenig Gemecker an. Man g├Ânnt sich ja sonst nix ­čÖé . Trotz allem bin ich ein Fan, man redet schlie├člich nicht ├╝ber Dinge, die einem egal sind.