Turris 1.0 - factory reset - nemožnost updatu

Co s tím?

Collected errors:
 * opkg_download: Failed to download https://api.turris.cz/openwrt-repo/turris/packages//Packages.gz, wget returned 4.

Chápu, že to wget nenajde, protože adresa neexistuje.

To vypadá, že bylo něco dost změněno a není možné vyupdatovat.

Udělám mu factory reset.
Nefunguje DNS a nejdou stáhnout balíčky.
Ok, nastavím 8.8.8.8 jako DNS v resolv.conf.
Balíčky stále nejdou stáhnout.
Ok, prozkoumám, že repozitáře se změnily, upravím. Odhal jsem to takto:

src/gz turris_base https://repo.turris.cz/turris/packages//base
src/gz turris_hardware https://repo.turris.cz/turris/packages//hardware
src/gz turris_lucics https://repo.turris.cz/turris/packages//lucics
src/gz turris_management https://repo.turris.cz/turris/packages//management
src/gz turris_node https://repo.turris.cz/turris/packages//node
src/gz turris_openwisp https://repo.turris.cz/turris/packages//openwisp
src/gz turris_packages https://repo.turris.cz/turris/packages//packages
src/gz turris_php https://repo.turris.cz/turris/packages//php
src/gz turris_printing https://repo.turris.cz/turris/packages//printing
src/gz turris_routing https://repo.turris.cz/turris/packages//routing
src/gz turris_sidn https://repo.turris.cz/turris/packages//sidn
src/gz turris_telephony https://repo.turris.cz/turris/packages//telephony
src/gz turris_turrispackages https://repo.turris.cz/turris/packages//turrispackages

Balíčky stále nejdou stáhnout.
Ok, zjistím, že wget si stěžuje na certifikát. Odsunu ho do wget.original a na jeho místo dám skript, který ho volá a předává parametr, aby se certifikáty nekontrolovaly:

#!/bin/sh
/usr/bin/wget-ssl.original --no-check-certificate "$@"

Stáhnu info o nových balíčcích a dám je instalovat.
Selže mi to, protože mi něco přepsalo resolv.conf a staží se to zase resolvovat nefunkční DNS.
Upravím DNS opět na 8.8.8.8 a pokračuju.
Selže to a zjistím, že už nemám wget. Naštěstí skutečný wget je ve wget.original.
Vytvořím si znovu skript, který ho wrapuje.
Selže to znovu, protože skript je očekávaně přepsán novým wgetem.
Tak ho opět odsunu do wget.original zase a znovu vytvořím skript, který ho wrapuje.
Update selže po chvíli, protože prý nemám libpcre.
Okd, dám stáhnout libcre, ale nemůžu. Wget potřebuje libpcre, aby stáhl libpcre.
Stáhnu ho na nb a překopíruju na Turris, nainstaluji.
Update pokračuje, ale Turris přestane odpovídat a po restartu už nenajede.

Nový factory reset.
Zkouším update NOR dle: Update NOR na starém Turrisu
Balíček se stáhne a nainstaluje, ale nor-update neproběhne.
Manuální zavolání nor-update vrací chybu o /dev/… něco.

Jak je toto možné? Testoval to někdo?

Zkusil jsem vyupgradovat pouze kernel a už to nenabootovalo.

Podařilo se mi to vyupgradovat proti nejstaršímu archivu aspoň na tolik, abych udělal NOR upgrade, /etc/opkg.conf:

src/gz turris_base https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//base
src/gz turris_hardware https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//hardware
src/gz turris_lucics https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//lucics
src/gz turris_management https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//management
src/gz turris_node https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//node
src/gz turris_openwisp https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//openwisp
src/gz turris_packages https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//packages
src/gz turris_php https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//php
src/gz turris_printing https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//printing
src/gz turris_routing https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//routing
src/gz turris_sidn https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//sidn
src/gz turris_telephony https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//telephony
src/gz turris_turrispackages https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/packages//turrispackages

Tak po NOR upgrade a factory reset další problémy.

Neběží DNS resolving.
Neběží ssh server.
Neběží Luci, vrací:

#!/usr/bin/lua
require "luci.cacheloader"
require "luci.sgi.cgi"
luci.dispatcher.indexcache = "/tmp/luci-indexcache"
luci.sgi.cgi.run()

Error protokol hlásí 404.

