[Megoldva] LEDE (OpenWrt) - kizártam magam

Történet annyi, hogy a TP-Link TL-WR841ND v10-es router-emet OpenWrt-ről LEDE image-re upgrade-eltem. A kísérlet sikerült, most is ezen keresztül van net elérésem. A gond azzal van, hogy nem olvastam el a rövid helpjét a sysupgrade parancsnak, s nem használtam a -n kapcsolót:

        -n           do not save configuration over reflash

Ebből adódóan az OpenWrt korábbi beállításai maradtak az overlayfs-en. Ezzel csak az a baj, hogy a root ssh-t tiltottam, sima user-rel meg nem enged be. Talán újragenerálta a kulcsokat, de az is lehet, hogy nem létezik user jogú felhasználóm. De, ha be is engedne, sima user joggal semmit sem tudnék tenni, su parancsot sem tudnék telepíteni.

Most van egy működő router-em, amelyhez nem férek hozzá ssh-n, mellesleg webes felületen sem.

Hogyan tudok hozzáférni a router-hez? Egyelőre az RS232-t kihagynám, jó volna ezt a forrasztópáka bevetése nélkül intézni.

Megoldás

Hozzászólások

Iszonyú bosszantó, hogy tudom, mi történt, tudom, miért nem enged be - jelszót kér, de nyilván semmi sem jó neki -, azt is tudom, hogy ha hozzáférnék legalább a flash-hez, mit kellene tennem, de egy ilyen embedded cuccban elég korlátosak a lehetőségeim. Néhány napja vettem, kell lennie valamiféle megoldásnak. Talán azt kell megnézzem, tud-e tftp-t, s valahogy erre rávenni, de ilyet sem csináltam. Aztán nehogy még zárkózott router-ként se működjön utána.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

failsafe mod:
mikor villog a sys led, akkor megnyomod a rajta levo gombot, akkor nagyon gyorsan kezd villogni, utana ra lehet telnetelni 192.168.1.1 ( sajat gepednek kell adnod ipt, routeren nincsen ilyenkor dhcp server), es aztan mount_root, lehet a configokat kezzel piszkalgatni.

Hú, köszönöm, megiszom a kávémat, utána nekiesek azonnal! :)

Szerk.: nekem már az is jó lenne, ha az overlayfs nem tartalmazna semmilyen módosítást, így minden konfig az image-ből származó default lenne. Utána már elboldogulok vele.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

OFF:

Nekem is ilyen van (tl-wr841n-v9), neked stabilan működik a wifi-d openwrt-vel, ill most már lede-vel? Tervben van az openwrt nálam is.

Még a gyári van rajta, de állandóan "elromlik" a wifi, egyre több a packet loss, 10 %-ról indul és pár óra alatt 90% -ra felmegy. Újraindítom a wifit, és jó egy darabig. Ezt kb naponta előadja. Ha visszaállítom a gyári állapotot a routeren, majd újra beállítom, akkor minden ok, kb 1 hónapig, aztán újra kezdi a fenti jelenséget...

Gyárival tapasztaltál ilyet?

Gyárival nem tapasztaltam semmit, mert megvettem a router-t, bementem a firmware upgrade menübe, s ráhúztam egy OpenWrt image-et. :)

Viszont alig pár napja van nálam az eszköz, szóval még csak annyit tapasztaltam, hogy sikerült távolról bekapcsolnom az otthoni gépemet, kikapcsolni is, bár ahhoz már nem kell a router, hacsak azért nem, hogy forward-olja a WAN oldalra beeső ssh kérést.

