USB Stick für Ubiquity EdgeRouter (Lite, PoE) vorbereiten

Zum Wochenende funktionierte mein EdgeRouter POE nicht mehr richtig - laut Syslog Fehler im Dateisystem sowie im Block-Storage. Der Speicher war also hin. Einige hilfreiche Leute auf Mastodon wiesen mich darauf hin das die EdgeRouter intern einen USB-Stick haben den man einfach tauschen kann. So weit, so großartig.

Einen passenden Stick hatte ich noch. Passend: Der Stick darf nicht nennenswerterweise größer sein als der USB-Stecker selbst, denn die Buchse sitzt direkt auf der Platine. Die Bildersuche der Wahl hat Fotos auf denen man das recht gut erkennen kann. Ausserdem sollen wohl keine USB3-Sticks funktionieren. Das habe ich nicht ausprobiert.

Nun muss auf den Stick natürlich die Firmware, bevor der Router sie von ihm laden kann. Das geht per TFTP (ich hatte aber keine Lust einen Server aufzusetzen), alternativ gibt es ein kleines Rescue-Image von dem man booten und die Firmware quasi curlen kann. Das ist etwas ungünstig wenn der Router das einzige Gateway ist was grade zur Hand ist, denn Web ohne Internet ist etwas doof...

Dritte Alternative: Den Stick einfach am Rechner vorbereiten und die Firmware auspacken.

Wie ich das gemacht habe folgt hier, ich habe dazu quasi dieses Script aus dem UBNT-Forum per Hand ausgeführt.

Los geht es damit die Firmware zu besorgen. Zum Zeitpunkt dieses Posts ist die aktuelle Version v1.10.5 und ist hier verfügbar: https://www.ubnt.com/download/edgemax/edgerouter-lite

Danach den Stick partitioneren, ich gehe bei allen folgenden Befehlen davon aus das der Stick /dev/sdd ist - gegebenfalls bitte anpassen.

parted --script /dev/sdd mktable msdos
parted --script /dev/sdd -- mkpart primary fat32 1 150MB
mkfs.vfat /dev/sdd1
parted --script /dev/sdd -- mkpart primary ext3 150MB -1s
mkfs.ext3 -v /dev/sdd2

Jetzt einige temporäre Verzeichnise anlegen und die eben erstellten Partitionen mounten:

mkdir -p /tmp/edge/boot /tmp/edge/root /tmp/edge/firmware
mount -t vfat /dev/sdd1 /tmp/edge/boot
mount -t ext3 /dev/sdd2 /tmp/edge/root

Und zu guter letzt die Firmware auspacken und die Teile an die richtigen Stellen kopieren.

tar xzf ER-e100.v1.10.5.5098915.tar -C /tmp/edge/firmware
cp /tmp/edge/firmware/vmlinux.tmp /tmp/edge/boot/vmlinux.64
cp /tmp/edge/firmware/vmlinux.tmp.md5 /tmp/edge/boot/vmlinux.md5

cp /tmp/edge/firmware/squashfs.tmp /tmp/edge/root/squashfs.img
cp /tmp/edge/firmware/squashfs.tmp.md5 /tmp/edge/root/squashfs.md5
cp /tmp/edge/firmware/version.tmp /tmp/edge/root/version
mkdir /tmp/edge/root/w

Und aufräumen

umount /tmp/edge/boot
umount /tmp/edge/root
rm -rf /tmp/edge

Stick in den Router, zuschrauben, anschließen. Der Router kommt mit den Standard-Einstellungen (192.168.1.1/24 auf eth0, ubnt:ubnt im Webinterface) hoch, über das System-Tab kann das letzte Backup zurückgespielt werden, fertig. :)