Unterschiede zwischen den Revisionen 2 und 3
Revision 2 vom 2005-05-13 19:40:43
Größe: 7765
Autor: lars
Kommentar: style
Revision 3 vom 2005-05-15 15:21:11
Größe: 12360
Autor: lars
Kommentar: die Erfahrungen des Lars
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 3: Zeile 3:
--- ----
Zeile 7: Zeile 7:
= der leichte Weg =

== Vorbereitung ==

=== Programme auf dem Host installieren ===

Unter [http://debian.org debian] genügt: `apt-get install tftp telnet`

Falls du das Image selbst bauen willst, dann brauchst du noch ein paar mehr Pakete, unter anderem: {{{
gcc binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6-dev}}}

=== boot_wait aktivieren ===
Die einfache Methode, ein neues Image hochzuladen, ist per ''tftp'' während des Bootvorgangs.

Dafür musst du das ''boot_wait''-Flag des Routers aktivieren. '''''DAS IST SEHR WICHTIG!'''''

(Infos: http://openwrt.org/OpenWrtDocs/Installing#head-76921c79e7c7ed3b03d3bc9a40b1a2c792c215b0)

Folgendes Kommando nutzt einen Bug des Linksys-APs aus, um das ''boot_wait''-Flag zu setzen, während er noch die originales Firmware enthält: {{{
for PING_IP in '%3Btrue' '%3Bcp%24%7BIFS%7D*%2F*%2Fnvram%24%7BIFS%7D%2Ftmp%2Fn' '%3B*%2Fn%24%7BIFS%7Dset%24%7BIFS%7Dboot_wait%3Don' '%3B*%2Fn%24%7BIFS%7Dcommit' '%3B%2Fsbin%2Freboot'
#for PING_IP in '%3B%2F*%2Fcp%24%7BIFS%7D%2F*%2F*%2Fnv*%24%7BIFS%7D%2Ftmp%2Fn' '%3B%2F*%2Fn%24%7BIFS%7Dset%24%7BIFS%7Dboot_wait%3Don' '%3B%2F*%2Fn%24%7BIFS%7Dcommit' # '%3B%2Fsbin%2Freboot'
   do
   POST_DATA='submit_button=Ping&submit_type=start&action=Apply&change_action=gozila_cgi&ping_ip='"$PING_IP"'&ping_times=5'
    #echo "Aktion: $PING_IP"
    #echo -e "$POST_DATA\n---" | lynx -auth=admin:admin -post_data http://192.168.1.1/apply.cgi > /dev/null
   wget -q -O /dev/null --http-user=admin --http-passwd=admin --post-data="$POST_DATA" http://192.168.1.1/apply.cgi
   [ $? != 0 ] && {
     echo -e '\nFehler beim Aktivieren von boot_wait!'
     exit 1
   }
   echo -n "."
  done }}}
Vorher musst du dem ''WAN''-Interface eine IP-Adresse geben.

Das Original-Skript zum setzen des ''boot_wait''-Flags findest du unter: http://aachen.uni-dsl.de/download/wrt/Releases/rev90/buildroot-rev90/takeover


== ROM-Image ==
Entweder installierst du ein fertiges Image - das geht schön schnell.

Oder du baust dir dein eigenes: dauert zwei Stunden länger und ist flexibler.

=== fertiges Image verwenden ===

Unter http://openwrt.org/downloads/experimental/bin/ liegen fertige Images.

Welches der beiden Dateisysteme (''jffs2'' oder ''squashfs'') du wählst, ist meines Wissens nach egal. Ich habe ''jffs2'' genommen.

Das Hochladen des Images ist unter http://openwrt.org/GettingStartedTips sehr gut beschrieben.

=== selberbauen ===
Das ist ziemlich einfach geworden - also keine Angst :)

Das Quellen-Paket (''tar.bz2'') liegt unter http://openwrt.org/downloads/experimental/.

 1. auspacken: `tar xjf experimental.tar.bz2`
 1. konfigurieren: `cd openwrt; make menuconfig`

Die Voreinstellungen sind schon ziemlich sinnvoll. Falls du Veränderungen vornehmen willst, dann solltest du auf folgende Punkte achten:
 * Kernelpakete lassen sich als Modul oder statisch einbinden
 * seltsamerweise kannst du auch Programm-Pakete als Modul anwählen (''M'' anstelle von ''*'') - diese Pakete werden jedoch NICHT installiert - wähle sie also immer nur per ''*'' aus
 * das ''ifupdown''-Paket scheint nicht korrekt zu funktionieren (Stand: Mai 02005) - danach war keine Netzverbindung möglich (du kannst jedoch weiterhin ein neues ROM per ''tftp'' hochladen)
 * wahrscheinlich brauchst du ''mknod'' (standardmäßig nicht angewählt) - z.B. für ''/dev/ppp''

Zum Erstellen der Pakete tippe einfach `make`. Beim ersten Mal werden dabei die Quellen der gewählten Pakete aus dem Netz geholt.

Die fertigen Pakete liegen anschließend unter ''bin/''.

Das Skript zum Hochladen ist ''scripts/flash.sh'': {{{
cd bin; ../scripts/flashs.sh openwrt-wrt54g-jffs2.bin linksys ; cd .. }}}
Hinweise:
 * dein Netzwerk-Interface sollte eine IP im Bereich ''192.168.1.x'' (mit ''x'' ungleich 1) haben
 * kurz bevor du das Skript ausführst, musst du den Linksys neustarten
 * du musst dich im Verzeichnis mit dem Image befinden, weil die Dateiangabe für ''tftp'' keinen Pfad beinhalten darf
 * eventuell musst du vorher das ''flash''-Skript als ausführbar setzen: `chmod +x scripts/flash.sh`

Die genaue Anleitung für den Upload findest du unter: http://openwrt.org/GettingStartedTips.

== Spezial-Zeug ==

=== PPTP ===
PPTP ist für mache DSL-Modems erforderlich.

Es ist als Teil des ''openwrt''-Pakets im boot-ROM auswählbar.

= mehr Handarbeit =
Dieser Abschnitt ist etwas älter (Mitte 02004) - damals war noch etwas mehr Handarbeit erforderlich. Also es ist wahrscheinlich nur noch als Referenz für spezielle Probleme geeignet.
Zeile 8: Zeile 96:
Zeile 10: Zeile 99:
= auf dem host = == auf dem host ==
Zeile 21: Zeile 110:
= compilieren = == compilieren ==
Zeile 40: Zeile 129:
 * eigentlich musste Dich da nur noch durchkaempfen, wenn Du besonderen Wert darauf legst, schliesslich hat p ja schon ein laufendes binary


= installieren =
 * eigentlich musste Dich da nur noch durchkaempfen, wenn Du besonderen Wert darauf legst, fertige Binaries gibt es auf:


== installieren ==
Zeile 58: Zeile 147:
> binary
> rexmt 1
> verbose
> trace
> put openwrt-g-code.bin }}}
binary
rexmt 1
verbose
trace
put openwrt-g-code.bin }}}
Zeile 66: Zeile 155:
= Administration = == Administration ==
Zeile 69: Zeile 158:
 1.src openwrt http://openwrt.ksilebo.net/ipkg src openwrt http://openwrt.org/ipkg