Azért választanám a LEDE-t, mert újabbak a csomagjai, mint az OpenWrt-nek. A LEDE-nek 4.4.23-as kernele van, ez a legutolsó longterm. Ugyanakkor az OpenWrt-nek 3.18.23-as, ami szerintem már nagyon régi, s ebből a szintén longterm sorozatból nem is up to date. Maradnék a LEDE-nél ezért, csak most, hogy failsafe módban sikerült root-ként belépnem, elfogyott a memória, s ezzel kellene valamit kezdenem.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az még mindig kevés. 4.4.23 az aktuális legutolsó longterm. Mennyi már ismert, forrásban javított, ám az OpenWrt-n még meglévő biztonsági kórság van jelen azáltal, hogy nem a legfrissebb longterm-ből van release?

A LEDE project 4.4.23-at szállít.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Elnézést a buta kérdésért de jól látom, hogy a LEDE nem szállít stable firmware-t csak snapshot-ot? Magyarán 1043ND -re folyamatosan tolhatom a sysupgrade image fájlokat (amolyan rolling stílusba) megtartva a korábbi beállításokat?

Bocs de Chaos Calmer 15.05.1 óta hozzá se szagoltam csak most vettem észre, hogy létrejött egy folk.

--
Debian GNU/Linux

Félek, hogy a jelenlegi ismereteimmel félrevezetnélek, ezért kissé mellébeszélés lesz a válaszom. :) Röviden: nem tudom.

Azt tapasztaltam, hogy volt olyan verzió, amelynek a nevében a CURRENT szerepelt, s olyan is, amelyben a SNAPSHOT. Na, most arról fogalmam sincs, hogy ez csak azon múlik, mikor tölti le az ember, vagy valahol megtalálható az is, amit nem snapshotnak gondolnak. Most épp ez a release name:

Reboot (SNAPSHOT, r2815-621f8cbf)

Mármint annak, ami a routeremen van. Az a Reboot ne zavarjon meg, az a kiadás neve. :)

Egyébként én azt csinálom, hogy saját image-et rakok össze, mert ellenkező esetben minden frissítést követően újra kellene telepíteni azokat a csomagokat, amelyekre szükségem van, ráadásul a squashfs image-ből nem tudnék helyet felszabadítani, s abból nekem nagyon kevés, mindössze 4 MiB van.

Miután elkészítettem a saját image-emet, frissítem vele a router-t. Most egy szomorúságom van. Valamiért nincs a csomagok között az uhttpd-mod-tls. Nem létkérdés, webes felület kell a fenének, de rosszul esett a megszűnése. Azt sem tudom, hogy ez bug vagy egy tudatos döntés következménye.

Most várom, hogy lefordítsák a 4.4.41-es kernelt. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Jut eszembe, OpenWrt-vel vagy LEDE-vel meg tudod csinálni crontab-ban, hogy például hetente egyszer, vagy naponta egyszer éjszaka reboot-oljon a router, ha ez segít. Workaround, de egyszerű, valahogy így:

* 04 * * 1 /sbin/reboot

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Noha hozzáférek a routeremhez, lehet, hogy szégyenszemre vissza kell tennem az OpenWrt-t. Vagy le kell mondanom a webes felületről, tudniillik nem fér fel rá a luci. Nem sok hiányzik, de azután sem fér fel, hogy minden default, overlayfs-t töröltem. Ráadásul nekem egy-két csomagra szükségem lenne még a luci-n kívül is. Fenébe, kevés az a 4 MiB egy Linux-hoz...

Szerk.: Lemondtam a GUI-ról, mert nem volt hely. Kár, mert nagyon látványos, érthető volt. Viszont a LEDE sokkal újabb, mint az OpenWrt, s ez nekem többet ér.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Persze, de csináltam már pár számítógépet életemben, szóval az nem úgy megy, hogy ráforrasztom a flash chipet, s meg is vagyunk. Mi van a címdekódolással? Egyáltalán az első 4 MiB-et követő 4 MiB-on most lyuk van, se memóriába ágyazott periféria, se RAM? Tegyük fel, hogy az ott szabad terület, de akkor valakinek legalább egy -CS jelet elő kellene állítania. Tény, hogy ha látnám a kapcsolási rajzát, többet tudnék mondani róla.

