Taglinux

Cyanogenmod 10.1 su nexus 7 con Linux

Scrivo questa guida passo passo per installare cyanogenmod 10.1 su Nexus 7, come promemoria, spero omnicomprensivo, dal momento che su internet non ho trovato una spiegazione chiara ed esaustiva, almeno in lingua italiana.

La guida presuppone che venga usato linux come sistema operativo per procedere allo sblocco del bootloader e android-sdk come unico tool necessario.

A bomba sui

Requisiti preliminari

Procuriamoci il pacchetto android Sdk. Con archlinux dovremo prelevare i seguenti pacchetti AUR: android-sdk e android-sdk-platform-tools. Per le distribuzioni debian-centriche, nello specifico Ubuntu, il pacchetto è disponibile tramite PPA W8 . Per altre distribuzioni basate su rpm è sufficiente consultare le guide di vostra appartenenza. Qui, ad esempio, c’è una pagina wiki che spiega come installare l’android development kit su Fedora.

Lo scopo sostanziale dell’installazione di android-sdk è di avere due strumenti da console: adb e fastboot, che ci consentiranno di procedere all’unlock ed al trasferimento delle immagini di cyanogenmod all’interno del nostro nexus 7.

Ora procediamo all’operazione, passo passo.

Passo 1:

(nexus7)
Assicuriamoci di avere l’ultima versione di Android 4.2.1 stock installata tramite aggiornamento OTA di Google.

Passo 2:

(nexus7)
Abilitiamo il debug usb in Nexus 7. Per farlo, scegliamo: impostazioni->informazioni sul tablet e facciamo tap per 7 volte su Numero Build. Ottenuti i permessi di sviluppatore, scegliamo opzioni sviluppatore e selezioniamo debug USB.

Passo 3:

(computer Linux)
Assicuriamoci che fastboot e adb siano stati installati correttamente e che il PATH sia stato esportato, tramite i comandi adb e fastboot, che, lanciati senza argomenti, dovranno restituirci il solito prontuario di help dei parametri disponibili.

Passo 4:

(computer Linux)
Scarichiamo l’immagine della recovery di Clockworkmod

Passo 5:

(computer Linux)
Scarichiamo i pacchetti necessari per Cyanogenmod 10.1 per Nexus 7 wifi (grouper) e le Google Apps per Jelly Bean

Passo 6:

(computer linux)
Colleghiamo via usb il nostro computer al nexus7 e verifichiamo che venga riconosciuto da adb, tramite il seguente comando:

sudo su
[root@badapple ~]# adb devices
List of devices attached 
015d24bc5d641414	device

Se otteniamo, come qui sopra, il seriale del dispositivo, siamo pronti per procedere.

Passo 7:

(computer linux)
Trasferiamo le immagini precedentemente scaricate nel Nexus7. Possiamo farlo o via mtd o tramite console con

adb push cm-10.1-20130105-NIGHTLY-grouper.zip /sdcard/
adb push gapps-jb-20121212-signed.zip /sdcard/

Passo 8:

(computer linux)
Otteniamo i permessi di root e posizioniamoci nella directory dove abbiamo scaricato la recovery Clockworkmod. Diamo il comando

 
adb reboot bootloader

per mettere il nexus7 in modalità fastboot. Una volta ottenuta la schermata di fastboot sul nexus7, verifichiamo che il dispositivo venga riconosciuto dal nostro tool con

fastboot devices.

Anche qui, questo comando dovrà restituirci il numero seriale del nostro nexus7.
Passiamo quindi a sbloccare il bootloader del nostro dispositivo:

fastboot oem unlock

Apparirà un disclaimer sullo schermo del nexus7, al quale dovremo rispondere yes. I bootloader ora è sbloccato e possiamo installare la Clockworkmod recovery

Passo 9:

(computer linux)
Dopo il riavvio del dipositivo ormai sbloccato, ripetiamo la procedura di fastboot mode per installare clockworkmod:

adb reboot bootloader

La schermata di fastboot, ormai familiare, ci dirà che il dispositivo è sbloccato e che quindi ci sarà possibile flashare Clockworkmod.

fastboot flash recovery recovery-clockwork-6.0.1.9-grouper.img

La procedura durerà alcuni secondi. Una volta terminata, tramite i pulsanti volume e power del nexus7 potremo riavviare il terminale in recovery mode.

