Návod: Jak na Turrisu 1.x správně provést aktualizaci NOR a přechod na btrfs

Dobrý den,

jak na Turrisu 1.1 správně provést přechod na btrfs? Je zde na fóru několik témat, ale s prominutím je v tom takový bordel a zmatek, že po dvoudenním pročítání fóra se v tom už vůbec nevyznám. Tak jsem se obrátil na podporu se žádostí, jestli by mi nemohli postup, který najdete níže zkonzultovat a říci mi, jestli někde není nějaká bota. Ale podpora nepodporovala, prostě se na mě vy…

Dobrý den,
nejsem nyní schopen odhadnout jak se bude router s vámi popisovaným postupem chovat. Oficiálně podporovaný je pouze postup uvedený na našich stránkách: https://www.turris.cz/doc/cs/howto/btrfs_migration
Bohužel nyní vzhledem k zátěži nejsem časově schopen daný problém problém nyní nijak verifikovat zda bude i do budoucna funkční nebo ne.

s pozdravem

Honza
Turris Support

Tak jsem se rozhodl, že se do toho pustím na vlastní Turris. Teda, vlastní, ještě je pod smlouvou :-). Veškeré příkazy a poznatky jsem posbíral zde různě na fóru, takže to jen zhustím na jedno místo.

Info o zařízení:

Turris​​ RTRS02, tedy verze 1.1
Turris OS version: 3.8.2.1
Kernel version: 4.4.89-d74822050ae7ec4a1e49c6af6d672787-2
Verze firmwaru: OpenWrt turris 15.05 r47055 / LuCI 49c3edd5861fd032fa8379ceda525c27a908a114 branch (git-17.212.24321-49c3edd)

​V routeru je vložena SSD karta o kapacitě 8 GB​. ​Po poslední aktualizaci jsem router restartoval, neběží ucollect a firewall, ale na to teď sere Bílej Tesák.

​Verze v NOR​

root@turris:~# mount /dev/mtdblock3 /mnt
​​root@turris:~# xz -cd /mnt/*medkit* | tar -Ox ./etc/turris-version
2.4

Nesmíme zapomenout svazek odmontovat
umount /mnt

##_____________________________________

Důležité

Aby bylo možné následující kroky podniknout, je třeba mít v routeru fw verze minimálně 3.8 a vyšší. Zde na fóru je zde popsáno mnoho případů, kdy se aktualizace po továrním obnovení zasekne na verzi 3.7.3. Pokud patříte mezi takto postižené, doporučuje se následující postup. Po připojení se přes ssh zadáme v terminálu postupně tyto příkazy:

Stáhneme balíček s novějším updaterem

wget http://repo.turris.cz/turris/packages/turrispackages/updater-ng_59.3.3-1_mpc85xx.ipk

Případně si nejnovější číslo verze balíčku updater-ng najdeme v adresáři repositáře http://repo.turris.cz/turris/packages/turrispackages/ a příslušně upravíme název souboru ve výše uvedeném příkazu.

Poté zadáme

opkg-trans -a updater-ng_59.3.3-1_mpc85xx.ipk -r

Následně

opkg-trans -r updater

Potom

get-api-crl

A nakonec

pkgupdate --batch

Poté bychom měli být na poslední verzi.

Tuto část nemám vyzkoušenou na vlastním routeru, za její zaslání děkuji @ajb007.
##_____________________________________

Update NOR na na verzi 3.6.5

Vyšší verze bohužel nejde flashnout. Flash skončí chybou, ale naštěstí router po rebootu nastartoval. Balíček medkit verze 3.8.2.1 má velikost 20 MB a zřejmě se do NOR nevejde. Verze 3.6.5 má velikost 11 MB a flash proběhne bez problémů.

1 - Po přihlášení přes ssh zadáme příkaz ke stažení medkitu

wget https://repo.turris.cz/archive/turris/3.6.5/medkit/medkit.squashfs

a v terminálu nám poběží

