Openwrt auf der Easybox 802

Ich musste mal wieder einen Router bauen, da ein Blitzschlag das gute Stück im Haus meiner Familie gegrillt hat. Da bei E-Bay gerade Unmengen an den technisch ziemlich verlockenden Easyboxen von Vodafone herumfliegen, habe ich mal versucht das alte Setup auf diese zu übertragen. Dazu gehört:

  • OpenWrt mit Upgrade-Möglichkeit ( Attitude Adjustment )
  • stabiles W-Lan
  • USB-Speicher mit Raid-1
  • nginx + OpenSSL
  • Samba-Server
  • genügend freier RAM um nicht bei der erst besten Belastung in die Knie zu gehen

Zuerst hatte ich eine 803, da ist das U-Boot wohl noch nicht so ganz fertig und nach einem missglückten Flash-Versuch konnte ich der Box auch mit UART kein Leben mehr einflößen. Für läppische 8 Euro hatte ich dann mit einer 802 mehr Glück. Die wichtigsten Punkte und Details zum Flashen finden sich ( oder werden sich finden) im OpenWrt Wiki.

Der grobe Installations-Weg ist folgender:

  • Serielle Konsole anstoepseln
  • Booten und brnboot u-boot als second stage bootloader im Ram starten.
  • von diesem U-Boot aus flash u-boot flashen
  • Neustarten und Daumen drücken, dass alles geklappt hat
  • Autoboot schnell unterbrechen, da der httpd irgendwie das Netzwerk kaputt macht
  • mit tftp das attitude adjustment Standard-Image installieren

Für das externe Root-Filesystem über USB mit Raid1 musste ich nachträglich noch einige Änderung durchführen. Prinzipiell ist auch hier das OpenWRT Wiki sehr hilfreich. Zuersteinmal musste ich die notwendigen Pakete installieren:

opkg update
opkg install block-mount kmod-usb-core kmod-usb-storage \
    kmod-usb-dwc-otg kmod-fs-ext4 kmod-md-raid1 \
    kmod-md-mod mdadm e2fsprogs

Das Raid-1 auf den beiden angeschlossenen USB-Sticks installieren und mdadm.conf erzeugen:

mdadm --create /dev/md0 --raid-devices 2 --level 1 /dev/sda1 /dev/sdb1
mkfs.ext4 -m0 /dev/md0
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Um das extroot dann zu aktivieren gibt es noch zwei Dinge zu tun. Die /etc/config/fstab um folgenden Eintrag ergänzen:

config mount
    option target /overlay
    option device /dev/md0
    option fstype ext4
    option options rw,sync
    option enabled 1
    option enabled_fsck 0

Leider startet OpenWRT Raid-Devices nicht automatisch und ich musste in /lib/preinit/ etwas herumpfuschen. Nach dem Laden der Module scannt determine_external_root() einfach nach Raid-Devices. Danach sollte /dev/md0 existieren und alles rund laufen:

--- /dev/null   2013-08-23 21:06:27.808249859 +0200
+++ 50_determine_usb_root2013-08-23 21:06:32.941570704 +0200
@@ -37,6 +37,8 @@
    # /dev/root
    [ "$root_device" = "/dev/root" ] && {
        er_load_modules
+       sleep 5s
+       /tmp/overlay/sbin/mdadm --assemble --scan -c /tmp/overlay/etc/mdadm/mdadm.conf
        [ -n "$extroot_settle_time" ] && [ "$extroot_settle_time" -gt 0 ] && {
            sleep $extroot_settle_time
        }

Und so sieht sieht der fertige Router dann aus:

htop-easybox

root@router1:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    3.7G      1.1G      2.6G  29% /
/dev/root                 1.8M      1.8M         0 100% /rom
tmpfs                    30.2M      268.0K   30.0M   1% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/md0                  3.7G      1.1G      2.6G  29% /overlay
Overlayfs:/overlay        3.7G      1.1G      2.6G  29% /

easybox 802


Written by Michael in linux on Fri 23 August 2013. Tags: openwrt, uboot,

Comments

comments powered by Disqus