Passo 10:

(nexus7)
Dalla schermata di Clockworkmod recovery, tramite i pulsanti volume e power scegliamo nell’ordine:
wipe data/factory reset
install zip from sdcard
install cm-10-XXX.zip
install gapps-jb-XXX.zip
reboot.

Fatto, il nostro Nexus7 è ora cyanogenmoddato. :-)

Come ho detto nella premessa, ci sono tonnellate di guide in rete, anche in italiano, ci sono toolkit che fanno tutto in un click, ma questo approccio, che ho usato anche ieri per sbloccare il mio Nexus7, mi è sembrato il più lineare e semplice, con il totale controllo delle operazioni.

Se avessi commesso degli errori o se aveste bisogno di quelche chiarimento, sono sempre disponibili qui nei commenti e su google plus.

Follow @dema on ADN

+Antonangelo De Martini»

Archlinux e systemd/initscript in tre semplici mosse

Se usate archlinux come me e se, compulsivamente, date, anche più volte in un giorno, yaourt -Syua, allora siete già pronti per passare ad un init misto systemd/initscript.

Ecco i tre passi da compiere per completare il passaggio:

  1. Andiamo su /etc/default/ e modifichiamo il file grub come segue
    nano -v grub
    GRUB_CMDLINE_LINUX_DEFAULT="init=/usr/lib/systemd/systemd quiet"

    Ricreiamo il file /boot/grub/grub.cfg con i seguenti comandi (ridondanti, ma nel più ci sta il meno):

    grub-install /dev/sda #o l'unità disco dal quale il vostro sistema fa il boot
    grub-mkconfig -o /boot/grubgrub.cfg
    mkinitcpio -p linux

    Riavviate

  2. Il nostro sistema ora parte con un sistema di init misto, systemd/sysvinit/initscripts.
    Dobbiamo controllare quali demoni partono all’avvio con il vecchio file /etc/rc.conf e cercare di rimpiazzarli con systemd.
    Apriamo due emulatori di terminale come illustrato qui in basso; in uno modifichiamo il file /etc/rc.conf in un altro attiviamo i comandi systemctl enableterminali emulazione demaPer ogni demone lanciato precedentemente dagli script sysvinit ed indicati nella riga DAEMONS in rc.conf dobbiamo trovare l’analogo per systemd.Possiamo aiutarci con la seguente tabella: (courtesy of archwiki)
  3. Una volta compiuto questo passo, siamo pronti per togliere di mezzo sysvinit/initscript e passare a systemd/initscript
  4. Installiamo il pacchetto systemd-sysvcompat
    pacman -S systemd-sysvcompat
    risoluzione delle dipendenze in corso...
    ricerca dei conflitti in corso...
    :: systemd-sysvcompat e sysvinit vanno in conflitto. Vuoi rimuovere sysvinit? [s/N]

    Rimuoviamo la riga da /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT=”init=/usr/lib/systemd/systemd, riconfiguriamo grub come al punto 1 e riavviamo.

In un prossimo post vedremo come passare ad un sistema con init in puro systemd.

Follow @dema on ADN

+Antonangelo De Martini»

Font mangiucchiati su Arch Linux con Intel 945

Se usi linux (arch nel mio caso), se hai una scheda grafica Intel così identificata da lspci

00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)

e vedi i font mangiucchiati, devi aggiungere questo file nel path /etc/X11/xorg.conf.d .

nano -w 10-debugwait.conf
Section "Device"
    Identifier "Intel"
    Driver "intel"
    Option "DebugWait" "true"
EndSection

Riavvia il server grafico X e niente più font mangiucchiati.

+Antonangelo De Martini

Le cose di una volta parte 1

E’ per me un periodo di riciclo, di rivalutazione delle cose di una volta.
Intendiamoci, con i tempi che corrono, le cose di una volta si possono annoverare negli oggetti che hanno anche solo due anni di vita.

Ecco alcuni strumenti che ho rimesso in vita e ri-cominciato ad usare su base giornaliera.

MacBook Nero 1.1 anno 2006
Core Duo (T2500) 2.0 GHz
1 GB PC2-5300 DDR2
80 GB (5400 RPM) Serial ATA (1.5 Gb/s)
13.3″ Widescreen Glossy display.