Zeile 73: Zeile 162:
 * nachdem ssh installiert wurde, kann z.B. telnet geloescht werden, indem das file ''/etc/init.d/!S50Services'' aus ''/rom'' kopiert und der symlink geloescht wurde. Dann die Zeile mit telnet auskommentieren. Diese Beschreibung spar ich mir ab jetzt.  * nachdem ssh installiert wurde, kann z.B. telnet gelöscht werden, indem das file ''/etc/init.d/!S50Services'' aus ''/rom'' kopiert und der symlink gelöscht wurde. Dann die Zeile mit telnet auskommentieren. Diese Beschreibung spar ich mir ab jetzt.
Zeile 76: Zeile 165:
  * mode master (also ap): zusaetzlich noch {{{ wl infra 1}}}   * mode master (also Access Point): zusätzlich noch {{{ wl infra 1}}}
Zeile 80: Zeile 169:
  * Quelle: http://openwrt.ksilebo.net/forum/viewtopic.php?t=20&highlight=nvram
Zeile 83: Zeile 171:


* ungetestet: um logging zu aktivieren, die folgenden beiden Zeilen nach ''/etc/inittab'' schreiben:
  *
{{{::respawn:/sbin/syslogd -n }}}
  * {{{::respawn:/sbin/klogd -n }}}
 * ungetestet: um logging zu aktivieren, die folgenden beiden Zeilen nach ''/etc/inittab'' schreiben: {{{
::respawn:/sbin/syslogd -n
::respawn:/sbin/klogd -n }}}
Zeile 89: Zeile 175:
  * remote loggen geht auch, siehe http://openwrt.ksilebo.net/MiniHowtos   * remote loggen geht auch, siehe http://openwrt.org/MiniHowtos
