Zum Inhalt springen

WRAP: Unterschied zwischen den Versionen

Aus Opennet
Inhalt gelöscht Inhalt hinzugefügt
MathiasMahnke (Diskussion | Beiträge)
Imagebuilder
 
(19 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
x86 Wireless Router Application Platform Boards, siehe http://www.pcengines.ch/wrap.htm
x86 Wireless Router Application Platform Boards, siehe http://www.pcengines.ch/wrap.htm


== Überblick ==
=== OpenWrt Installation ===
=== Hardware ===


Es existieren verschiedene Versionen. Wir setzen vor allem das WRAP 2e ein:
Auf diesem x86-basiertem Board läuft neben zahlreichen Debian/GNU-Linux Deviraten auch OpenWrt Kamikaze, dem aktuellen Entwicklungszweig von http://openwrt.org.
* 233 MHz Geode SC1100 CPU
* 64 oder 128 MB RAM
* Compact Flash Interface
* 2x Mini-PCI Schnittstelle (z.B. zwei Wifi-Karten)
* 1x drahtgebundene Ethernet Schnittstelle mit PoE
* Serieller Anschluss (Console)


WRAP-Gehäuse: [[Bauanleitungen#Umbau_WRAP_Box_N-Buchse]] (preiswert) od. [[Meshnode]] (professionell)
Opennet-Repository für vorkompiliertes Images und Pakete: http://www.opennet-initiative.de/firmware/kamikaze/


==== Kurzanleitung Image bauen ====
=== OpenWrt ===
* OpenWrt Kamikaze Quellen via ''svn'' besorgen, siehe http://dev.openwrt.org
* ggf. Opennet-kompatibles Makefile von http://www.opennet-initiative.de/firmware/kamikaze/.config übernehmen
* eigene Dateien für das Image ggf. nach ''trunk/files'' ablegen
* ''make menuconfig'' -- x86 Plattform, alle weiteren Einstellungen nach Bedarf
* ''make'' -- OpenWrt Images bauen, sind dann in ''bin/'' zu finden
* ''dd if=<openwrt-x86-?-?.image> of=<ziel-device> bs=512k'' -- Festplattenimage auf die CompactFlash-Karte schreiben (am besten über einen Cardreader, <ziel-device> ist der Cardreader-Devicenode)
* Hinweis Booten, bei DMA-Problemen via Grub noch ''ide=nodma'' als Bootoption hinzufügen (ggf. bei menuconfig fest vorgeben: Target Images > Extra kernel boot options)


Auf diesem x86-basiertem Board läuft neben zahlreichen Debian/GNU-Linux Deviraten auch OpenWrt Kamikaze, dem aktuellen Entwicklungszweig von http://openwrt.org.
==== Hinweise zum Dateisystem ====
* *.image-Dateien sind komplette Festplatten-Images incl. Partitionstabelle und MBR mit GRUB
* *.fs-Dateien sind reine Partitionsimages
* Wahl zwischen Squashfs+Jffs2 (mit mini_fo Overlay), nur Jffs2 oder Ext2 als Root-Dateisystem
* 1024 Zylinergrenze beachten, sonst LBA notwendig, ideal -> Partition < 490 MB
* Jffs2 ist zu bevorzugen, weil journaling und stabiler bei Stromverlust


== Opennet x86 WRAP Firmware Anpassung, OpenWrt Kamikaze 7.07 ==
==== Grundkonfiguration ====
* da es einige Probleme mit nicht reagierenden WRAPs gab, wurde im aktuellen Image der hardware-watchdog aktiviert.
* die Systemzeit wird nun opennet-spezifisch mit unseren Gateways synchronisiert, reboots werden im Start-Banner vermerkt so dass watchdog-reboots nachvollzogen werden können.
* als default ssh-deamon läuft nun openssh auf Port 22, dropbear läuft auf Port 10022, in der Hoffnung, dass bei auftretenden Problemen wenigstens einer erreichbar bleibt.
aktuelle WRAP-Systeme im Opennet haben 4 ext2fs Partitionen, zwei boot- (hda1 / hda3, je 4MB) und zwei root- (hda2 / hda4, je 16MB) Partitionen. Dies erlaubt ein remote update im laufenden Betrieb, indem die jeweils anderen Partitionen mit dem neuen System überschrieben werden. Die folgenden scripte setzen entsprechend konfigurierte Partitionen voraus.
** sync_spare_partition_config: Synchronisiert Netzwerkeinstellungen, Passwort und host-keys vom Ersatz-System mit dem Arbeitssystem (oder umgekehrt, Quelle ist jeweils das aktuell aktive System)
** grub-install-wrap: schreibt den Boot-Loader neu, Parameter erlauben die Auswahl zwischen normaler oder zusätzlicher Boot-Partition.
** grub-switch-active-system: Wechselt das aktuelle System (vom Arbeitssystem zum Ersatzsystem oder zurück). Nach dem Aufruf muss der WRAP neu gestartet werden.
** install_new_system: erwartet ein neues kernel (boot) und ein neues filessystem Image in /tmp und installiert dieses auf den unbenutzten Partitionen.
** clean_restart_log: Startzeiten werden beim login angezeigt. Mit diesem Script werden aufgezeichnete Startzeiten aus dem log entfernt.
** reboot: ein script ersetzt den vorhandenen reboot-Befehl und sync't die Partition vor einem Neustart


== Downloads ==
Mit Opennet Kamikaze Firmware Image:
* [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/bin/openwrt-x86-2.6-ext2.image gesamtes Image], enthält die boot und die root Partition. Nach der Installation müssen mit fdisk zwei weitere Partitionen angelegt werden, sonst ist ein remote-update oder ein Wechsel zum backup-system nicht möglich.
* Passwort mit ''passwd' setzen; ggf. ''/etc/dropbear/authorized_keys'' mit Public-Key versorgen
* [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/bin/openwrt-x86-2.6-ext2.image.kernel boot-] [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/bin/openwrt-x86-2.6-ext2.fs root-] Image für die Installation mit dem 'install_new_system'-script
* Autostart-Dienste mit ''/etc/init.d/<dienst> enable|disable'' einrichten (z.B. olsrd)
* weitere Downloads unter http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/
* Netzwerk in ''/etc/config/network'' konfigurieren
* Drahtloses Schnittstellen in ''/etc/config/wireless'' konfigurieren
* WRAP neu starten


=== Aktualisierung eines bestehenden Systems ===
Siehe auch http://wiki.openwrt.org/OpenWrtDocs/KamikazeConfiguration
* (Partitionen /dev/hda3 mit >=4MB und /dev/hda4 mit >=16MB erstellen, wenn nicht vorhanden)

* [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/bin/openwrt-x86-2.6-ext2.image.kernel boot-Image] auf den WRAP in /tmp laden
=== OpenWrt Pakete ===
* [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/bin/openwrt-x86-2.6-ext2.fs root-Image] auf den WRAP in /tmp laden

* install_new_system aufrufen
==== Kurzanleitung Pakete bauen ====
** wenn das script noch nicht vorhanden ist, [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/install_new_system install_new_system] herunterladen und nach /usr/sbin kopieren.

* Ausgabe des scripts vor einem Neustart prüfen. Wenn Fehler aufgetreten sind und grub dennoch ausgeführt wurde, kann es sein das nach einem reboot ein nicht funktionierendes System gestartet werden soll.
Eine erste kurze Anleitung, um auf das vielfälltige OpenWrt Paketarchiv zuzugreifen und darauf iPK Pakete zu erstellen.

* Sourcen auschecken (liegen dann in openwrt/packages/):
cd openwrt/
svn co https://svn.openwrt.org/openwrt/packages
* Libaries in OpenWrt-Trunk-Baum einbinden (liegt unter openwrt/)
cd ../trunk/package
ln -s ../../packages/libs/* .
* gewünsches Paket einbinden
ln -s ../packages/<bereich>/<packet> .
cd .

Anschliessend wie gehabt per ''make menuconfig'' das Paket auswählen, "M" drücken (Paket erstellen) und anschliessend OpenWrt mit ''make'' bauen. Die erstellen Pakete werden nach ''bin/packages/'' abgelegt und automatisch in den Index ''bin/packages/Packages'' hinzugefügt.

==== madwifi mit Ad-Hoc Device ====

* iPK Paket ''kmod-madwifi'' installieren
* Wireless-Konfigurationdatei unter ''/etc/config/wireless'' bearbeiten, z.B.:
config wifi-device wifi0
option type atheros
option channel 50
config wifi-iface
option device wifi0
option mode "ad-hoc"
option ssid "olsr-a.opennet-initiative.de"
config wifi-device wifi1
option type atheros
option channel 50
config wifi-iface
option device wifi1
option mode "ad-hoc"
option ssid "olsr-a.opennet-initiative.de"
* IP-Konfiguration in ''/etc/config/network'' anfügen:
config interface wifi0
option ifname ath0
option proto static
option ipaddr 192.168.33.27
option netmask 255.255.0.0
config interface wifi1
option ifname ath1
option proto static
option ipaddr 192.168.33.27
option netmask 255.255.0.0
* WRAP neu starten
* WRAP neu starten


=== Erstinstallation eines WRAP ===
Siehe auch http://madwifi.org/wiki/UserDocs/FirstTimeHowTo
* [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/bin/openwrt-x86-2.6-ext2.image gesamtes Image] herunterladen und z.B. mit ''dd if=openwrt-x86-2.6-ext2.image of=<ziel-device> bs=512k'' -- Festplattenimage auf die CompactFlash-Karte schreiben (am besten über einen Cardreader, <ziel-device> ist der Cardreader-Devicenode)

* (Karte einbauen, WRAP starten)
==== ntpclient zur Zeitsyncronisation ====
* /etc/config/network /etc/config/wireless müssen angepasst werden, default IP ist 192.168.33.42 im opennet-olsr

* mit fdisk zwei neue Partitionen (hda3 4MB, hda4 16MB) anlegen
* iPK Paket ''ntpclient'' installieren
* (am besten gleich parallel ein weiteres System installieren, ist sinnvoll als Backup-Lösung und für spätere remote-updates. Genau wie bei [[WRAP#Aktualisierung eines bestehenden Systems]] beschrieben vorgehen)
* Datei /etc/init.d/ntpclient anlegen (beispielhaft):
#!/bin/sh /etc/rc.common
START=80
ntp=izumi.on
boot() {
while true; do
ping -c 1 $ntp >/dev/null 2>&1 && ntpclient -s -c 0 \
-i 5 -g 1000000 -h $ntp && return
sleep 3
done
}
* diese ausführbar machen per ''chmod +x ntpclient''
* als Autostart festlegen durch ''./ntpclient enable''

==== monit zur Diensteüberwachung ====

* iPK Paket ''monit'' installieren
* Konfigurationsdatei bearbeiten, zur Überwachung von olsrd z.B.
set daemon 120
set logfile syslog facility log_daemon
set httpd port 2812 # and
allow localhost # allow localhost to connect to the server and
allow 192.168.0.0/16
check process olsrd
with pidfile "/var/run/olsrd.pid"
start program = "/etc/init.d/olsrd start"
stop program = "/etc/init.d/olsrd stop"
* hierzu noch die Erstellung eines pid-Files in ''/etc/init.d/olsrd'' ergänzen
#!/bin/sh /etc/rc.common
BIN=olsrd
DEFAULT=/etc/default/olsrd
RUN_D=/var/run
PID_F=$RUN_D/$BIN.pid
start() {
[ -f $DEFAULT ] && . $DEFAULT
mkdir -p $RUN_D
$BIN $OPTIONS
pidof $BIN > $PID_F
}
stop() {
[ -f $PID_F ] && kill $(cat $PID_F)
}
* monit starten per ''/etc/init.d/monit start''
* Webzugriff per http://<node-ip>:2812/


== Image-Erstellung ==
==== maradns als DNS-Server ====
* aktuellen [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/OpenWrt-ImageBuilder-x86-2.6-for-Linux-i686.tar.bz2 Kamikaze-ImageBuilder] herunterladen und entpacken.
* Anpassungen (http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/files.tgz) herunterladen und im ImageBuider-Verzeichnis entpacken.
* [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/grub_0.97-1_i386.ipk Paket grub], [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/7.07/diffutils_2.8.1-1_i386.ipk Paket diffutils] ins Verzeichnis packages laden
* Image compilieren, dabei darauf achten, dass alle notwendigen Pakete gefunden werden. (Als Paketquelle ist neben http://downloads.openwrt.org/snapshots/x86-2.6/packages/ auch http://downloads.x-wrt.org/xwrt/kamikaze/x86-2.6/packages/ gut geeignet) - [http://www.opennet-initiative.de/firmware/kamikaze/kamikaze-x86-rene/r7275/make_it.sh hier] gibts das folgende als script.
make image PACKAGES="haserl ip kmod-madwifi kmod-natsemi libopenssl libpthread ntpclient olsrd olsrd-mod-httpinfo
olsrd-mod-nameservice openssl-util webif webif-lang-de webif-theme-xwrt webif-theme-zephyr wireless-tools zlib
tcpdump iptables-mod-extra kmod-ipt-extra kmod-scx200-wdt kmod-scx200-gpio kmod-nsc-gpio openssh-server e2fsprogs
fdisk grub diffutils" FILES=files/ V=99


== Problemlösung ==
* iPK Paket ''maradns'' installieren
* '''neues System ist doch nicht so toll''': Wurde das System mit 'install_new_system' installiert, sollte der WRAP noch zwei zusätzliche Partitionen mit einem älteren System enthalten. In dieses System kann durch Aufruf von grub-switch-active-system und einen anschliessenden Neustart gewechselt werden.
* Konfigurationsdatei ''/etc/mararc'' bearbeiten und z.B. für rekursive Namensauflösung über zwei Upstream-Server konfigurieren:
hide_disclaimer="YES"
chroot_dir="/etc/maradns"
bind_address="172.0.0.1""
maradns_uid=65534
maxprocs=10
random_seed_file="/dev/urandom"
recursive_acl="127.0.0.1/8"
upstream_servers = {}
upstream_servers["."] = "192.168.0.250, 192.168.0.254"
verbose_level=3
verbose_query=1
* maradns starte per ''/etc/init.d/maradns start'', dauerhaft per ''maradns enable''
* Anfragen per ''askmara'' oder wie üblich ''nslookup'' & Co.


=== OpenWrt Imagebuilder ===
== Meshnode ==


Siehe [[Meshnode]].
Mit Hilfe des Imagebuilders lassen sich komplette Images aus bereits kompilierten Paketen recht einfach zusammenstellen.


[[Kategorie:Access points]]
Doku siehe http://wiki.openwrt.org/ImageBuilderHowTo.

Aktuelle Version vom 16. Juni 2011, 18:58 Uhr

x86 Wireless Router Application Platform Boards, siehe http://www.pcengines.ch/wrap.htm

Überblick

Hardware

Es existieren verschiedene Versionen. Wir setzen vor allem das WRAP 2e ein:

  • 233 MHz Geode SC1100 CPU
  • 64 oder 128 MB RAM
  • Compact Flash Interface
  • 2x Mini-PCI Schnittstelle (z.B. zwei Wifi-Karten)
  • 1x drahtgebundene Ethernet Schnittstelle mit PoE
  • Serieller Anschluss (Console)

WRAP-Gehäuse: Bauanleitungen#Umbau_WRAP_Box_N-Buchse (preiswert) od. Meshnode (professionell)

OpenWrt

Auf diesem x86-basiertem Board läuft neben zahlreichen Debian/GNU-Linux Deviraten auch OpenWrt Kamikaze, dem aktuellen Entwicklungszweig von http://openwrt.org.

Opennet x86 WRAP Firmware Anpassung, OpenWrt Kamikaze 7.07

  • da es einige Probleme mit nicht reagierenden WRAPs gab, wurde im aktuellen Image der hardware-watchdog aktiviert.
  • die Systemzeit wird nun opennet-spezifisch mit unseren Gateways synchronisiert, reboots werden im Start-Banner vermerkt so dass watchdog-reboots nachvollzogen werden können.
  • als default ssh-deamon läuft nun openssh auf Port 22, dropbear läuft auf Port 10022, in der Hoffnung, dass bei auftretenden Problemen wenigstens einer erreichbar bleibt.

aktuelle WRAP-Systeme im Opennet haben 4 ext2fs Partitionen, zwei boot- (hda1 / hda3, je 4MB) und zwei root- (hda2 / hda4, je 16MB) Partitionen. Dies erlaubt ein remote update im laufenden Betrieb, indem die jeweils anderen Partitionen mit dem neuen System überschrieben werden. Die folgenden scripte setzen entsprechend konfigurierte Partitionen voraus.

    • sync_spare_partition_config: Synchronisiert Netzwerkeinstellungen, Passwort und host-keys vom Ersatz-System mit dem Arbeitssystem (oder umgekehrt, Quelle ist jeweils das aktuell aktive System)
    • grub-install-wrap: schreibt den Boot-Loader neu, Parameter erlauben die Auswahl zwischen normaler oder zusätzlicher Boot-Partition.
    • grub-switch-active-system: Wechselt das aktuelle System (vom Arbeitssystem zum Ersatzsystem oder zurück). Nach dem Aufruf muss der WRAP neu gestartet werden.
    • install_new_system: erwartet ein neues kernel (boot) und ein neues filessystem Image in /tmp und installiert dieses auf den unbenutzten Partitionen.
    • clean_restart_log: Startzeiten werden beim login angezeigt. Mit diesem Script werden aufgezeichnete Startzeiten aus dem log entfernt.
    • reboot: ein script ersetzt den vorhandenen reboot-Befehl und sync't die Partition vor einem Neustart

Downloads

Aktualisierung eines bestehenden Systems

  • (Partitionen /dev/hda3 mit >=4MB und /dev/hda4 mit >=16MB erstellen, wenn nicht vorhanden)
  • boot-Image auf den WRAP in /tmp laden
  • root-Image auf den WRAP in /tmp laden
  • install_new_system aufrufen
    • wenn das script noch nicht vorhanden ist, install_new_system herunterladen und nach /usr/sbin kopieren.
  • Ausgabe des scripts vor einem Neustart prüfen. Wenn Fehler aufgetreten sind und grub dennoch ausgeführt wurde, kann es sein das nach einem reboot ein nicht funktionierendes System gestartet werden soll.
  • WRAP neu starten

Erstinstallation eines WRAP

  • gesamtes Image herunterladen und z.B. mit dd if=openwrt-x86-2.6-ext2.image of=<ziel-device> bs=512k -- Festplattenimage auf die CompactFlash-Karte schreiben (am besten über einen Cardreader, <ziel-device> ist der Cardreader-Devicenode)
  • (Karte einbauen, WRAP starten)
  • /etc/config/network /etc/config/wireless müssen angepasst werden, default IP ist 192.168.33.42 im opennet-olsr
  • mit fdisk zwei neue Partitionen (hda3 4MB, hda4 16MB) anlegen
  • (am besten gleich parallel ein weiteres System installieren, ist sinnvoll als Backup-Lösung und für spätere remote-updates. Genau wie bei WRAP#Aktualisierung eines bestehenden Systems beschrieben vorgehen)

Image-Erstellung

make image PACKAGES="haserl ip kmod-madwifi kmod-natsemi libopenssl libpthread ntpclient olsrd olsrd-mod-httpinfo 
olsrd-mod-nameservice openssl-util webif webif-lang-de webif-theme-xwrt webif-theme-zephyr wireless-tools zlib 
tcpdump iptables-mod-extra kmod-ipt-extra kmod-scx200-wdt kmod-scx200-gpio kmod-nsc-gpio openssh-server e2fsprogs
fdisk grub diffutils" FILES=files/ V=99

Problemlösung

  • neues System ist doch nicht so toll: Wurde das System mit 'install_new_system' installiert, sollte der WRAP noch zwei zusätzliche Partitionen mit einem älteren System enthalten. In dieses System kann durch Aufruf von grub-switch-active-system und einen anschliessenden Neustart gewechselt werden.

Meshnode

Siehe Meshnode.