Category Archives: Recensione

Router-NAS

seagate_goflex

NBle modifiche che suggerisco potrebbero invalidare la garanzia del prodotto, non mi ritengo responsabile per eventuali danni al vostro hardware, se non sapete cosa state facendo non fatelo!

Questo post nasce in risposta a varie richieste di chiarimento che ho ricevuto in merito a come si possa modificare un router per fargli scaricare in automatico gli aggiornamenti di Arch Linux (o di altre distro).

Scelta dell’hardware

Ai suoi tempi la mia scelta cade sul Netgear DGN2200 per i seguenti motivi:

  • il prezzo contenuto: 49.9 €
  • presenza di una porta USB per la condivisione dei dati con uno storage esterno
  • possibilità di utilizzare un firmware personalizzato: Modfs

Ingredienti

  • un router Netgear DGN2200
  • un hard disk esterno (potrebbe andar bene anche una penna usb da diversi GB)
  • il firmware modificato,
  • l’immagine col modfs
  • binari di rsync + librerie per piattaforma mips

Per prima cosa flashare il router col nuovo firmware. Si tratta di un firmare quasi identico all’originale se non per il fatto che permette di caricare ed avviare il filesystem contenuto nella modfs. Per poter funzionare la modfs deve essere decompressa in una partizione FAT32 del disco collegato via USB al router, il nome dell’immagine non potrà essere modificato altrimenti non verrà caricata.

Ho optato per un HD da 320 GB, con una partizione sda1 FAT32 da qualche GB contenente la modfs e poco altro ed il resto del disco (sda2) formattato in ext3 così da non avere problemi né con i permessi, né con i file di dimensioni > 4 GB.

Col vostro browser preferito aprite l’interfaccia web di configurazione del router:
http://ip_router:8081

Nel mio caso http://192.168.0.1:8081, inserite user e password (di default: admin/admin). Andate su Services ed attivate cron ed sshd.

Per completare l’opera c’è bisogno di installare rsync sul router e di farlo partire in automatico ogni notte per sincronizzare i pacchetti dell’HD USB con quelli di un repository ufficiale di Arch (ovviamente tale giochetto può essere fatto con qualsiasi mirror che supporti rsync: Ubuntu, Debian, Slackware o perfino FreeBSD, NetBSD o OpenBSD).

L’architettura del router è mips, facilmente individuabile loggandovi con ssh e dando il comando # uname -a
Linux (none) 2.6.21.5 #2 Sun Apr 3 10:30:24 CEST 2011 mips unknown

Problema: dove rimediare rsync compilato per piattaforma mips?

Soluzione 1: scaricare buildroot e compilarne uno per conto nostro
Soluzione 2: cercare in rete se qualcuno si è già smazzato al posto nostro e distribuisce qualcosa che può fare al caso nostro.

Nel pieno spirito dell’opensource e data la mia proverbiale pigrizia ho deciso di approfittare del lavoro di qualcun altro. Nello specifico ho optato per sfruttare i pacchetti dei repositori dell’openwrt per adattarli alle mie esigenze.
Per chi fosse interessato metto a disposizione il pacchetto che ho fatto io: rsync, per installarlo basta copiarlo (es. da ssh usando wget) nella directory /tmp/mod/modfs del router e decomprimerlo.

La partizione FAT32 è automaticamente messa in share dal router e montata in /tmp/mnt/usb0/part1, ora bisogna montare manualmente anche l’altra partizione (sda2) all’interno del filesystem condiviso es.: /tmp/mnt/usb0/part1/pub.

Script
Aggiornare i repository di Arch  comporta l’impiego di vari parametri non particolarmente intuitivi da passare a rsync, per semplificarmi la vita mi sono creato quest script che scarica tutto quello che mi serve in /tmp/mnt/usb0/part1/pub/Backup/archlinux/

crond
Aggiungiamo lo script al cron-job così che possa essere eseguito ogni giorno ad una certa ora (es. alle 3:30):

/tmp/mod/modfs/packages/DGN2200/cron/scripts/cron_entry -s rsync "30 03 * * * /tmp/mnt/usb0/part1/pub/Backup/archlinux/mirror.sh"

/tmp/mod/modfs/packages/DGN2200/cron/scripts/update

(Per eliminare un processo da cron va invece usato quest’altro comando:
/tmp/mod/modfs/packages/DGN2200/cron/scripts/cron_entry -u rsync)

Condivisione
Per non interferire con i processi di sistema ho deciso di non sfruttare il server ftp dello share, ma di usare un nuovo processo con l’httpd di busybox.
httpd -p 81 -h /tmp/mnt/usb0/part1/pub/Backup/archlinux/ -c /tmp/mod/modfs/etc/httpd.conf
(Ho dovuto metterlo in ascolto sulla porta 81, perché l’80 è già occupata dal demone che gestisce l’interfaccia di configurazione del router)

