Piero V.

OpenWRT/LEDE + extroot in F2FS? Ma anche no

Ho parlato più volte del mio TD-W8970 e ancora più volte di OpenWRT.

Sostanzialmente penso che siano un’accoppiata perfetta e una delle configurazioni dei miei vari dispositivi che mi diano meno da pensare, tuttavia di tanto in tanto ci faccio un po’ di manutenzione e di upgrade e così ho fatto anche di recente.

Negli anni il team di OpenWRT ha fatto un ottimo lavoro e adesso l’upgrade spesso riesce correttamente e ripristina senza problemi la configurazione, al più è necessario reinstallarsi i pacchetti aggiuntivi.

Io non ne uso molti: OpenVPN, DDNS e server UPnP, tuttavia ad un certo punto ho cominciato ad essere a corto di spazio, ho deciso quindi di passare ad una root su chiavetta USB. Anche questa è una cosa che mi piace fare, anche perché oggi le chiavette spesso le regalano come pubblicità; forse il TD-W8970 è stato proprio il primo dispositivo su cui ho fatto questo passaggio. Per questo motivo ho deciso di fare un’installazione pulita, con tanto di formattazione della chiavetta.

Guardando la guida ufficiale, mi sono ricordato di F2FS, quel filesystem creato da Samsung appositamente per le memorie flash e di cui mi ricordo tipicamente soltanto quando ho finito di installare un sistema, così ho colto la possibilità per provarlo.

Nonostante il TD-W8970 abbia una flash da 8MB, ho deciso di modificare l’immagine secondo la guida ufficiale, includendo però anche luci. I motivi sono semplici: mi evita la configurazione della connessione a Internet solo per scaricare i pacchetti, che in questo modo rimangono disponibili anche in caso di failsafe boot o di ripristino alle impostazioni di fabbrica.

Il risultato sono state 3-4 ore (di sonno, peraltro) perse, in cui avrò reinstallato una decina di volte tutto quello che mi serviva e modificato le varie impostazioni.

Alla fine ho scoperto il problema: proprio F2FS. Ad un certo punto, alcuni file cominciavano a non essere più validi. Spesso provando a leggere script testuali con cat venivano letti come file binari.

Quando ho messo invece ext4, non ho più avuto problemi, quindi ho lasciato quello e adesso tutto funziona senza problemi.

Cercando su Internet, ho trovato che la colpa potrebbe essere della mancanza del modulo crypto-crc32, tuttavia non ho avuto voglia di rifare un’altra immagine solo per provarlo. Alla fine l’uso della chiavetta per OpenWRT è così limitato che non penso Ext dia dei problemi, dopo tutto è un file system estremamente solido.

Se può esservi utile, il comando che ho dato per creare l’immagine OpenWRT/LEDE, è stato questo:

make image PROFILE=TDW8970 PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk uhttpd uhttpd-mod-ubus libiwinfo-lua luci-base luci-app-firewall luci-mod-admin-full luci-theme-bootstrap"

Il comando va dato dentro la root dell’imagebuilder disponibile nella directory dell’architettura del vostro dispositivo che potete trovare qui. L’immagine non compila niente, bensì scarica i pacchetti ufficiali dalla release di cui avete scaricato l’imagebuilder. Questo garantisce compatibilità se volete installare anche altri pacchetti, ma vuol anche dire che avete bisogno di una connessione ad Internet attiva per usarlo, il che potrebbe essere un problema se il vostro router è ko perché avete fatto un’immagine sbagliata.

Un’altra cosa positiva dell’imagebuilder è che risolve da solo le dipendenze. Per esempio anche ext4 utilizza il citato kmod-crypto-crc32, tuttavia lo richiede come dipendenza, quindi non è necessario specificarlo esplicitamente.

Il comando dovrebbe andare bene anche per altri router, basta cambiare il PROFILE. Fortunatamente il profilo include anche dei pacchetti necessari al dispositivo particolare, per esempio il TD-W8970 utilizza un hub USB, i cui driver sono necessari per far andare la extroot.

Attenzione: se vi basate su una release nightly, il profilo potrebbe essere minimale e non includere questo tipo di driver. Inoltre vi sconsiglio di usare una release nightly: generalmente sono stabili (sono andato avanti più di metà anno con una nightly di Designated Driver, e probabilmente avrei potuto continuare per parecchio altro tempo), però non è detto che se vorrete installare tra qualche tempo dei pacchetti aggiuntivi, essi siano compatibili. Questa è essenzialmente la motivazione per cui io ho fatto quest’operazione di manutenzione.

Questa è la prima volta che faccio un aggiornamento da quando OpenWRT e LEDE hanno fatto il merge. Ho notato che certi dettagli sono stati rifiniti, come i vari LED, il modem ha agganciato subito la VDSL senza problemi di annex e penso che anche i driver dello switch siano stati sistemati, anche se non ho potuto ancora verificare. Però sono un po’ nostalgico, e mi mancheranno sia i nomi dei cocktail per le versioni, che il logo di OpenWRT nel motd di SSH, d’altronde erano 8-9 anni che lo vedevo, dalla prima volta in cui l’ho installato nella fantastica Fonera.