Bár, ahogy nézem, ez soros elérésű flash. Akkor egyszerűbb az élet, de akkor is meg kell mondani, mikor kivel kommunikáljon. Mondjuk a kis lábszám miatt felcsigáztál, simán megoldhatónak tűnik akár. Azért kihasználni nem tudom majd, mert így meg a RAM-om fog elfogyni. Csak arra lesz jó, hogy néhány tíz vagy száz kilobyte-on ne múljon a boldogság.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem neztem meg az adatlapjat, de tipikusan az ilyen kis labszamu flash-ek valamilyen soros jellegu cimzest hasznalnak (I2C vagy SPI), es altalaban 1 db IC van benne, szoval nem kell kulon CS, mert ha nagyobbra valt a gyarto az IC csaladon belul, akkor ugyanabban a tokban lesz tobb flash. Egyebkent volt mar olyan TP-LINK router, amit HW revtol fuggoen megkapsz kulonbozo flash meretekkel, szoval ezt SW-bol is le szoktak kezelni.

--
A strange game. The only winning move is not to play. How about a nice game of chess? - Wargames

Jó, látom már, hogy itt tokot kellene cserélni, s akkor meg van oldva. Az egyetlen bajom, hogy kiforrasztom vele a bootloader-t is, szóval utána nem tudom majd elindítani. Vagy kell egy PIC-es hardware-t csinálnom, ami a régi tartalmát az újba másolja, vagy a PC felé file-ba, onnan meg az újba.

Csábító a gondolat, de nem egy délutános művelet, az biztos.

Szerk.: illetve hogy indul egy ilyen SoC? Mert valami nyilván van benne, hogy legalább az SPI-n keresztül megszólítsa a flash-t, s RAM-ba tegye a kódot, a memória kontrollert, frissítési időzítéseket, busz sebességet felprogramozza, szóval a SoC-on belül is van valami, ami a BIOS megfelelője.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ezt a kegyetlenséget írtam a /etc/profile file-ba:

[ "${TERM:0:5}" = "xterm" ] && export PS1='$(RET=$?; COLOR="\[\e[m\]"; [ `id -u` = 0 ] && COLOR="\[\e[32;1m\]"; echo -n "${COLOR}["; [ $RET -ne 0 ] && echo -n "\[\e[33;1m\]$RET$COLOR ")\u@\h \w]\$ \[\e[m\]'

Az a lényege, hogy a root prompt zöld, a sima user fehér, a promtban van a user, hostname, pwd, valamint az előzőleg végrehajtott utasítás exit kódja sárgával. Kivéve, ha az 0, mert akkor nincs benne, minek.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ott tartok, hogy a login bannert kiszíneztem, írtam hozzá egy awk scriptet meg egy színezést leíró konfigurációs file-t. Aztán lett wireless interface-t be- és kikapcsoló scriptem is, meg konfigurációt mentő scriptem. Egyre jobban tetszik ez nekem. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Megnéztem neked. :-)
A LEDE - Linux Embedded Development Environment honlapon ez is olvasható:


Since LEDE is a pretty young spinoff from OpenWrt it is largely compatible to it,
in most cases the same installation procedures can be used to flash your devices.

Sysupgrades from OpenWrt to LEDE or vice versa are supported but it is advised to
not keep settings in such a case to benefit from the updated defaults.

Azért vagyok cseppet zavarban, mert OpenWrt-t talán 2 napig használtam, de nekem úgy tűnik, hogy gyakorlatilag teljesen ugyanaz, csak a LEDE csomagjai frissebbek. Ugyanúgy a /etc/config-ban vannak a konfigurációs állományok, ugyanúgy van uci és luci, valamint kézzel vagy scripttel is hegesztheted az állományokat. Amennyire a 2 napban az OpenWrt-t megismertem, azt mondom, teljesen ugyanaz, csak a LEDE új.

