Alt-Text

Mein Selberbaulinux

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

 

www.fefe.de/dietlibc/

 

 

 

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