marcamp 2007

Image Credits:Luca Conti

E’ il mio primo e unico macbook, usato con assiduità per circa tre anni e poi abbandonato, prima in favore di un netbook 10,1 asus e poi semplicemente non usato per minore necessità di computazione in mobilità; per intenderci la comparsa degli smartphone ha ridotto l’esigenza di portarsi sempre appresso un notebook.

Ultimamente viaggiava sempre in borsa, ma sempre spento e veniva utilizzato solo nell’eventualità di un intervento presso qualche cliente. Le ragioni di un progressivo disinnamoramento credo siano da ricercarsi nel fatto che una macchina così poco dotata dal lato hardware ormai faticava, e non poco, con il carico del sistema operativo Mac OsX Leopard.

Alcuni giorni fa la svolta. Seguendo la precisa guida di Arch Wiki ho fatto piazza pulita di MacOs e installato Archlinux. Il macbook è tornato a nuova vita. Una saetta incredibilmente performante, con tutte le periferiche funzionanti, una sospensione su ram — che con macosx aveva smesso di funzionare per problemi di intermittenza del chip bluetooth — favolosa e una durata di esercizio delle batterie forse maggiore che con MacOs*.
continua…

*quest’ultima valutazione può essere falsata dal mio rinnovato entusiasmo nel veder volare un computer che prima era lento come una lumaca :-)

+Antonangelo De Martini

Web radio con Amazon EC2

Come forse già sapete, Amazon ha lanciato le nuove micro istanze da 0.02 US$ l’ora che permettono di avere un server virtuale  con 633 MB di Ram e 1 VCPU. Questo ci permette di poter fare delle sperimentazioni senza troppi patemi d’animo.

Quello che segue è un piccolo esperimento per un server webradio Icecast da usare in qualsiasi momento per una diretta radio estemporanea con la possibilità di collegare un discreto numero di ascoltatori contemporaneamente.

Infatti ogni istanza EC2 Amazon dovrebbe poter contare su 250Mbps di banda upstream, il che permette un totale di quasi 1900 ascoltatori a 128Kbps con un costo indicativo di circa 0.15 us$ per Gb. Per un’ora di trasmissione con 2000 ascoltatori dovremmo spendere all’incirca 15 euro. Ci dovremmo stare nelle spese :-)

Andiamo a vedere nel dettaglio come lanciare un’istanza micro di fedora core 8.

Continue reading

Old sources su Ubuntu non più mantenute

Certe volte capita di dover lavorare su vecchie installazioni di Ubuntu, ancora perfettamente funzionanti ma non di classe LTS e quindi ormai abbandonate.

Può capitare di voler aggiungere qualche pacchetto, ma essendo scaduto il supporto, apt-get install non funziona più.

La soluzione è cambiare il file sources.list, elencando come target old-releases.ubuntu.com. Ecco un esempio con Gutsy 7.10  :

[sourcecode language="bash"]
deb http://old-releases.ubuntu.com/ubuntu/ gutsy main restricted
deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates main restricted
deb http://old-releases.ubuntu.com/ubuntu/ gutsy universe
deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates universe
deb http://old-releases.ubuntu.com/ubuntu/ gutsy multiverse
deb http://old-releases.ubuntu.com/ubuntu/ gutsy-updates multiverse
deb http://old-releases.ubuntu.com/ubuntu/ gutsy-security main restricted
deb http://old-releases.ubuntu.com/ubuntu/ gutsy-security universe
deb http://old-releases.ubuntu.com/ubuntu/ gutsy-security multiverse[/sourcecode]

Dopo un apt-get update possiamo nuovamente aggiungere il pacchetto preferito con apt-get install.

Il mediacenter in salotto

Finalmente ho deciso di dotarmi di una postazione di home entertainment in salotto così composta :

Tv lcd full HD 37 pollici LG 37LD428
Decoder sky HD
Asus eeebox  PC EB1501

Se ovviamente lato televisore e decoder c’è veramente poco da smanettare nel piccolo eeebox possiamo mettere le mani con soddisfazione  e creare un media center di tutto rispetto mantenendo ingombro e rumorosità sotto controllo e, cosa da non sottovalutare, senza deturpare l’arredo con “case” catafalchi e grovigli di fili.