Szerk.: Ja, s még valami, opkg a csomagkezelő itt is, a nekem fontos etherwake csomag szintén megvolt.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Azért fogalmaztam úgy, hogy itt - mármint LEDE alatt - is. Tehát ez sem különbség. Épp azt bizonygatom, hogy lényegében ugyanaz a kettő, csak a LEDE újabb csomagokat szállít, vagy teszem azt, létezik az ll alias, ami részletes ls. Nem, mintha nem írhatnál bármit a /etc/profile-ba, én például variáltam vele.

Szerk.: egy különbség van, de azt írtam fentebb. A nagyjából 3.9 MB-os image-ben az OpenWrt tartalmazza a luci-t, ott van webws felület, a LEDE ugyanakkora image-ébe nem fért bele, így ha 4 MiB a router flash-e, abba nem fog beleférni. Viszont nagyjából minek. A konfig file-ok egyszerűek, áttekinthetők, az OpenWrt-s fórumokon, wikiben van egy rakás problémára megoldás, saját scripteket lehet írogatni, így aztán nem kell a luci. Persze, akinek van 8 MiB flash a router-ében, annak ez nem gond, mert felteszi a luci-t, aztán meg is van. Repóból természetesen elérhető.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

About the LEDE project - A reboot of the OpenWrt community

"The LEDE project is founded as a spin-off of the OpenWrt project and shares many of the same goals."

Plusz az említett oldalon ott van még miért is kezdtek neki.

"Belépés díjtalan, kilépés bizonytalan."
"Vajon mit várok a sorstól, ha hányok az édestől, és izzadok a sóstól."

Már 4.4.24-es kernel fut rajta. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem. Az egész image-et frissítettem. A szívás, hogy az utólag felrakott csomagjaimat újra fel kellett telepíteni, mert eldobja a overlayfs upper-jében lévő dolgokat, tehát az image-hez képest a változásokat. Mondjuk ez érthető, hiszen megváltozott az, amihez képest a változásokat az upper tárolta.

sysupgrade -c image módon frissítettem. Nagyon fontos, hogy amennyiben a root ssh tiltva van, úgy frissítés előtt engedélyezni kell a root ssh-t és a root password auth-ot, mert ellenkező esetben kizárja magát az ember. Persze némi küzdelemmel menthető a helyzet, erről szól épp ez a topic eredendően. :) A -c kapcsoló miatt lényegében nem bántotta a /etc-t. Gondolom, RAM-ba mentette, aztán a végén ment minden vissza az overlayfs-re.

Annyi eszem azért volt, hogy írtam egy save scriptet, ami tar.gz-be tömöríti a /etc-t, a /usr/local-t, valamint az opkg list-installed kimenetét, hogy ne fejből kelljen kitalálnom, mi volt még telepítve. Egyébként nálam: etherwake, mailsend-nossl, nano, shadow-su, illetve ezek függőségei.

Lassan blogot kellene írnom róla. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szerintem nézd meg a blogom „folytatás 3” utáni részét, ott írtam erről. Röviden az a lényeg, hogy ha saját image-et csinálsz, amelybe beleteszed a feltelepítendő csomagokat, továbbá a saját scriptjeidet, konfigurációs file-jaidat, akkor sokkal fájdalommentesebb a frissítés, s talán paradoxnak tűnhet, de az image elkészítésével együtt is sokkal gyorsabb, mert alig kell gondolkodni, kicsi a hibázás valószínűsége, s egy ilyen picike image gyorsan elkészül.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Csak biztatni tudlak a saját image készítésére. Most, hogy van ez a piszkos tehén, csináltam saját image-et 4.4.26-os kernellel - amelyben a tehenet már lecsutakolták :) -, egyben az uhttpd-t is beletettem, cipőkanállal még belefért. Meglehetősen fájdalommentes volt az upgrade, semmi komolyabb erőfeszítés, hogy vadászgatnom kell a megtartandó konfigfile-okat, telepítenem a csomagokat utólag, meg saját binárisokat. Ez a lélekölő favágás mind elmarad így. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE