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.
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.
Die Scripte gibt es unter
http://buildroot.uclibc.org/download.html
Ich baue gerne beim nächten Mal auch für i486/2.4. Wird aber erst gegen Ende Oktober der Fall sein.