L’eeebox EB1501 è stato scelto fra i vari nettop principalmente per tre motivi.
Il primo è che ho un’ottima stima di Asus come produttore e nessuna brutta esperienza con i suoi prodotti, il secondo è la dotazione di serie di un telecomando a raggi infrarossi e un ricevitore IR integrato, indispensabile per un mediacenter e l’ultimo perché è uno dei pochi nettop che incorpora anche il lettore DVD (sempre più raramente, ma a volte può capitare di vederne uno).

Per il resto le caratteristiche sono quelle di un comune nettop: intel atom 330 dual core, 2 Gb Ram, disco da 250 Gb, grafica Nvidia ION, porta Lan e WLAN b/g/n.

Non mi dilungo sulle valutazioni dell’hardware in quanto l’Eeebox EB1501 è ormai in commercio da un pezzo ed è stato già rivoltato come un calzino.

Vediamo come al solito passo passo come procedere all’installazione del software che si appoggerà su Ubuntu 9.10 e XBMC.

Continue reading

Backup su HSDPA con router Linux

La settimana scorsa Stefano ha avuto un down tremendo della HDSL, più di 72 ore, quasi insopportabili per una azienda al giorno d’oggi. Per questo motivo mi ha chiesto di aggiungere al firewall/router che già gestisce le policy di rete, un backup su HSDPA automatico che attivi la connessione su 3G non appena il link ADSL cade.

Ho cercato in rete se esisteva già qualche setup, ma ho trovato solo una guida per zeroshell e alcune discussioni su forum che però non erano pienamente esaustive.

Partendo quindi dal semplice concetto che per effettuare uno switch al volo occorre testare il default gateway e nel caso fallisca attivare il gateway su rete cellulare e il masquerading  attraverso esso, ho buttato giù questo accrocchio immondo in shell script.

Il meccanismo si basa su quattro script chiamati pingeth1, killpingeth1, pingppp0, killpingppp0.

Lo script principale è pingeth1

[sourcecode language="bash"]
#/bin/bash
ping -I eth1 -c3 151.99.29.203 > result.tst;
ALERT=`grep -c "3 received" result.tst`
if [ $ALERT = 1 ] ; then
echo "ok"
else
wvdial &
sleep 10
/usr/local/bin/killpingeth1
/sbin/shorewall clear
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
/sbin/route add default gw 10.64.64.64 dev ppp0
fi
rm result.tst
exit 0[/sourcecode]

Esaminiamo nel dettaglio quanto sopra:

Vengono lanciati 3 ping attraverso eth1 (porta wan collegata al router adsl) verso il nodo p-t-p della connessione (151.99.29.203) e il risultato viene scritto nel file temporaneo result.tst

Viene introdotta la variabile ALERT ottenuta greppando e contando l’occorrenza del termine “3 received” dal file temporaneo result.tst.

Se il valore di ALERT è uguale ad 1, lo script si limita a stampare la scritta OK, se il valore di ALERT è diverso da 1 viene nell’ordine:

1)lanciato wvdial in backgroud
2)inserito un sleep di 10 secondi per permettere a wvdial di alzare correttamente la connessione
3)invocato lo script killpingeth1 (che vedremo più sotto)
4)resettate le regole del firewall in essere
5)inserita una nuova regola di iptables per il masquerading attraverso l’interfaccia ppp0
6)aggiunta la nuova default gateway attraverso l’interfaccia ppp0

Viene infine rimosso il file temporaneo result.tst.

Pingeth1 va eseguito ogni minuto da cron, per cui occorre creare un nuovo cronjob

[sourcecode language="bash"]
crontab -e
*/1 * * * * /usr/local/bin/pingeth1 >/dev/null[/sourcecode]

Esaminiamo ora lo script killpingeth1

[sourcecode language="bash"]
#/bin/bash
crontab -l >CRON_TEMP
awk ‘$0!~/pingeth1/ { print $0 }’ CRON_TEMP >CRON_NEW
echo "*/1 * * * * /root/pingppp0 >/dev/null" >>CRON_NEW
crontab CRON_NEW
/etc/init.d/cron restart
rm CRON_TEMP;
rm CRON_NEW;
exit 0[/sourcecode]

