In questi giorni sono tornato a smanettare con il mio My Book World Edition.
Lo vendono come “Harddisk di rete”, in realtà è un NAS (Network Attached Storage) cioè un computer con un grosso disco, una scheda di rete e tutto il software necessario per condividere il proprio disco con gli altri PC della LAN. Questo NAS, come molti altri dispositivi con computer integrato, nasconde al suo interno un sistema operativo Linux processore ARM.
La distribuzione Linux usata è una versione proprietaria e soprattutto minimale. Mancano comandi quasi indispensabili come screen, le utility di base sono limitate (ad esempio rm non ha l’opzione -v), manca il Vim e in generale non è possibile aggiungere nuovo software.
Per queste distribuzioni senza un proprio package manager e che girano su ARM il modo più semplice per installare software è quello di usare optware.
In teoria dopo aver seguito le istruzioni di installazione esso dovrebbe permettere di installare i nuovi pacchetti con::
ipkg install <nome-pachetto>
Per installare optware basta seguire la guida su mybookworld.wikidot.com dove è anche spiegato come accedere alla shell del NAS tramite SSH.
Qui finisce la teoria e inizia la pratica perché a casa mia c’é un problema che non mi permettere di sfruttare questo utile programma: il NAS non può accedere ad Internet! Di conseguenza ipkg non potrebbe scaricare nessun pacchetto! Infatti a casa non ho l’ADSL e l’unico modo che ho per accedere alla Rete è la chiavetta Internet :-(
Improbabili cablaggi e riconfigurazioni della tabella di routing sono fuori discussione. Si tratta di un problema soft, il mio portatile può accedere ad Internet e può accedere al NAS, quindi la soluzione deve essere soft.
La soluzione soft si basa sui web proxy e sui tunnel SSH e si compone di due passi:
Ho deciso di installare polipo, un web proxy mono-thread che sembra più semplice di squid::
(portatile) $ brew install polipo
(portatile) $ polipo
Established listening socket on port 8123.
...
Ora il proxy si trova in ascolto sulla porta 8123 del mio portatile; con il port-forwarding di SSH posso fare in modo che sia accessibile anche dal mio NAS::
(portatile) $ ssh -R8123:localhost:8123 nas.local
Però non so come configurare ipkg in modo che usi il proxy giusto. Fa niente, lo posso scoprire con un avvio di prova::
(nas) ~ # ipkg install nano
Installing nano (2.2.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/nano_2.2.6-1_arm.ipk
Nothing to be done
An error ocurred, return value: 22.
Collected errors:
ipkg_download: ERROR: Command failed with return value 1: `wget
--passive-ftp -q -P /opt/ipkg-ZFXnou http://ipkg.nslu2-linux.org
/feeds/optware/cs05q1armel/cross/unstable/nano_2.2.6-1_arm.ipk'
Failed to download nano. Perhaps you need to run 'ipkg update'?
Dal messaggio di errore appare chiaro che ipkg usi wget come backend per il download, quindi mi dovrebbe bastare configurare quello::
(nas) ~ # cat >> ~/.wgetrc << EOF
http_proxy = http://localhost:8123/
use_proxy = on
EOF
E in effetti funziona::
(nas) ~ # ipkg install nano
Installing nano (2.2.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/nano_2.2.6-1_arm.ipk
Configuring nano
Successfully terminated.