2017-10-06 16:56:58--  https://repo.turris.cz/archive/turris/3.6.5/medkit/medkit.squashfs
Resolving repo.turris.cz... 2001:1488:ac15:ff80::105, 217.31.192.105
Connecting to repo.turris.cz|2001:1488:ac15:ff80::105|:443... failed: Permission denied.
Connecting to repo.turris.cz|217.31.192.105|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11303967 (11M)
Saving to: 'medkit.squashfs'

medkit.squashfs            100%[=======================================>]  10.78M  2.32MB/s    in 4.6s    

2017-10-06 16:57:03 (2.33 MB/s) - 'medkit.squashfs' saved [11303967/11303967]

2 - Máme staženo, můžeme flashovat. Zadáme příkaz

mtd write medkit.squashfs "NOR (RO) NAND FW backup"

Výstup v konzoli bude:

Unlocking NOR (RO) NAND FW backup ...
Writing from medkit.squashfs to NOR (RO) NAND FW backup ...     

Čas jsem neměřil, ale netrvalo to dlouho. Minutku, možná dvě…

3 - Přesvědčíme se, že máme správně naflashováno

mount /dev/mtdblock3 /mnt xz -cd /mnt/*medkit* | tar -Ox ./etc/turris-version 3.6.5

Pokud vidíme 3.6.5 jako na řádku výše, vše se povedlo. Můžeme tedy zadat

umount /mnt
reboot

čímž odpojme svazek mtdblock3 a následně restartujeme router.

4 - Provedeme migraci na btrfs

Opět v konzoli, do níž jsme se přihlásili přes ssh nejprve aktualizujeme balíčky a následně nainstalujeme balíček turris-btrfs-migrate

opkg update
opkg install turris-btrfs-migrate

poté zadáme příkaz k vlastní migraci

btrfs_migrate

a potvrdíme, že víme, co děláme. Výstup je poměrně ukecaný, necháme vše doběhnout.

Are you sure you want to loose everything on mmcblk0? (yes/no)
yes
11+0 records in
11+0 records out

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x8616aea1.

Command (m for help): Created a new DOS disklabel with disk identifier 0xf49f7c98.

Command (m for help): Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): Partition number (1-4, default 1): First sector (2048-15564799, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-15564799, default 15564799): 
Created a new partition 1 of type 'Linux' and of size 100 MiB.

Command (m for help): Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): Partition number (2-4, default 2): First sector (206848-15564799, default 206848): Last sector, +sectors or +size{K,M,G,T,P} (206848-15564799, default 15564799): 
Created a new partition 2 of type 'Linux' and of size 7.3 GiB.

Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

mkfs.fat 3.0.28 (2015-05-16)
btrfs-progs v4.11
See http://btrfs.wiki.kernel.org for more information.

Detected a SSD, turning off metadata duplication.  Mkfs with -m dup if you want to force metadata duplication.
Performing full device TRIM /dev/mmcblk0p2 (7.32GiB) ...
Warning, could not drop caches
Warning, could not drop caches
Label:              (null)
UUID:               84ea0564-14e2-4359-a5b1-65e6078b1744
Node size:          16384
Sector size:        4096
Filesystem size:    7.32GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         single            8.00MiB
  System:           single            4.00MiB
SSD detected:       yes
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     7.32GiB  /dev/mmcblk0p2

Warning, could not drop caches
Create subvolume '/tmp/btrfs-convert/target/@'
Warning: Bad CRC, using default environment
Migration successful, please reboot!

Poslechneme a restartujeme

reboot

5 - Po restartu bychom měli být na btrfs a můžeme vytvořit svou první zálohu. Přihlásíme se do konzole a zadáme příkaz

schnapps create

Vytvoření je velmi rychlé. Že se záloha vytvořila můžeme buď příkazem

schnapps list

nebo například příkazem

ls -C /mnt

kde ve výstupu vidíme v mém případě dvě zálohy @1 a @2

1.info 2.info @ @1 @2

Ověření, že systém běží z brtfs na ssd kartě

Po přihlášení do konzole zadáme jednoduchý příkaz

mount

který primárně slouží k mountování disků, ale pokud je vyvolán bez parametrů, zobrazí aktuální stav přippojených disků a oddílů. Zajímat nás tady bude pouze první řádek. V mém případě je to:

/dev/mmcblk0p2 on / type btrfs (rw,noatime,ssd,space_cache,commit=5,subvolid=257,subvol=/@)

Tento řádek říká, že zařízení /dev/mmcblk0p2 (sd karta, druhý oddíl) je namontována do / tedy rootu. A je jasné, že systém jede z SD karty :slight_smile:

#Trablšůtink aneb, když se nedaří

  • Pokud se na Turrisu 1.0 nedaří úpřechod z JFFS na UBIS dle firemní dokumentace, zkusíme nainstalovat kmod-fs-vfat, popřípadě ještě kmod-nls-cp437 a kmod-nls-iso8859-1
4 Likes

Jen menší drobnost, když si prvně ověříte, jakou verzi v NOR, tam máte a potom to flashnete, tak se zaseknete u 3. bodu, protože to znovu mountujete.

root@turris:~# mount /dev/mtdblock3 /mnt
mount: /dev/mtdblock3 is already mounted or /mnt busy
/dev/mtdblock3 is already mounted on /mnt

Když ten mount přeskočíte, tak uvidíte opět tu starou verzi v NOR, takže je zapotřebí tedy umount a znovu mount, abychom viděli verzi, kterou jsme tam nahráli.

jo, díky, doplnil jsem umount.

Super shrnutí, jen dotaz páč jsem se taky v záplavě informací ztratil …

Turris 1.0 UBIFS, 3.8.2.1 - karta vložena, protože ji používám … data z karty zazálohuju jinam - to je OK

když flashnu medkit do NOR a zmigruju na BTRFS - původní systém v NAND zůstane netknutý na 3.8.2.1 včetně nastavení ?
a pokud ano tak pokračuju …
boot z SD karty na BTRFS - čístý systém ?
lze použít zálohu dle návodu zde : https://www.turris.cz/doc/cs/public/zalohovani_zmen_a_nastaveni_na_sdkartu
a tuto zálohu obnovit na SD kartu s BTRFS ? budu potom mít systém s nastavením 1:1 NAND:SD karta ?

mám v systému pár nastavení, které jsem dělal už dávno a nepamatuju si přesně jak, co, kde a nechce se mi to zase hledat a řešit …

když flashnu medkit do NOR a zmigruju na BTRFS - původní systém v NAND zůstane netknutý na 3.8.2.1 včetně nastavení ?

Ano

super - díky za ujištění :slight_smile:

teď už jenom jak to přenést aby to bylo 1:1 se vším všudy … a nemusel jsem pátrat co jsem kde měnil …

Mám zato, že se mi aktuální systém z NAND zkopíroval na kartu, protože veškerá nastavení zůstala zachována. Konfigurace Samby, přípojné body, blokování reklam, nastavení LED, atd…

@Jerry Ano při migraci na BTRFS se na SD kartu překopíruje (zezrcadlí, používá se dd ) aktuální systém v NAND i se všemi aktuálními nastaveními.

Díky, tak to přemigruju …

Nezapomeňte potom po rebootu udělat pomocí schnapps create první snapsshot, ať se máte kam případně vracet.

Případně si udělejte v <Turris>/cgi-bin/luci/admin/system/commands příkazy, aby jste nemusel do konzole.

Vytvoření schnappsotu
schnapps create (povolit “Vlastní parametry” pro popis)

Výpis schnappschotů
schnapps list

a pro návrat
schnapps rollback (povolit “Vlastní parametry” pro číslo schnappshotu (viz list))

vše o příkazech schnapps tu .

Dobrý den / Ahoj, také jsem se rozhodl pro přechod na BTRFS, jen se chci ujistit v pár věcech, ve kterých si nejsem úplně jistý.
Na úvod:

  • Turris 1.1
  • Verze Turris OS 3.8.2.1 (jsem asi jeden ze šťastlivců, který nezaznamenal žádný problém)
  • SD kartu v něm zatím nemám a nikdy jsem jí tam neměl
  • Podle návodu výše jsem udělal update NOR na verzi 3.6.5

A teď již tedy k tomu, v čem se chci ujistit:

  1. Objednal jsem tuto SD kartu: https://www.alza.cz/adata-premier-micro-sdhc-16gb-uhs-i-class-10-sd-adapter-d4684749.htm
  • myslíte si, že bude OK? (vybíral jsem podle rychlosti a podle toho, že by dle recenzí měla lépe vydržet časné zapisování a zejména proto, že by měla na pobočku alzy přijít hned zítra)
  1. Nechápu, zda je potřeba nějak šachovat s tím přepínačem SW1 - “Nastavte přepínače 1 až 6 na přepínačové liště SW1 do stavu 011 010”, nebo zda prostě stačí jen vložit SD kartu
  2. Nevím, zda je potřeba SD kartu nějak mountnout, nebo se o to postará sám ten script turris-btrfs-migrate
  3. Můžu si být jistý, že se mi to opravdu nainstaluje na vloženou SD kartu (nerad bych, aby mi to třeba zformátovalo připojený externí disk - nemám jej raději odpojit?)
  4. Chápu správně, že by mi mělo zůstat funkční veškeré nastavení (nastavení všech wifi sítí, openvpn, nas, webserver, atd.)
  5. Je pravda, že se mi pak veškeré balíčky budou instalovat na SD kartu? (takže budu mít místo omezujících 256 MB možnost využít cca 16 GB)?

Mockrát děkuji za reakce

Pokud uz si NOR Flashnul nejak bez karty a mikrousb kabelu,tak se jen zastrci karta a skript to premigruje 1:1 na kartu. Takze ano …pak mas misto k instalaci balicku na karte.

tak teď si nejsem jistý, jestli jsem ten flash nějak nezkazil, když jsem to dělal bez karty a usb kabelu, ale udělal jsem toto:
přes ssh v puty jsem zadal:

wget https://repo.turris.cz/archive/turris/3.6.5/medkit/medkit.squashfs
mtd write medkit.squashfs “NOR (RO) NAND FW backup”

a teď když udělám:

mount /dev/mtdblock3 /mnt
xz -cd /mnt/medkit | tar -Ox ./etc/turris-version

tak dostanu:

3.6.5

Je to tak v pořádku?

Jo, to je v pořádku. To šachování s přepínači na motherboardu Turrise je pouze při flashi NORoficiální cestou a ten už jsi udělal mnohem příjemnějším způsobem.

Jen vlož kartu do Turrise, nech ho nastartovat (žádný microUSB kabel nepotřebuješ). Prostě pokračuj bodu 4 toho mého návodu. Po restartu Turrise vytvoř první zálohu příkazem
schnapps create

Děkuji za ujištění, přestávám se bát a zítra se na to vrhnu :slight_smile:

Není zač, já jsem se taky bál, a proto jsem si napsal tenhle postup :slight_smile:

Tak vám řeknu, že jsem úplně hotový, v 50-ti letech dělat něco takového je masakr. 4 hod. študování postupů, pak rozborka routeru, a teď jsem konečně hotov. Od 8 rána do teď. Ale je to snad hotové a už mě nic podobného nepotká. Nešel rozchodit terminál, pak ovladače, pak Putty šel jen na něco a na něco šel WinSCP. Mám dotaz, když zakoupím baterii a pak ji vyměním, nebudu muset snad znovu nic nastavovat. Děkuji

Ne, baterie je záložní zdroj pro udržení hodin v chodu, což je důležité třeba pro certifikáty, aby měl router správné datum a čas.
Mě je taky “pade” a až to budeš dělat třeba po pátý, máš to na hodinku, to mi věř. A není špatné naučit se něco nového.

Jestli jsem správně pochopil, pokud mám verzi 3.5 tak to nelze flasnout na 3.6.5 ?

Já jsem těsně pod pade :-).

Nevidím důvod, proč by to nemělo jít. Jediné omezení je zhora, kdy se verze novější než 3.6.5 nevejde. Což je tak trošku hodně na hov…, ale pořád lepší než pokaždé aktualizovat z 2.4