La funzione primaria di killpingeth1 è quella di cambiare lo schedulatore, rimuovendo la programmazione di pingeth1 ed inserendo la nuova programmazione di pingppp0 (che vedremo più sotto).

Invocato unicamente in caso di mancata risposta del gateway primario killpingeth1 esegue i seguenti passaggi:

1)Elenca il contenuto del crontab e lo scrive in un file temporaneo CRON_TEMP
2)verifica la presenza della stringa pingeth1 sul file temporaneo CRON_TEMP e se presente la elimina scrivendo un nuovo file CRON_NEW
3)appende alla fine del file CRON_NEW la nuova schedula di pingppp0
4)installa il nuovo cronjob
5)rimuove i file temporanei CRON_NEW e CRON_TEMP

Da questo momento la connessione è instradata attraverso ppp0, però con un monitor sempre attivo sull’interfaccia principale, in modo che, se la connessione dovesse essere ripristinata, si ritorni in modo automatico alle condizioni di lavoro predefinite.

Il controllo dell’interfaccia eth1 viene demandato allo script pingppp0 che abbiamo inserito nel nuovo cronjob.

Vediamolo in dettaglio

[sourcecode language="bash"]
#/bin/bash
/sbin/route del default gw 192.168.0.1 dev eth1
/sbin/route add default gw 192.168.0.1 dev eth1
ping -I eth1 -c 3 151.99.29.203 > result.tst;
ALERT=`grep -c "3 received" result.tst`
if [ $ALERT = 1 ] ; then
killall wvdial
/usr/local/bin/killpingppp0
/sbin/shorewall restart
else
echo "ancora su linea backup"
/sbin/route del default gw 192.168.0.1 dev eth1
fi
rm result.tst
exit 0[/sourcecode]

Lo script pingppp0 viene eseguito ogni minuto e compie la seguente routine:

Cancella ed aggiunge la default gateway su eth1 (workaround orrendo, ma senza questo passaggio il ping di controllo non riusciva a passare dall’interfaccia eth1, se qualcuno ha una soluzione può integrare e migliorare questo passaggio)

Esegue i soliti 3 ping verso il nodo p-t-p della connessione (151.99.29.203) e il risultato viene scritto nel file temporaneo result.tst

Introduce la variabile ALERT ottenuta greppando e contando l’occorrenza del termine “3 received” dal file temporaneo result.tst.

Se il valore di ALERT è uguale ad 1 viene nell’ordine:

1)abbattuto il processo wvdial facendo così cadere la connessione 3G
2)invocato lo script killpingppp0 ( che vedremo più sotto)
3)fatto ripartire il firewall

Se il valore di ALERT è diverso da 1 si limita a stampare la stringa “ancora su linea backup” e cancella la default gateway su eth1, rimuovendo come ultimo comando il file temporaneo result.tst.

Rimane da prendere in esame l’ultimo script killpingppp0 che si prende cura di ripristinare il corretto cronjob su pingeth1

Ecco lo script:

[sourcecode language="bash"]
#/bin/bash
crontab -l >CRON_TEMP
awk ‘$0!~/pingppp0/ { print $0 }’ CRON_TEMP >CRON_NEW
echo "*/1 * * * * /root/pingeth1>/dev/null" >>CRON_NEW
crontab CRON_NEW
/etc/init.d/cron restart
rm CRON_TEMP
rm CRON_NEW
exit 0[/sourcecode]

Lo script è del tutto analogo a killpingeth1 e quindi esegue nell’ordine i seguenti passaggi:

1)Elenca il contenuto del crontab e lo scrive in un file temporaneo CRON_TEMP
2)verifica la presenza della stringa pingppp0 sul file temporaneo CRON_TEMP e se presente la elimina scrivendo un nuovo file CRON_NEW
3)appende alla fine del file CRON_NEW la nuova schedula di pingeth1
4)installa il nuovo cronjob
5)rimuove i file temporanei CRON_NEW e CRON_TEMP

Questa catena di script si intesta in un loop che switcha in maniera accettabilmente veloce la connessione tra la linea adsl e 3G, senza nessun intervento manuale da parte dell’amministratore di sistema.

Vista la ruvidità del procedimento non è possibile avere tutte le funzionalità avanzate del router come transparent proxy e vpn, ma credo che il compromesso per essere sempre online anche dopo la caduta del link primario sia accettabile.