Stacktrace:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/foris/utils/reporting_middleware.py", line 86, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python2.7/site-packages/bottle_i18n.py", line 68, in __call__
    return self.app(e,h)
  File "/usr/lib/python2.7/site-packages/bottle.py", line 979, in __call__
    return self.wsgi(environ, start_response)
  File "/usr/lib/python2.7/site-packages/bottle.py", line 954, in wsgi
    out = self._cast(self._handle(environ))
  File "/usr/lib/python2.7/site-packages/bottle.py", line 862, in _handle
    return route.call(**args)
  File "/usr/lib/python2.7/site-packages/bottle.py", line 682, in mountpoint_wrapper
    body = app(request.environ, start_response)
  File "/usr/lib/python2.7/site-packages/bottle.py", line 979, in __call__
    return self.wsgi(environ, start_response)
  File "/usr/lib/python2.7/site-packages/bottle.py", line 954, in wsgi
    out = self._cast(self._handle(environ))
  File "/usr/lib/python2.7/site-packages/bottle.py", line 862, in _handle
    return route.call(**args)
  File "/usr/lib/python2.7/site-packages/bottle.py", line 1740, in wrapper
    rv = callback(*a, **ka)
  File "/usr/lib/python2.7/site-packages/foris/utils/bottle_csrf.py", line 85, in wrapper
    return callback(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/foris/utils/__init__.py", line 87, in wrapper
    return func(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/foris/wizard.py", line 534, in step_post
    if wiz.save():
  File "/usr/lib/python2.7/site-packages/foris/wizard.py", line 134, in save
    return sup.save(extra_callbacks=extra_callbacks)
  File "/usr/lib/python2.7/site-packages/foris/config_handlers/base.py", line 71, in save
    form.save()
  File "/usr/lib/python2.7/site-packages/foris/fapi.py", line 239, in save
    commit()
  File "/usr/lib/python2.7/site-packages/foris/nuci/configurator.py", line 45, in commit
    client.edit_config_multiple([cu.get_xml() for cu in config_updates])
  File "/usr/lib/python2.7/site-packages/foris/nuci/client.py", line 430, in edit_config_multiple
    netconf.edit_config("running", config=config_root)
  File "/usr/lib/python2.7/site-packages/ncclient/manager.py", line 89, in wrapper
    return self.execute(op_cls, *args, **kwds)
  File "/usr/lib/python2.7/site-packages/foris/nuci/client.py", line 107, in execute
    raise_mode=cls._raise_mode).request(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/ncclient/operations/edit.py", line 58, in request
    return self._request(node)
  File "/usr/lib/python2.7/site-packages/ncclient/operations/rpc.py", line 289, in _request
    raise self._reply.error
RPCError: Creating whole configs is not possible, you have to live with what there is already

V tuto chvíli jsem tím pádem v ještě horším stavu. Nejde router updatovat, nefunguje mi Luci ani SSH. Jediné co funguje je Foris.

Možná relevantní s: Turris 1.x nefunkcni SSH a DNS
Že by stále neopraveno?

Vyřešno přes seriovou konzoli, ale stále mi nejede Luci.

Vyřešeno, konečně, problém s cachováním.

Zdravím,

v první řadě bych se Vás chtěl zeptat, zda jste router koupil od někoho jiného.

Ptám se z toho důvodu, že NOR update, tedy aktualizace záchranného systému, která se právě nachází v NOR a jakmile stisknete tlačítko a vyžádáte si reset do tovární nastavení, tak se záchranný systém vezme a rozbalí jej do NAND paměti ze které běží router.

Verze záchranného systému se může líšit v případě modrého Turrisu 1.0 a Turrisu 1.1, a doba aktualizace ze starších verzích systému, jako například Turris OS 2.x může být neúměrně dlouhá.

A proto jsme si ve verzi Turris OS 3.10.9, kterou jsme vydali 18. prosince 2018 pouze pro Turris 1.x, připravili balíček nor-update, který se nainstaluje a automaticky spustí. Nejenže vyaktualizuje NOR na verzi Turris OS 3.8.5, ale taky pokud používáte JFFS2, tak přejdete na lepší filesystém UBIFS pouhým stisknutím tlačítka RESET, které se nachází na zadní časti routeru.

Pokud router nebyl dlouho připojen k Internetu, případně je starší než 3 roky, tak je potřeba zkontrolovat, zda RTC baterka, která se nachází pod horním víkem není vybitá. Toto slouží pro zachování správného času a data. To nám pomáhá ověřit platnost HTTPS certifikátu, případně elektronických podpisů.

Máme zprávy o tom, že by NOR update mělo být možné provést na minimální verzi Turris OS 3.6.5, ale vždy je potřeba, aby zařízení, které se stará o bezpečnost Vaší sítě, mělo vždy nejnovější aktualizace zejména z důvodu oprav bezpečnostních chyb.

Jakmile provedete NOR update, je potřeba router nastavit pomocí webového rozhraní Foris, ale hlavně projít prvotním nastavením routeru pomocí Wizardu, který se nachází ve verzích < 3.11. Ve verzi Turris OS 3.11 a vyšší byl nahrazen Guidem. Následně se Vám router vyaktualizuje na nejnovější verzi Turris OS, která je k dispozici. Je možné, že během aktualizace se router restartuje.

Pokud by se přeci jen dostal k routeru, který nebyl dlouho aktualizován, dovolte mi kratší shrnutí. V první řadě je potřeba zkontrolovat stav RTC baterky. Zjistěte verzi Turris OS, která Vám běží na routeru. V ideálním případě provést obnovu z microSD karty. Ta by neměla být nutná, pokud router běžel do konce roku 2018, ale i přesto by se router měl vyaktualizovat na nejnovější verzi. Pokud máte verzi Turris OS 3.6.5 a zároveň menší než 3.8.5, tak by mělo být možné stáhnout balíček nor-update z našeho repozitáře pro Turris 1.x a nainstalovat jej. Automaticky se měl spustit a tento proces může trvat až pět minut. Je důležité, aby nedošlo k přeřušení tohoto procesu. Kdyby ano, tak je pak potřeba kontaktovat technickou podporu, která je k dispozici na e-mailové adrese tech.support@turris.cz také i v případě, kdy se Vám to nedaří a společnými silami se budeme problém snažit vyřešit.

Doufáme, že se nám společně s verzí Turris OS 5.0 snad podaří vydat i verzi pro microSD kartu.

Dobrý den,

ne router je můj z běhu projektu, jen nebyl nějakou dobu používaný (zakoupil jsem Omnii).

V té verzi, která tam byla po faktoru reset nešel NOR update (pravděpdobně nepodporováno v kernelu). Ve verzi, kterou jsem tam měl po faktory resetu tedy NOR update nešel použít. A mým cílem pak bylo dostat tam novější kernel se kterým NOR update bude fungovat, použil jsem 3.5.3 repo (https://api.turris.cz/openwrt-repo/archive/turris/3.5.3/), ale ani na to nešlo úspěšně upgradovat balíčky, musel jsem dělat spoustu zásahů v průběhu. Hlavně, co se týká wget, curl a stejně nedoběhla instalace všech balíčků (hlavně foris atd. nedoběhl), ale systém se updatoval do verze ve které NOR update zafungoval. Pravděpodobně jste zapomněli na případ, kdy má někdo router dlouho ve stavu factory resetu, pravděpodobně NOR verze z výroby.

Čas se synchronizoval při konfiguraci ve Forisu, tj. si myslím, že v RTC problém nebude.

Verze, kterou jsem měl po faktory resetu byla zcela jistě starší než 3.6.5. Verze ve které se mi podařil NOR update byla 3.5.3, tj. starší než kterou delkarujete na minimální, a verze kterou jsem měl po faktory resetu byla nejspíš mnohem nižší než 3.5.3 protože se mi ani nepovedl úplný upgrade na 3.5.3. Můj plán byl měnit repozitáře z archivu, dokud se nedostanu do stavu, kdy to poběží, podařilo se na nejstarším archivu 3.5.3.

Turris OS 3.6.5 a zároveň menší než 3.8.5, tak by mělo být možné stáhnout balíček nor-update z našeho repozitáře pro Turris 1.x a nainstalovat jej.

Verze 3.5.3 ve skutečnosti stačila, viz výše.

Hlavní problém na který byste se měli podívat je ten, že verze v NOR nefunguje korektně. Po instalaci nefunguje DNS (několikrát ověřeno), nepodaří se upgrade balíčků a router nemá ani Luci, ani SSH. Změna DNS na 8.8.8.8 nebo zapnutí forwardingu beze změny.

Jediná možnost pro mě byla použití terminálového připojení. A úprava /etc/resolv.conf na “nameserver 8.8.8.8” po které bylo možné router upgradovat a DNS začalo funguovat, zprovoznilo se Luci i SSH.

Turris byl zapojený do Omnie.