Automatismo di boot
Per non dover montare a mano la partizione ext3 e far partire l’httpd sulla porta 81 ogni volta che devo riavviare il router, ho aggiunto allo script di sistema /tmp/mod/modfs/boot.sh
le seguenti righe:
mount /dev/sda2 /tmp/mnt/usb0/part1/pub
httpd -p 81 -h /tmp/mnt/usb0/part1/pub/Backup/archlinux/ -c /tmp/mod/modfs/etc/httpd.conf

Client
Per poter usare il repository locale dai PC di casa con Arch bisogna modificare il file /etc/pacman.d/mirrorlist
E come prima riga aggiungere
Server = http://192.168.0.1:81/$repo/$arch
(Dove 192.168.0.1 è l’IP del router e /$repo/$arch corrispondono al path dove risiedono i pacchetti)

Se usate Debian/Ubuntu dovrete invece modificare appropriatamente il file /etc/apt/sources.list

P.S.
In teoria la mia ADSL è un’Alice 7 MB, in pratica la portante arriva 1,5 MB a cui corrisponde una velocità massima in download di circa 155 Kb/sec.
Il mirror completo dei repository di Arch sono circa 25 GB per la i686 + altri 25 per la x86_64, quindi un totale di circa 50 GB se non volete rinunciare ad utilizzare un sistema a 64bit sui processori che lo supportano.
La prima volta che ho fatto la sincronizzazione per scaricare i 50 GB ho impiegato 3 giorni interi!
Adesso rsync si avvia in automatico ogni notte alle 3:30 ed in più di due anni non mi è mai capitato di trovarlo ancora in esecuzione la mattina alle 7.
Avere l’ADSL intasata dalle 3 alle 5 di mattina non crea alcun disturbo, mentre fare aggiornamenti di centinaia di MB in pochi secondi non ha prezzo 🙂
Guardate, ad esempio, la differenza di tempo che impiego nello scaricare un pacchetto da 26 MB come wine.

Repository esterno:
wine-1.3.33-1-x86_64            26.5M  152.2K/s 00:02:55

Mirror interno:
wine-1.3.33-1-x86_64            26.5M    4.8M/s 00:00:05

Ogni 25 MB risparmio circa 3 minuti. Non di rado capita un aggiornamento di KDE, GNOME o LibreOffice che può anche superare i 400 MB. Con la mia connessione ci metterei 40-50 minuti a PC, che moltiplicato x i 4 PC che ho, fanno 3 ore e mezzo! Col serverino casalingo impiego circa 1 minuto a PC e anche in quel breve lasso di tempo l’ADSL non subisce rallentamenti perché i pacchetti sono scaricati dalla LAN.
Cosa non ci tocca fare per rimediare all’inefficienza della Telecom…

Samsung ML-2165W

Samsung printer

Lunedì mattina mi è arrivata questa stampante e visto che ne sono rimasto piacevolmente sorpreso ho deciso di condividere con voi le mie impressioni.
Come al solito cercherò di essere il più sintetico possibile.

PRO

  1. Prezzo contenuto per una stampante laser wifi monocromatica: circa 60 €
  2. 100% compatibile con Linux (ha un driver che funziona alla perfezione, niente a che vedere con quell’accrocchio del CAPT della mia vecchia Canon)
  3. Tramite l’applicazione Samsung Mobile Print è possibile stampare direttamente dagli smartphone

 

CONTRO

  1. Attivare e configurare la rete wireless da Linux è un procedimento laborioso che si articola nei seguenti passaggi:

 

  • Scaricare l’archivio Printer Settings Utility dal sito della Samsung, scompattarlo ed avviare l’eseguibile wirelesssetup
    $ wget http://downloadcenter.samsung.com/content/DR/201110/20111019151150392/PSU_1.01.tar.gz
    $ tar xzf PSU_1.01.tar.gz
    $ cd cdroot/Linux/wirelesssetup
    $ bin/wirelesssetup /dev/usb/lp0
  • Controllare che siano presenti tutte le librerie necessarie al suo funzionamento (necessita delle QT3) e nel caso installarle.
    $ ldd bin/wirelesssetup  | grep 'not found'

 

 

Server Web

lighttpd vs IIS

Linux è un sistema molto popolare per i server, in particolare per i web server.
Negli ultimi 10 anni ha polverizzato le quote di mercato dei sistemi Unix (HP-UX, AIX, Solaris, Tru64, *BSD) ed ha significativamente intaccato quelle della Microsoft.

Alcuni utenti/sistemisti Windows considerano Linux un sistema operativo per adolescenti che giocano a fare gli hacker, assolutamente inferiore anche a livello server.

Dato che  “get the fact!” non è una prova, ma contano i benchmark, ho fatto un esperimento per vedere come stiano realmente le cose.

Ho preso in considerazione 2 server collegati alla rete col medesimo switch a 100 Mbit: un computer con Linux ed un server Windows.

Caratteristiche

  • Server Linux: P4 2,4 GHz, 1GB RAM, HDD SATA 80GB 7.2K rpm 8MB cache
  • Server Windows: IBM eServer Xseries, Intel Xeon 3,06 GHz, 4GB RAM, HDD 3x73GB Ultra 320 SCSI 3.5” 10k rpm