I vostri commenti, insulti e migliorie sono come al solito più che apprezzati.

Xen su debian lenny 64 bit, no frills guide parte 3

Eccoci giunti al momento di installare delle virtual machines full virtualized sul nostro hypervisor Xen.

Inizieremo con la preparazione di un file immagine per ospitare il sistema windows e con la creazione dell’immagine Iso per l’installazione.
Continue reading

Xen su debian lenny 64 bit, no frills guide parte 2

Ci eravamo lasciati con il riavvio di Dom0 nel nuovo ambiente di hypervisor, con tutti i controlli e gli accorgimenti del caso.

E’ arrivato il momento di creare la prima virtual machine (DomU) linux paravirtualizzata.

Continue reading

Xen su debian lenny 64 bit, no frills guide parte 1

Mi ero ripromesso di scrivere questa guida, per motivi pratici di supporto alla mia sempre fallace memoria e per motivi di condivisione con i miei colleghi in Cpline. C’è voluto un po’ di tempo, ma finalmente eccomi qui con un modesto ma perfetto allo scopo Acer Altos G540 M2 pronto per essere trasformato in hypervisor per ospitare macchine (para)virtualizzate.

L’articolo è un barboso howto passo passo, quindi chi non fosse interessato puo’ tranquillamente fermare la lettura qui

Continue reading

Workaround per Metacity in Gnome 2.30 su Archlinux

Ieri è stato rilasciato per Archlinux l’aggiornamento a Gnome 2.30. I cambiamenti, oltre al solito bugfix e un nuovo set di icone, sono incentrati su una migliore usabilità e facilità di accesso alle funzioni più comuni.

Purtroppo esiste al momento un bug di metacity, il gestore delle finestre di default di Gnome, per il quale se si clicca con il tasto destro nella barra del titolo della finestra si blocca tutto il desktop. Per ripristinare è necessario loggarsi in una console tty con CTRL+ALT F1 e uccidere il processo con killall -9 metacity .

Per ovviare a questo fastidio bisogna effettuare un downgrade di metacity, con il solito procedimento ” a la arch”

  • editare il file /etc/pacman.conf ed inserire la riga “IgnorePkg    = metacity”
  • scaricare il pkg tar gz di metacity-2.28.1-1 (qui oppure presso il mio mirror qui)
  • eseguire il comando “pacman -U metacity-2.28.1-1-i686.pkg.tar.gz”

NB: Questo è un instant post che probabilmente perderà di valore tra una manciata di ore quando la community arch renderà disponibile il pacchetto patchato.

Samba PDC . Appunti a mi manera

Sì , lo so , ci sono tonnellate di howto in qualsiasi lingua del mondo per costruirsi in casa un bel controller di dominio stile Windows con Linux e OpenLDAP.

Io però non sono mai riuscito a fare le cose pulite e soprattuto a farlo funzionare come dio comanda , fino a che non ho seguito la guida di Stenoweb .

Completa , esaustiva e semplice , forse perché scritta per Arch e come tutti sappiamo “The Arch way is the easy way” :)

Fatto sta che mi sono fatto due appunti adattandoli per Debian 5.0 Lenny e ho già messo una macchina in produzione con soddisfazione massima del cliente.

Gli appunti sono consultabili qui.

Wifi in Hotel : howto tecnico

Come promesso un paio di settimane fa , ho pronto l’howto secco e come al solito step by step per approntare un sistema di hotspot fai da te per un albergo , una struttura comunitaria , un centro uffici e chi più ne ha più ne metta.

Come al solito è un pippone tecnico , quindi consiglio la lettura solo a chi è veramente interessato

Continue reading

Centro Servizi

Per la serie post di utilità prima di tutto per la mia sempre più fallace memoria , e poi forse anche per qualcuno in cerca di una soluzione di routing per un setup simile.

Problema : Predisporre la connettività per un centro servizi da 10 uffici

Soluzione : un server Linux , uno switch managed layer 2 da 16 porte, 11 switch unmanaged da 6 porte , due router adsl alice business .

L’articolo è un pippone tecnico parecchio lungo , quindi se proprio ti interessa puoi continuare la lettura :)

Continue reading

© 2014 Dema Blog

Theme by Anders NorenUp ↑