EdgeRouter.page 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. # Anleitung: Ubiquiti EdgeRouter X (ER-X) auf aktuelles OpenWrt migrieren
  2. ## Ausgangslage
  3. Der ER-X hat eine sehr kleine, fest reservierte Kernel-Partition (3 MB). Ältere OpenWrt-Versionen (z. B. 22.03.x) passen noch rein, neuere Kernel (6.6+, ab OpenWrt 23.05/24.10) nicht mehr ohne Änderung der Partitionstabelle.
  4. Ein normales Sysupgrade/Firmware-Update über die Web-Oberfläche schlägt daher mit folgendem Fehler fehl:
  5. ```
  6. upgrade: The device is supported, but this image is incompatible for sysupgrade based on the image version (1.1->2.0).
  7. upgrade: Partition table has been changed due to kernel size restrictions.
  8. Image check failed.
  9. ```
  10. Das ist normal und kein Zeichen eines defekten Geräts – es braucht einen einmaligen Migrationsschritt.
  11. ## Voraussetzung
  12. - ER-X läuft bereits mit Standard-OpenWrt (nicht mehr originaler Ubiquiti EdgeOS-Firmware)
  13. - SSH-Zugriff auf den Router
  14. - **Wichtig:** Die Migration setzt das Gerät komplett zurück (alle Einstellungen gehen verloren). Vorher Konfiguration sichern, falls benötigt (Backup über LuCI: System → Backup/Flash Firmware → "Generate archive")
  15. ## Ablauf
  16. ### 1. Mit dem Router verbinden
  17. ```
  18. ssh root@<router-ip>
  19. ```
  20. (Standard-IP bei Werkszustand meist `192.168.1.1`, kann je nach bisheriger Konfiguration abweichen)
  21. ### 2. Migrations-Scripts laden
  22. Auf dem Router:
  23. ```
  24. cd /tmp
  25. wget --no-check-certificate https://raw.githubusercontent.com/darkxst/erx-migration/refs/heads/main/ubnt_erx_migrate.sh
  26. wget --no-check-certificate https://raw.githubusercontent.com/darkxst/erx-migration/refs/heads/main/ubnt_erx_stage2.sh
  27. chmod +x ubnt_erx_migrate.sh
  28. ```
  29. Zur Kontrolle prüfen, dass beide Dateien echte Scripts sind (mehrere KB groß, keine HTML-Fehlerseite):
  30. ```
  31. ls -la ubnt_erx_migrate.sh ubnt_erx_stage2.sh
  32. ```
  33. ### 3. Migration starten
  34. ```
  35. ./ubnt_erx_migrate.sh
  36. ```
  37. Das Script fragt nach Bestätigung (`y`/`n`) und weist nochmal auf den Datenverlust hin. Nach Bestätigung:
  38. - Lädt automatisch das aktuelle OpenWrt-Release (zum Zeitpunkt dieser Anleitung: 24.10.1) für den ER-X
  39. - Führt die Neupartitionierung durch
  40. - Gerät startet neu – **SSH-Verbindung bricht dabei ab, das ist normal**
  41. ### 4. Warten und neu verbinden
  42. Nach dem Neustart (ca. 2–3 Minuten) hat der Router in der Regel wieder die Standard-IP `192.168.1.1` (auch wenn vorher eine andere IP konfiguriert war).
  43. ```
  44. ping 192.168.1.1
  45. ```
  46. Sobald erreichbar:
  47. ```
  48. ssh root@192.168.1.1
  49. ```
  50. **Hinweis:** Der SSH-Host-Key hat sich geändert (neue Installation), daher erscheint eine Sicherheitswarnung. Das ist normal, kein Angriff. Alten Eintrag entfernen:
  51. ```
  52. ssh-keygen -f '~/.ssh/known_hosts' -R '192.168.1.1'
  53. ```
  54. Danach erneut verbinden.
  55. ### 5. Fertig – Grundabsicherung
  56. Nach erfolgreichem Login zeigt sich die neue Version, z. B.:
  57. ```
  58. OpenWrt 24.10.1, r28597-0425664679
  59. ```
  60. Root-Passwort setzen (Pflicht, da initial keins gesetzt ist):
  61. ```
  62. passwd
  63. ```
  64. Kontrolle, dass das neue Partitionslayout aktiv ist:
  65. ```
  66. grep compat_version /etc/config/system
  67. ```
  68. (sollte `2.0` zeigen)
  69. ## Ergebnis
  70. Der Router läuft jetzt auf aktuellem OpenWrt mit modernem Kernel und neuer Partitionstabelle. Zukünftige Sysupgrades auf neuere OpenWrt-Versionen funktionieren ab hier wieder normal über die Web-Oberfläche oder `sysupgrade`, ohne erneute Migration.
  71. ## Quelle
  72. Migrations-Scripts von [darkxst/erx-migration](https://github.com/darkxst/erx-migration), siehe auch [OpenWrt-Forum-Thread "Resizing kernel images for Edgerouter X"](https://forum.openwrt.org/t/resizing-kernel-images-for-edgerouter-x/194968).
  73. ## Erfahrung aus unserem Test
  74. Migration wurde am 26.09.2026 an einem Ersatz-ER-X erfolgreich getestet (von OpenWrt 22.03.5 auf 24.10.1). Ablauf lief ohne Komplikationen durch, Downloads und Neustart wie beschrieben.
  75. ---
  76. # OpenMPTCProuter (OMR) auf dem migrierten ER-X: Fehleranalyse
  77. Nach der Migration auf OpenWrt 24.10.1 (Kernel 6.6.86) wurde versucht, das offizielle OMR-Image für den ER-X aufzuspielen (`openmptcprouter-v0.64.2-6.18-...-ubnt_edgerouter-x-squashfs-sysupgrade.bin`). Der Flash-Vorgang selbst lief erfolgreich durch (passendes Partitionslayout dank vorheriger Migration). Danach zeigten sich mehrere, im Detail dokumentierte Probleme:
  78. ### 1. Kein vollständiges LuCI vorinstalliert
  79. Nach dem Flash war unter `http://192.168.100.1` (Standard-OMR-Zugriff über den **WAN-Port**, nicht LAN) keine Weboberfläche erreichbar. Ursache: `uhttpd` war im Image nicht installiert.
  80. Schrittweise Nachinstallation über `apk` nötig, bis die Oberfläche lief:
  81. ```
  82. apk add luci-base uhttpd uhttpd-mod-ubus
  83. apk add luci-theme-bootstrap
  84. apk add luci-mod-admin-full
  85. rm -f /tmp/luci-indexcache
  86. /etc/init.d/uhttpd restart
  87. ```
  88. Jedes fehlende Teilstück äußerte sich als eigener Fehler (u. a. „Unable to render any theme header template“, „No page is registered at '/'“), bis alle vier Pakete installiert waren.
  89. **Ergebnis:** Standard-OpenWrt-LuCI (System, Netzwerk, etc.) war danach nutzbar – aber ohne jeden OMR-spezifischen Bedienbereich.
  90. ### 2. OMR-eigener Paket-Feed liefert 404 / fehlt komplett
  91. Die für den OMR-Wizard und die Kernfunktionen nötigen Pakete (`luci-app-openmptcprouter`, `glorytun-tcp`, `shadowsocks-libev` u. a.) liegen in einem eigenen Feed (`openmptcprouter`), der bei diesem Kernel-Build (6.6, v0.64.2-6.18) nicht erreichbar ist:
  92. ```
  93. apk search -v 'glorytun*'
  94. WARNING: opening from cache http://download.openmptcprouter.com:80/release/v0.64.2-6.18/ubnt-erx/packages/mipsel_24kc/openmptcprouter/packages.adb: No such file or directory
  95. ```
  96. Getestet wurden zwei unterschiedliche, im System hinterlegte Feed-URLs (`download.openmptcprouter.com` und `packages.openmptcprouter.com`) – beide liefern für den `openmptcprouter`- und `luci`-Feed einen 404-Fehler.
  97. **Dies ist ein bekannter, offener Bug im Projekt selbst**, dokumentiert in [Issue #3176](https://github.com/Ysurac/openmptcprouter/issues/3176) ("opkg not updated lists on latest 6.6 kernel OMR"), betrifft alle Geräte/Architekturen mit dem neueren 6.6-Kernel-Build, nicht nur den ER-X.
  98. **Konsequenz:** Weder das LuCI-Wizard-Paket noch die eigentlichen Bonding-Kernkomponenten (Glorytun, Shadowsocks) lassen sich auf diesem Image regulär installieren. Das Problem liegt auf Seite des OMR-Projekts (kaputte/nicht gepflegte Paketquelle), nicht an unserer Konfiguration.
  99. ### Fazit zu OMR auf dem ER-X
  100. Nach mehreren Etappen (Debian-13-Sperre umgangen, iperf3-Bug gepatcht, glorytun-Build-Bug gepatcht, ER-X-Partitionsmigration durchgeführt) hat sich gezeigt, dass der aktuelle OMR-Release-Zweig (v0.64.2, Kernel 6.6/6.18) an mehreren, voneinander unabhängigen Stellen fehlerhaft bzw. unvollständig gepflegt ist. Eine funktionierende OMR-Installation auf dem ER-X ist mit aktuellem Stand **nicht ohne eigenen Paket-Build** erreichbar.
  101. ## Kurswechsel: BondingShouldBeFree (BSBF) statt OMR
  102. Als Alternative zu OMR wurde [BondingShouldBeFree (BSBF)](https://github.com/bondingshouldbefree) identifiziert, ein aktiveres, schlankeres Projekt mit demselben Ziel (MPTCP-basiertes Verbindungs-Bonding):
  103. - Nutzt den **Mainline-Linux-MPTCP-Stack** (bereits im OpenWrt-24.10-Kernel enthalten, kein Custom-Kernel nötig)
  104. - Nutzt **xray-core** (VLESS-Protokoll) statt Glorytun/Shadowsocks
  105. - Bietet einen **Firmware-Selector** (`fs.bondingshouldbefree.org`), der über OpenWrts offiziellen Attended-Sysupgrade-Dienst ein fertiges, vorkonfiguriertes Client-Image baut
  106. - Server-Installer läuft auf gewöhnlichen Linux-Distributionen mit `apt`, `systemd` und `ifupdown` (keine dokumentierte Einschränkung auf bestimmte Debian-Versionen, im Unterschied zu OMR)
  107. **Stand:** Wird aktuell evaluiert, noch nicht produktiv getestet. Nächste Schritte: Server-Installer-Script sichten und auf dem Freifunk-Server testen, danach Client-Image über den Firmware-Selector für den ER-X bauen.