Tool per il benchmark: ab

Primo test

  • # ab -n 100 -c 5 http://xxx/xxx.html
    100 connessioni in totale, 5 alla volta
Server Software: Linux 2.6.32/lighttpd 1.4.25Server Hostname: xxxServer Port: 80Document Path: /xxx/xxx.htmlDocument Length: 6397 bytes

Concurrency Level: 5

Time taken for tests: 0.098 seconds

Complete requests: 100

Failed requests: 0

Write errors: 0

Total transferred: 670744 bytes

HTML transferred: 643777 bytes

Requests per second: 1018.85 [#/sec] (mean)

Time per request: 4.907 [ms] (mean)

Time per request: 0.982 [ms] (mean, across all concurrent requests)

Transfer rate: 6673.70 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 0 0.4 0 3

Processing: 2 2 0.4 2 4

Waiting: 1 1 0.4 1 3

Total: 2 3 0.6 3 6

Server Software: Windows Server 2003/IIS 6.0Server Hostname: xxxServer Port: 80Document Path: /xxx/xxx.htmlDocument Length: 4724 bytes

Concurrency Level: 5

Time taken for tests: 0.361 seconds

Complete requests: 100

Failed requests: 0

Write errors: 0

Total transferred: 499736 bytes

HTML transferred: 474890 bytes

Requests per second: 276.82 [#/sec] (mean)

Time per request: 18.062 [ms] (mean)

Time per request: 3.612 [ms] (mean, across all concurrent requests)

Transfer rate: 1350.95 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 1 4 2.8 3 17

Processing: 5 12 6.4 10 33

Waiting: 3 7 4.8 6 25

Total: 6 16 8.0 14 39

Il file html usato sul server Linux con lighttpd è di qualche KB più grande rispetto a quello usato per il test su Windows 2003 server con IIS6, nonostante ciò il server Linux ha impiegato meno di 1/3 del tempo di Windows per servire le pagine.
Ogni richiesta è stata completata in meno di 1 millisecondo, contro i 3,6 che in media sono serviti a Windows.

100 connessioni sono però poca cosa, anche Windows con IIS è riuscito a completarle in un tempo decente (0,36 secondi).

Secondo test

  • # ab -n 10000 -c 100 http://xxx/xxx.html
    10.000 connessioni in totale, 100 alla volta
Server Software: Linux 2.6.32/lighttpd 1.4.25Server Hostname: xxxServer Port: 80Document Path: /xxx/xxx.htmlDocument Length: 6397 bytes

Concurrency Level: 100

Time taken for tests: 6.049 seconds

Complete requests: 10000

Failed requests: 0

Write errors: 0

Total transferred: 66761632 bytes

HTML transferred: 64084156 bytes

Requests per second: 1653.11 [#/sec] (mean)

Time per request: 60.492 [ms] (mean)

Time per request: 0.605 [ms] (mean, across all concurrent requests)

Transfer rate: 10777.74 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 5 19 2.9 19 28

Processing: 7 41 3.9 41 71

Waiting: 6 21 3.4 21 53

Total: 13 60 2.8 60 78

Server Software: Windows Server 2003/IIS 6.0Server Hostname: xxxServer Port: 80Document Path: /xxx/xxx.htmlDocument Length: 5302 bytes

Concurrency Level: 100

Time taken for tests: 20.659 seconds

Complete requests: 10000

Failed requests: 0

Write errors: 0

Total transferred: 55480000 bytes

HTML transferred: 53020000 bytes

Requests per second: 484.04 [#/sec] (mean)

Time per request: 206.594 [ms] (mean)

Time per request: 2.066 [ms] (mean, across all concurrent requests)

Transfer rate: 2622.52 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 1 50 342.5 12 9007

Processing: 4 121 645.3 29 12169

Waiting: 3 102 633.6 16 12167

Total: 6 171 730.6 42 12186

Anche in questo caso il server Linux ha impiegato meno di 1/3 del tempo di Windows; ogni richiesta è stata completata in circa 0,6 millisecondi, contro i 2 di Windows.

Un normalissimo PC con un PIV 2,4 GHZ ed 1 GB di RAM, grazie a Linux, si è dimostrato 3 volte più performante di un ben più potente (e costoso) server IBM con processore Xeon 3,06 MHz, 4 Gb RAM, equipaggiato con Windows 2003 server e IIS6.

Carta Nazionale dei Servizi e Firma Digitale

Tessera SanitariaLa Regione Toscana ha da poco fatto recapitare ai cittadini le nuove tessere sanitarie dotate di microchip crittografico. Non tutti sanno che è una Carta Nazionale dei Servizi e che può essere utilizzata per accedere anche a molti altri servizi online della Pubblica Amministrazione (Agenzia Entrate, Camera di Commercio…). Con questo articolo abbiamo provato a spiegare come si possa sfruttare questa potenzialità utilizzando Linux e Software Libero.