Zeile 92: Zeile 178:
== kismet == === kismet ===
Zeile 103: Zeile 189:
== config-Beispiele == === config-Beispiele ===
Zeile 105: Zeile 191:
  * WRT:
   *
brctl delif br0 eth1 #eth1 aus der bridge entfernen
   * wl ap 0
   * wl infra 0 # jetzt im ad-hoc-mode
   * wl ssid foo
   *
ifconfig eth1 192...
 
* host:
   * das Uebliche: iwconfig eth1 mode ad-hoc;iwconfig eth1 essid foo;ifconfig eth1 ...
  * WRT: {{{
brctl delif br0 eth1 ;# eth1 aus der bridge entfernen
wl ap 0
wl infra 0           ;# jetzt im ad-hoc-mode
wl ssid foo
ifconfig eth1 192... }}}
* host:
   * das Übliche: {{{
iwconfig eth1 mode ad-hoc
iwconfig eth1 essid foo
ifconfig eth1 ... }}}
Zeile 117: Zeile 206:
   * das Uebliche: iwconfig eth1 mode ad-hoc;iwconfig eth1 essid foo;ifconfig eth1 ...    * das Übliche: {{{
iwconfig eth1 mode ad-hoc
iwconfig eth1 essid foo
ifconfig eth1 ... }}}
Zeile 121: Zeile 213:
 * openwrtfaq: http://openwrt.ksilebo.net/OpenWrtFaq
 * NVRAM settings: http://openwrt.ksilebo.net/Wrt54gNVRAM
 * led codes: http://openwrt.ksilebo.net/wrtLEDCodes
 * openwrtfaq: http://openwrt.org/OpenWrtFaq
 * NVRAM settings: http://openwrt.org/OpenWrtNVRAM
 * led codes: http://openwrt.org/wrtLEDCodes
Zeile 127: Zeile 219:
 * Mini Howtos (da kommt die logging info her): http://openwrt.ksilebo.net/MiniHowtos  * Mini Howtos (da kommt die logging info her): http://openwrt.org/MiniHowtos
