Kartoffeln züchten mit Alpine Linux

Alpine Linux, das mittlerweile von Docker gesponserte System - popülär für kleine Container Images, doch taugt es auch als Host OS? Das habe ich ausprobiert.

Man nehme

  • 1 Kartoffel
  • 1 Alpine Linux ISO
  • 1 PuTTY
  • 1 VNC Konsole

Alpine ist vom Prinzip her wie Arch Linux - minimalistisch, genauso viel “simplicity” nur ohne das always-update always broken design. Arch hatte ich 2017 schon benutzt: Ein halbes Jahr auf Arch. Ursprünglich ist Alpine für embedded Geräte konzipiert. BusyBox, kein systemd, keine glibc (!). Man kann es auch von Haus aus im RAM laufen lassen. Siehe “alpine lbu”.

Meine Kartoffel mit 512MB RAM - schön billig, ökonomisch abbbaubar, sollte Alpine bekommen. Von der Alpine ISO ruft man setup-alpine und man wird von einem interaktiven Shell-Skript durch das Setup geleitet. Genau so stelle ich mir Arch-Linux vor. Installation direkt mit LVM2 mit dem Ziel lvmsys möglich. Leider hatte ich vergessen, den ssh-Service zum Autostart hinzuzufügen (rc-update add), das musste ich dann alles in allem per VNC auf die Kartoffel nachholen. Mit hinterlegen der root-Pubkeys hat es nicht länger als 15min gedauert. So wünscht man sich das.

Man erhält ein System ohne alles. Nichtmal logrotate ist installiert. Nur 25MB RAM Verbrauch.

Als init-System wird OpenRC verwendet. Es verhält sich ähnlich, wie man es von alten Debian Distributionen gewohnt ist.

service myService status
rc-update add myService

Endlich kein systemd-nonsense mehr. Keine 10 minütigen Reboots mehr “A stop job is running…” kennt bestimmt jeder. Mit meiner Kartoffel nicht!

Man kann auch hier wie bei Arch auf rolling-release setzen, dazu einfach das edge repository tracken. Aber genau das möchte ich nicht. Alpine macht Snapshots alle 6 Monate und versorgt einem 2 Jahre mit Updates.

Ich hatte bereits zu Beginn erfolgreich von v.3.8 auf v.3.9 aktualisiert. Upgrading Alpine - Alpine Linux. apk, der Pakage Manager, läuft wirklich rasend schnell durch. Alpine Linux package management - Alpine Linux Es gibt die Docker Engine in den Repos, somit kann auch proprietäre Software einfach ausgeführt werden, was wegen der musl-C-Bibliothek nicht möglich ist, da diese gegen glibc gebaut werden in der Regel. Neue Configs werden in .apk-new Dateien abgelegt. Einfach per diff Vergleichbar.

Vermisst habe ich, dass lvmresize --resizefs, fehlgeschlagen ist. resize2fs war nicht drauf, das entsprechende Paket e2fsprogs-extra ließ sich aber über die Alpine Linux Paketsuche schnell finden.

Manpages kann man nachinstallieren. apk add man man-pages.

Zum Schluss bleibt die Frage, ohne die sorgfältig von den Debian Maintainern ausgewählten Voreinstellungen - ist das System mit Upstream Config sicher? Ich sage ja: sshd -T | sort | egrep -i "permit|passwordauth|forward|port" Alpine:

allowagentforwarding yes
allowstreamlocalforwarding yes
allowtcpforwarding yes
disableforwarding no
gatewayports no
passwordauthentication no
permitemptypasswords no
permitlisten any
permitopen any
permitrootlogin without-password
permittty yes
permittunnel no
permituserenvironment no
permituserrc yes
port 22
x11forwarding no

Eine andere Kartoffel mit Debian 9 Stretch:

allowagentforwarding yes
allowstreamlocalforwarding yes
allowtcpforwarding yes
disableforwarding no
gatewayports no
passwordauthentication no
permitemptypasswords no
permitopen any
permitrootlogin yes
permittty yes
permittunnel no
permituserenvironment no
permituserrc yes
port 22
x11forwarding yes

:)


Linux

490 Words

2019-05-29