uClibc-Chroot-Umgebung

Wer das 4MB Mini-Linux bauen möchte oder einfach ein kompaktes statisches Binary beispielsweise der BusyBox oder des Dropbear-SSH-Servers benötigt, sollte das in einer uClibc-Chroot-Umgebung tun. Denn uClibc führt nicht nur zu kompakteren Binaries, sondern vermeidet jegliche dynamisch gelinkten Bibliotheken — beim Bauen einiger Tools gegen glibc, die Login-Funktionen nutzten, werden einige glibc-Komponenten immer dynamisch verwendet.

Die Verwendung ist einfach:

  • Zuerst werden einige spezielle Dateisysteme ins Chroot gemountet:
    mount -t proc none uclibc-chroot/proc
    mount -t devpts none uclibc-chroot/dev/pts
    mount -o bind /tmp uclibc-chroot/tmp
  • Dann kann per Chroot ins uClibc-System gewechselt werden
    LC_ALL=C chroot uclibc-chroot /bin/bash

Im Chroot können Sie beispielsweise im nun gemeinsam mit dem Hostsystem genutzten /tmp die gewünschten Programme statisch bauen, herausfischen und auch auf älteren Linux-Systemen oder Systemen mit C-Bibliotheksproblemen laufen lassen.

Ich nutzte derartige Binaries beispielsweise um auf ganz alten Systemen “rsync” nachzurüsten. Die uClibc-Umgebung ist gegen uClibc 0.9.29 gebaut und verwendet die Header von Linux 2.6.20. Beim Einsatz der erzeugten Binaries auf einem ganz alten Linux kann es unter Umständen erforderlich sein, eine Chroot-Umgebung mit Headern von 2.4 zu erstellen. Dabei helfen die Buildrootscripte von uClibc.org. Nach Fertigstellung ist allerdings zu beachten, dass unter Umständen “ar” und einige der von BusyBox bereitgestellten Tools nicht ausreichend funktionieren. In der zum Download angebotenen Umgebung ist dies korrigiert.

8 thoughts on “uClibc-Chroot-Umgebung

  1. Noob

    Hallo bekomme beim entpacken folgende Fehlermeldung:
    uclibc-chroot/usr/include/c++/i686-linux-uclibc/bits/stdc++.h.gch/O0g.gch
    Segmentation fault

    Was mache ich falsch?

    Könntest du eventuell eine Umgebung für Kernel 2.4 bauen und i486?

    Oder vielleicht einen link zu den scripten, die finde ich irgendwie nicht….

    Danke.

Comments are closed.