Beim debuggen von Problemen in Container Umgebungen oder auf Geräten wie Routern gibt es immer das gleiche Problem: Die ganzen Standardwerkzeuge fehlen.
Die Software Pakete zu installieren ist oft keine Option, insbesondere in Umgebungen wo es aus Sicherheitsgründen kein Internet gibt.
Abhilfe können hier statische Builds der Programme sein. Kompiliert man ein Programm statisch, enthält eine einzelne Programmdatei alle sonst benötigen Abhängigkeiten und kann einfach kopiert werden und funktioniert.
Nachteil ist die Dateigröße der Programme. Ein statisch kompiliertes dig
ist knapp 6 Megabytes
groß, wohingegen das dig
aus den Paketquellen nur 200KB groß ist.
Downloads
Die statischen Programme gibt es hier: https://files.serverless.industries/bin/
Unterstützte CPU Architekturen: x86
(i386
), x86_64
(amd64
), ARM32v7
(armv7
), ARM64v8
(aarch64
)
Programme: busybox
, curl
, dig
, iperf2
, iperf3
, tcpdump
, vim
Mehr Details gibt es in der info.txt.
Build Scripts
Die Builds laufen in meiner privaten Gitlab Instanz in CI Pipelines mit Docker Containers. Andere CPU Architekturen werden mit Hilfe von multiarch/qemu-user-static gebaut.
Der Build Prozess erzeugt für jede CPU Architektur ein Basis Image welches alle nötigen Werkzeuge zum kompilieren der Programme enthält, kompiliert anschließend die Programme und lädt diese hoch.
Einen Mirror des Pipeline Codes gibt es auf meinem GitHub Account.