ALter post von meiner Homepage
Wichtige Dinge im Vorraus. Um keine Probleme mit libraries zu bekommen und um Platz zu sparen mussten die meisten Programme statisch kompiliert werden. Wo es ging habe ich das Programm gegen die dietlibc, einen hervoragenden libc Ersatz von Felix von Leitner kompiliert.
Der Link
Wir benötigen für unser embedded system
einnen kernel
busybox (multi binary tool)
optional
ssh
bash
netcat
kernel
läuft momentan noch ein Fremdkernel soll aber bald ersetzt werden.
busybox
downloadlink: www.busybox.net/downloads/busybox-1.1.0.tar.gz
tar xzvf busybox-1.1.0.tar.gz
cd busybox-1.1.0/
Die busybox ist ein binary das die meisten Linux/Unix Kommondos emuliert sowie eine ash als shell. Die Konfiguration erfolgt nach einem make menuconfig über eine der Linuxkernelkonfiguration nicht unähnliches Menü.
Wichtig : statisch Kompilieren!!
Im Netzwerkbereich habe ich noch den webserver ausgwählt, dafür aber telnet nicht da ich mir ja noch ein ssh kompileren will.
du -h busybox
1.2M busybox
bash
Die bash ist nur optional da ja mit der busybox eine ash mitgeliefert wird, kann aber aufgrund des grösseren Befehlssatzen und Komforts von Vorteil sein
Ich musste dazu die alte bash herunterladen da sich die neue nicht statisch kompilieren liess
ftp.gnu.org/gnu/bash/bash-2.05.tar.gz
dann
tar xzvf bash-2.05a.tar.gz
cd bash-2.05a/
./configure CC="diet gcc" --enable-static=yes
make
strip bash
wenn wir nun das ergebnis mit einem
/bash-2.05a > du -h bash überprüfen haben wir nun
496K bash eine bash mit 496k
SSH
chrootssh.sourceforge.net/download/openssh-4.2p1-chroot.tar.gz
Es war fast keine Version im Netz zu finden die funktionierte und sich statisch Kompilieren liess ausser der obigen.
tar xzvf openssh-4.2p1-chroot.tar.gz
cd openssh-4.2p1-chroot/
./configure LDFLAGS=-static
make
Bei mir wurden die absoluten Pfade des Kompilierungssystem fest miteingebunden weswegen ich noch als prefix
/opt/bin/
angeben musste(Das ist dann auch der Pfad auf dem thinclient)
netcat
Um das ganze ein bischen aufzubohren wollte ich netcat (mächtiges Netzwerktool) haben,
osdn.dl.sourceforge.net/sourceforge/netcat/netcat-0.7.1.tar.gz
(Server sehr langsam)
Dann das übliche
tar xzvf netcat-0.7.1.tar.gz
cd netcat-0.7.1/
./configure LDFLAGS=-static CC="diet gcc -nostdinc"
make
falls keine dietlibc vorhanden ist dann
./configure LDFLAGS=-static
Zusammenbauen des Systems
Dazu braucht man erstmal ein Grundgerüst für ein Unixsystem. Ich habe meins von hier
ftp://www6.software.ibm.com/software/developer/library/l-lwl1/skeleton.tar.gz
heruntergeladen.
Dieses mit
tar xzvf skeleton.tar.gz
entpacken
Das wichtigste ist die /etc/init.d/rcS, die den ganzen startprozess regelt. Die Kommentare solten alles erklären
#!/bin/bash
# Defaultshell ist die bash
/bin/mount -n -t proc /proc /proc
# das procfilesystem wird gemounted
PS1='\u@\h \t \w > '
# standartprompt
echo loading keys
loadkeys /de-latin1.map
# Laden der Keymap
echo syncronyzing time
netdate -v 192.168.1.1
hwclock –systohc
# Wir stellen die Zeit über unseren Zeit
echo remounting root
mount -o remount -o rw /dev/root /
# root wird neu gemountet ( so brauchen wir keine fstab)
echo starting httpd
httpd -h /webroot/
# Der Webserver der busysbox wird mit den entsprechendem webroot gestartet
echo starting ssh
/sbin/sshd
# der sshdämon auch
Die zwei Dateien braucht man auch noch
/etc # cat HOSTNAME
danube.ds9
/etc # cat resolv.conf
nameserver 192.168.1.1
nameserver 194.25.2.129
nameserver 193.101.111.10