geschieht sobald das entsprechende geraaaet, wieder in meinen haenden liegt [a] ---- === Ein-Disketten-Router (laeuft, ist aber z.Z. nur ein Webserver) ===
`   [--------------------------------------------------------------]`
----[   RamdiskProjektFork: RouterFirewallDialoutFileserver v.0.2  ]----
`   [--------------------------------------------------------------]`

Was machen wir:
	- Testumgebung von qemu nutzen, um eine Ramdisk zu baun, die samt Kernel
		auf 1 Diskette passt.
	-docs: Bootdisk-HOWTO
	-software: 
		-dietbins, minit, embutils. alles auf www.fefe.de
			-dietlibc wird dafuer aufm build host benoetigt.
		(- checkpassword von http://cr.yp.to/checkpwd.html)
		-thhtpd
		-dropbear als sshd
		

1. datei erstellen, in die das ganze reinsoll
	touch rootfs.img
	dd if=/dev/zero of=rootfs.img bs=1k count=6000 (muss getestet werden,
				ob das in 8 MB passt, sonst eben kleiner)
	mke2fs rootfs.img	(ext2 rauf)
	mount -o loop /mnt/rootfs/ rootfs.img
	mkdir bin, dev, etc, mnt, lib, sbin, usr, var, var/log, var/run
	touch /var/log/wtmp
	touch /var/log/utmp (beide Zeilen unelegant, aber einloggen klappt)
	cd dev
	mit cp -dpR die devicenodes vom eigenen /dev reinkopieren (nur die
		noetigen, also ttyS0, tty, tty1, urandom, fd0*, hda*)
	cd etc
	fstab, inittab, passwd, group, shadow, hostname 
	von eigener Kiste reinkopieren, werden spaeter angepasst

2.	minit
	-make
	-makefile angucken und entsprechend die Programme ins rootfs schreiben
	-die mkfifo-Zeile (ohne das - am Anfang) ausfuehren
	-das tutorial zu minit lesen (ist einfach)
	-mit Hilfe von fefes minit-Verzeichnis verstehen und selbst baun:
	-verzeichnisse ctrlaltdel, default, remount, mountproc blind kopieren
	-verzeichnis getty erstellen
	- getty/depends erstellen und 
		getty/S0
		reinschreiben
	-getty/S0 erstellen fuer serial port console
	-getty/S0/params sieht so aus:
			ttyS0
			--noparams
	-dann noch 'touch respawn', damit das teil beim abkratzen gleich neu
		startet
	-ln -s /sbin/fgetty getty/S0/run
	
	
3.	fgetty
	-entpacken und maken
	-entprechend 'make install' im Makefile ins rootfs kopieren
	-/mnt/rootfs/etc/inittab wie enpfohlen anpassen:
		#fgetty sachen fuer virtuelle terminals (kann aus, also # davor)
		1:123:respawn:/sbin/fgetty /dev/tty1 --noclear
		2:123:respawn:/sbin/fgetty /dev/tty2 --noclear
		#fgetty am seriellen port
		S1:123:respawn:/sbin/fgetty /dev/ttyS0 --noclear
	(-checkpasswd entpacken) braucht man wohl garnicht
4.	- dietbins mount und (b)ash nach /bin kopieren
	- /etc/passwd anpassen fuer die shell
	- in /root .profile erstellen mit Inhalt 
		export PATH=/sbin:/bin
5.	init=/sbin/minit als kernel parameter übertragen

    *  ERSTER LAUFFAEHIGER ZUSTAND MIT LOGIN KLAPPT AB HIER *******************
6.	-dietbins busybox nach /bin packen
	-mal ./busybox aufrufen
	-entsprechend allen angegebenen Namen immer folgendes in /bin tippen:
	ln -s busybox name

      ******************** SCHICK ISSES AB HIER ******************************

6.	thhtpd installieren
	-sourcen ausm Netz ziehn
	-mit  
	 CC="diet gcc -nostdinc" ./configure --disable-nls \
	 --disable-shared --enable-static
	 configuren und mit make compilen
	 - schliesslich wird sie folgendermassen kopiert 
	 objcopy --strip-all thhtpd /mnt/rootfs/sbin/thttpd
	 -jetzt ist die binary bei mir noch 90k gross.
	 -/etc/mime.types vom host aufs target kopieren (weiss nicht ob noetig)
	 -aufgerufen wird sie mit
	 thttpd -d /path/to/html_files/ -c **.cgi
	 , wobei das -c Argument bedeutet, dass alle .cgi-Dateien als solche
	 auch ausgeführt werden.
	 -jetzt sollte im Browser unter http://172.20.0.2/ der Content zu sehn
	 sein.
	 -damit alles automatisch läuft, sollten in minit noch eth0 und lo die
	 Einträge von fefes minit stehn, eth0 mit 172.20.0.2 (später
	 die richtige IP-Adresse und ein up am Ende der params)
	 - die beiden noch in /etc/default/depends eintragen
	 - dann einen eintrag für thttpd erstellen:
		-die params sieht dann so aus:
			-d
			/path/to/html_files/
			-c
			**.cgi


      *************  EIN WEBSERVER LÄUFT AB HIER  ****************************	

7. sshd rauf für remote administration
	-dropbear ziehn und entpacken
	-config.h schoen klein machen (keinx, kein forawrding und sowas)
	-CC="diet gcc -nostdinc" ./configure --disable-nls \
	 --disable-shared --enable-static --disable-zlib --disable-openpty
	-make
	-make strip
	-jetzt haben wir ein 120k binary. das kommt nach /opt/dropbear
	-./dropbearkey -t rsa -f dropbear_rsa_host_key
	den key auch nach /etc kopieren, dann muss der generator nicht mit aufs
	image.
	-nun noch in der /root/.profile den path anpassen
	-/etc/shells erstellen, in der untereinander /bin/sh und /bin/bash steht
	-/dev/ptmx und /dev/pts/ auf rootfs kopieren
	-/var/log/lastlog touchen
	
	
	-es gibt shellprobleme. duerfte an der shellimplementation in dietlibc
	liegen.
		-ich hack grade in der auth.c rum, um das zu umgehn








      ************************************************************************

xx.	Ip-Adresse anpassen
xx.	initrd
	passwort fuer www-data entfernen


      **************  NOTIZEN   ***************************************	
MARKER
	passwd == foo == 21wY00k4MUlpI



Fehlermeldung:utmpfd!=4 || wtmpfd!=5
	Lösung: wohl folgendes:
		mkdir /var
		mkdir /var/log
		mkdir /var/run
		touch /var/log/wtmp
		touch /var/log/utmp
	dann kommt zwar noch die Fehlermeldung, aber einloggen klappt.	
		TODO: man utmp. kapieren, Fehler entfernen.

---- === qemu zum Laufen bringen ===
`  [--------------------------------------------------------------]`
----[  Wie baue ich eine Testumgebung fuers Ramdiskprojekt v.0.2   ]----
`   [--------------------------------------------------------------]`

Was machen wir:
- Qemu installieren
- gepatchten Kernel configuren und compilen

1. Qemu Sourcen (od das vl-Testpaket) und qemu-doc.html ziehn von 
	http://fabrice.bellard.free.fr/qemu/

2. Die aktuellen Kernelsourcen kopieren:
	$ su
	$ cd /usr/src
	$ cp -Rs /usr/src/kernel-source-2.4.18 qemulinux
	
3. im Qemukernelsourcenverzeichnis folgendes machen:
	rm include/asm
	cd include
	ln -s asm-i386 asm
	rm asm/page.h
	cp /usr/src/kernel-source-2.4.18/include/asm/page.h .

4. entsprechend qemudoc.html Abschnitt 3.4 in page.h

	#define __PAGE_OFFSET           (0xc0000000)
	durch
	#define __PAGE_OFFSET           (0x90000000)
	ersetzen.

5. nach /usr/src/qemulinux/arch/i386 gehen
	rm vmlinux.lds
	cp /usr/src/kernel-source-2.4.18/arch/i386/vmlinux.lds .
	
6. entsprechend qemudoc.html Abschnitt 3.4 in vmlinux.lds
	. = 0xc0000000 + 0x100000;
	durch
	. = 0x90000000 + 0x100000;
	ersetzen.

7. kernel baun
	cd /usr/src/qemulinux
	rm .config
	make menuconfig
	WICHTIG: bei character devices:
		Virtuelle Terms aus (muss nicht, wenn an, dann in die
		/etc/inittab serial getty anmachen und kernelparam console=ttyS0)
		UND: config_serial=y config_serial_console = y
		sonst klappt der Kernel zwar, aber es ist dunkel.
	make clean
	make dep
	make bzImage

8. vl-Paket entpacken

9. ins vl-Verzeichnis gehen und vl-sh starten. sollte klappen.
	
10. eigenen Kernel reinkopieren und testen.
	ziemlich witzig: bei 2.4.18 kernel panic mangels root device:
	"I have no Root and I want to scream" ist ne Anlehnung an das 
	Endzeit-Horrorwerk "I have no mouth and I must scream"

11. beliebiges rootfs bei vl.sh reinschreiben. kernelparams einfach ranhaengen.

12. Netzwerksupport
	-host kernel muss den 'universal tun/tab device driver' bei network
	devices an haben
	-vl-ifup nach /etc kopieren
	-beim host als root
		-mkdir /dev/net
		-mknod /dev/net/tun c 10 200
	-jetzt ist noch das Problem da, das die beiden Geräte gegenseitig ihre
	 Mac-Adressen nicht finden. dafür gibts die Datei /etc/ethers.
	 also in der emulation mal ifconfig eingeben und das beim host
	 reintippen, also
	 01:23:23:23:21:00 172.20.0.2
	 beim host und entsprechend umgekehrt mit 172.20.0.1 
	 im target-rootfs eintragen.
	-als root (user hat bei mir nicht geklappt) vl.sh starten
	-fertig!