Operating Systems Principles SS2005: Difference between revisions
No edit summary |
|||
Line 27: | Line 27: | ||
Informationen dazu finden Sie unter [[Using_StandardizedDevelopmentEnvironment]]. |
Informationen dazu finden Sie unter [[Using_StandardizedDevelopmentEnvironment]]. |
||
Für das Praktikum kann die Toolchain wie folgt gebaut und verwendet werden: |
|||
== OpenWrt-Quellen == |
|||
Die Quellen des OpenWRT-Projektes können über cvs abgerufen werden: |
|||
cvs -d:pserver:anonymous@openwrt.org:/openwrt login |
|||
cvs -d:pserver:anonymous@openwrt.org:/openwrt co buildroot |
|||
== Benötigte Tools/Bibliotheken == |
|||
Damit sich die Toolchain übersetzen lässt, werden die folgenden Tools bzw. Bibliotheken benötigt: |
|||
* wget, tftp |
|||
* cvs, subversion |
|||
* gcc, gcc-c++, bison, flex |
|||
* patch, gettext |
|||
* autoconf, automake |
|||
* zlib-devel |
|||
== OpenWRT-Build-Prozess == |
|||
Für die spätere Verwendung von Click wird ein C++-Compiler benötigt. Daher ist die folgende |
|||
Änderung im ''$OPENWRT/buildroot/Makefile'' vorzunehmen: |
|||
INSTALL_LIBSTDCPP:=true |
|||
Sollten alle benötigten Bibliotheken vorliegen, so kann OpenWRT mit Hilfe von make gebaut werden: |
|||
linux:/home/wrt/buildroot/# make |
|||
Hinweis: Der initiale Build-Prozess ist sehr zeitaufwändig. |
|||
== Verwendung von CrossTool == |
|||
Eine weitere Möglichkeit einen Cross-Compiler zu bauen ist folgende: |
Eine weitere Möglichkeit einen Cross-Compiler zu bauen ist folgende: |
Revision as of 11:04, 30 April 2005
Lab 0: Hardware
Bei den Knoten in unserem Mesh-Netzwerk handelt es sich um Router der Firma Linksys (WRT54GS). Hierbei haben wir die vorhandene Firmware durch OpenWrt http://openwrt.org ausgetauscht. Nähere Informationen finden Sie dabei unter Programming_the_Linksys_WRT54GS_Wireless_Broadband_Router.
Für das Praktikum sei folgende sehr einfache Netztopologie für eine Multi-Hop Mesh-Netzwerk gegeben (siehe Abbildung):
Erkennbar hierbei ist, dass Knoten WRT1 direkt mit Knoten WRT2, jedoch nicht direkt mit Knoten WRT3 kommunizieren kann (er benötigt die Hilfe von Knoten WRT2). Als Routing-Protokoll haben wir das Dynamic Source Routing (http://www-2.cs.cmu.edu/~dmaltz/dsr.html ) Protokoll auf Layer 2 (Sicherungsschicht) prototypisch implementiert. Dieses soll auch im Praktikum verwendet werden.
Der Zugriff auf die Router erfolgt über telnet:
zubow@linux:~> telnet wrt1
Lab 1: Cross-Compilation
Dieses Praktikum soll Ihnen einen Einblick in die Entwicklung von Software für Embedded Devices (Cross-Compilation) geben. Hierbei werden Sie mit Hilfe von OpenWrt Software für WRT54GS entwickeln. Zu diesem Zweck haben wir eine Linux-Entwicklungsumgebung (Toolchain, ect.) aufgebaut. Nähere Informationen dazu finden Sie unter Using_StandardizedDevelopmentEnvironment.
Für das Praktikum kann die Toolchain wie folgt gebaut und verwendet werden:
OpenWrt-Quellen
Die Quellen des OpenWRT-Projektes können über cvs abgerufen werden:
cvs -d:pserver:anonymous@openwrt.org:/openwrt login cvs -d:pserver:anonymous@openwrt.org:/openwrt co buildroot
Benötigte Tools/Bibliotheken
Damit sich die Toolchain übersetzen lässt, werden die folgenden Tools bzw. Bibliotheken benötigt:
- wget, tftp
- cvs, subversion
- gcc, gcc-c++, bison, flex
- patch, gettext
- autoconf, automake
- zlib-devel
OpenWRT-Build-Prozess
Für die spätere Verwendung von Click wird ein C++-Compiler benötigt. Daher ist die folgende Änderung im $OPENWRT/buildroot/Makefile vorzunehmen:
INSTALL_LIBSTDCPP:=true
Sollten alle benötigten Bibliotheken vorliegen, so kann OpenWRT mit Hilfe von make gebaut werden:
linux:/home/wrt/buildroot/# make
Hinweis: Der initiale Build-Prozess ist sehr zeitaufwändig.
Verwendung von CrossTool
Eine weitere Möglichkeit einen Cross-Compiler zu bauen ist folgende:
download crosstool von:
http://kegel.com/crosstool/crosstool-0.31.tar.gz
auspacken:
tar xzf crosstool-0.31.tar.gz
Im Verzeichnis crosstool-0.31 die Datei gcc-3.4.2-glibc-2.2.5.dat editieren und LINUX_DIR von linux-2.6.8 auf linux-2.4.16 setzen.
Wenn man nicht mit root-Rechten unterwegs ist, dann noch in der Datei demo-mipsel.sh RESULT_TOP auf ein schreibbares Verzeichnis setzen.
Anschliessend noch ein beherztes "sh run-mipsel.sh" und los gehts....
Der (Flash-)Speicher auf den WRTs ist nicht nur limitiert, sondern auch extrem langsam. Für den
Entwicklungsprozess kann man auf den WRTs Verzeichnisse via NFS mounten:
@wrt1:/# mount MY_NFS_SERVER:/share/ /mnt/share -o nolock
Lab 2: Click
http://www.pdos.csail.mit.edu/click/click.gif
Click ist ein vom MIT entwickelter modularer Software-Router. Mit Hilfe der umfangreichen Click-API lassen sich schnell neue Router-Konfigurationen entwickeln. Auch wir werden uns bei der Entwicklung auf Click stützen.
Lab 3: Address Resolution Protocol (ARP)
Das ARP-Protokoll ( http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/arp.html ) wird vom Internet-Protokoll (IPv4) dazu verwendet IP-Netzwerkadressen auf Hardware-Addressen (Data-Link-Protocol) abzubilden. Hierbei wird in aller Regel eine Anfrage mit Hilfe eines Broadcasts (ARP-Request) realisiert. Im Falle eines Multi-Hop Mesh-Netzwerkes ist dies jedoch keine praktikable Lösung. Eine Lösung hierfür könnten die aus dem Bereich der P2P-Netzwerke bekannten Distributed Hashtables ( http://www.infoanarchy.org/wiki/index.php/Distributed_hash_table ) darstellen.