Zeile 131: Zeile 223:
 * Falls Du verkackt hast und der WRT tot ist, dann gibts tipps im Forum von openwrt. Falls alles nix hilft: Gehaeuse oeffnen (Schnappverschluss, aber Garantieverlust) und pin 15 und 16 vom flash chip kurzschliessen, dann die kiste anmachen (das war nur die Kurzbeschreibung, es gibt ne eigene Seite von jemandem namens void main im forum verlinkt).  * Falls Du verkackt hast und der WRT tot ist, dann gibts tipps im Forum von openwrt. Falls alles nix hilft: Gehäuse öffnen (Schnappverschluss, aber Garantieverlust) und pin 15 und 16 (für WRT54G - nicht WRT54GS!) vom flash chip kurzschließen, dann die Kiste anmachen (das war nur die Kurzbeschreibung - hier gibt es mehr: http://voidmain.is-a-geek.net:81/redhat/wrt54g_revival.html). Das Ganze ist viel einfacher, als es klingt, aber wohl trotzdem ein wenig gefährlich :)

TableOfContents


Die folgende Doku beschreibt die Installation der Distribution openwrt auf einem Linksys-WRT54G.

der leichte Weg

Vorbereitung

Programme auf dem Host installieren

Unter [http://debian.org debian] genügt: apt-get install tftp telnet

Falls du das Image selbst bauen willst, dann brauchst du noch ein paar mehr Pakete, unter anderem:

gcc binutils patch bzip2 flex bison make gettext unzip zlib1g-dev libc6-dev

boot_wait aktivieren

Die einfache Methode, ein neues Image hochzuladen, ist per tftp während des Bootvorgangs.

Dafür musst du das boot_wait-Flag des Routers aktivieren. DAS IST SEHR WICHTIG!

(Infos: http://openwrt.org/OpenWrtDocs/Installing#head-76921c79e7c7ed3b03d3bc9a40b1a2c792c215b0)

Folgendes Kommando nutzt einen Bug des Linksys-APs aus, um das boot_wait-Flag zu setzen, während er noch die originales Firmware enthält:

for PING_IP in '%3Btrue' '%3Bcp%24%7BIFS%7D*%2F*%2Fnvram%24%7BIFS%7D%2Ftmp%2Fn' '%3B*%2Fn%24%7BIFS%7Dset%24%7BIFS%7Dboot_wait%3Don' '%3B*%2Fn%24%7BIFS%7Dcommit' '%3B%2Fsbin%2Freboot'
#for PING_IP in '%3B%2F*%2Fcp%24%7BIFS%7D%2F*%2F*%2Fnv*%24%7BIFS%7D%2Ftmp%2Fn' '%3B%2F*%2Fn%24%7BIFS%7Dset%24%7BIFS%7Dboot_wait%3Don' '%3B%2F*%2Fn%24%7BIFS%7Dcommit' # '%3B%2Fsbin%2Freboot'
                        do
                        POST_DATA='submit_button=Ping&submit_type=start&action=Apply&change_action=gozila_cgi&ping_ip='"$PING_IP"'&ping_times=5'
    #echo "Aktion: $PING_IP"
    #echo -e "$POST_DATA\n---" | lynx -auth=admin:admin -post_data http://192.168.1.1/apply.cgi > /dev/null
                        wget -q -O /dev/null --http-user=admin --http-passwd=admin --post-data="$POST_DATA" http://192.168.1.1/apply.cgi
                        [ $? != 0 ] && {
                                        echo -e '\nFehler beim Aktivieren von boot_wait!'
                                        exit 1
                        }
                        echo -n "."
                done 

Vorher musst du dem WAN-Interface eine IP-Adresse geben.

Das Original-Skript zum setzen des boot_wait-Flags findest du unter: http://aachen.uni-dsl.de/download/wrt/Releases/rev90/buildroot-rev90/takeover

ROM-Image

Entweder installierst du ein fertiges Image - das geht schön schnell.

Oder du baust dir dein eigenes: dauert zwei Stunden länger und ist flexibler.

fertiges Image verwenden

Unter http://openwrt.org/downloads/experimental/bin/ liegen fertige Images.

Welches der beiden Dateisysteme (jffs2 oder squashfs) du wählst, ist meines Wissens nach egal. Ich habe jffs2 genommen.

Das Hochladen des Images ist unter http://openwrt.org/GettingStartedTips sehr gut beschrieben.

selberbauen

Das ist ziemlich einfach geworden - also keine Angst :)

Das Quellen-Paket (tar.bz2) liegt unter http://openwrt.org/downloads/experimental/.

  1. auspacken: tar xjf experimental.tar.bz2

  2. konfigurieren: cd openwrt; make menuconfig

Die Voreinstellungen sind schon ziemlich sinnvoll. Falls du Veränderungen vornehmen willst, dann solltest du auf folgende Punkte achten:

  • Kernelpakete lassen sich als Modul oder statisch einbinden
  • seltsamerweise kannst du auch Programm-Pakete als Modul anwählen (M anstelle von *) - diese Pakete werden jedoch NICHT installiert - wähle sie also immer nur per * aus

  • das ifupdown-Paket scheint nicht korrekt zu funktionieren (Stand: Mai 02005) - danach war keine Netzverbindung möglich (du kannst jedoch weiterhin ein neues ROM per tftp hochladen)

  • wahrscheinlich brauchst du mknod (standardmäßig nicht angewählt) - z.B. für /dev/ppp

Zum Erstellen der Pakete tippe einfach make. Beim ersten Mal werden dabei die Quellen der gewählten Pakete aus dem Netz geholt.

Die fertigen Pakete liegen anschließend unter bin/.

Das Skript zum Hochladen ist scripts/flash.sh:

cd bin; ../scripts/flashs.sh openwrt-wrt54g-jffs2.bin linksys ; cd .. 

Hinweise:

  • dein Netzwerk-Interface sollte eine IP im Bereich 192.168.1.x (mit x ungleich 1) haben

  • kurz bevor du das Skript ausführst, musst du den Linksys neustarten
  • du musst dich im Verzeichnis mit dem Image befinden, weil die Dateiangabe für tftp keinen Pfad beinhalten darf

  • eventuell musst du vorher das flash-Skript als ausführbar setzen: chmod +x scripts/flash.sh

Die genaue Anleitung für den Upload findest du unter: http://openwrt.org/GettingStartedTips.

Spezial-Zeug

PPTP

PPTP ist für mache DSL-Modems erforderlich.

Es ist als Teil des openwrt-Pakets im boot-ROM auswählbar.

mehr Handarbeit

Dieser Abschnitt ist etwas älter (Mitte 02004) - damals war noch etwas mehr Handarbeit erforderlich. Also es ist wahrscheinlich nur noch als Referenz für spezielle Probleme geeignet.

BEWARE: selbst nochmal die docs lesen, sonst ist das Teil schnell Schrott!

Ich habs selbst geschafft, als ich versucht hab, das Ganze auf ppc zu compilen -> siehe naechsten Ansatz.

auf dem host

  • apt-get install tftp telnet

  • wenn mensch sich aufm nicht-x86-Rechner befindet, dann sollte sich ein anderer Rechner gesucht werden. Es sind zwei binaere tools dabei, die sind fuer x86, ich hab qemu benutzt, um sie trotzdem auszufuehren. Schien auch alles zu klappen, nach dem flashen sagte das Teil allerdings keinen Piep mehr. Muss allerdings nicht unbedingt daran gelegen haben, darum im folgenden trotzdem die Anleitung:
    • qemu (apt-get install qemu) und /qemu-gnemul (http://fabrice.bellard.free.fr/qemu/) installieren. Dann vor die folgenden Zeilen qemu-i386 setzen

      $(WRT54G_DIR)/release/tools/trx -o openwrt-linux.trx \
      $(WRT54G_DIR)/release/tools/addpattern -i openwrt-linux.trx \ 
  • folgende Skripte ausm Netz ziehen und +x in den path legen:
    • ipkg-buildpackage
    • ipkg-build
    • ipkg-make-index

compilieren

installieren

  • in der host box dhcpcd/dhclient eth0
  • Internet port einstellen (Setup). wird nicht genutzt, nur einstellen.
  • ping testen (administration/diagnostics)
  • wenn ping geht: ;ls>tmp/ping.log sollte ein directory listing bringen.

  • dann folgende 3 Zeilen bei ping eingeben:

    ;cp${IFS}*/*/nvram${IFS}/tmp/n
    ;*/n${IFS}set${IFS}boot_wait=on
    ;*/n${IFS}commit 
  • dadurch wurde die Variable boot_wait gesetzt. Nun kann mensch tftpen, ohne das Teil zu killen. lieber nochmal nachgucken unter http://openwrt.ksilebo.net

  • alle Variablen anzeigen lassen geht mit ;*/n${IFS}show>tmp/ping.log

  • jetzt hat das Teil beim Booten ne 3s-Zeitspanne fuer tftp, da kann es geflasht 192.168.1.1 werden:
    • Stecker des routers ziehen
    • tftp mit 192.168.1.1 starten, alles bis inkl letzte Zeile, aber exkl. <enter> bei stromlosem Router

      tftp 192.168.1.1 
      binary 
      rexmt 1 
      verbose 
      trace 
      put openwrt-g-code.bin 
    • router anmachen, 0.5-2 s warten, dann enter drücken, ums binary abzusenden.
  • das Teil hat kein Passwort, wenn also doch eins erwartet wird, dann warste beim flashen nicht schnell genug.

Administration

  • es gibt ein romfs, das ist das Basissystem. Was $user sieht, das ist ein jffs, das aus symlinks aufs rom besteht. Wenn $user also was veraendern moechte, dann löscht er/sie den entsprechenden Symlink und kopiert das file aus /rom/quelle nach /ziel.
  • ipkg einrichten. Das ist meine ipkg.conf:

    src openwrt http://openwrt.org/ipkg
    src _marc_ http://wrt54g.free.fr/openwrt/b4/ipkg/
    dest root /
    dest ram /tmp 
  • nachdem ssh installiert wurde, kann z.B. telnet gelöscht werden, indem das file /etc/init.d/!S50Services aus /rom kopiert und der symlink gelöscht wurde. Dann die Zeile mit telnet auskommentieren. Diese Beschreibung spar ich mir ab jetzt.

  • iwconfig scheint irgendwie nicht zu funktionieren. Zeigt alles ok an, aber irgendwie isses komisch. Also: das ipkg-Paket wl installieren. beim _marc_ repository isses dabei.
    • mode managed mit wl:  wl ap 1

    • mode master (also Access Point): zusätzlich noch  wl infra 1

    • mode ad-hoc: beides 0
    • essid:  wl ssid <ssid>

  • um ein ad-hoc-Netzwerk einzurichten, muss erstmal die bridge br0 entfernt werden. dafuer hab ich ne ganze Weile gebraucht ;>

    • Kommando: brctl delif br0 eth1

  • ungetestet: um logging zu aktivieren, die folgenden beiden Zeilen nach /etc/inittab schreiben:

    ::respawn:/sbin/syslogd -n
    ::respawn:/sbin/klogd -n 
    • nach /etc/init.d/rcS noch  mkdir /var/log  schreiben, weil /var sonst nach /tmp symlinkt.

    • remote loggen geht auch, siehe http://openwrt.org/MiniHowtos

  • ungetestet: wer ne schoene Statuswebsite a la http://rrust.com/sysinfo/rrdtool-graphs/openwrt-index.php haben will (und BTW waere das auch fuer andere Boxen nett), dem/der wird ebenfalls auf der Seite http://openwrt.ksilebo.net/MiniHowtos geholfen.

kismet

  • auf dem wrt:
    • kismet installieren, in der /etc/kismet... eth1 einstellen,
    • kismet_drone starten, das tool sagt dann, wo es hoert
  • aufm host:
    • kismet_server -c drone,ipadresse:port,drone
    • oder, ab v.2004.3: kismet_server -c kismet_drone,ipadresse:port,drone
    • kismet_client
    • fertisch.

config-Beispiele

  • ad-hoc-Verbindung zwischen WRT und nem anderen Rechner (host genannt)
    • WRT:

      brctl delif br0 eth1 ;# eth1 aus der bridge entfernen
      wl ap 0
      wl infra 0           ;# jetzt im ad-hoc-mode
      wl ssid foo
      ifconfig eth1 192... 
  • host:
    • das Übliche:

      iwconfig eth1 mode ad-hoc
      iwconfig eth1 essid foo
      ifconfig eth1 ... 
  • WRT ist client fuer ne ad-hoc-Verbindung zu nem anderen Rechner
    • WRT:
    • Rechner am WRT:
    • anderer Rechner:
      • das Übliche:

        iwconfig eth1 mode ad-hoc
        iwconfig eth1 essid foo
        ifconfig eth1 ... 

allgemeine URLS

misc

  • auf den Buffalo WBR54G and the ASUS WL-500G solls auch laufen, wenn die billiger sind, dann koennen wir ja mal gucken.
  • Falls Du verkackt hast und der WRT tot ist, dann gibts tipps im Forum von openwrt. Falls alles nix hilft: Gehäuse öffnen (Schnappverschluss, aber Garantieverlust) und pin 15 und 16 (für WRT54G - nicht WRT54GS!) vom flash chip kurzschließen, dann die Kiste anmachen (das war nur die Kurzbeschreibung - hier gibt es mehr: http://voidmain.is-a-geek.net:81/redhat/wrt54g_revival.html). Das Ganze ist viel einfacher, als es klingt, aber wohl trotzdem ein wenig gefährlich :)

WRT54GmitOpenWRT (zuletzt geändert am 2012-06-13 21:26:27 durch anonym)


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.