tag:blogger.com,1999:blog-61355476310447334802024-02-20T10:20:31.213+01:00Maxtrix.nixInformazioni, guide, soluzioni e tutorial di programmazione per sistemi GNU/Linux.Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.comBlogger55125tag:blogger.com,1999:blog-6135547631044733480.post-77055788533869518592019-03-24T14:22:00.002+01:002019-03-24T15:18:10.072+01:00Liberacus v3.3 - il programma gestionale per sartorie ora è rilasciato anche come pacchetto .debHo rilasciato pochi giorni fa l'ultima versione di Liberacus, la novità più importante è che adesso fornisco un comodo pacchetto precompilato .deb, così che non dovrete più compilarlo dal codice sorgente, ma vi basterà installarlo con il comando dpkg:<br />
<br />
<b>>$ sudo dpkg --install liberacus-3.3.deb</b><br />
<br />
Sempre che utilizziate una distribuzione Debian o una delle tante derivate (Ubuntu, Mint, ecc...), altrimenti dovrete compilarlo da voi.<br />
<br />
Potete scaricarlo subito da <a href="https://gitlab.com/Maximilianum/liberacus/releases" target="_blank">qui</a>.<br />
<br />
I pacchetti da cui dipende il programma sono i seguenti:<br />
<ul>
<li>libgtkmm-3.0</li>
<li>libxml++2.6</li>
<li>libsqlite3-0</li>
</ul>
Se non li avete già installati dovrete farlo prima di installare Liberacus.<br />
<br />
Le novità rispetto alla versione precedente sono le seguenti:<br />
<ul>
<li>aggiunta la possibilità di impostare un sovrapprezzo per lavori urgenti;</li>
<li>ridisegnata la pagina iniziale con la lista delle commissioni;</li>
<li>migliorata la funzione di importazione dei dati dai file XML delle precedenti versioni del programma;</li>
<li>ridisegnata l'interfaccia grafica delle preferenze;</li>
<li>le preferenze adesso sono contenute nel database e non sono più salvate sul file XML.</li>
<li>corretti diversi bug.</li>
</ul>
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-2935804490197856722018-06-30T08:28:00.000+02:002018-06-30T08:28:16.427+02:00Installare transmission-daemon sul Raspberry Pi, guida per Raspbian Stretch
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<span style="font-size: medium;">In
occasione del rilascio degli ultimi aggiornamenti di Raspbian Stretch
e dopo quasi cinque anni dalla mia precedente guida
sull’installazione e configurazione di transmission-daemon, vediamo
cosa è cambiato.</span>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Premetto
che rispetto a Raspbian Wheezy l’installazione di
Transmission-daemon è molto più semplice, in pochi passi avremo il
nostro daemon attivo e funzionante.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">I
requisiti necessari per seguire questa guida sono due:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">1.
avere un Raspberry Pi con Raspbian Stretch installato, attivo e
collegato alla rete con IP statico;</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">2.
avere un hard disk esterno collegato ad una porta USB del Raspberry
Pi, formattato con filesystem ext4 e montato automaticamente al boot;</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Se
la vostra configurazione soddisfa questi due requisiti possiamo
iniziare.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Dal
terminale del nostro Raspberry Pi (o da remoto via SSH) controlliamo
se ci sono aggiornamenti del sistema.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo apt update</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Se
ci sono aggiornamenti procediamo con</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo apt upgrade</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Quindi
installiano transmission-daemon</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo apt install transmission-daemon</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Una
volta terminata l’installazione procediamo ad aggiungere il nostro
utente al gruppo debian-transmission e l’utente debian-transmission
al gruppo del nostro utente. Nel mio esempio userò l’utente di
default pi, sostituitelo con il vostro nome utente.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo usermod -aG pi debian-transmission</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo usermod -aG debian-transmission pi</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Prima
di procedere alla configurazione prepariamo il disco esterno. Andiamo
nella directory che contiene quella di mount del disco, in questo
esempio il disco esterno è montato in /media/storage, quindi andrò
nella directory /media. Modificate il percorso in base alla vostra
configurazione.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
cd /media</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Ora
modifichiamo il proprietario del disco.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo chown -R pi:pi storage</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Ora
l’utente e il gruppo proprietario del disco è pi (ricordatevi di
utilizzare il vostro nome utente), l’opzione -R esegue l’azione
ricorsivamente all’interno di tutte le directory del disco, quindi
tutti i file contenuti in esso saranno proprietà del vostro utente.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Entriamo
nel disco e creiamo le due directory che conterranno i nostri file.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
mkdir complete</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
mkdir incomplete</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Ho
usato complete per i file completi e incomplete per quelli in corso,
siete liberi di utilizzare dei nomi di vostro gradimento.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Correggiamo
i permessi di accesso alle directory.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
chmod 775 complete</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
chmod 775 incomplete</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Con
775 abbiamo garantito i permessi di lettura, scrittura ed esecuzione
al proprietario ed agli utenti che appartengono allo stesso gruppo,
gli altri non hanno il permesso di scrittura.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Ultimo
passo la configurazione di transmission-daemon</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo nano /etc/transmission-daemon/settings.json</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Qui
dobbiamo modificare le seguenti righe:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"download-dir":
"/media/storage/complete",</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"incomplete-dir":
"/media/storage/incomplete",</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Ricordatevi
di inserire il percorso ed i nomi delle directory della vostra
configurazione.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Nella
riga seguente assicuriamoci che l'utilizzo della directory per i file
incompleti sia abilitato:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"incomplete-dir-enabled":
true,</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Proseguiamo
con le impostazioni per l'accesso in remoto a transmission-daemon.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"rpc-enabled":
true,</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"rpc-password":
"la_tua_password",</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Cancellate
quanto contenuto tra le virgole ed inserite una password da
utilizzare per l’accesso al daemon. La password che ora appare in
chiaro verrà successivamente criptata, la prossima volta che
apriremo il file non sarà visibile. Per finire inseriamo un nome
utente per accedere</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"rpc-username":
"nome_utente",</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Inserite
un nome utente di vostra scelta.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Il
filtro sugli indirizzi IP dai quali poter accedere non è necessario
se limitate l’accesso dalla vostra rete casalinga, quindi lo
disabilitiamo.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">"rpc-whitelist-enabled":
false,</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Salvate
le modifiche ed uscite premendo i tasti CTRL-X.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Ora
facciamo in modo che transmission-daemon legga ed utilizzi le nuove
configurazioni:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo service transmission-daemon reload</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Abbiamo
terminato, procediamo a riavviare il Raspberry Pi per verificare che
transmission-daemon si riavvia al boot.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">$
sudo reboot</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Provate
l’accesso da web da un altro dispositivo collegato alla stessa rete
scrivendo sul campo indirizzo del vostro browser il numero IP del
Raspberry Pi seguito dal numero di porta 9091 come nell’esempio:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">192.168.1.100:9091</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Vi
verrà chiesto il nome utente e la password, dovrete usare quelle
inserite nel file di configurazione.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: medium;">Provate
ad avviare un file torrent e assicuratevi che il file in download
venga scritto sul disco nella directory dei file incompleti.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-36375568584256489672017-03-26T20:28:00.000+02:002017-03-26T20:28:56.082+02:00Multi-threading e interfaccia grafica GTK+Il multi-threading è la suddivisione di un processo in diversi sotto processi eseguiti in parallelo (o concorrentemente), questo ci permette di eseguire il nostro programma sfruttando la potenza di calcolo di tutti i core presenti nei moderni processori dotati di tecnologia multi-core.<br />
<br />
Questa tecnica è molto utile soprattutto per migliorare le prestazioni in presenza di un carico di lavoro pesante, ma è anche utilizzata per preservare la reattività dell'interfaccia grafica in qualsiasi situazione.<br />
Mentre negli anni ottanta era accettabile il fatto di dover attendere davanti al monitor mentre il computer finiva di elaborare l'operazione assegnata, al giorno d'oggi, trovarsi davanti ad un'interfaccia grafica che non risponde a nessun comando ci farebbe subito pensare che il software in esecuzione sia andato in crash o che comunque ci sia un problema.<br />
<br />
Quando non è possibile velocizzare un'operazione al punto da renderla quasi istantanea, allora bisogna intrattenere l'utente per ingannare l'attesa. Ad esempio, se l'interfaccia grafica fornisce informazioni sullo stato dell'esecuzione di un'operazione complessa, l'utente attenderà sapendo che il software sta lavorando correttamente.<br />
<br />
Iniziamo con il creare una classe che sia in grado di svolgere un compito su un thread separato dal programma principale.<br />
<br />
<br />
<script src="https://gist.github.com/Maximilianum/aa70e6f13d10e6431ed262d4dcd444d3.js"></script>
<br />
E' una classe molto semplice: ha una variabile membro di tipo double chiamata fraction_done, che ci servirà a simulare l'esecuzione di un lavoro, ed una denominata wrk_mutex, che è di tipo mutex (dall'inglese mutual exclusion, mutua esclusione) fornito dalla standard library per impedire che più thread accedano contemporaneamente agli stessi dati.<br />
<br />
Le funzioni membro sono solo due: start_work() che esegue il lavoro e get_fraction_done() che comunica lo stato dell'esecuzione.<br />
<br />
All'interno della funzione start_work() troviamo un primo blocco, delimitato dalle parentesi graffe, all'interno del quale si invoca la classe lock_guard, che serve ad acquisire il mutex ed impedire a qualsiasi altro thread in esecuzione di interferire fino alla fine delle parentesi. All'interno di questo blocco protetto, fraction_done è inizializzato con il valore di 0.0.<br />
Successivamente troviamo un loop infinito, all'interno del quale il thread in esecuzione attende 250 millisecondi con la chiamata di funzione sleep_for(), per simulare lo svolgimento di un'operazione complessa.<br />
Quindi c'è un nuovo blocco di codice con una nuova acquisizione del mutex e si incrementa il valore di fraction_done, infine verifica se il lavoro è concluso (al raggiungimento del valore di 1.0) ed esce dal loop.<br />
<br />
Ora scriviamo un piccolo programma che utilizza la nostra classe Worker.<br />
<br />
<script src="https://gist.github.com/Maximilianum/86d412fd48904afdd787b9a94c3a0740.js"></script>
<br />
Nella funzione main() viene dapprima creata un'istanza della classe Worker, quindi viene creato un nuovo thread che esegue la funzione membro start_work() di Worker. Da questo punto in poi il programma principale è eseguito in modo concorrenziale a start_work(), nel loop infinito all'interno di main() viene richiesto all'istanza di Worker il valore attuale di fraction_done.<br />
<br />
Nella funzione get_fraction_done() viene invocata la classe lock_guard per impedire che fraction_done sia modificato mentre se ne comunica il valore.<br />
<br />
Quindi viene stampato sul video il valore ottenuto (solo se diverso dall'ultimo ottenuto).<br />
Se il valore ha raggiunto 1.0 allora esce dal loop perché il lavoro è terminato, infine viene invocata la funzione join() per riunire il thread al programma principale prima di rilasciare le risorse allocate e terminare.<br />
<br />
Proviamo a compilare ed eseguire<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/S9bDK7njfMY/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/S9bDK7njfMY?feature=player_embedded" width="320"></iframe></div>
<br />
Funziona come volevamo, il thread svolge il suo compito ed il programma principale ci tiene aggiornati sullo stato del lavoro.<br />
Ora proviamo ad applicare la stessa tecnica ad un programma con interfaccia grafica realizzata con la libreria GTK+.<br />
<br />
Utilizzerò l'IDE Anjuta per realizzare un nuovo programma GTK+.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9_TE2XHpOdepL4B5FMz2RVJyFnT9_WPhHBYUW7XsAGjTxbUMOxiAf-AmqC2Uk5Pl9S8aj_Ki42flO1cJFefHvTdyrEtR6LnWRZF4lz6Y4D7jaat-oaX81P7zwKyae7acpSWnGYIMTQerl/s1600/Schermata+da+2017-03-18+12%253A17%253A57.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9_TE2XHpOdepL4B5FMz2RVJyFnT9_WPhHBYUW7XsAGjTxbUMOxiAf-AmqC2Uk5Pl9S8aj_Ki42flO1cJFefHvTdyrEtR6LnWRZF4lz6Y4D7jaat-oaX81P7zwKyae7acpSWnGYIMTQerl/s400/Schermata+da+2017-03-18+12%253A17%253A57.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Creiamo un nuovo progetto di tipo C++ GTKmm (semplice).</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS6720el2GKU8elDqnlnnqryzycU9CoG1-rpSR1XhN9_TtazHxZsYCBgJxkW1sjphiG0Sm2V__pZD_gf2SCr7hm-_HjSj5hu4ulNc5oqLWqMXm9vRxoKW85hJsBXsoLbxJvCeFWRiabNIF/s1600/Schermata+da+2017-03-18+12%253A18%253A44.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS6720el2GKU8elDqnlnnqryzycU9CoG1-rpSR1XhN9_TtazHxZsYCBgJxkW1sjphiG0Sm2V__pZD_gf2SCr7hm-_HjSj5hu4ulNc5oqLWqMXm9vRxoKW85hJsBXsoLbxJvCeFWRiabNIF/s400/Schermata+da+2017-03-18+12%253A18%253A44.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Nelle opzioni del progetto spuntiamo la voce "configura pacchetti esterni"</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY5n3wVAnSOSLuB27EXpL6p7RKdhyZTM50Z6XG6xt7lA1Hw3PcOpcbrvhopuExpwj-Y1AXwAWYwgzAJNBlM-DKP_fzPgE6eCC8lvbXhczG-ceCNihNkHQ7N_QS5mr74rzZYdRPxMZcwSJ7/s1600/Schermata+da+2017-03-18+12%253A23%253A51.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY5n3wVAnSOSLuB27EXpL6p7RKdhyZTM50Z6XG6xt7lA1Hw3PcOpcbrvhopuExpwj-Y1AXwAWYwgzAJNBlM-DKP_fzPgE6eCC8lvbXhczG-ceCNihNkHQ7N_QS5mr74rzZYdRPxMZcwSJ7/s400/Schermata+da+2017-03-18+12%253A23%253A51.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Spuntiamo il pacchetto pthread-stubs</td></tr>
</tbody></table>
Dopo aver creato il progetto andiamo a creare l'interfaccia grafica con Glade<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4zvHTugCCgWjrfdX-x3EOYCkr0bUjEm-6WX-jrxD80IjJ1Ieb7NbXK8OemVfsj_bX0CGYd4fneOH6EzadEJ9BNs-EdF0wsGVBwEY9CzLdef4X69cbFh6IJptBbOAbOjAfkLPCZUh633QL/s1600/Schermata+da+2017-03-18+12%253A37%253A51.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4zvHTugCCgWjrfdX-x3EOYCkr0bUjEm-6WX-jrxD80IjJ1Ieb7NbXK8OemVfsj_bX0CGYd4fneOH6EzadEJ9BNs-EdF0wsGVBwEY9CzLdef4X69cbFh6IJptBbOAbOjAfkLPCZUh633QL/s400/Schermata+da+2017-03-18+12%253A37%253A51.png" width="400" /></a></div>
<br />
Come potete vedere dall'immagine è una finestra con una barra progressiva ed un'etichetta per visualizzare lo stato del lavoro. Subito sotto ci sono i pulsanti per avviare e fermare il thread.<br />
<br />
Ora modifichiamo la classe Worker per farla lavorare in un programma dotato di interfaccia grafica.<br />
<br />
<script src="https://gist.github.com/Maximilianum/3ba77c57c57210552d4fe8fccfce0942.js"></script>
<br />
Analizzando l'header potete vedere l'aggiunta di alcune variabili membro:<br />
- has_stopped - ci servirà per capire se il thread è fermo;<br />
- shall_stop - utilizzato per comunicare al thread l'intenzione di fermarlo;<br />
- caller_notification - questo è un signal che utilizzeremo per comunicare con il programma principale.<br />
<br />
Inoltre sono stati aggiunte tre funzioni:<br />
- has_stopped_working() - per sapere se il thread è fermo;<br />
- stop_work() - per fermare il thread;<br />
- signal_caller_notification() - per connettere il signal al nostro programma.<br />
<br />
Per finire è stata modificata la funzione start_work(), con l'aggiunta dell'emissione del signal e la possibilità di fermare il lavoro tramite shall_stop.<br />
<br />
Ora vediamo il programma principale.<br />
<br />
<script src="https://gist.github.com/Maximilianum/6eaa427c8b6762c5bc00b892ed27837f.js"></script>
<br />
Oltre al file main.cc ho creato una classe Controller che si occupa di gestire l'intera applicazione.<br />
Di solito si trovano esempi o tutorial in C++ che utilizzano GTKmm dove si crea una classe derivata di Gtk::Window e si costruisce l'interfaccia da codice, il mio approccio è differente. <br />
Per prima cosa preferisco creare l'interfaccia grafica con Glade, non vedo il vantaggio di costruirla tramite codice, per quanto riguarda questo pattern, è probabilmente frutto dalle precedenti esperienze di programmazione su OS X con Objective-C.<br />
<br />
L'istanza di Controller creata in main() si occupa di recuperare gli elementi dell'interfaccia grafica dal file .ui, quindi in connect_signals() collega i signal dei pulsanti e di due altri oggetti: ctrl_worker e ctrl_dispatcher.<br />
Il primo è un'istanza della classe Worker e collega il suo signal alla funzione on_worker_notification().<br />
Il secondo è un oggetto della classe Gtk::Dispatcher ed è l'elemento fondamentale per garantire il corretto funzionamento del thread di Worker con l'interfaccia del programma principale.<br />
Alla pressione del pulsante start viene creato un thread al quale viene affidata l'esecuzione della funzione start_work() di Worker, il puntatore denominato wrk_thread ne terrà traccia.<br />
Ogni qualvolta il thread emette un signal questo verrà ricevuto dal programma ed eseguirà la funzione on_worker_notification() che, a sua volta, emetterà il signal del nostro ctrl_dispatcher.<br />
Quest'ultimo verrà ricevuto dalla funzione on_dispatcher_notification() che si occuperà di verificare lo stato del thread, aggiornare l'interfaccia grafica ed eliminarlo se fermo.<br />
<br />
Questo è il programma perfettamente funzionante.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/b7hKDRr8yMc/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/b7hKDRr8yMc?feature=player_embedded" width="320"></iframe></div>
<br />
Provando a non utilizzare l'istanza di Gtk::Dispatcher, collegando il signal di Worker direttamente alla funzione che gestisce il thread ed aggiorna l'interfaccia grafica, finiremmo con un crash dell'applicazione in un momento non precisato dell'esecuzione.<br />
<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-70861665584903553512017-03-08T10:14:00.000+01:002017-03-08T10:41:12.330+01:00Debian: installazione in modalità UEFI<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSDego47u7iXxMS15jrC2YD5LTrNhVAMtKGuBxCzCX86x-YorGb4nBrm_47yBDUgQDq4YtgpQec_lOrwXt9Q4BFdCVZiAWTSsv9QDhHPLdGA0tOBaoL3sgyuWFPZ3eKQyhOqsNuy8eFkky/s1600/Uefi_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSDego47u7iXxMS15jrC2YD5LTrNhVAMtKGuBxCzCX86x-YorGb4nBrm_47yBDUgQDq4YtgpQec_lOrwXt9Q4BFdCVZiAWTSsv9QDhHPLdGA0tOBaoL3sgyuWFPZ3eKQyhOqsNuy8eFkky/s400/Uefi_logo.png" width="346" /></a></div>
Gli attuali sistemi basati su firmware UEFI (<a href="http://www.uefi.org/" target="_blank">Unified Extensible Firmware Interface</a>) hanno ormai rimpiazzato i vecchi computer con il BIOS (Basic Input/Output System), utilizzato fin dalla nascita dei primi PC.<br />
<br />
Il BIOS ha molte limitazioni dovute alla sua progettazione che risale agli anni ‘80, ma per motivi di retrocompatibilià molte schede madri, oltre al firmware UEFI, supportano il boot in stile BIOS tramite CSM (Compatibility Support Module).<br />
<br />
Al giorno d’oggi non c’è alcun motivo per installare Debian in modalità CSM, a meno che non si voglia installarlo in dual boot al fianco di una preesistente vecchia installazione di Windows.<br />
<br />
<br />
In questa breve guida vedremo come installare Debian in modalità UEFI e come evitare e/o superare eventuali problemi.<br />
<br />
<div style="text-align: center;">
<b>Avvio in modalità UEFI</b></div>
<br />
Il primo requisito per poter installare la nostra distribuzione GNU/Linux preferita in modalità UEFI è quello di dover avviare l’immagine disco di installazione da una penna USB in modalità UEFI!<br />
<br />
Sembra un’ovvietà, ma spesso questo è il primo errore che si compie. Se il disco di installazione è inavvertitamente avviato tramite CSM, l’installazione proseguirà con la stessa modalità. Visto che sullo stesso sistema non possono convivere due sistemi operativi avviabili in modalità diverse, tanto vale disabilitare il modulo di retro-compatibilità CSM nella configurazione del firmware UEFI e scegliere l’opzione di boot “solo UEFI”.<br />
<br />
<div style="text-align: center;">
<b>Tabella delle partizioni GPT</b></div>
<br />
Secondo requisito fondamentale è il partizionamento del disco di destinazione dell’installazione che deve essere di tipo GPT o GUId Partition Table (Globally Unique Identifier) e non il vecchio standard MS-DOS denominato MBR (Master Boot Record).<br />
<br />
Proprio come il BIOS, il MBR porta con se molte limitazioni dovute ai limiti hardware del tempo in cui fu progettato, tra le quali la dimensione massima di 2 TB per i dischi di avvio e solo quattro partizioni primarie possibili.<br />
<br />
Purtroppo non c’è modo di modificare la tabella delle partizioni durante l’installazione del sistema, quindi dovrete provvedere a preparare il disco di destinazione prima.<br />
<br />
Fate attenzione, modificare la tabella delle partizioni comporta la perdita di tutte le partizioni esistenti e quindi di tutti i dati, se avete dati da mettere al sicuro è meglio fare un backup prima di procedere.<br />
<br />
<div style="text-align: center;">
<b>Modificare la Tabella delle partizioni con gparted</b></div>
<br />
E’ possibile modificare il partizionamento del disco utilizzando gparted: dopo aver scelto il disco interessato, dal menù Dispositivo selezionare la voce “Crea tabella delle partizioni...” e create una tabella di tipo GPT.<br />
<br />
E’ possibile scaricare l’immagine disco live dal <a href="http://gparted.org/" target="_blank">sito di Gparted</a> per poterlo avviare tramite una penna USB e preparare il disco interno del vostro PC.<br />
<br />
<br />
<div style="text-align: center;">
<b>Modificare la Tabella delle partizioni dal Terminale con fdisk</b></div>
<br />
<br />
E’ possibile modificare la tabella delle partizioni anche da riga di comando utilizzando fdisk, uno strumento interattivo che permette di gestire le partizioni dei dischi.<br />
<br />
La sintassi del comando è molto semplice:<br />
<br />
<br />
<b># fdisk /dev/[nome del disco]</b><br />
<br />
<br />
Per esempio, se il disco da partizionare è un disco SATA sda1<br />
<br />
<br />
<b># fdisk /dev/sda1</b><br />
<br />
<br />
Se invece dovete partizionare un moderno SSD M.2 PCIe allora sarà<br />
<br />
<br />
<b>#fdisk /dev/nvme0n1</b><br />
<br />
<br />
Ricordatevi di eseguire questo comando come root.<br />
<br />
Una volta invocato, fdisk attenderà i vostri ordini, digitando il carattere m potete visualizzare la lista dei comandi.<br />
<br />
Con il carattere g potete creare una nuova tabella delle partizioni GPT vuota.<br />
<br />
Completate digitando w per scrivere le modifiche e uscire.<br />
<br />
<div style="text-align: center;">
<b>Partizione di boot EFI</b></div>
<br />
Ora che il disco è pronto potete procedere con l'installazione, ma c'è ancora un potenziale problema da sistemare. Quando avete cambiato la tabella delle partizioni avete distrutto tutte le partizioni preesistenti, l'installer di Debian è in grado di creare automaticamente le partizioni necessarie al sistema operativo, ma non si preoccupa di creare la partizione di avvio necessaria per UEFI.<br />
<br />
Quindi, quando vi verrà richiesto, scegliete di partizionare manualmente il disco e create una partizione di 200 MB, con filesystem FAT32, punto di mount /boot/efi e spuntate il flag per renderla avviabile.<br />
<br />
Ora che avete creato la partizione EFI, potete creare le restanti partizioni da utilizzare con Debian.<br />
<br />
<div style="text-align: center;">
<b>Errore nell’installazione del boot loader</b></div>
<br />
<br />
Capita a volte che l’installazione del boot loader GRUB 2 fallisca e, dopo la segnalazione dell’errore, ci si ritrova davanti al menù iniziale dell’installer.<br />
<br />
Mi sono imbattuto in questo problema durante l’installazione su un SSD con interfaccia M.2 di tipo PCIe, ho risolto nel seguente modo.<br />
<br />
Dal menù con l'elenco dei passi dell'installazione selezionate la voce in basso per aprire una shell.<br />
<br />
Prima di mostrarvi i comandi vorrei chiarire una cosa, quando aprite una shell dall’installer non avete accesso al sistema che avete installato sul disco, ma siete in un ambiente limitato che risiede in memoria. La root del disco di installazione è montata nella directory target. La prima cosa da fare è creare un collegamento tra le directory di sistema dell’ambiente in memoria e quelle del sistema sul disco, a questo scopo utilizziamo il comando mount con l’opzione bind.<br />
<br />
<br />
<b># mount –bind /dev /target/dev</b><br />
<br />
<b># mount –bind /dev/pts /target/dev/pts</b><br />
<b># mount –bind /proc /target/proc</b><br />
<br />
<b># mount –bind /sys /target/sys</b><br />
<br />
Ora le directory /dev, /dev/pts, /proc e /sys sono legate a quelle sul disco.<br />
<br />
Copiate il file resolv.conf per permettere il collegamento a internet dal sistema sul disco con<br />
<br />
<br />
<b># cp /etc/resolv.conf /target/etc</b><br />
<br />
<br />
Quindi eseguiamo il comando chroot per poter accedere come utente root al sistema installato sul disco di destinazione.<br />
<br />
<br />
<b># chroot /target /bin/bash</b><br />
<br />
<br />
Da questo momento in poi state eseguendo dei comandi sul sistema installato, procediamo all’installazione di GRUB.<br />
<br />
<br />
<b># aptitude update</b><br />
<br />
<b># aptitude install grub-efi-amd64</b><br />
<b># update-grub</b><br />
<br />
<b># grub-install –target=x86_64-efi /dev/nvme0n1</b><br />
<br />
Dove nvme0n1 è il disco SSD M.2 PCIe, ma se state installando GRUB su un disco di tipo SATA allora sarà probabilmente sda.<br />
<br />
<br />
Uscite dalla shell con il comando exit (da eseguire due volte) e scegliete di continuare senza installare GRUB. Vi apparirà un avviso per ricordarvi che senza GRUB il sistema non sarà avviabile, ignoratelo pure e andate avanti fino al riavvio.<br />
<br />
<br />
Se il problema era causato dal disco SSD M.2 PCIe proseguite con questi passi per evitare di avere problemi di boot al prossimo riavvio, altrimenti fermatevi qui.<br />
<br />
<div style="text-align: center;">
<b>Alcuni aggiustamenti per i dischi SSD M.2 PCIe</b></div>
<br />
Una volta riavviato dal sistema installato, aprite il Terminale e aggiungete “nvme” al file /etc/initramfs-tools/modules con<br />
<br />
<br />
<b># nano /etc/initramfs-tools/modules</b><br />
<br />
<br />
Dopo aver aggiunto una riga con la parola nvme salvate con Ctrl+O e uscite con Ctrl+X.<br />
<br />
A questo punto eseguite questo comando:<br />
<br />
<br />
<b># update-initramfs -u</b><br />
<br />
<br />
Ora modificate il file grub in /etc/default<br />
<br />
<br />
<b># nano /etc/default/grub</b><br />
<br />
<br />
aggiungete la seguente linea<br />
<br />
<br />
<b>GRUB_CMDLINE_LINUX="intel_pstate=no_hwp"</b><br />
<br />
<br />
Dopo aver salvato eseguite<br />
<br />
<br />
<b># update-grub</b><br />
<br />
<br />
A questo punto il vostro SSD funzionerà senza problemi.<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-90400091752296576672017-02-27T23:41:00.002+01:002017-03-01T12:43:54.869+01:00Custom Arcade Desk: costruire una postazione da sala giochi in puro stile anni '80/'90<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">In questo post vi
parlerò di un progetto che ho realizzato lo scorso anno e che ho
battezzato “Custom Arcade Desk”, in pratica si tratta di una
scrivania con doppia postazione da gioco per rivivere il fascino
delle sale giochi degli anni '80/'90.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Come avrete intuito, se seguite questo blog,
il computer al quale ho collegato la postazione da gioco è
alimentato da una distribuzione GNU/Linux: Debian 8 (Jessie),
recentemente aggiornato a Debian 9 (Stretch).</span><br />
<span style="font-family: inherit;">Comunque è possibile usare qualsiasi altra distribuzione GNU/Linux, incluso Ras<span style="font-family: inherit;">pbian per Raspberry Pi.</span></span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqPmMsfHQsk_SWN_kInfnYws9OwzBMy_QrZMN9hrXtvPLCKclPbGKdddLHe9k3fNcB1i9SjkEaRE62MkQE-By_L9-qm6G5A9Kvipzc8WUniipagD00oDyn6maa30dkC8Vp-pDBDLKc0auW/s1600/IMG_20160525_133656.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqPmMsfHQsk_SWN_kInfnYws9OwzBMy_QrZMN9hrXtvPLCKclPbGKdddLHe9k3fNcB1i9SjkEaRE62MkQE-By_L9-qm6G5A9Kvipzc8WUniipagD00oDyn6maa30dkC8Vp-pDBDLKc0auW/s400/IMG_20160525_133656.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Custom Arcade Desk</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Prima di iniziare la
carrellata di foto, vediamo la lista dei materiali che ho utilizzato:</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- due pannelli in
OSB (Oriented Strand Board) da 25 mm di spessore, è un materiale
composto da pezzi di legno incollati insieme, in modo simile al
truciolato, ma con la caratteristica di essere più resistente;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- un pannello di
plexiglas da 3mm di spessore;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- un adesivo
permanente polimerico laminato opaco sul quale ho fatto stampare
un'illustrazione del gioco Tastunoko vs Capcom;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- una scheda
Ultimarc I-PAC 2, è il circuito che si occupa di tradurre i segnali
dei pulsanti e del joystick in caratteri e li invia al computer
tramite il cavo USB;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- due <span lang="en-US">joystick</span>
Sanwa JLF-TP-8YT;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- sedici pulsanti
Sanwa OBSF-30 da 30mm di larghezza;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- quattro pulsanti
Sanwa OBSF-24 da 24mm di larghezza;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- cavo elettrico
mono-polare;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- 20 terminali
<span lang="it-IT">fastom</span> da 2,8 mm;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- bordo per pannelli
preincollato (si applica a caldo con un ferro da stiro);</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- flatting per
proteggere il legno;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- stucco francese;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Gli utensili
necessari per realizzare questo progetto sono:</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- un trapano con
punte a tazza da 30mm e da 24mm;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- un seghetto
alternativo con lame per legno e per metallo;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- una fresatrice per
il legno;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- carta vetrata a
grana media e fine;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- avvitatore;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">- saldatore
elettrico;</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Una fonte preziosa di informazioni riguardanti i materiali da utilizzare, i diversi costruttori di joystick e pulsanti, nonché i vari schemi di disposizione dei tasti la potete trovare su <a href="http://www.slagcoin.com/joystick/introduction.html" target="_blank">questo sito</a>.</span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"> Questa era la mia piccola scrivania Ikea modello MICKE che utilizzavo
per il computer. Notare come il piano si è era curvato al centro e mostrava segni di cedimento.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbUUQIGWD8BNqlnJTQd0rTQJ2urnru4MWqYyEncMoatDx1tZTGuM6lFpNMFIKBUMWBR6OiBIjUPd9H59WF1dR0470OyH5TO4MgO_MEQHpV2rov0Q7PzXrtX-Ztn1uLbd7P5hMxCbvgNVCz/s1600/IMG_20160517_110644.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbUUQIGWD8BNqlnJTQd0rTQJ2urnru4MWqYyEncMoatDx1tZTGuM6lFpNMFIKBUMWBR6OiBIjUPd9H59WF1dR0470OyH5TO4MgO_MEQHpV2rov0Q7PzXrtX-Ztn1uLbd7P5hMxCbvgNVCz/s400/IMG_20160517_110644.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">L'economica scrivania Ikea MICKE</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Ho smontato il piano originale e tolto il cassetto.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN86_FZqAvLpzFNBhAWPIV-bKqkIoKeEoQ5v0NLs3rKKY-1NZ_q1XXs0wAQ8RRTzIaU_lZwRIXGMscYZ_plkI6vhN1XIz47f2TKUyo3FoKOXv1iKAHdM-xnIe8EXwUqIVOAtg2rIJA3EMg/s1600/IMG_20160517_114800.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN86_FZqAvLpzFNBhAWPIV-bKqkIoKeEoQ5v0NLs3rKKY-1NZ_q1XXs0wAQ8RRTzIaU_lZwRIXGMscYZ_plkI6vhN1XIz47f2TKUyo3FoKOXv1iKAHdM-xnIe8EXwUqIVOAtg2rIJA3EMg/s400/IMG_20160517_114800.jpg" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Questo è un pannello in OSB da 25 mm, della stessa misura di quello
originale, ma il materiale è più pesante e molto più resistente.
Ho recuperato e montato gli agganci originali Ikea.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8aYNSA46noaH_qw3uc1pBtgNdHQUJaTmxOTcN-v4GXi2fNtNSOMF7L_WpL8YfUXnwcN0eSsc3p7GDLSi1dIM39AtgJ_mdpD2rkgvkfA8QPkcyqXZbiCZwHcfv4uk_TsO4vZmTE6Pd8ijp/s1600/IMG_20160517_120213.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8aYNSA46noaH_qw3uc1pBtgNdHQUJaTmxOTcN-v4GXi2fNtNSOMF7L_WpL8YfUXnwcN0eSsc3p7GDLSi1dIM39AtgJ_mdpD2rkgvkfA8QPkcyqXZbiCZwHcfv4uk_TsO4vZmTE6Pd8ijp/s400/IMG_20160517_120213.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Agganci Ikea montati sul pannello in OSB</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjunG4DNM0RXr8Gzf-eQW2_nQNdhaVeLoShWAoeFAzUDUnPRh0B2mZcN3oWEWU9FgBmRx4YpxKqIXAlRwjbuVsT-PC4ExDkuYPIhUhEVOcF54NLiQ0WBAk9JFIRfMOSuwB9dBO-Wdr8gACU/s1600/IMG_20160517_115937.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjunG4DNM0RXr8Gzf-eQW2_nQNdhaVeLoShWAoeFAzUDUnPRh0B2mZcN3oWEWU9FgBmRx4YpxKqIXAlRwjbuVsT-PC4ExDkuYPIhUhEVOcF54NLiQ0WBAk9JFIRfMOSuwB9dBO-Wdr8gACU/s400/IMG_20160517_115937.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Il piano sostitutivo si monta alla perfezione come l'originale</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Al posto del cassetto ho montato un altro piano che utilizzo per la
tastiera ed il mouse, ho riutilizzato il meccanismo scorrevole per
farlo a scomparsa.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Questo è un altro pannello in OSB da 25 mm di spessore, ma di
dimensioni maggiori, che estende la scrivania. Sopra c'è un pannello
in plexiglas da 3 mm.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdLUiAnCddTNr9r9PGDFHee_cLUdoKgunea7RqZFzzXz4lvZVSpl7rZCQ3AphIzXv0_LhOWNmZYUPS_EM7AlmZiOzWN5R4Gybu0JTgS7tavvA69sFhlXlzzVui39NrjN_hBGQtueX3Z7nT/s1600/IMG_20160514_134448.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdLUiAnCddTNr9r9PGDFHee_cLUdoKgunea7RqZFzzXz4lvZVSpl7rZCQ3AphIzXv0_LhOWNmZYUPS_EM7AlmZiOzWN5R4Gybu0JTgS7tavvA69sFhlXlzzVui39NrjN_hBGQtueX3Z7nT/s400/IMG_20160514_134448.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Piano superiore con plexiglas e schemi di disposizione dei pulsanti e joystick</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Lo schema della disposizione del joystick e dei pulsanti è quello standard utilizzato nelle sale giochi
giapponesi.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Di seguito i fori da 30 mm realizzati con una punta a tazza.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicbsGavGNX0obSAfb-rapPNW4R-WgDoW0nI5PwsYdK7CRNfZD-Qle2TizQQyLgIrI1R-BA3rzv1pH75KdVPjD38yycP4IdtUJERpO6M3it0t-4biFXy7PFQ4b1p1aPPPOym_RwDsOy32Ge/s1600/IMG_20160515_140337.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicbsGavGNX0obSAfb-rapPNW4R-WgDoW0nI5PwsYdK7CRNfZD-Qle2TizQQyLgIrI1R-BA3rzv1pH75KdVPjD38yycP4IdtUJERpO6M3it0t-4biFXy7PFQ4b1p1aPPPOym_RwDsOy32Ge/s400/IMG_20160515_140337.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fori da 30mm e catena di fastom per il collegamento a terra dei pulsanti</td></tr>
</tbody></table>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">I due fori da 24 mm per i tasti di servizio, per questi ho
utilizzato una mecchia per il legno.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiucTPfPlDc1RxWo38YnP5X8jfdxplp3psIPhEblRmeQN3yRDfvYqz8avQvehm9bFREG4l7Mik18eT0WmkpEn0dJ7beculi9qHiJ5I24_IWdalv5suar9yqf1i3ho55Z6MAdBzZ_B7ny2yN/s1600/IMG_20160517_102939.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiucTPfPlDc1RxWo38YnP5X8jfdxplp3psIPhEblRmeQN3yRDfvYqz8avQvehm9bFREG4l7Mik18eT0WmkpEn0dJ7beculi9qHiJ5I24_IWdalv5suar9yqf1i3ho55Z6MAdBzZ_B7ny2yN/s400/IMG_20160517_102939.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fori da 24mm e mecchia per legno montata sul trapano</td></tr>
</tbody></table>
<span style="font-family: inherit;">
</span>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6w67k1dxYiqRXoLigQUZyXzL0xAKFeeRNJmUBKoLgi5tBrRldjgrjALlBITeM6zrekwzYJ0n4Unq6o_iaeElyoqYRSPg9PwVRP_vOFjWKXAy0ymacfLUhHrLUi4ceC91brBovbiMp0mKj/s1600/IMG_20160517_105422.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6w67k1dxYiqRXoLigQUZyXzL0xAKFeeRNJmUBKoLgi5tBrRldjgrjALlBITeM6zrekwzYJ0n4Unq6o_iaeElyoqYRSPg9PwVRP_vOFjWKXAy0ymacfLUhHrLUi4ceC91brBovbiMp0mKj/s400/IMG_20160517_105422.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fori per le due postazioni completati</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Fresatura da 3 mm nell'area dove poggia la piastra del
joystick.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgON2pvZdSqHvGKzkTVNI3r7Udqa-9UnM-sE-yjZtsoIy2Q2AHFrlI9h3l5sok4Wqqr-CXyqIYVA54w4JCu06EZSsRYhd87-b1JdptZp-CEb6SlVDsU_BbTnuCUSw8exp0Ws0p_C9Oz4pI-/s1600/IMG_20160517_183209.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgON2pvZdSqHvGKzkTVNI3r7Udqa-9UnM-sE-yjZtsoIy2Q2AHFrlI9h3l5sok4Wqqr-CXyqIYVA54w4JCu06EZSsRYhd87-b1JdptZp-CEb6SlVDsU_BbTnuCUSw8exp0Ws0p_C9Oz4pI-/s400/IMG_20160517_183209.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fresatura di 3mm di profondità</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Il piano delle dimensioni di quello originale è montato su
quello superiore di dimensioni maggiori, u</span><span style="font-family: inherit;">na fresatura profonda nella parte inferiore della scrivania facilita il
montaggio dei pulsanti.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc_IIImLvLRsqsM8JT3__gU3nOSlKBjbC7CT2B5vehyR2BK3VYK-LYeO0ukxYupoV99FOJr0vV5SFrDdlAgSoGY1soJYA08TQZ29VPqmzZeyy48dnASCH1d1Cyya8tHTtiNxtYG0BnyqoU/s1600/IMG_20160519_155030.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc_IIImLvLRsqsM8JT3__gU3nOSlKBjbC7CT2B5vehyR2BK3VYK-LYeO0ukxYupoV99FOJr0vV5SFrDdlAgSoGY1soJYA08TQZ29VPqmzZeyy48dnASCH1d1Cyya8tHTtiNxtYG0BnyqoU/s400/IMG_20160519_155030.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Parte inferiore della scrivania</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Dopo aver carteggiato con cura tutta la parte inferiore, ho dato una
mano di flatting per proteggere il legno.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxH0J9BReof3A9KNShROHprSKmTNC9V6P8IuolSGTbJPzjD3uOVCfKxW-NQV0KxUeo2eV4ZfD-fsaCHyutZBL0vk8eNcuJPVZWXSRHdRcxsbg3fR0crETpDjiu8w2N3BZGc-0Iqqbzx_BN/s1600/IMG_20160519_172031.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxH0J9BReof3A9KNShROHprSKmTNC9V6P8IuolSGTbJPzjD3uOVCfKxW-NQV0KxUeo2eV4ZfD-fsaCHyutZBL0vk8eNcuJPVZWXSRHdRcxsbg3fR0crETpDjiu8w2N3BZGc-0Iqqbzx_BN/s400/IMG_20160519_172031.jpg" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Stuccatura del piano per renderlo il più liscio possibile e prepararlo all'applicazione dell'adesivo. Anche sul lato superiore, dopo aver carteggiato, ho passato una mano
di flatting.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7SYUzaMO9bZQj6DeElw3xf9lUPuPmYB7Sg3910_nshWVKac9L7qVGW8T-7pnHmUwZvQeDAF5sOphi2KwjMIMQdEza4P2QtC5M-I02I14A4JKphoYPT2-_GaH-4huAdFsWJ_VfCougaSum/s1600/IMG_20160520_094143.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7SYUzaMO9bZQj6DeElw3xf9lUPuPmYB7Sg3910_nshWVKac9L7qVGW8T-7pnHmUwZvQeDAF5sOphi2KwjMIMQdEza4P2QtC5M-I02I14A4JKphoYPT2-_GaH-4huAdFsWJ_VfCougaSum/s400/IMG_20160520_094143.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Il pannello in OSB non è perfettamente liscio e va stuccato</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span>
</div>
<span style="font-family: inherit;">
</span>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><a href="https://www.blogger.com/null" name="fbPhotoSnowliftCaption17"></a> <span style="font-family: inherit;">Applicazione de</span>l bordo bianco preincollato con il ferro
da stiro.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHrTxWfkTbILa-NDBjXLCA45MjNFJ5bYak5SBS3kt1_eb5t0T9WFoUTCLozgWm7yDt8JD6QmoU0-_DNDFk027WhNfSSVJ18oEhz4N07Pgd6pQICqDtNHCyShzwY4NjYi8PAjdaRfSMnenq/s1600/IMG_20160523_094541.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHrTxWfkTbILa-NDBjXLCA45MjNFJ5bYak5SBS3kt1_eb5t0T9WFoUTCLozgWm7yDt8JD6QmoU0-_DNDFk027WhNfSSVJ18oEhz4N07Pgd6pQICqDtNHCyShzwY4NjYi8PAjdaRfSMnenq/s400/IMG_20160523_094541.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Rifinitura con bordo per pannelli bianco</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Questo è il cablaggio completato. Tutti i componenti sono collegati
tramite terminali fastom da 2,8 mm, la scheda I-PAC 2 invece è dotata
di morsetti a vite.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8VTItaVJx2DV5IzPYZkD43x41sYtQa2PTTISFBjphdhLqIuth-77KD4maUFJ4vxd6BFnrmI1QgtM4lDRWCrq6WyslrhbDCpEwN57vuzKIhmV3c3FuBX6YN4mXWSbQx5_9SdyANQ7ExNEu/s1600/IMG_20170227_134605.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8VTItaVJx2DV5IzPYZkD43x41sYtQa2PTTISFBjphdhLqIuth-77KD4maUFJ4vxd6BFnrmI1QgtM4lDRWCrq6WyslrhbDCpEwN57vuzKIhmV3c3FuBX6YN4mXWSbQx5_9SdyANQ7ExNEu/s400/IMG_20170227_134605.jpg" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
<span style="font-family: inherit;">La scheda I-PAC 2 invia dei caratteri per ogni pulsante premuto o per ciascuna delle 4 direzioni del joystick, proprio come fosse una tastiera, quindi basta un text editor per verificare che tutto funzioni correttamente.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfblO7_CEBE0Rdkc_YrSXhmQ_iNKu4SVQaqYj4dGKWEO2xZe4AxE81HM3mDoVjzq7wsTj1FZOAwM_WSq11xnshb-e7ASUGAwM9JqFsllZJK7yxPcnucYxg86N_G74DsdGI-JHxirbofpj/s1600/IMG_20160522_231153.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfblO7_CEBE0Rdkc_YrSXhmQ_iNKu4SVQaqYj4dGKWEO2xZe4AxE81HM3mDoVjzq7wsTj1FZOAwM_WSq11xnshb-e7ASUGAwM9JqFsllZJK7yxPcnucYxg86N_G74DsdGI-JHxirbofpj/s400/IMG_20160522_231153.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Test di funzionamento con gedit</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Applicazione dell'adesivo permanente che ho
fatto realizzare su misura, questo adesivo è stato laminato per
essere resistente all'usura.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFk6sKsk48yI2QK6WJ68lR36BJzze-kIrUQvimnrWSC3hPLI1QD8dJ3ftQvYM2L_3Xp6s8j-8KaFMkwdy6GWmdVzXaK7GU8NCz926v657ob5zm5BaM7d-lnOJQzffX1ZjonJQHJO-UREjI/s1600/IMG_20160523_112651.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFk6sKsk48yI2QK6WJ68lR36BJzze-kIrUQvimnrWSC3hPLI1QD8dJ3ftQvYM2L_3Xp6s8j-8KaFMkwdy6GWmdVzXaK7GU8NCz926v657ob5zm5BaM7d-lnOJQzffX1ZjonJQHJO-UREjI/s400/IMG_20160523_112651.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Con l'adesivo applicato l'aspetto è decisamente migliore</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span>
</div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Ho montato il plexiglas ed i pulsanti. I joystick sono dei Sanwa con pallina e copri leva in alluminio colorato. I
pulsanti sono Sanwa da 30mm e 24mm, la caratteristica forma convessa del
tasto li rende ideali per i picchiaduro.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPrOxuWjX6RtUYMvPHI1k_mwR2Ql-7pPChmqpoaLpKYjU_iqLvciuSR80BhAX4B9OtfttePuQcSD8A9lYJXPj5BCRfb12XYloL_TNpmiGkLMW1Ihy2F_8H4lKorehrGdTHPBy62Mtbo0Z6/s1600/IMG_20160523_153443.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPrOxuWjX6RtUYMvPHI1k_mwR2Ql-7pPChmqpoaLpKYjU_iqLvciuSR80BhAX4B9OtfttePuQcSD8A9lYJXPj5BCRfb12XYloL_TNpmiGkLMW1Ihy2F_8H4lKorehrGdTHPBy62Mtbo0Z6/s400/IMG_20160523_153443.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Scrivania completata</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span><span style="font-family: inherit;">Vediamo ora la parte
software ed il supporto per Linux.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">La scheda I-PAC 2
viene riconosciuta dal sistema immediatamente e senza il bisogno di
installare driver.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">E' preimpostata con la mappatura dei tasti del MAME (<a href="http://www.mame.net/" target="_blank">Multiple Arcade Machine Emulator</a>), ma è possibile rimappare i controlli per mezzo di
un apposito programma.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Ultimarc (la casa produttrice, <a href="http://www.ultimarc.com/" target="_blank">vedi il sito</a>) fornisce il
programma per Windows, OS X e indirettamente anche per Linux. La
libreria per configurare I-PAC 2 è infatti sviluppata da Katie Snow (<a href="http://katiesnow.webs.com/" target="_blank">vedi il sito</a>) ed è
scaricabile dal repository su github (<a href="https://github.com/katie-snow/Ultimarc-linux" target="_blank">link di github)</a>.</span></div>
<span style="font-family: inherit;">
</span>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Iniziamo con l'installare il MAME inserendo i seguenti comandi come root</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<b><span style="font-family: inherit;"># apt update</span></b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<b><span style="font-family: inherit;"># apt install mame mame-tools mame-extra</span></b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Per poter utilizzare il MAME ovviamente vi occorrono i file di dump delle rom dei videogiochi dell'epoca e questi non sono distribuiti con l'emulatore perché coperti dalle rigide regole del copyright.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Ora scaricate l'ultima versione della libreria Ultimarc dal repository di github (<a href="https://github.com/katie-snow/Ultimarc-linux/releases" target="_blank">link download</a>), è un archivio tar.gz. Decomprimete l'archivio con il comando:</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>tar -zxvf </b><i>nome_file</i></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Attualmente l'ultima versione è la seguente</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><i> </i></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>$ tar -zxvf ultimarc-linux-1.1.update.tar.gz</b></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Ora entrate nella directory con</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<b><span style="font-family: inherit;">$ cd ultimarc-linux-1.1</span></b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Nel file README ci sono le informazioni per la compilazione della libreria, in particolar modo ci serve sapere quali sono le librerie necessarie e sono le seguenti:</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">json-c (0.11), su Debian il pacchetto si chiama </span><span style="font-family: inherit;">libjson-c-dev</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">libusb-dev, su Debian il pacchetto si chiama libusb-1.0-0-dev</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">libtool</span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Per finire vi serve il pacchetto build-essential per poter compilare, quindi installate tutto il necessario</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b># apt install build-essential libjson-c-dev libusb-1.0-0-dev libtool</b></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
<br />
Un'altra informazione importante che troverete nel file README è la necessità di copiare il file 21-ultimarc.rules nella directory di sistema /etc/udev/rules.d<br />
<br />
<b># cp 21-ultimarc.rules /etc/udev/rules.d</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Quindi procedete alla compilazione con</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b> </b></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>$ ./configure</b></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>$ make</b></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Troverete l'eseguibile umtool all'interno della directory src/umtool, si invoca dal terminale e la sintassi è semplice</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>$ cd src/umtool</b></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b> </b></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>$ ./umtool </b><i>ipac2.json</i></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Dove ipac2.json è il nome del file di configurazione della scheda. All'interno della stessa directory ci sono vari file di configurazione di esempio, utilizzate solo i file ipac2 per la vostra scheda I-PAC2 e solo quelli denominati 2015 (la versione 2014 è per le schede più vecchie). Se non trovate i file .json dentro src/umtool allora scaricate da github il file source code e li troverete lì.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Potete aprire il file .json con un text editor e modificare a piacimento la mappatura dei tasti, è un operazione veramente semplice ed intuitiva.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Una volta preparato il file di configurazione basterà invocare il comando umtool per caricarlo sulla scheda. Vi consiglio comunque di conservare sempre una copia del file di configurazione di default.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Buon divertimento!</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<span style="font-family: inherit;">
</span>
<span style="font-family: inherit;">
</span>Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-22210208729376260022017-02-21T23:16:00.000+01:002017-02-21T23:16:19.209+01:00Come creare una RAM disk
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Una RAM disk è una
porzione della RAM di sistema che viene utilizzata come fosse un
disco o un'unità di archiviazione.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Il grande vantaggio
è la sua estrema velocità, di molto superiore anche al più veloce
SSD in commercio. Il suo punto debole è invece la volatilità dei
dati, se il computer si spegne o si riavvia, tutti i file contenuti in
essa andranno persi.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Prima di creare una
RAM disk, controlliamo la quantità di spazio disponibile in memoria
con il comando free. Questo comando mostra il totale della memoria
RAM a disposizione, lo spazio attualmente in uso e quello libero.
Oltre alla RAM di sistema viene visualizzato anche lo spazio della
partizione Swap se presente.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD5J4v02G1jrU6nNOrWXsXszs3bNSJnEJPwAN2clHSaowcGITi2zt3mu6CDUjbFihI3i8DQcNS7PAddzqZNfnFy5CuRTew1Zr3Cu0OgBB3ljwob3E342K20zeNABawLtzq4o1Z2W_jIDcm/s1600/Schermata+da+2017-02-21+23%253A00%253A40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="78" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD5J4v02G1jrU6nNOrWXsXszs3bNSJnEJPwAN2clHSaowcGITi2zt3mu6CDUjbFihI3i8DQcNS7PAddzqZNfnFy5CuRTew1Zr3Cu0OgBB3ljwob3E342K20zeNABawLtzq4o1Z2W_jIDcm/s400/Schermata+da+2017-02-21+23%253A00%253A40.png" width="400" /></a></span></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Il comando df invece
mostra la quantità di spazio disponibile sulle unità di
archiviazione montate.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Sul nostro sistema
GNU/Linux abbiamo due diversi tipi di file system da utilizzare come
RAM disk:</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>ramfs </b><span style="font-weight: normal;">è
il vecchio tipo di file system in memoria, ormai soppiantato da
tmpfs, ed è lo stesso utilizzato da Linux come cache del file
system. Ogni volta che avviene l'accesso ad un file sul disco, questo
viene memorizzato in una cache in memoria così che, se dopo poco
tempo viene richiesto di nuovo, sarà caricato velocemente dalla RAM.</span></span></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">La memoria utilizzata da ramfs è visualizzata dal comando free alla
voce cached, mentre non viene visualizzato dal comando df. Inoltre
non è possibile sapere la grandezza di ramfs, ne è possibile porre
un limite massimo alla sua dimensione. ramfs continuerà a richiedere
memoria fin quando il sistema si bloccherà a causa di un errore di
out of memory.</span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b>tmpfs </b><span style="font-weight: normal;">invece</span><span style="font-weight: normal;">
</span><span style="font-weight: normal;">è un </span><span style="font-weight: normal;">file
system recente e risolve gran parte dei problemi di ramfs. E'
possibile specificare la grandezza massima di tmpfs, se si tenta di
occupare uno spazio maggiore otterremo un errore di disco </span><span style="font-weight: normal;">esaurito</span><span style="font-weight: normal;">,
proprio come una partizione di un disco. Inoltre è
possibile visualizzare tmpfs con il comando df </span><span style="font-weight: normal;">insieme
agli altri dischi e sapere quanto spazio c'è a disposizione</span><span style="font-weight: normal;">.
</span><span style="font-weight: normal;">Questi vantaggi rendono
tmpfs decisamente più gestibile di ramfs, ma c'è un unico lato
negativo; se il sistema si trova a corto di RAM, i dati contenuti in
tmpfs potrebbero essere scritti sulla partizione di Swap sul disco.</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">C</span><span style="font-weight: normal;">reiamo
una directory che utilizzeremo come punto di mount per la nostra RAM
disk.</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><b><span style="font-weight: normal;">$ <b>mkdir
/mnt/ramdisk</b></span></b></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">Ora
creiamo la RAM disk con il comando mount utilizzando la seguente sintassi:</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><i><b><span style="font-weight: normal;">mount
-t [tipo] -o size=[dimensione] [tipo file system] [punto di mount]</span></b></i></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">Ad
esempio creiamo una RAM disk di tipo tmpfs di 512 MB utilizzando come
punto di mount la directory ramdisk posta in /mnt</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;"># <b>mount
-t tmpfs -o size=512m tmpfs /mnt/ramdisk</b></span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">Ricordatevi
che per usare il comando mount dovete avere i privilegi di
amministratore, per farlo potete anteporre “sudo” o utilizzare il
comando “su” per eseguire mount come super utente.</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">Se
volete avere una RAM disk sempre disponibile ad ogni avvio del
sistema potete aggiungere la sua creazione nel file fstab.</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">Aprite fstab con l'editor nano (o qualsiasi altro editor di vostro
gradimento)</span></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">#<b> nano
/etc/fstab</b></span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><span style="font-weight: normal;">Ora
aggiungete una riga come questa</span></span></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">tmpfs /mnt/ramdisk tmpfs nodev,nosuid,noexec,nodiratime,size=512M 0 0</span></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;"><br /></span>
</div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">
Salvate e riavviate e troverete la vostra RAM disk già montata e
pronta per l'utilizzo.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: inherit;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA8sZCkE3aJWHWloxqmzoymlvIwjHsqvglAEwOosKYUF4lPlvzrq3wmNEM106R1vQSkkRtW-wRj1h7nP6znX1XUoJC-4c3czzLt1AEOovjtI2j3jfYTRQMx03TPyZzOWgtvcIVALWHRl6v/s1600/Schermata+da+2017-02-21+23%253A11%253A17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA8sZCkE3aJWHWloxqmzoymlvIwjHsqvglAEwOosKYUF4lPlvzrq3wmNEM106R1vQSkkRtW-wRj1h7nP6znX1XUoJC-4c3czzLt1AEOovjtI2j3jfYTRQMx03TPyZzOWgtvcIVALWHRl6v/s400/Schermata+da+2017-02-21+23%253A11%253A17.png" width="400" /></a></span></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">
Non dimenticate che ogni file al suo interno, al riavvio del sistema,
andrà perso!</span></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<span style="font-family: inherit;">
</span>Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-9426491961534604962017-02-15T11:03:00.000+01:002017-02-15T11:03:37.790+01:00Liberacus v3.0 - il programma gestionale per sartorie ha un nuovo database SQLiteHo rilasciato oggi la versione v3.0 di Liberacus, il software gestionale per sartorie.<br />
La peculiarità di questo aggiornamento è la transizione della gestione dei dati dal formato XML ad un database SQLite 3.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJd38KRIMN7LIEvWzq9pS1ncXlfr5hA_nai1X-HqLBH8w1CmXXvjuvPbbjMLMyJPM8mzWQabwVZkue69APfQRGPJXuhKjQNZgvcBUasp3pEP_xQLfYNM-wFptaPIdzdH0sOUzz2OTI8YTh/s1600/Schermata+da+2017-02-15+10%253A57%253A17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="357" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJd38KRIMN7LIEvWzq9pS1ncXlfr5hA_nai1X-HqLBH8w1CmXXvjuvPbbjMLMyJPM8mzWQabwVZkue69APfQRGPJXuhKjQNZgvcBUasp3pEP_xQLfYNM-wFptaPIdzdH0sOUzz2OTI8YTh/s400/Schermata+da+2017-02-15+10%253A57%253A17.png" width="400" /></a></div>
<br />
<br />
Spendo due parole per spiegare cosa è cambiato per chi non conosce SQLite ed i database in generale.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJhrhW2LrYOmVb99bGW34lEwGU-gWzjXAC_3zScUDWtrJjSpbmgr_egJrSvd1Ot8OGgPGVkvuaeQqjn-1XjEA2Reqno3IggfkmQspCyFb3lUMwuDAb24Pi7JWVlipoydCS-p-dc8xJl-IS/s1600/sqlite370_banner.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJhrhW2LrYOmVb99bGW34lEwGU-gWzjXAC_3zScUDWtrJjSpbmgr_egJrSvd1Ot8OGgPGVkvuaeQqjn-1XjEA2Reqno3IggfkmQspCyFb3lUMwuDAb24Pi7JWVlipoydCS-p-dc8xJl-IS/s320/sqlite370_banner.gif" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
<br />
Prima Liberacus caricava interamente i dati da alcuni file XML, lavorava sugli stessi mantenendoli in memoria per poi salvarli sul disco.<br />
Questo metodo può essere valido per un piccolo numero di dati e comporta comunque il rischio di perdere i dati in memoria se qualcosa va storto, come ad esempio un blackout improvviso.<br />
Un altro problema di questo approccio è che se il numero dei dati diventa elevato, il tempo di caricamento dai file e di salvataggio su disco diventa elevato.<br />
<br />
Ora, utilizzando il database SQLite, Liberacus non ha più bisogno di caricare tutti i dati in memoria, ma prenderà dal database, di volta in volta, solo quelli che gli serviranno al momento.<br />
Ad ogni modifica o inserimento di nuovi dati, questi verranno salvati direttamente sul database nel disco. Il rischio di perdere i dati a causa di un blackout è estremamente ridotto.<br />
I tempi di caricamento e salvataggio sono praticamente azzerati anche in presenza di un numero elevato di dati.<br />
<br />
Liberacus è un software libero ed open source, siete liberi di scaricarlo, installarlo ed utilizzarlo a piacimento.<br />
Vi ricordo che Liberacus è sviluppato per girare su qualsiasi distribuzione GNU/Linux, non è multi-piattaforma, quindi non chiedetemi come installarlo su Windows o su Mac.<br />
<br />
Potete scaricare l'ultima versione da questo <a href="https://github.com/Maximilianum/liberacus/releases/tag/v3.0" target="_blank">link</a>.<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com2tag:blogger.com,1999:blog-6135547631044733480.post-16124174929016102302016-12-22T15:26:00.000+01:002017-01-10T11:59:01.616+01:00Iniziare a programmare con SDL 2 su Linux - parte 2<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
Nella
<a href="http://maxtrixnix.blogspot.it/2016/12/iniziare-programmare-con-sdl-2-su-linux.html" target="_blank">prima parte</a> di questo tutorial abbiamo visto come installare tutti
gli strumenti di sviluppo e abbiamo creato il nostro primo programma
sfruttando la libreria SDL 2. In questa seconda parte approfondiremo
meglio l'utilizzo di g++ e valgrind, inoltre miglioreremo il nostro
SDL Hello World.
<br />
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
tutti coloro che sono nuovi utenti del mondo Linux o che comunque non
hanno esperienza nell'invocazione del compilatore g++ ho pensato di
fare un po' di chiarezza sulla sintassi di questo comando.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
La
sintassi più semplice è</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ g++
[file sorgente]</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
L'eseguibile
avrà il nome di default <i>a.out</i>.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
specificare il nome dell'eseguibile basta aggiungere l'opzione -o
[nome eseguibile], quindi</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ g++
[file sorgente] -o [nome eseguibile]</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Se ci
sono più file sorgenti basta elencarli</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ g++
[file sorgente 1] [file sorgente 2] -o [nome eseguibile]</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
finire, se dobbiamo utilizzare una libreria, come SDL 2 nel nostro
caso, dobbiamo comunicarlo al linker tramite l'opzione -l (elle
minuscola) seguita dal nome della libreria senza spazi.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ g++
[file sorgenti] -o [nome eseguibile] -l[nome libreria]</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per la
libreria SDL 2 scriveremo -lSDL2</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Bene,
questo è quanto abbiamo visto finora nella prima parte del tutorial,
ma avrete notato che, quando la lista dei file sorgente aumenta,
invocare g++ diventa decisamente scomodo.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
semplificare il tutto possiamo utilizzare il comando make.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Il
funzionamento di make è molto semplice, dobbiamo creare un file di
testo dove forniremo tutte le informazioni necessarie per la
compilazione, quali il compilatore da invocare, la lista dei file
sorgente, le opzioni da passare al compilatore, ecc...</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Una
volta preparato il file chiamato Makefile, basterà invocare make e
questo invocherà g++ per noi.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Questo
è un esempio di Makefile per compilare il nostro SDL Hello World</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<script src="https://gist.github.com/Maximilianum/3d5e1accb5227ffd7cac7ff17d88396f.js"></script>
<br />
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Il
contenuto del Makefile è abbastanza semplice da capire, man mano che
aggiungiamo un file sorgente o un file header basterà aggiungerlo
alla lista nel Makefile. Possiamo apportare tutte le modifiche che
vogliamo nel Makefile e basterà invocare il comando make per
compilare ed ottenere il file eseguibile.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Oltre a
questo make si occupa di verificare se dall'ultima compilazione è
cambiato qualcosa nei file sorgente, se nulla è cambiato ci verrà
notificato.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Copiate
ed incollate il testo in un file e salvatelo con il nome Makefile
nella stessa directory dei file sorgente. Ora provate ad eseguire il
comando</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ make</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Decisamente
più comodo, non è vero?</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihjYuaF6Xsx30ttosffGxP9l690zlfAUOFKsIkw4eK0Pm8-3ENG9CfYoppoFdlDmLOcbvgRtJf5PQ4d2EKuc1SvR8PaGcMYJdmeh440KuS042FUPjQyY7gvnLcFtXMONVXjJfu6LcLC6SX/s1600/Schermata+da+2016-12-22+14%253A04%253A01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihjYuaF6Xsx30ttosffGxP9l690zlfAUOFKsIkw4eK0Pm8-3ENG9CfYoppoFdlDmLOcbvgRtJf5PQ4d2EKuc1SvR8PaGcMYJdmeh440KuS042FUPjQyY7gvnLcFtXMONVXjJfu6LcLC6SX/s400/Schermata+da+2016-12-22+14%253A04%253A01.png" width="400" /></a></div>
<div style="text-align: center;">
<br /></div>
<br />
Passiamo
ad un altro argomento: valgrind.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
La
scorsa volta avevamo installato valgrind in quanto ottimo strumento
di debugging, in particolare per gli errori nella gestione delle
allocazioni di memoria. La sintassi è semplice</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$
valgrind ./[nome eseguibile]</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
L'eseguibile
verrà avviato all'interno dell'ambiente di debugging di valgrind, il
quale analizzerà tutte le allocazioni di memoria e le relative
de-allocazioni delle stesse. Al termine del programma verrà stampato
sul terminale un resoconto completo con un elenco degli eventuali
errori rilevati.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Proviamolo
con il nostro SDL Hello World</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$
valgrind ./sdl_helloworld</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
L'esecuzione
risulterà più lenta e alla fine avremo sul terminale un resoconto
dettagliato.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Senza
entrare troppo nei particolari, quello che ci interessa più di tutto
il resto è l'ultima riga:</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
ERROR
SUMMARY: 0 errors from 0 contexts (suppressed: 6 from 2)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Nella
sezione LEAK SUMMARY potete trovare altri dettagli sulle allocazioni
di memoria.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
E'
ovvio che non è solo il vostro codice che viene analizzato, ma anche
quello delle librerie utilizzate, quindi alcuni memory leaks possono
essere causati da quest'ultime.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Bene,
torniamo all'argomento principale di questo tutorial, SDL 2.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Nello
scorso esempio abbiamo utilizzato la funzione SDL_loadBMP(), che
carica un'immagine di tipo BMP (Windows bitmap) in un oggetto
SDL_Surface.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
quanto questa funzione sia molto comoda e semplice da utilizzare, il
formato BMP è piuttosto limitato e scarsamente utilizzato al giorno
d'oggi.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Nella
libreria principale di SDL 2 non ci sono altre funzioni per caricare
immagini di tipo diverse, quali ad esempio PNG o JPG, ma
fortunatamente c'è un'altra libreria dedicata a questo scopo:
SDL_image.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Prima
cosa da fare è installare sul nostro sistema questa libreria.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ su</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
(verrà
richiesta la password di root)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
# apt
install libsdl2-image-dev</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDnpnBJbDXBV5BswGD211yQinbEL6PDSALL8MDkPhBz7HExAJvu-mC_NeGzFx-AvishGYvcsCMp5UnWyaeKVzrrHVgv82PdQSYUVxQfsCAPeetWgi1cpG5vxGl6rbGDZ5PPaFgtaWLHiXT/s1600/Schermata+da+2016-12-22+14%253A12%253A27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDnpnBJbDXBV5BswGD211yQinbEL6PDSALL8MDkPhBz7HExAJvu-mC_NeGzFx-AvishGYvcsCMp5UnWyaeKVzrrHVgv82PdQSYUVxQfsCAPeetWgi1cpG5vxGl6rbGDZ5PPaFgtaWLHiXT/s400/Schermata+da+2016-12-22+14%253A12%253A27.png" width="400" /></a></div>
<div style="text-align: center;">
<br /></div>
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Ora che
abbiamo installato SDL_image possiamo modificare il programma per
aprire un'immagine di tipo PNG.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Aggiungiamo
l'include con il file header di questa libreria in helloengine.h</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
#include
<SDL2/SDL_image.h></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Come la
libreria SDL 2 anche questa va inizializzata, quindi nella funzione
init() della classe HelloEngine (helloengine.cc) aggiungiamo queste righe di codice
per inizializzare SDL_image per il caricamento di immagini PNG,
subito sotto l'inizializzazione di SDL 2.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
//
inizializzazione SDL_image per i file di tipo PNG</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
if
((IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG) != IMG_INIT_PNG)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
{</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
on_SDL_error(std::cout,
"IMG_Init");</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
return
false;</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
}</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Ora
andiamo a modificare la parte di codice che carica l'immagine, è
sempre nella funzione init() poco più in basso. Utilizzeremo la
funzione IMG_LoadTexture() che ci restituisce direttamente un
puntatore ad un oggetto di tipo SDL_Texture, quindi non avremo
bisogno di crearla passando per un SDL_Surface.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
//
carica l'immagine in texture</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
std::string
name = "helloworld.png";</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
if
((texture = IMG_LoadTexture(renderer, name.c_str())) == nullptr)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
on_SDL_error(std::cout,
"IMG_LoadTexture");</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Potete
convertire l'immagine BMP in una di tipo PNG utilizzando Gimp e
salvatela con il nome helloworld.png.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Prima
di compilare ricordatevi che stiamo utilizzando un'altra libreria,
quindi dovremo modificare il nostro Makefile aggiungendo -lSDL2_image
alla lista delle librerie da linkare, subito dopo -lSDL2.<br />
<br />
Terminate le modifiche questo è quello che dovreste ottenere<br />
<script src="https://gist.github.com/Maximilianum/c8153651e3008d4daf06e13715ef9b94.js"></script>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Compilate
con</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$ make</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Ed ora
avviate il programma</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
$
-/sdl_helloworld</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Se non
avete fatto errori il programma funzionerà come prima.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Bene,
in questa seconda parte del tutorial dedicato ad SDL 2 abbiamo preso
maggior confidenza con gli strumenti di sviluppo e debugging, inoltre
abbiamo visto come usare la libreria SDL_image.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Nel
prossimo tutorial faremo ulteriori modifiche e vedremo come funziona
la gestione degli eventi.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-8293284085814957802016-12-20T23:17:00.000+01:002017-01-10T11:58:38.514+01:00Iniziare a programmare con SDL 2 su Linux<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><a href="https://www.libsdl.org/">SDL (Simple DirectMedia Layer)</a> è una libreria di sviluppo
multi-piattaforma, scritta in linguaggio C, progettata per
controllare facilmente video, grafica, audio, tastiera, mouse,
joystick, ecc...</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Queste
capacità la rendono ideale per lo sviluppo di videogiochi,
applicazioni multimediali ed emulatori.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Un
grande vantaggio è il fatto di essere multi-piattaforma, questo
infatti semplifica il porting sulle diverse piattaforme supportate
(Linux, OS X, Windows, iOS e Android).</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">SDL 2.0 è rilasciata con licenza Zlib, che è una licenza
per software libero ed è compatibile con la licenza GPL.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Vediamo
subito come preparare il nostro sistema con tutti gli strumenti
necessari per iniziare a programmare.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">In
questo tutorial utilizzerò Debian GNU/Linux 8.6 con il desktop
manager di default GNOME.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Probabilmente
già saprete che Debian è una distribuzione GNU/Linux universale ed
è la base di molte altre distribuzioni derivate, tra le quali
Ubuntu. Utilizzare Debian in questo tutorial mi permette di
abbracciare una grossa fetta di utenti Linux.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">La
prima cosa di cui abbiamo bisogno sono gli strumenti di sviluppo
fondamentali, quali il compilatore, il linker ed un debugger.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Il
pacchetto build-essential ci fornirà tutta la suite di programmi
utili allo sviluppo.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">$
su</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">vi
verrà chiesta la password di root.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Controlliamo
se ci sono aggiornamenti del sistema disponibili con</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt update</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Se
trovati procediamo con l'aggiornamento con</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt upgrade</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Quindi
installiamo build-essential</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt install build-essential</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-TrJqe1BrLJxmN-xVuSL15HX27TXJTXVyi1ixM6sZhz1lllxXS9aeTT6UT8seop6rQUvbrBpswZk0gG2cc0CEqWlELPSnN74eECZwyBVHcwbFI2-Mkj_gU8EiIYZ33CMe8nXduW7e-gD8/s1600/Schermata+da+2016-12-15+10%253A07%253A35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-TrJqe1BrLJxmN-xVuSL15HX27TXJTXVyi1ixM6sZhz1lllxXS9aeTT6UT8seop6rQUvbrBpswZk0gG2cc0CEqWlELPSnN74eECZwyBVHcwbFI2-Mkj_gU8EiIYZ33CMe8nXduW7e-gD8/s400/Schermata+da+2016-12-15+10%253A07%253A35.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Analizzando
la lista dei pacchetti installati, forse avrete notato che gdb (il
debugger GNU) è nella lista dei pacchetti consigliati, ma non è
stato installato. Possiamo installarlo manualmente con</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt install gdb</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"></span></span><span style="font-size: small;"><span style="font-family: inherit;">Oppure
verrà installato automaticamente quando andremo ad installare
Valgrind.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Valgrind
è un ottimo software di debug e profiling che, tra le altre cose,
permette di scovare gli errori nella gestione della memoria, come ad
esempio i memory leaks, ossia le allocazioni di memoria che non
vengono liberate al termine del loro utilizzo.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt install valgrind</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6cukUqtL4xJQkaqQW-rioFiXhv0eQwEhP1nJp3p9UbLBuEj8aeyaOExfgxMKR3XJxTm17Eud0ukRslViD0wK7jp2Zz5aq3gS_25KjIifJFBUDbQ4EkrU4jFKxXprG-M9m3j5sMuRW1Ga7/s1600/Schermata+da+2016-12-15+15%253A10%253A02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6cukUqtL4xJQkaqQW-rioFiXhv0eQwEhP1nJp3p9UbLBuEj8aeyaOExfgxMKR3XJxTm17Eud0ukRslViD0wK7jp2Zz5aq3gS_25KjIifJFBUDbQ4EkrU4jFKxXprG-M9m3j5sMuRW1Ga7/s400/Schermata+da+2016-12-15+15%253A10%253A02.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Ora
che abbiamo gli strumenti fondamentali per lo sviluppo, possiamo
installare la libreria SDL 2.0.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt install libsdl2-dev</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-dBtO1r0B6bTmOmoP6FBTievk5ig2U3VKb0OWhDvYpQkBy9aLYaliW4Ar69GnmwLmGnodUdLQIoxVa8QmdpKCkXNYIP1zFutLgGSSpkmT2aAHEjAlMG31Om7hbq1qGAWbLDN0J82CLzqW/s1600/Schermata+da+2016-12-20+11%253A19%253A17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-dBtO1r0B6bTmOmoP6FBTievk5ig2U3VKb0OWhDvYpQkBy9aLYaliW4Ar69GnmwLmGnodUdLQIoxVa8QmdpKCkXNYIP1zFutLgGSSpkmT2aAHEjAlMG31Om7hbq1qGAWbLDN0J82CLzqW/s400/Schermata+da+2016-12-20+11%253A19%253A17.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"></span></span><span style="font-size: small;"><span style="font-family: inherit;">Il
pacchetto libsdl2-dev contiene la libreria SDL 2.0 e tutti i
componenti fondamentali per sviluppare applicazioni con SDL, ma se
provate a cercare i pacchetti libsdl2 disponibili troverete altri
componenti che ne espandono le funzionalità.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">#
apt search libsdl2</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLTTF_1TC1Fa5Jup9sSi1gtaoVNr0EQ13if-feuLrxKiyjtsQgmZ82-8QLn7FYIDh-twZQpWC5y3XqWHxDBiSaQv565Wr7_42aAVUF7ZDBYcfIPKVkwGzjdvcUPd50ar1bMiNdpgg28WxZ/s1600/Schermata+da+2016-12-20+19%253A13%253A43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="293" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLTTF_1TC1Fa5Jup9sSi1gtaoVNr0EQ13if-feuLrxKiyjtsQgmZ82-8QLn7FYIDh-twZQpWC5y3XqWHxDBiSaQv565Wr7_42aAVUF7ZDBYcfIPKVkwGzjdvcUPd50ar1bMiNdpgg28WxZ/s400/Schermata+da+2016-12-20+19%253A13%253A43.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"></span></span><span style="font-size: small;"><span style="font-family: inherit;">Analizzeremo
ed installeremo gli altri pacchetti nel prossimo tutorial, quando ci serviranno,
per il momento iniziamo a fare un piccolo test di compilazione per
verificare che tutte le operazioni di preparazione siano andate a
buon fine.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Per
questo tutorial utilizzerò gedit, l'editor di testo del desktop
GNOME, semplice e leggero, sicuramente adatto per scrivere/modificare
file di codice sorgente di piccole dimensioni.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Nonostante
la sua estrema semplicità, con qualche piccolo accorgimento possiamo
renderlo un discreto strumento di sviluppo.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Dopo
aver lanciato gedit, clicchiamo sul menù dell'applicazione sulla
barra dello schermo in alto accanto ad Attività, e selezioniamo la
voce Preferenze. Comparirà una finestra con diverse opzioni divise
per categorie, clicchiamo su Editor e modifichiamo l'ampiezza di
tabulazione da 8 a 4. Personalmente trovo che 8 spazi siano
decisamente troppi, ma siete liberi di impostare il numero di spazi
che più vi aggrada.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf-ccibpgtJnD3JrBblBO4ZLAaYl6uH-sLVmlGdVYo80oZGj_vtHqfKv5oilCFXzCpVUm0iL3LAE0Oq6CsGu1m8-oqp96R4mR5F0YGGT0JZVOhejIFajuGrF-m6eEGfr_xHGCYT_urHx5r/s1600/Schermata+da+2016-12-20+10%253A10%253A34.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="228" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf-ccibpgtJnD3JrBblBO4ZLAaYl6uH-sLVmlGdVYo80oZGj_vtHqfKv5oilCFXzCpVUm0iL3LAE0Oq6CsGu1m8-oqp96R4mR5F0YGGT0JZVOhejIFajuGrF-m6eEGfr_xHGCYT_urHx5r/s400/Schermata+da+2016-12-20+10%253A10%253A34.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small;">Preferenze di gedit</span></td></tr>
</tbody></table>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Ora
cliccate su Plugin e scorrete la lista in basso fino a trovare e
spuntare l'opzione Terminale integrato. Questo ci permetterà di
avere un Terminale nella parte bassa della finestra di gedit,
evitando di dover passare da una finestra ad un'altra quando dobbiamo
compilare o effettuare operazioni di debugging.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg86ZJI8H3KQ2jaanFAjBwNf65wOY1fpatcjoZU2Rf7wR38dMba-UnN7O-u-OAfp79L_6GaEkTvVnAkQdIaMgGIchVVURjvn5uWC5cTtczP-GsSzw6xOo8iimLtKTzv7JTbxct7MjS-GPiD/s1600/Schermata+da+2016-12-15+15%253A13%253A16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg86ZJI8H3KQ2jaanFAjBwNf65wOY1fpatcjoZU2Rf7wR38dMba-UnN7O-u-OAfp79L_6GaEkTvVnAkQdIaMgGIchVVURjvn5uWC5cTtczP-GsSzw6xOo8iimLtKTzv7JTbxct7MjS-GPiD/s400/Schermata+da+2016-12-15+15%253A13%253A16.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Adesso
clicchiamo sull'icona menù, posta sulla finestra di gedit accanto al
tasto x di chiusura, selezioniamo Vista e spuntiamo le voci Riquadro
laterale e Riquadro inferiore.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJfTih0_UqMGnPftBsi43y19p0ppSEjB2ImQ9675NvE2aMRhR4cB51jEs9-cxOhAKUynRtGiTh4SXOxqVyd12MW4HLHOTjpjh0SZ6ETkexqdg2mhvEEZ8iJy_kHaAXOohVHfPhqNUNSKBL/s1600/Schermata+da+2016-12-20+12%253A00%253A03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJfTih0_UqMGnPftBsi43y19p0ppSEjB2ImQ9675NvE2aMRhR4cB51jEs9-cxOhAKUynRtGiTh4SXOxqVyd12MW4HLHOTjpjh0SZ6ETkexqdg2mhvEEZ8iJy_kHaAXOohVHfPhqNUNSKBL/s400/Schermata+da+2016-12-20+12%253A00%253A03.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHf-Xef57yOFkMhIjcwTEi4HsMVIgvX65WRMzd0HsPTJrMcUA7KQYoq1SqabD2pOfPcn2UnWJQxVr7g3Te2m4Zp7RdVllZen1LKeXz4gYFQL_H403yZoTQxE2YIJRAV71fYA3u1ygbs1XB/s1600/Schermata+da+2016-12-15+15%253A13%253A57.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHf-Xef57yOFkMhIjcwTEi4HsMVIgvX65WRMzd0HsPTJrMcUA7KQYoq1SqabD2pOfPcn2UnWJQxVr7g3Te2m4Zp7RdVllZen1LKeXz4gYFQL_H403yZoTQxE2YIJRAV71fYA3u1ygbs1XB/s400/Schermata+da+2016-12-15+15%253A13%253A57.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Queste
faranno visualizzare un riquadro laterale con la lista dei file
aperti ed un riquadro inferiore con il Terminale integrato.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Per
finire, nella barra di stato di gedit, cliccate su Testo semplice per
far comparire un menù e selezionate C++ per usufruire della
colorazione automatica del testo per la sintassi del linguaggio di
programmazione che andremo ad utilizzare nel tutorial.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKB-WSa6FGdXn6_GiCjU3hWPYrdousGsygQ9T2bwZHH5LFM7Qc4Pk3LeHmwsp35zEkzbV0ra9a2aCw_HUxOkfu_QkcSCC5_dp2GUAg96YXPPij8KgdpuFVX4RNAh7XuM-XQcXAN5vyfasn/s1600/Schermata+da+2016-12-20+19%253A24%253A30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKB-WSa6FGdXn6_GiCjU3hWPYrdousGsygQ9T2bwZHH5LFM7Qc4Pk3LeHmwsp35zEkzbV0ra9a2aCw_HUxOkfu_QkcSCC5_dp2GUAg96YXPPij8KgdpuFVX4RNAh7XuM-XQcXAN5vyfasn/s400/Schermata+da+2016-12-20+19%253A24%253A30.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Al
termine di queste personalizzazioni, gedit ha un aspetto decisamente
più orientato alla programmazione e meno minimalista.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Facciamo
un test veloce per verificare che tutto funzioni regolarmente,
scriveremo il classico Hello World e proveremo a compilarlo.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<script src="https://gist.github.com/Maximilianum/c62057c62e0bd37bbec50136c184e6a3.js"></script>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">E' indispensabile avere una <span style="font-family: inherit;"></span>conoscenza minima del linguaggio C++,
altrimenti vi consiglio di andare a consultare un manuale o un
tutorial specifico.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Salvate
il file in Documenti con il nome helloworld.cc, quindi dal Terminale
integrato di gedit, andate in Documenti e provate a compilare il
vostro programma.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">$
g++ helloworld.cc -o helloworld</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Se
non avete fatto errori la compilazione andrà a buon fine e potrete
eseguire helloworld</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">$
./helloworld</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Hello
World!</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">A
questo punto facciamo un altro test, un nuovo <span style="font-family: inherit;">H</span>ello <span style="font-family: inherit;">W</span>orld, ma questa
volta utilizzando SDL 2.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Andremo
a creare una classe chiamata HelloEngine che sarà il motore della
nostra applicazione, mentre nel file principale, chiamato
sdl_helloworld.cc ci sarà la funzione main() che si occuperà di
creare un'istanza di HelloEngine ed avviarne l'esecuzione.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">E'
una struttura simile a quello che si utilizza per lo sviluppo di un
videogioco, in questo caso è molto semplificata in quanto non ha un
loop e non gestisce alcun evento. Questo programma si limiterà ad
aprire una finestra e visualizzare il messaggio Hello World, dopo 2
secondi d'attesa chiude la finestra e termina.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Questi
sono i tre file del nostro SDL Hello World.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<script src="https://gist.github.com/Maximilianum/e1b1d5386524664a249c5c8404ad2d20.js"></script>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Iniziamo
ad esaminare il file header della classe HelloEngine, all'inizio del
file andiamo ad includere iostream e SDL2/SDL.h.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Il
secondo è ovviamente indispensabile per utilizzare la libreria SDL2,
mentre il primo è necessario quando andiamo a stampare gli eventuali
messaggi d'errore tramite std::ostream.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Le
funzioni membro sono solo 4:</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">-
init() si occupa di inizializzare HelloEngine;</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">-
start() avvia l'esecuzione;</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">-
render() disegna l'immagine caricata nella finestra;</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">-
on_SDL_error() stampa il messaggio d'errore sullo std::ostream
indicato.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Per
il resto il file header è piuttosto semplice, andiamo a vedere come
queste 4 funzioni sono implementate in helloengine.cc.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Init()
è la funzione che inizializza l'ambiente SDL invocando SDL_Init(),
prima di poter utilizzare qualsiasi funzione della libreria SDL2
dobbiamo inizializzarla con questa funzione. Successivamente viene
creata una finestra con SDL_CreateWindow(), quindi viene creata
un'istanza di SDL_Renderer che ci servirà per tutte le operazioni
grafiche.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Per
finire viene caricata un'immagine BMP ottenendo un oggetto
SDL_Surface con il quale viene creato un oggetto SDL_Texture.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Dopo
aver ottenuto la nostra texture, viene distrutto l'oggetto
SDL_Surface con la funzione SDL_FreeSurface() liberando la memoria
allocata.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">render()
è incaricata di disegnare sulla finestra.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">SDL_RenderClear()
cancella il contenuto di renderer, SDL_RenderCopy() disegna la
texture ottenuta dal caricamento dell'immagine su renderer, infine
con SDL_RenderPresent() viene visualizzato il contenuto di renderer
sulla finestra.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Start()
avvia l'esecuzione vera e proprio di HelloEngine, inizialmente invoca
init() per effettuare tutte le inizializzazioni, quindi esegue la
funzione render() per disegnare sulla finestra. SDL_Delay() attende
per il numero di millesecondi indicato, nel nostro caso
attende 2 secondi e quindi esce con valore 0 per indicare che non ci
sono stati errori.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">on_SDL_error()
stampa un messaggio d'errore sullo std::ostream indicato, di fatto è
sempre std::cout.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Infine
è bene soffermarsi sul distruttore della classe HelloEngine, che si
occupa di de-allocare tutta la memoria utilizzata dal programma.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">SDL2
ha una funzione specifica per ogni tipo di oggetto da de-allocare,
non possiamo utilizzare il semplice delete. Abbiamo visto in init()
la funzione SDL_FreeSurface() per distruggere l'SDL_Surface, qui
utilizziamo SDL_DestroyTexture per l'SDL_Texture, SDL_DestroyRenderer
per l'SDL_Renderer e SDL_Quit per chiudere l'intero ambiente SDL.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Il
file sdl_helloworld.cc contiene la funzione main() del programma, il
funzionamento è estremamente semplice, crea un'istanza di
HelloEngine e ne invoca l'esecuzione con start(). Al termine
dell'esecuzione distrugge l'istanza con il delete ed esce con lo
stesso codice d'uscita dell'istanza.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<br />
<span style="font-size: small;"><span style="font-family: inherit;">Andiamo a compilare <span style="font-family: inherit;">SDL Hello World con</span></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">$ g++ -std<span style="font-family: inherit;">=c++<span style="font-family: inherit;">11 hello<span style="font-family: inherit;">engine.h helloengine.cc sdl_helloworld.cc -o s<span style="font-family: inherit;">dl_helloworld -lSDL2</span></span></span></span> </span></span></span>
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">Prima di eseguire ricordatevi di mettere l'immagine <span style="font-family: inherit;">hellowor<span style="font-family: inherit;">ld.bmp nella stessa <span style="font-family: inherit;">directory d<span style="font-family: inherit;">ell'eseguibile<span style="font-family: inherit;">, altrimenti verrà visualizzata una finestra completamente nera.<span style="font-family: inherit;"><br /></span></span></span></span></span></span></span></span></span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDkDI0jh6WEqBJcdv6kxGyZRXJLEviBEyUfCQQM4888A6lBaTQ0ZpZmTDg8RmhsIwpxxcO0nZrAyBvw7hO1_DB9niIQiISVDr1pAHj-PIHa6ZUXCsZh7c17pPVZ31rwJr_VdiA85RcEr85/s1600/helloworld.bmp" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDkDI0jh6WEqBJcdv6kxGyZRXJLEviBEyUfCQQM4888A6lBaTQ0ZpZmTDg8RmhsIwpxxcO0nZrAyBvw7hO1_DB9niIQiISVDr1pAHj-PIHa6ZUXCsZh7c17pPVZ31rwJr_VdiA85RcEr85/s400/helloworld.bmp" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small;">Immagine BMP utilizzata per questo test</span></td></tr>
</tbody></table>
<div style="text-align: center;">
</div>
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;">L'immagine verrà salvata come <span style="font-family: inherit;">JPG</span></span>, potete esportarla in formato BMP utilizzando Gimp oppure ne potete creare una voi. Ricordatevi che per poter essere caricata correttamente da<span style="font-family: inherit;"> SDL_<span style="font-family: inherit;">L</span>oadBMP</span>() l'immagine deve avere un unico l<span style="font-family: inherit;">ivello.</span></span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><span style="font-family: inherit;"> </span></span></span>
<br />
<span style="font-size: small;"><span style="font-family: inherit;">$ ./sdl_helloworld</span></span><br />
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY6pwJVGq0u9JDndr9XaLiqWFmlZ-G9Xb16onUdHjHlXTC6TWNTzjziI7bu75igfF-PmuTOYr-FtjVPcMYdz03Bvejj6AAHVzuY9kroeQhusSe7d4TSJhTlBvwt6KvHovKftECyuZ9K_5I/s1600/Schermata+da+2016-12-20+23%253A03%253A32.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY6pwJVGq0u9JDndr9XaLiqWFmlZ-G9Xb16onUdHjHlXTC6TWNTzjziI7bu75igfF-PmuTOYr-FtjVPcMYdz03Bvejj6AAHVzuY9kroeQhusSe7d4TSJhTlBvwt6KvHovKftECyuZ9K_5I/s400/Schermata+da+2016-12-20+23%253A03%253A32.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small;">SDL Hello World in esecuzione</span></td></tr>
</tbody></table>
<div style="text-align: center;">
<span style="font-size: small;"><span style="font-family: inherit;"><br /></span></span>
</div>
<span style="font-size: small;"><span style="font-family: inherit;">In
questo tutorial abbiamo installato gli strumenti di sviluppo e la
libreria SDL 2 sul nostro sistema ed abbiamo visto un primo esempio
di applicazione sviluppata con questa libreria.</span></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-family: inherit;">Nel
prossimo tutorial vedremo come caricare immagini di altri formati,
gestire eventi come la pressione di un tasto o il click del mouse ed
altro ancora.</span></span></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-19679981106790125482016-12-14T17:13:00.000+01:002017-08-21T16:21:17.707+02:00QEMU - Emulatore e gestore di macchine virtuali su Linux<div style="line-height: 100%; margin-bottom: 0cm; text-align: left;">
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%</style>Prima
di iniziare ad utilizzare <a href="http://wiki.qemu.org/Main_Page">QEMU</a> su Linux facciamo un po di chiarezza
sulla differenza tra un emulatore ed una macchina virtuale.
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Il
primo ha lo scopo di emulare l'hardware di una macchina (che può
essere totalmente differente dal sistema emulante, o sistema host) al
fine di eseguire il software originariamente scritto per girare sul
sistema emulato. Ad esempio, sul nostro PC con processore x86
potremmo emulare una macchina con processore POWER o ARM. Sono molto
popolari anche gli emulatori di console e vecchi computer degli anni
80 che ci permettono di giocare ai vecchi classici di un tempo, come
ad esempio il MAME (Multiple Arcade Machine Emulator).</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Una
macchina virtuale invece ci permette di creare una macchina
all'interno di un'altra, sulla quale potremmo installare un sistema
operativo che rimarrà in un ambiente “protetto” e separato dal
sistema ospitante. Una macchina virtuale pura non emula un hardware
differente da quello in cui gira, ma si limita a replicarlo.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Ci sono
diversi software di virtualizzazione piuttosto conosciuti quali
VirtualBox (ora di Oracle) e soluzioni commerciali quali WMware
Workstation Player o Pro.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Preferendo
utilizzare un software libero ed open source abbiamo QEMU che ci
permette sia di emulare un hardware differente da quello host, sia di
creare una macchina virtuale sulla quale poter installare un secondo
sistema operativo.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Un
grande vantaggio di QEMU è la possibilità di utilizzare KVM (Kernel
Virtual Machine), un modulo del kernel Linux che permette di
ottenere prestazioni migliori grazie allo sfruttamento delle funzioni
di virtualizzazione hardware offerte dai processori che li
supportano.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
In
questa breve guida introduttiva utilizzerò un sistema basato su
processore x86 64 bit con sistema operativo Debian GNU/Linux 8.6.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Iniziamo
con l'installazione del software:</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b>$ su</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
iniziare una sessione come utente amministratore root, vi verrà
richiesta la password di root.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b># apt
update</b></div>
<b>
</b>
<br />
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b># apt
upgrade</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
aggiornare il sistema.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b># apt
install qemu</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Installerà
tutti i pacchetti necessari per l'utilizzo di QEMU.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b># exit</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
tornare a lavorare con il vostro id utente e non più come root.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Prima
cosa da fare è creare un'immagine disco virtuale che verrà
utilizzata da QEMU come fosse un hard disk, a questo scopo
utilizziamo il comando qemu-img.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b>$
qemu-img create virtualhd.img 20G</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Questo
comando crea un file di immagine disco chiamato virtualhd.img della
grandezza di 20 Gb.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
ottenere ulteriori informazioni sulla sintassi di qemu-img potete
invocare l'aiuto veloce con il seguente comando:</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b>$
qemu-img –help</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
A
questo punto abbiamo un'immagine disco vuota dove poter installare il
nostro sistema operativo, ora andremo ad utilizzare un file .iso del
primo CD di installazione di Debian per sperimentare il funzionamento
di QEMU. Se preferite potete ovviamente utilizzare un sistema
operativo differente.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
In
questo caso non voglio emulare una macchina diversa da quella
ospitante, quindi utilizzerò il comando dedicato ai sistemi x86 64
bit.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b>$
qemu-system-x86_64 -cdrom debian-8.6.0-amd64-CD-1.iso -drive
file=virtualhd.img -m size=2048 -enable-kvm</b></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<i>qemu-system-x86_64</i>
è il comando che invoca l'utilizzo di una macchina virtuale x86 64
bit.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<i>-cdrom</i>
è l'opzione che indica quali immagine disco è da considerarsi come
CD virtuale, in questo caso abbiamo indicato
<i>debian-8.6.0-amd64-CD-1.iso</i> come file di immagine.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<i>-drive</i>
invece indica il file da considerare come hard disk virtuale,
utilizzeremo quello appena creato <i>virtualhd.img</i>.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<i>-m </i>è
l'opzione che indica la quantità di memoria da utilizzare sulla
nostra macchina virtuale, <i>size=2048</i> assegna 2 Gb di RAM.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<i>-enable-kvm</i>
per finire attiva l'utilizzo del modulo kernel KVM.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Anche
con questo comando potete accedere alla guida sulla sintassi e le
tante opzioni disponibili con il solito –help.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Non
appena avrete eseguito questo comando si aprirà una finestra che
visualizzerà lo schermo della macchina virtuale in esecuzione e
potrete procedere all'installazione del sistema operativo.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Il
sistema ospite sarà eseguito in modo indipendente dal sistema
ospitante e qualsiasi operazione su disco sarà in realtà eseguita
sul file immagine del disco virtuale, sarete quindi liberi di
sperimentare senza rischiare di danneggiare il vostro sistema
principale.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMW32kDm_ybivmmiXDT9Ee-KzBTTazIgg9Dx0OM51zANydAzjOitbkKN1Uv2caIh9nbklxXl1uFsL5moaPtaJWQtEUgYbjFjIgKj1xexrExA5D83u7ruI3KwR0lbgwtpxbDj-SNz2vmcYj/s1600/Schermata+da+2016-12-14+17%253A02%253A53.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMW32kDm_ybivmmiXDT9Ee-KzBTTazIgg9Dx0OM51zANydAzjOitbkKN1Uv2caIh9nbklxXl1uFsL5moaPtaJWQtEUgYbjFjIgKj1xexrExA5D83u7ruI3KwR0lbgwtpxbDj-SNz2vmcYj/s640/Schermata+da+2016-12-14+17%253A02%253A53.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Avvio del disco di installazione di Debian 8.6</td></tr>
</tbody></table>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjcGvdv7kM-RSEJaiBeuBu0uMRnQC0Gmm1u9RVJhlXMmP-WSIlohRivzQl35EVAnGBR1kSi7qHRc2qfhIzUKQPdBqY33jlsLe3kR2fTBF0HfW8Qv5nofI2Ch24cEMV5itU9OYhAwMCn5zF/s1600/Schermata+da+2016-12-14+17%253A05%253A44.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjcGvdv7kM-RSEJaiBeuBu0uMRnQC0Gmm1u9RVJhlXMmP-WSIlohRivzQl35EVAnGBR1kSi7qHRc2qfhIzUKQPdBqY33jlsLe3kR2fTBF0HfW8Qv5nofI2Ch24cEMV5itU9OYhAwMCn5zF/s640/Schermata+da+2016-12-14+17%253A05%253A44.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Avvio della macchina virtuale dopo l'installazione del sistema, menù di GRUB</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsnp06IGyFdIgkcCpV7C-5Ebp0BEP8NJOW9io9B0-MlFtlpGePyiQ7E3oMSGX-qp_lRUt3MmsF4oY6c2avDGnWsh0Q9kyesB-FS2_lrGkQnVTJGkpjlZs3fAdQVpLYyRFyl1p02RcC6twP/s1600/Schermata+da+2016-12-14+17%253A04%253A45.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsnp06IGyFdIgkcCpV7C-5Ebp0BEP8NJOW9io9B0-MlFtlpGePyiQ7E3oMSGX-qp_lRUt3MmsF4oY6c2avDGnWsh0Q9kyesB-FS2_lrGkQnVTJGkpjlZs3fAdQVpLYyRFyl1p02RcC6twP/s640/Schermata+da+2016-12-14+17%253A04%253A45.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Debian 8.6 in funzione sulla macchina virtuale</td></tr>
</tbody></table>
<br />
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-9822397394486870852016-08-07T15:12:00.000+02:002017-05-09T09:33:25.877+02:00Password dimenticata: come reimpostare la password in Debian 8 GNU/Linux<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
Può succedere di
dimenticare la password utente o quella di root (o entrambe) di un
sistema che utilizziamo poco, vediamo un modo rapido per resettare le
password.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Avviate il computer
e attendete che compaia il menu di GRUB 2.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Utilizzando i tasti
cursore su/giu selezionate la voce per avviare il sistema e premete
il tasto 'e' per accedere alla modalità di modifica.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Sempre con i tasti
freccia muovete il cursore alla fine della riga di avvio del kernel e
aggiungete la voce “<b>init=/bin/bash</b>” in modo simile a quanto
potete vedere nell'immagine.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN1NoiynotTSLpioXDwNOObl_lRzsN_3e41RX6pbmG7QBYFa79cNtYyId3QmdzrNvQmrdlHBmDSagMSHZ9hiRSli-LO0nXV1ac4aUfVOfglgpnlxP25TTe7soKYcdbyYJLyjDOZAPWPQTm/s1600/GRUB_edit.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN1NoiynotTSLpioXDwNOObl_lRzsN_3e41RX6pbmG7QBYFa79cNtYyId3QmdzrNvQmrdlHBmDSagMSHZ9hiRSli-LO0nXV1ac4aUfVOfglgpnlxP25TTe7soKYcdbyYJLyjDOZAPWPQTm/s400/GRUB_edit.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">modalità modifica in GRUB 2</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
A questo punto
premete la combinazione di tasti Ctrl + x per avviare il sistema.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Alla fine della
procedura di boot, invece di vedere la classica interfaccia grafica
per il login, vi troverete nel terminale con accesso come root.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Il filesystem del
sistema risulterà montato in modalità di sola lettura, dovrete
abilitare la scrittura sul disco per poter modificare le password.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Digitate il comando:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<b>mount -w -o remount
/</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Non vi resta che
modificare la password di root digitando il comando:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<b>passwd</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Vi verrà chiesto di
inserire due volte la nuova password.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Potrete anche
modificare la password utente con lo stesso comando aggiungendo il proprio nome utente:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<b>passwd <i>nome_utente</i></b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm;">
Anche
in questo caso dovrete reinserire la nuova password due volte.</div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm;">
Ora che avete ripristinato le password spegnete il computer e riavviate
normalmente, ora avete di nuovo accesso completo al vostro sistema.</div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-69241242769713301112015-11-26T14:48:00.000+01:002015-11-26T14:49:12.298+01:00Risoluzione dei problemi con il dual boot di Debian GNU/Linux e Windows 10<style type="text/css">pre.cjk { font-family: "Nimbus Mono L",monospace; }p { margin-bottom: 0.25cm; line-height: 120%; }code.cjk { font-family: "Nimbus Mono L",monospace; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
Installare Debian, o
qualsiasi altra distribuzione GNU/Linux, in dual boot con Windows 10
è abbastanza semplice e, alla fine dell'installazione, dopo il
riavvio del sistema, ci troveremo davanti al classico menu di GRUB.
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ci sono dei casi
particolari in cui potremmo andare in contro a dei problemi,
vediamone due dei più comuni e cosa fare per risolverli.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<b>Non compare il menù di GRUB, si avvia direttamente Windows 10</b></h2>
<div style="text-align: center;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Questo è un
problema capitato a molti, in alcuni casi si verifica non solo subito
dopo aver installato Debian, ma anche dopo un aggiornamento a/di
Windows 10, vediamo perché e come risolverlo.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Il problema è
causato da Windows 10, che modifica le impostazioni del firmware UEFI
(senza avvisare l'utente o chiedere conferma) e forza il boot con
Windows. Da sempre Microsoft non si è mai curata di rispettare gli
altri eventuali sistemi operativi installati sul computer dando per
scontato che sul PC ci deve essere un solo sistema: il suo.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
La soluzione è
semplice, da Windows 10, cliccate sul pulsante <i>Start</i>, selezionate la
voce <i>Tutte le app</i>, quindi <i>Sistema Windows</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig81eOYSv23KUNwEFHEmBn8mbh9voZ923trNvkrk43n2fCwm0kSslHlLq-Zep6-6I-Jp6rUGQ8HKoXgvi3DCpd0I4W2coAB5u9P2TWAwacGHou73ZwxEo6M-R_0qwlleqxDDaq8jqvYbsg/s1600/win10_start1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig81eOYSv23KUNwEFHEmBn8mbh9voZ923trNvkrk43n2fCwm0kSslHlLq-Zep6-6I-Jp6rUGQ8HKoXgvi3DCpd0I4W2coAB5u9P2TWAwacGHou73ZwxEo6M-R_0qwlleqxDDaq8jqvYbsg/s400/win10_start1.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Cliccate con il tasto
destro su <i>Prompt dei comandi</i>, verrà visualizzato un sotto menù,
selezionate <i>Altro</i> e quindi <i>Esegui come amministratore</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6E4kqMgglP_ngEq3R0XZQXPnzJzPMCH2P33mZBUvCtOdC8iIuBdWU9DT6Zg5D6NKlPSldGhvMHzg5NdGE6OtgBabenHhEWbXgjKtCEpYbyJQ4jKHQ6HIvm0lVxIhg9uGPsX8dzDf51LXW/s1600/win10_start2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6E4kqMgglP_ngEq3R0XZQXPnzJzPMCH2P33mZBUvCtOdC8iIuBdWU9DT6Zg5D6NKlPSldGhvMHzg5NdGE6OtgBabenHhEWbXgjKtCEpYbyJQ4jKHQ6HIvm0lVxIhg9uGPsX8dzDf51LXW/s400/win10_start2.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Vi verrà richiesta
conferma di consentire all'applicazione <i>Prompt dei comandi</i> di
eseguire modifiche sul PC, cliccate sul <i>Si</i> e comparirà la finestra
per l'immissione dei comandi.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Inserite il seguente
comando e premete invio:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<blockquote class="tr_bq">
<div class="western">
<b><code class="western">bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi</code></b></div>
</blockquote>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ2ex1U491A63z3pZaWk2gIHOF_tN66s8ammVuvM5eQERp1gvwzx05OjzlgZPLQkGdJO01T9KuCX8rjSn_Og2LgPqzjqaGyQlaEcqnLyGvYIj8EowK0_H-pYiLbcEJQuBBICW_d4v0S1dj/s1600/win10_prompt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="268" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ2ex1U491A63z3pZaWk2gIHOF_tN66s8ammVuvM5eQERp1gvwzx05OjzlgZPLQkGdJO01T9KuCX8rjSn_Og2LgPqzjqaGyQlaEcqnLyGvYIj8EowK0_H-pYiLbcEJQuBBICW_d4v0S1dj/s400/win10_prompt.png" width="400" /></a></div>
<div style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Come potete vedere
dalla riga del comando, abbiamo impostato il percorso del boot
manager da eseguire all'avvio. In questo caso specifico la directory
all'interno di EFI è debian, per Ubuntu scriverete
\EFI\ubuntu\grubx64.efi, mentre per Fedora sarà
\EFI\fedora\grubx64.efi e così via.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora riavviate il PC
e il familiare menù di GRUB vi accoglierà come sempre.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<b>GRUB non trova
l'immagine di sfondo impostata</b></h2>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
La flessibilità di
GRUB ci permette di personalizzarne l'aspetto modificando l'immagine
di sfondo (vedi i miei precedenti post al riguardo per distribuzioni
<a href="http://maxtrixnix.blogspot.it/2015/09/come-personalizzare-il-menu-di-grub-2.html">Debian/Ubuntu</a> e per <a href="http://maxtrixnix.blogspot.it/2015/11/personalizzare-il-menu-di-grub-2-fedora.html">Fedora</a>), ma in alcuni casi, pur avendo impostato
correttamente l'immagine di sfondo, GRUB sembra non trovarla.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Di solito l'immagine
da utilizzare per GRUB viene messa in <i>/usr/share</i> all'interno di
qualche altra directory come ad esempio <i>/usr/share/images/grub</i> (come consigliato
sulle mie guide precedenti). Se non ci sono errori di scrittura nel
percorso indicato nell'opzione <i>GRUB_BACKGROUND</i>, ma nonostante tutto
l'immagine non viene trovata, allora è probabile che la vostra<i> /usr</i>
sia in una partizione diversa da quella dove GRUB va a cercare.
Questo succede quando ad esempio abbiamo Windows 10 installato sul
primo disco e Debian GNU/Linux nel secondo disco.
Purtroppo GRUB non si affida ad un puro schema ad albero per il file
system come in ambiente UNIX like, ma ha una vera e propria foresta
di partizioni dove districarsi.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
La soluzione più
semplice che ho trovato a questo problema è quella di spostare
l'immagine destinata a GRUB da<i> /usr/share/images/grub</i> a <i>/boot/grub</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Se ad esempio
l'immagine si chiama <i>splash.png</i>, dal terminale la possiamo spostare
digitando:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<blockquote class="tr_bq">
<div style="line-height: 100%; margin-bottom: 0cm;">
> <b>mv
/usr/share/images/grub/splash.png /boot/grub</b></div>
</blockquote>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ricordatevi di
eseguire i comandi mostrati come <i>root</i> utilizzando <i>su</i>, oppure
aggiungete <i>sudo</i> all'inizio della riga se il vostro utente è di tipo
amministratore.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
A questo punto
possiamo modificare il file <i>grub</i> in <i>/etc/default</i> e rimuoviamo
l'opzione <i>GRUB_BACKGROUND</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<blockquote class="tr_bq">
<div style="line-height: 100%; margin-bottom: 0cm;">
> <b>nano
/etc/default/grub</b></div>
</blockquote>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Possiamo cancellare
interamente la riga dell'opzione <i>GRUB_BACKGROUND</i> oppure escluderla
inserendo il carattere <i>#</i> all'inizio della stessa per farla diventare
un commento.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Salvate le modifiche
premendo la combinazioni di tasti <i>Ctrl-O</i> e quindi uscite dall'editor
con <i>Ctrl-X</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB di default
cerca la prima immagine utile presente in<i> /boot/grub</i>, per questo
motivo abbiamo rimosso l'opzione <i>GRUB_BACKGROUND</i>. Abbiate cura di
mettere una sola immagine in <i>/boot/grub</i>, altrimenti verrà utilizzata
la prima tra le tante.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora aggiornate GRUB
con il solito script</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<blockquote class="tr_bq">
<div style="line-height: 100%; margin-bottom: 0cm;">
> <b>update-grub</b></div>
</blockquote>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Durante l'update GRUB vi dovrebbe comunicare che ha trovato l'immagine</div>
<blockquote class="tr_bq">
<div style="line-height: 100%; margin-bottom: 0cm;">
Found background
image: splash.png</div>
</blockquote>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Riavviate il
sistema, il menù di GRUB adesso dovrebbe sfoggiare il nuovo look.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-83649240180586305052015-11-19T11:50:00.000+01:002015-11-19T11:50:11.916+01:00Come collegarsi alla rete Wi-Fi dal terminale
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }</style>
<br />
<span style="font-size: small;">Di
solito il computer si collega automaticamente alla rete Wi-Fi
senza bisogno del nostro intervento, altre volte invece bastano pochi
click per farlo. Può capitare però di trovarci di fronte al
terminale e non avere alcuna interfaccia grafica per collegare il
nostro computer alla rete Wi-Fi, per esempio quando l'installazione
dei driver grafici non è andata a buon fine.</span><br />
<span style="font-size: small;">In questa breve guida
vi mostrerò come collegarci dalla riga di comando.</span>
<br />
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Durante
la guida darò per scontato che abbiate effettuato il login come root
o che prima di procedere abbiate eseguito il comando <i>su</i> per
eseguire i comandi come super utente. Altrimenti potete sempre anteporre la parola <i>sudo</i> ad ogni comando.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Trovare la scheda Wi-Fi installata</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Prima
cosa da fare bisognerà trovare la scheda Wi-Fi installata sul nostro
computer, useremo il comando <i>iw</i></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
iw dev</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Produrrà
un output simile a questo</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">phy#0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Interface
<b>wlan0</b></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> ifindex
3</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> wdev
0x1</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> addr
9c:d2:1e:61:a6:86</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> type
managed</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> channel
6 (2437 MHz), width: 20 MHz, center1: 2437 Mhz</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Nel
mio caso ho una scheda di rete Wi-Fi chiamata <b>wlan0</b></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Visualizzare lo stato della scheda Wi-Fi</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Ora
possiamo controllare lo stato della scheda con il seguente comando</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
ip link show wlan0</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Otterremo
un risultato simile a questo</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">3:
wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode
DEFAULT group default qlen 1000</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">link/ether 9c:d2:1e:61:a6:86
brd ff:ff:ff:ff:ff:ff</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Come
potete intuire dalla parola <b>DOWN</b> lo stato della Wi-Fi è spenta.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Accendere la scheda di rete Wi-Fi</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Per
attivare la scheda Wi-Fi procediamo con</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
ip link set wlan0 up</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Controlliamo di nuovo lo stato</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
ip link show wlan0</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Questa
volta il risultato dovrebbe essere questo</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">3:
wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq
state UP mode DORMANT group default qlen 1000</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">link/ether 9c:d2:1e:61:a6:86
brd ff:ff:ff:ff:ff:ff</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Notate
come questa volta lo stato è <b>UP</b></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Controllare lo stato della connessione</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Ora
che la scheda Wi-Fi è attiva, controlliamo lo stato della
connessione</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
iw wlan0 link</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">il
risultato sarà</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Not
connected.</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Non siamo connessi.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Cercare le reti disponibili</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Ora
cerchiamo le reti Wi-Fi disponibili</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
iw wlan0 scan</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Otterremo
una lunga lista di informazioni per ogni rete trovata come questa</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">BSS
9c:d3:6d:b4:a4:10(on wlan0) -- associated</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> TSF:
914250503275 usec (10d, 13:57:30)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> freq:
2437</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> beacon
interval: 100 TUs</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> capability:
ESS Privacy ShortSlotTime (0x0411)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> signal:
-41.00 dBm</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> last
seen: 172 ms ago</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Information
elements from Probe Response frame:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> <b>SSID:
My_Network</b></span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Supported
rates: 1.0* 2.0* 5.5 11.0 18.0 24.0 36.0 54.0 </span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> DS
Parameter set: channel 6</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> ERP:
Barker_Preamble_Mode</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> ERP
D4.0: Barker_Preamble_Mode</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> RSN:
* Version: 1</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Group cipher: CCMP</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Pairwise ciphers: CCMP</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Authentication suites: PSK</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Extended
supported rates: 6.0 9.0 12.0 48.0 </span>
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> HT
capabilities:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Capabilities:
0x186c</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> HT20</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> SM
Power Save disabled</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> RX
HT20 SGI</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> RX
HT40 SGI</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> No
RX STBC</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Max
AMSDU length: 7935 bytes</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> DSSS/CCK
HT40</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Maximum
RX AMPDU length 65535 bytes (exponent: 0x003)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> Minimum
RX AMPDU time spacing: 8 usec (0x06)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> HT
RX MCS rate indexes supported: 0-7</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> HT
TX MCS rate indexes are undefined</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> HT
operation:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* primary channel: 6</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* secondary channel offset: no secondary</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* STA channel width: 20 MHz</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* RIFS: 1</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* HT protection: no</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* non-GF present: 1</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* OBSS non-GF present: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* dual beacon: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* dual CTS protection: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* STBC beacon: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* L-SIG TXOP Prot: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* PCO active: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* PCO phase: 0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> WPS:
* Version: 1.0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Wi-Fi Protected Setup State: 2 (Configured)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Selected Registrar: 0x0</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Response Type: 3 (AP)</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* UUID: 1620a1d7-a8d6-d819-4860-8a40e4e07abf</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Manufacturer: NETGEAR, Inc.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Model: WNR1000v3</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Model Number: WNR1000v3</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Serial Number: 83258</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Primary Device Type: 6-0050f204-1</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Device name: WNR1000v3</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* Config methods: Label, PBC</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> WMM:
* Parameter version 1</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* u-APSD</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* BE: CW 15-1023, AIFSN 3</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* BK: CW 15-1023, AIFSN 7</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* VI: CW 7-15, AIFSN 2, TXOP 3008 usec</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">
* VO: CW 3-7, AIFSN 2, TXOP 1504 usec</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Le
informazioni più importanti che ci occorrono sono il nome della
rete ed il protocollo di sicurezza. Il nome della rete è quello che
segue la parola <i>SSID</i> (Service Set Identifier), in questo caso è
<b>My_Network</b>. Il protocollo di sicurezza è invece RSN, meglio
conosciuto come WPA2.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Creare un file di configurazione WPA/WPA2</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Per
poterci collegare ad una rete Wi-Fi protetta da passphrase con
protocollo WPA/WPA2 avremo bisogno di preparare un file di
configurazione con questo comando:</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
</span>wpa_passphrase My_Network >> /etc/wpa_supplicant.conf</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Subito
dopo aver premuto invio dovremo digitare la passphrase per collegarci
alla rete, quindi verrà creato il file di configurazione in
<i>/etc/wpa_supplicant.conf</i>. Il file di configurazione così creato non
andrà comunque a sostituire le configurazioni già esistenti.</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
<span style="font-size: small;">Collegarsi alla rete Wi-Fi protetta da passphrase WPA/WPA2</span></h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">Ora
che abbiamo preparato tutto il necessario possiamo collegarci alla
rete con</span></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
</span>wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Controlliamo
di nuovo lo stato della connessione </div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;">>
iw wlan0 link</span></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"> </span>Questa volta ci dovrebbe
mostrare la connessione avvenuta.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Connected
to 9c:d3:6d:b4:a4:10 (on wlan0)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
SSID:
My_Network</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
freq:
2437</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
RX:
10476343 bytes (59172 packets)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
TX:
743393 bytes (5687 packets)</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
signal:
-49 dBm</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
tx
bitrate: 65.0 MBit/s MCS 6 short GI</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
bss
flags: short-slot-time</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
dtim
period: 0</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
beacon
int: 100</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
Ottenere un indirizzo IP dal DHCP </h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Possiamo
ottenere un indirizzo IP con il comando</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
>
dhclient wlan0</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
E
verificare l'indirizzo IP con</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
> ip
addr show wlan0</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Otterrete
qualcosa come questo</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
3:
wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq
state UP group default qlen 1000</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
link/ether 9c:d2:1e:61:a6:86 brd ff:ff:ff:ff:ff:ff</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<b>inet 10.0.0.5</b>/24 brd 10.0.0.255 scope global dynamic wlan0</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
valid_lft 82996sec preferred_lft 82996sec</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
inet6 fe80::9ed2:1eff:fe61:a686/64 scope link
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
valid_lft forever preferred_lft forever</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
L'indirizzo
IP è quello che segue la parola inet, in questo caso 10.0.0.5.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<h2 style="line-height: 100%; margin-bottom: 0cm; text-align: center;">
Testare la connessione</h2>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Per
finire possiamo fare un test della connessione con il buon vecchio
comando ping</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
>
ping <a href="http://www.google.com/">www.google.com</a></div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Se il risultato è simile al seguente siete connessi</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<blockquote class="tr_bq">
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
PING
www.google.com (74.125.232.146) 56(84) bytes of data.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
64
bytes from mil02s05-in-f18.1e100.net (74.125.232.146): icmp_seq=1
ttl=52 time=38.3 ms</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
64
bytes from mil02s05-in-f18.1e100.net (74.125.232.146): icmp_seq=2
ttl=52 time=37.9 ms</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
64
bytes from mil02s05-in-f18.1e100.net (74.125.232.146): icmp_seq=3
ttl=52 time=38.2 ms</div>
</blockquote>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Fermate
l'esecuzione di ping con la combinazione di tasti <i>Ctrl + c</i>.</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
Il
vostro sistema è online!</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div align="left" style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-10229196827483844862015-11-04T20:03:00.000+01:002015-11-04T20:03:33.526+01:00Personalizzare il menù di GRUB 2 (Fedora): sistema operativo di default, immagine di sfondo e colore del testo<br />
GRUB 2 è il bootloader di GNU, cioè quel programma che, all'avvio del computer, si occupa di caricare in memoria il kernel del sistema operativo.<br />
<br />
Dopo aver installato la nostra distribuzione GNU/Linux preferita, all'avvio del PC, verrà visualizzato il menù di GRUB 2, dove potremo scegliere, tra le altre opzioni, quale sistema operativo caricare.<br />
<br />
Vediamo quali modifiche possiamo apportare alla configurazione di GRUB 2 per adattarlo alle nostre necessità.<br />
<br />
<i>Questa guida è scritta in modo specifico per la distribuzione GNU/Linux Fedora. I concetti di base sono comunque validi anche su altre distribuzioni GNU/Linux.</i><br />
<br />
<h2 style="text-align: center;">
<u>Scelta del sistema operativo da avviare</u></h2>
<br />
Il comportamento di default di GRUB 2 è quello di attendere alcuni secondi la scelta dell'utente prima di avviare automaticamente il sistema operativo che ha installato GRUB 2 (in un PC con dual-boot Windows e GNU/Linux, quest'ultimo sarà avviato di default salvo scelta differente da parte dell'utente).<br />
<br />
<h3>
1) Cambiare il sistema operativo di default</h3>
<br />
Nel caso preferissimo avviare di default un altro sistema operativo basterà apportare la seguente modifica:<br />
<br />
Avviate il terminale e portatevi sulla directory <i>/etc/default </i>con il comando cd<br />
<br />
<blockquote class="tr_bq">
<b>> cd /etc/default</b></blockquote>
<br />
Ora andremo a modificare il file grub contenuto in questa cartella (in questa guida userò il text editor nano, ma se preferite potrete utilizzarne un altro a piacimento).<br />
<br />
<blockquote class="tr_bq">
<b>> sudo nano grub</b></blockquote>
<br />
Verrà visualizzato un file di testo come il seguente:<br />
<br />
<blockquote class="tr_bq">
GRUB_TIMEOUT=5<br />
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"<br />
GRUB_DEFAULT=0<br />
GRUB_DISABLE_SUBMENU=true<br />
GRUB_TERMINAL_OUTPUT="console"<br />
GRUB_CMDLINE_LINUX="rhgb quiet"<br />
GRUB_DISABLE_RECOVERY="true" </blockquote>
<br />
La righe che iniziano con il carattere # sono considerate commenti e quindi ignorate. Il sistema operativo di default è indicato dall'opzione GRUB_DEFAULT che di solito è impostato al valore 0, cioè il primo sistema indicato sulla lista di GRUB 2. Sostituendo 0 con un altro numero potremmo scegliere il sistema di default (1 per il secondo sistema della lista, 2 il terzo e così via).<br />
<br />
Ora salvate le modifiche ed uscite dal text editor (se state utilizzando nano salvate con la combinazione di tasti Ctrl-O, confermando il nome del file premendo Invio. Quindi uscite con Ctrl-X).<br />
<br />
Ora da terminale aggiornate la configurazione di GRUB2 con questo comando:<br />
<blockquote class="tr_bq">
<b>> sudo grub2-mkconfig -o /boot/grub2/grub.cfg</b></blockquote>
<br />
Ricordatevi che le sole modifiche al file grub non hanno alcun effetto sulla configurazione di GRUB2 se non eseguite il comando grub2-mkconfig. Ora potete riavviare e testare le modifiche apportate.<br />
<br />
<h3>
2) Avvio di default del sistema operativo utilizzato precedentemente</h3>
<br />
Questa opzione è quella che reputo più comoda, è particolarmente utile quando dobbiamo riavviare un sistema, come ad esempio a seguito di un aggiornamento del kernel.<br />
<br />
Andiamo ancora a modificare il file grub in <i>/etc/default</i>. Per attivare questa opzione dovremmo aggiungere una riga prima di GRUB_DEFAULT ed inserire quanto seguente:<br />
<br />
GRUB_SAVEDEFAULT=true<br />
<br />
Questa opzione attiva il salvataggio dell'ultima scelta fatta. Ora modifichiamo la riga sottostante per scegliere come sistema di default quello salvato.<br />
<br />
GRUB_DEFAULT=saved<br />
<br />
Come prima salviamo il file ed aggiorniamo GRUB 2 eseguendo il solito comando.<br />
<blockquote class="tr_bq">
<b>> sudo grub2-mkconfig -o /boot/grub2/grub.cfg</b></blockquote>
<br />
<h2 style="text-align: center;">
<u>Modificare l'aspetto del menu di GRUB 2</u></h2>
<br />
Una cosa comune alla maggior parte degli utenti GNU/Linux è la voglia di personalizzazione del proprio sistema, a partire dalla prima cosa che viene visualizzata dopo aver acceso il computer: il menu di GRUB 2.<br />
<h3>
1) Aggiungere un'immagine di sfondo al menu</h3>
<br />
Per avere un'immagine di sfondo basterà aggiungere questa opzione al solito file grub in <i>/etc/default</i><br />
<br />
GRUB_BACKGROUND="percorso del file immagine"<br />
<br />
GRUB 2 supporta l'uso di immagini in formato PNG, JPG/JPEG e TGA. Scegliete accuratamente un'immagine della giusta risoluzione e fate in modo che sia salvata in uno dei formati supportati.<br />
<br />
Ora la domanda è dove mettere l'immagine da utilizzare con GRUB 2?<br />
<br />
Io ho l'abitudine di metterla in <i>/usr/share/images/grub</i>. Andate in <i>/usr/share</i> con il comando<br />
<blockquote class="tr_bq">
<b>> cd /usr/share</b></blockquote>
<br />
Ora visualizzate il contenuto per controllare se c'è una directory chiamata <i>images</i>, se non c'è potrete crearla con il seguente comando<br />
<br />
<blockquote class="tr_bq">
<b>> sudo mkdir images</b></blockquote>
<br />
Ora andate all'interno della directory <i>images</i><br />
<br />
<blockquote class="tr_bq">
<b>> cd images</b></blockquote>
<br />
Create la directory <i>grub</i> al suo interno<br />
<blockquote class="tr_bq">
<b><br /></b>
<b>> sudo mkdir grub</b></blockquote>
<br />
Ora abbiamo una cartella dedicata a contenere le immagini destinate a GRUB 2. Copiate l'immagine che volete utilizzare con il comando cp. Per farlo andate nella directory dove avete l'immagine con il comando cd (per tornare alla propria home directory potete usare il comando cd senza indicare alcun percorso), quindi digitate<br />
<br />
<i>> sudo cp nome immagine /usr/share/images/grub/nome immagine</i><br />
<br />
Se per esempio la vostra immagine si chiama <i>splash.png</i> scriverete<br />
<br />
<blockquote class="tr_bq">
<b>> sudo cp splash.png /usr/share/images/grub/splash.png</b></blockquote>
<br />
Ora andiamo a modificare il solito file <i>grub</i> in <i>/etc/default</i> per indicare il percorso completo dell'immagine nell'opzione GRUB_BACKGROUND, se per esempio l'immagine si chiama <i>splash.png</i> scriverete quanto segue<br />
<br />
GRUB_BACKGROUND=”/usr/share/images/grub/splash.png”<br />
<br />
Salvate e uscite dal text editor, quindi ricordatevi di aggiornare GRUB 2 con il solito comando<br />
<br />
<blockquote class="tr_bq">
<b>> sudo grub2-mkconfig -o /boot/grub2/grub.cfg</b></blockquote>
<br />
Ora riavviate ed ammirate il nuovo look.<br />
<br />
<h3>
2) Cambiare i colori del testo del menu</h3>
<br />
Potrebbe essere necessario cambiare i colori del testo del menu di GRUB 2 per migliorarne la leggibilità dopo aver aggiunto un'immagine di sfondo, o semplicemente perché vogliamo personalizzare anche questi.<br />
<br />
Per cambiare i colori del testo dobbiamo modificare il file <i>41_custom</i> che si trova in <i>/etc/grub.d</i><br />
<br />
<blockquote class="tr_bq">
<b>> cd /etc/grub.d</b></blockquote>
<blockquote class="tr_bq">
<b>> sudo nano 41_custom</b></blockquote>
<br />
Verrà visualizzato un file di testo come il seguente:<br />
<br />
<blockquote class="tr_bq">
#!/bin/sh<br />
cat <<EOF<br />
if [ -f \${config_directory}/custom.cfg ]; then<br />
source \${config_directory}/custom.cfg<br />
elif [ -z "\${config_directory}" -a -f \$prefix/custom.cfg ]; then<br />
source \$prefix/custom.cfg;<br />
fi<br />
EOF </blockquote>
I colori che vogliamo modificare sono i seguenti:<br />
<ul>
<li><b>menu_color_highlight </b>= sono i colori del testo evidenziato e del suo sfondo</li>
<li><b>menu_color_normal</b> = sono i colori del testo non evidenziato e del suo sfondo</li>
</ul>
<br />
La sintassi della scelta del colore è la seguente:<br />
<br />
<i>menu_color=colore_testo/colore_sfondo</i><br />
<br />
E questi sono i nomi dei colori accettati da GRUB2:<br />
<br />
<ul>
<li> black</li>
<li> blue</li>
<li> brown</li>
<li> cyan</li>
<li> dark-gray</li>
<li> green</li>
<li> light-cyan</li>
<li> light-blue</li>
<li> light-green</li>
<li> light-gray</li>
<li> light-magenta</li>
<li> light-red</li>
<li> magenta</li>
<li> red</li>
<li> white</li>
<li> yellow</li>
</ul>
<br />
Ora aggiungiamo le istruzioni per la configurazione dei colori prima della riga EOF come nell'esempio di seguito:<br />
<br />
<br />
<blockquote class="tr_bq">
#!/bin/sh<br />
cat <<EOF<br />
if [ -f \${config_directory}/custom.cfg ]; then<br />
source \${config_directory}/custom.cfg<br />
elif [ -z "\${config_directory}" -a -f \$prefix/custom.cfg ]; then<br />
source \$prefix/custom.cfg;<br />
fi<br />
<b>set color_normal=white/black</b><br />
<b>set color_highlight=light-green/black</b><br />
EOF </blockquote>
<br />
Modificate a piacimento i colori, ma fate attenzione se modificate il colore di sfondo con un colore diverso da black. Infatti se il colore di sfondo è impostato come black, questo sarà trasparente e lascerà vedere l'immagine sottostante, se lo modificate con un altro colore allora non sarà trasparente e verrà visualizzata la riga del colore scelto.<br />
<br />
Al termine della modifica salvate il file e ricordate sempre di aggiornare la configurazione con il solito comando:<br />
<br />
<blockquote class="tr_bq">
<b>> sudo grub2-mkconfig -o /boot/grub2/grub.cfg</b></blockquote>
<br />
Riavviate e controllate che il look finale sia leggibile e di vostro gradimento.<br />
<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-16417280738317668222015-09-29T19:39:00.005+02:002015-11-04T19:11:17.226+01:00Personalizzare il menù di GRUB 2 (Debian/Ubuntu e derivate): sistema operativo di default, immagine di sfondo e colore del testo<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB 2 è il
bootloader di GNU, cioè quel programma che, all'avvio del computer,
si occupa di caricare in memoria il kernel del sistema operativo.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Dopo aver installato
la nostra distribuzione GNU/Linux preferita, all'avvio del PC, verrà
visualizzato il menù di GRUB 2, dove potremo scegliere, tra le altre
opzioni, quale sistema operativo caricare.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Vediamo quali
modifiche possiamo apportare alla configurazione di GRUB 2 per
adattarlo alle nostre necessità.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<i>Questa guida è scritta in modo specifico per distribuzioni GNU/Linux Debian e derivate come Ubuntu e Mint. I concetti di base sono comunque validi anche su altre distribuzioni GNU/Linux. </i></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf8zyFMVSk64fooiMEjcTuhyBteFppFWG85YCCHKhPs6nhcFhgYuI8ZO59SRNmGM-ziSGMcDtOH55Fy0k9LYYc7bCFSl4HdOCZSgZFkCnU4GOxbSZ3hZiP64ug2RRGoI_gJv1SnASxA8uc/s1600/grub_splash.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf8zyFMVSk64fooiMEjcTuhyBteFppFWG85YCCHKhPs6nhcFhgYuI8ZO59SRNmGM-ziSGMcDtOH55Fy0k9LYYc7bCFSl4HdOCZSgZFkCnU4GOxbSZ3hZiP64ug2RRGoI_gJv1SnASxA8uc/s400/grub_splash.png" width="400" /></a></div>
<div style="text-align: center;">
<br /></div>
<br /></div>
<div align="center" style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><u><b>Scelta
del sistema operativo da avviare</b></u></span></div>
<div style="font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Il comportamento di
default di GRUB 2 è quello di attendere alcuni secondi la scelta
dell'utente prima di avviare automaticamente il sistema operativo che
ha installato GRUB 2 (in un PC con dual-boot Windows e GNU/Linux,
quest'ultimo sarà avviato di default salvo scelta differente da
parte dell'utente).</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<i><u>1) Cambiare il
sistema operativo di default</u></i></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Nel caso
preferissimo avviare di default un altro sistema operativo basterà
apportare la seguente modifica:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Avviate il terminale
e portatevi sulla directory <i>/etc/default</i> con il comando <i>cd</i></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
> <b>cd /etc/default</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora andremo a
modificare il file <i>grub</i> contenuto in questa cartella (in questa guida
userò il text editor<i> nano</i>, ma se preferite potrete utilizzarne un
altro a piacimento).</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
> <b>sudo nano grub</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Verrà visualizzato
un file di testo come il seguente:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<blockquote class="tr_bq">
<div style="line-height: 100%; margin-bottom: 0cm;">
# If you change this
file, run 'update-grub' afterwards to update</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#
/boot/grub/grub.cfg.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# For full
documentation of the options in this file, see:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# info -f grub -n
'Simple configuration'</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_DEFAULT=0</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_HIDDEN_TIMEOUT=0</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_HIDDEN_TIMEOUT_QUIET=true</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_TIMEOUT=10</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_DISTRIBUTOR=`lsb_release
-i -s 2> /dev/null || echo Debian`</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_CMDLINE_LINUX_DEFAULT="quiet
splash"</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_CMDLINE_LINUX=""</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# Uncomment to
enable BadRAM filtering, modify to suit your needs</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# This works with
Linux (no patch required) and with any kernel that obtains</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# the memory map
information from GRUB (GNU Mach, kernel of FreeBSD ...)</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# Uncomment to
disable graphical terminal (grub-pc only)</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_TERMINAL=console</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# The resolution
used on graphical terminal</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# note that you can
use only modes which your graphic card supports via VBE</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# you can see them
in real GRUB with the command `vbeinfo'</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_GFXMODE=640x480</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# Uncomment if you
don't want GRUB to pass "root=UUID=xxx" parameter to Linux</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_DISABLE_LINUX_UUID=true</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# Uncomment to
disable generation of recovery mode menu entries</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_DISABLE_RECOVERY="true"</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
# Uncomment to get a
beep at grub start</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
#GRUB_INIT_TUNE="480
440 1"</div>
</blockquote>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
La righe che
iniziano con il carattere # sono considerate commenti e quindi
ignorate. Il sistema operativo di default è indicato dall'opzione
GRUB_DEFAULT che di solito è impostato al valore 0, cioè il primo
sistema indicato sulla lista di GRUB 2. Sostituendo 0 con un altro
numero potremmo scegliere il sistema di default (0 il primo nella
lista, 1 il secondo, 2 il terzo e così via).</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora salvate le
modifiche ed uscite dal text editor (se state utilizzando <i>nano</i>
salvate con la combinazione di tasti Ctrl-O, confermando il nome del
file premendo Invio. Quindi uscite con Ctrl-X).</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora da terminale
aggiornate la configurazione di GRUB2 eseguendo il seguente script:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
> <b>sudo
update-grub</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ricordatevi che le
sole modifiche al file <i>grub</i> non hanno alcun effetto sulla
configurazione di GRUB2 se non eseguite lo script di aggiornamento.
Ora potete riavviare e testare le modifiche apportate.
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm;">
<i><u>2)
Avvio di default del sistema operativo utilizzato precedentemente</u></i></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
Questa opzione è quella che reputo più comoda, è particolarmente
utile quando dobbiamo riavviare un sistema, come ad esempio a seguito
di un aggiornamento del kernel.</div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Andiamo ancora a
modificare il file <i>grub</i> in <i>/etc/default</i>. Per attivare questa opzione
dovremmo aggiungere una riga prima di GRUB_DEFAULT ed inserire quanto
seguente:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
GRUB_SAVEDEFAULT=true</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Questa opzione
attiva il salvataggio dell'ultima scelta fatta. Ora modifichiamo la
riga sottostante per scegliere come sistema di default quello
salvato.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
GRUB_DEFAULT=saved</div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
Come prima salviamo il file ed aggiorniamo GRUB 2 eseguendo il solito
script.</div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
> <b>sudo update-grub</b></div>
<div style="font-style: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="center" style="font-style: normal; line-height: 100%; margin-bottom: 0cm;">
<span style="font-size: small;"><u><b>Modificare l'aspetto del
menu di GRUB 2</b></u></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Una cosa comune alla maggior
parte degli utenti GNU/Linux è la voglia di personalizzazione del
proprio sistema, a partire dalla prima cosa che viene visualizzata
dopo aver acceso il computer: il menu di GRUB 2.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<i><span style="font-size: small;"><u>1) Aggiungere un'immagine
di sfondo al menu</u></span></i></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Per avere un'immagine di
sfondo basterà aggiungere questa opzione al solito file <i>grub</i> in
<i>/etc/default</i></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">GRUB_BACKGROUND="<i>percorso
del file immagine</i>"</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">GRUB 2 supporta l'uso di
immagini in formato PNG, JPG/JPEG e TGA. Scegliete accuratamente
un'immagine della giusta risoluzione e fate in modo che sia salvata
in uno dei formati supportati.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora la domanda è dove mettere
l'immagine da utilizzare con GRUB 2?</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Io ho l'abitudine di metterla
in <i>/usr/share/images/grub</i>. Andate in <i>/usr/share</i> con il comando</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>cd /usr/share</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora visualizzate il contenuto
per controllare se c'è una directory chimata <i>images</i></span><span style="font-size: small;">, se non c'è potrete crearla
con il seguente comando</span>
</div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>sudo mkdir images</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora andate all'interno della
directory <i>images</i></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>cd images</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Create la directory <i>grub</i> al
suo interno</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>sudo mkdir grub</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora abbiamo una cartella
dedicata a contenere le immagini destinate a GRUB 2. Copiate
l'immagine che volete utilizzare con il comando <i>cp</i>. Per farlo andate
nella directory dove avete l'immagine con il comando <i>cd</i> (per tornare
alla propria home directory potete usare il comando <i>cd</i> senza indicare
alcun percorso), quindi digitate</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>sudo cp nome immagine
/usr/share/images/grub/</b><i>nome immagine</i></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Se per esempio la vostra
immagine si chiama <i>splash.png</i> scriverete</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>sudo cp splash.png
/usr/share/images/grub/splash.png</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora andiamo a modificare il
solito file <i>grub</i> in<i> /etc/default</i> per indicare il percorso completo
dell'immagine nell'opzione GRUB_BACKGROUND, se per esempio l'immagine
si chiama <i>splash.png</i> scriverete quanto segue</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">GRUB_BACKGROUND=”/usr/share/images/grub/splash.png”</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Salvate e uscite dal text
editor, quindi ricordatevi di aggiornare GRUB 2 con il solito script</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>sudo update-grub</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora riavviate ed ammirate il
nuovo look.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm;">
<i><span style="font-size: small;"><u>2) Cambiare i colori del
testo del menu</u></span></i></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Potrebbe essere necessario
cambiare i colori del testo del menu di GRUB 2 per migliorarne la
leggibilità dopo aver aggiunto un'immagine di sfondo, o
semplicemente perché vogliamo personalizzare anche questi.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Per cambiare i colori del
testo dobbiamo modificare il file <i>05_debian_theme</i> che si trova in
<i>/etc/grub.d</i></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>cd /etc/grub.d</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">> <b>sudo nano 05_debian_theme</b></span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Questo file di testo è molto
lungo ed apparentemente abbastanza complesso. Dovete scorrere il file
lentamente e trovare le seguenti righe:</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<blockquote class="tr_bq">
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">if [ -z "${2}" ] &&
[ -z "${3}" ]; then</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;"> echo " true"</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">fi</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
</blockquote>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">I colori che vogliamo
modificare sono i seguenti:</span></div>
<ul>
<li>
<span style="font-size: small;">- <b>menu_color_highlight</b> = sono
i colori del testo evidenziato e del suo sfondo all'interno del box
contenente il menù</span></li>
<li>
<span style="font-size: small;">- <b>menu_color_normal</b> = sono i
colori del testo non evidenziato e del suo sfondo all'interno del box
contenente il menù</span></li>
<li>
<span style="font-size: small;">- <b>menu_color</b> = sono i colori
del testo e del suo sfondo al di fuori del box contenente il menù</span></li>
</ul>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">La sintassi della scelta del
colore è la seguente:</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<blockquote class="tr_bq">
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<i><span style="font-size: small;">menu_color=colore_testo/colore_sfondo</span></i></div>
</blockquote>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">E questi sono i colori
accettati da GRUB2:</span></div>
<ul>
<li>
<span style="font-size: small;">black</span></li>
<li>
<span style="font-size: small;">blue</span></li>
<li>
<span style="font-size: small;">brown</span></li>
<li>
<span style="font-size: small;">cyan</span></li>
<li>
<span style="font-size: small;">dark-gray</span></li>
<li>
<span style="font-size: small;">green</span></li>
<li>
<span style="font-size: small;">light-cyan</span></li>
<li>
<span style="font-size: small;">light-blue</span></li>
<li>
<span style="font-size: small;">light-green</span></li>
<li>
<span style="font-size: small;">light-gray</span></li>
<li>
<span style="font-size: small;">light-magenta</span></li>
<li>
<span style="font-size: small;">light-red</span></li>
<li>
<span style="font-size: small;">magenta</span></li>
<li>
<span style="font-size: small;">red</span></li>
<li>
<span style="font-size: small;">white</span></li>
<li>
<span style="font-size: small;">yellow</span></li>
</ul>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Ora modifichiamo le righe
trovate precedentemente come segue:</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<blockquote class="tr_bq">
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">if [ -z "${2}" ] &&
[ -z "${3}" ]; then</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;"> #echo " true"</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">echo " set
color_highlight=red/green"</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;"> echo " set
color_normal=light-cyan/black"</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">fi</span></div>
</blockquote>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Abbiamo aggiunto il carattere
<i>#</i> davanti alla riga<i> </i><u>echo “ true”</u> per farla diventare un commento
ed abbiamo aggiunto due righe con la scelta dei colori del testo
evidenziato e non, all'interno del box contenente il menù.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Modificate a piacimento i
colori, ma fate attenzione a non modificare il colore di sfondo di
<u>color_normal</u>. Infatti se il colore di sfondo è impostato come <i>black</i>,
questo sarà trasparente e lascerà vedere l'immagine sottostante, se
lo modificate con un altro colore allora non sarà trasparente ed il
risultato finale non sarà gradevole.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Al termine della modifica
salvate il file e ricordate sempre di aggiornare la configurazione
con lo script <i>update-grub</i>.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<span style="font-size: small;">Riavviate e controllate che il
look finale sia leggibile e di vostro gradimento.</span></div>
<div align="left" style="font-style: normal; font-weight: normal; line-height: 100%; margin-bottom: 0cm; text-decoration: none;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-14461975085010622742015-06-09T21:10:00.000+02:002015-06-09T21:10:09.649+02:00Collegare uno scanner di rete al Raspberry Pi utilizzando il server Samba
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
Se avete una
stampante multifunzione di rete che supporta il protocollo SMB (<a href="http://it.wikipedia.org/wiki/Server_Message_Block">Server Message Block</a>) e vi
permette di inviare i file dei documenti acquisiti con lo scanner su
un disco condiviso in rete, allora potrete facilmente configurarla per
utilizzare il server Samba installato sul vostro Raspberry Pi.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Se non avete ancora
installato e configurato il server Samba sul vostro Raspberry Pi
potete farlo ora seguendo <a href="http://maxtrixnix.blogspot.it/2013/06/raspberry-pi-come-installare-e.html">la mia guida</a>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
In questo post
utilizzo la stampante Epson Workforce AL-MX200DNF, ma potrete
utilizzare qualsiasi altra marca e modello di stampante multifunzione
che abbia il supporto al protocollo SMB.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Dopo aver collegato
la stampante al router tramite cavo LAN (o in Wi-Fi se la stampante ve lo permette) ed averla accesa, dal browser
di un PC collegato alla stessa rete, digitate l'indirizzo IP della
stampante per accedere alla pagina di configurazione della stessa.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Se state
configurando una stampante Epson, vi comparirà la pagina EpsonNet
Config come questa:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii5k9RykIJ6AbABdyCqbxHhYyqSu_papYarlrG1GSLdDbLPeRCwxyNp78xY3bQGMABi77xIVG8tQUVwvp4LApsXtAgA2UryI4vyeK4ukBlnL7bGU-3xtBIsXihr01rmd6G05Ly3wtCfbOY/s1600/EpsonNetConfig_home.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii5k9RykIJ6AbABdyCqbxHhYyqSu_papYarlrG1GSLdDbLPeRCwxyNp78xY3bQGMABi77xIVG8tQUVwvp4LApsXtAgA2UryI4vyeK4ukBlnL7bGU-3xtBIsXihr01rmd6G05Ly3wtCfbOY/s400/EpsonNetConfig_home.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pagina di configurazione Epson visualizzata sul browser </td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora selezionate la
linguetta denominata <i>Rubrica Indirizzi</i> e quindi sulla sinistra, sotto
<i>Scansione di rete</i>, cliccate su <i>Rubrica indirizzi computer/server</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEI0w8xM3hCRe8fSv3W9MFE3jb0KwHPc2IhWLoIRPd8tTUjp03bDuDnfDdW_agm1KYZoWAZKV9Qk6CyrcU3GURAERYIn9zqD6g1znhYh-WPhC46PCkuAl1zZV6zW6uztlevXL1tfIhgIsF/s1600/EpsonNetConfig_rubrica.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEI0w8xM3hCRe8fSv3W9MFE3jb0KwHPc2IhWLoIRPd8tTUjp03bDuDnfDdW_agm1KYZoWAZKV9Qk6CyrcU3GURAERYIn9zqD6g1znhYh-WPhC46PCkuAl1zZV6zW6uztlevXL1tfIhgIsF/s400/EpsonNetConfig_rubrica.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pagina Rubrica Indirizzi computer/server</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Vi comparirà una
lista di indirizzi vuoti, cliccate il pulsante aggiungi su uno di
questi per accedere alla pagina di configurazione del computer
collegato.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh070JkixHgPUnQOIrASxcKdSto4e3d3AyxeLPJaoqv9k4uN1Onm4EETO3EQbhmPIz-kG6Kk0w16GRsdK3fQ5ZAvyC3nQ0y3ofET8Fs4uKOr2lWSRkCehG8od5XfmKuGfY9a2rQw3UD6kqX/s1600/EpsonNetConfig_config.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh070JkixHgPUnQOIrASxcKdSto4e3d3AyxeLPJaoqv9k4uN1Onm4EETO3EQbhmPIz-kG6Kk0w16GRsdK3fQ5ZAvyC3nQ0y3ofET8Fs4uKOr2lWSRkCehG8od5XfmKuGfY9a2rQw3UD6kqX/s400/EpsonNetConfig_config.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pagina di configurazione del computer collegato</td></tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora inseriamo i dati richiesti:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Nome (visualizzato
sulla stampante)</i></u>: potete scrivere <b>Raspberry Pi</b> o qualsiasi altro nome
vi ricordi il vostro disco condiviso sulla rete.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Tipo di rete</i></u>:
selezionate <b>Computer SMB</b> o qualsiasi altra dicitura che indichi il
protocollo SMB.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<i><u>Indirizzo host
(indirizzo IP)</u></i>: inserite l'indirizzo IP della stampante.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<i><u>N. porta</u></i>: <b>139</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Nome accesso (se
richiesto dall'host)</i></u>: inserite il nome utente che avete utilizzato
per configurare Samba (molto probabilmente avete utilizzato <b>pi</b> se non
avete creato un nuovo utente).</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Password</i></u>: inserite
la password che avete impostato per accedere al server Samba.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Conferma password</i></u>:
ripetete la stessa password.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Nome directory
condivisa</i></u>: inserite il nome che avete assegnato alla condivisione
Samba, se avete seguito la mia guida inserite <b>usb</b>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<u><i>Percorso
sottodirectory (facoltativo)</i></u>: se volete che i file vengano inviati in
una cartella in particolare all'interno del disco condiviso, inserite
qui il percorso. Ad esempio io ho creato la cartella <i>scanner</i> ed ho
quindi inserito il percorso <b>/scanner</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Cliccate su <i>applica</i>
ed avete finito.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ora potete provare
ad effettuare una scansione: inserite il foglio da acquisire,
selezionate la funzione scanner sulla stampante, quindi <i>scansione in rete</i>.
Selezionate <i>scansione su...</i> e quindi <i>Computer (rete)</i>. Vi comparirà la
lista della rubrica indirizzi e vedrete il vostro Raspberry Pi con il nome che gli avete assegnato.
Premete il tasto <i>ok</i>, configurate gli altri parametri della scansione
se necessario e quindi premete il tasto <i>Start</i>.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Quando lo scanner
avrà terminato l'acquisizione, potrete accedere al disco condiviso
in rete con il vostro PC e troverete il file della scansione
effettuata nella cartella scelta.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-46813069867870180182014-09-04T12:23:00.002+02:002014-09-04T12:23:57.913+02:00aMule-daemon - non funziona dopo un aggiornamento di sistema, vediamo come risolvere<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr7Ok3j_ywAccFE1YybZM7XqzvMlHjL4jvg5o0XM06Amew8eODztTR6WFr4Q9HAa3zNqcfMFpXv84epuKlpR0nTkA4PZVnATlvskUPdaaSoXS-qaoxDDE3pNZXsqQaagIH5nFPyDrRQehQ/s1600/amule.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr7Ok3j_ywAccFE1YybZM7XqzvMlHjL4jvg5o0XM06Amew8eODztTR6WFr4Q9HAa3zNqcfMFpXv84epuKlpR0nTkA4PZVnATlvskUPdaaSoXS-qaoxDDE3pNZXsqQaagIH5nFPyDrRQehQ/s1600/amule.png" height="320" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
E' buona abitudine aggiornare regolarmente il sistema operativo, ed è quello che faccio quasi quotidianamente anche sul mio Raspberry Pi con i classici comandi:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
> sudo apt-get update</div>
<div class="separator" style="clear: both; text-align: left;">
> sudo apt-get upgrade</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Mi è capitato recentemente di notare, al termine dell'aggiornamento, che x pacchetti erano stati aggiornati e 41 pacchetti non erano stati aggiornati. Ho proceduto allora ad aggiornare tutti i pacchetti con il comando</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
> sudo apt-get dist-upgrade</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Al termine dell'aggiornamento completato senza messaggi d'errore ho notato però che amule-daemon non funzionava più e dava questo messaggio d'errore:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>amule: error while loading shared libraries: libbfd-2.22-system.so: cannot open shared object file: No such file or directory</b></div>
<br />
Ho quindi cercato la libreria <b>libbfd</b> con il comando:<br />
<br />
> sudo apt-cache search libbfd<br />
<br />
Ho così scoperto che il problema risiede nel pacchetto <b>binutils</b>, che risulta regolarmente installato, ma è stato aggiornato dalla versione 2.22-8 alla 2.24.51.<br />
Sembra che la nuova versione di questo pacchetto sia incompatibile con l'attuale versione di amule-daemon, durante un tentativo di compilazione del pacchetto infatti, ho ricevuto un avviso che mi segnalava l'assenza o il non riconoscimento del file header binutils.h.<br />
<br />
La soluzione a questo problema quindi è il downgrade del pacchetto binutils, cioè sostituire la versione 2.24.51 con la vecchia 2.22-8, con questo comando:<br />
<br />
> sudo apt-get install binutils=2.22-8<br />
<br />
Questo comando genererà il seguente output:<br />
<br />
Reading package lists... Done<br />
Building dependency tree <br />
Reading state information... Done<br />
Suggested packages:<br />
binutils-doc<br />
The following packages will be REMOVED:<br />
binutils-dev<br />
The following packages will be DOWNGRADED:<br />
binutils<br />
0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.<br />
Need to get 0 B/4,521 kB of archives.<br />
After this operation, 12.4 MB disk space will be freed.<br />
Do you want to continue [Y/n]? y<br />
(Reading database ... 74365 files and directories currently installed.)<br />
Removing binutils-dev ...<br />
dpkg: warning: downgrading binutils from 2.24.51.20140425-1~rpi1rpi2 to 2.22-8<br />
(Reading database ... 74354 files and directories currently installed.)<br />
Preparing to replace binutils 2.24.51.20140425-1~rpi1rpi2 (using .../binutils_2.22-8_armhf.deb) ...<br />
Unpacking replacement binutils ...<br />
Processing triggers for man-db ...<br />
Setting up binutils (2.22-8) ...<br />
<br />
Ora potete lanciare amule-daemon in background con il comando:<br />
<br />
> amuled -f<br />
<br />
Ora amule-daemon funziona regolarmente. In questo post ho parlato in particolare del Raspberry Pi, ma è comunque valido per qualunque sistema che utilizzi Debian o derivati.<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com1tag:blogger.com,1999:blog-6135547631044733480.post-28232319435504552612014-05-02T15:35:00.000+02:002014-05-02T15:35:32.976+02:00LiberAcus 2.0 - la nuova versione del programma di gestione per sartorieHo appena rilasciato la versione 2.0 di LiberAcus, il programma di gestione per sartorie.<br />
Da poco più di un anno porto avanti questo progetto, è un software libero rilasciato con licenza GPL versione 3, l'ho sviluppato in C++ ed utilizza le librerie GTK 3, gira su qualsiasi sistema GNU/Linux.<br />
<br />
Le novità introdotte sono molte, tante le novità strutturali interne del programma ed altrettante le nuove funzionalità a disposizione dell'utente finale.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR0b_V495y3k4RJct-i6IWebF1fDckK1TqvtpF4MfAYeD1_KDNiRGTSbT1oyXhLkAg3TcbuWtxXx1x2_KwLUZUtqGcQx4USvhG0mNSvLJakipRdEhzOuQeUQnFIbnqav8ESoE8jC-tp-qF/s1600/LiberAcus_about.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR0b_V495y3k4RJct-i6IWebF1fDckK1TqvtpF4MfAYeD1_KDNiRGTSbT1oyXhLkAg3TcbuWtxXx1x2_KwLUZUtqGcQx4USvhG0mNSvLJakipRdEhzOuQeUQnFIbnqav8ESoE8jC-tp-qF/s1600/LiberAcus_about.png" height="320" width="269" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
La novità di rilievo riguarda la gestione delle prestazioni nella ricevuta e la stampa delle etichette, ho introdotto il concetto di capo di vestiario sul quale si possono eseguire diverse prestazioni. Come potete vedere nell'esempio qui sotto, sulla gonna verranno effettuate due prestazioni: la sostituzione della chiusura lampo e il restringimento del punto vita. Questa ricevuta genererà la stampa di due etichette, una per la camicia ed una per la gonna. La precedente versione del programma invece avrebbe stampato un'etichetta per ogni prestazione, per un totale di tre etichette da applicare su due soli capi.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuj80MfYSxcBkHcBIKZDDZI258MjT7W3P0PcPYqHIblNOqY9pfwWN7HrZErqSfbggGamG2uqLT6_qbdtJlw8O8BTqJl0XcDNooQ2SYdt4viDp7TNNgo9AqH4QbVYc7AS4UH9a4MmEGu8rZ/s1600/LiberAcus_ricevuta.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuj80MfYSxcBkHcBIKZDDZI258MjT7W3P0PcPYqHIblNOqY9pfwWN7HrZErqSfbggGamG2uqLT6_qbdtJlw8O8BTqJl0XcDNooQ2SYdt4viDp7TNNgo9AqH4QbVYc7AS4UH9a4MmEGu8rZ/s1600/LiberAcus_ricevuta.png" height="320" width="246" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">la finestra per l'inserimento di una nuova ricevuta</td></tr>
</tbody></table>
<div style="text-align: left;">
Sotto potete vedere un esempio di anteprima di stampa di un'etichetta che verrà spillata sul capo di vestiario come promemoria.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpDFRUMvycav2twBzZE8JnrjufRGzX07JA69HTwkqEo8yper2c-YeRl2PPvr20j1nUXyaioz1EBeiEGvsSYdEvQmFRni8DtAcy6SB2s_Kf27_Jo0ww_Uvax213CQUDFZuBNRGgz5dXLs-X/s1600/LiberAcus_etichetta.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpDFRUMvycav2twBzZE8JnrjufRGzX07JA69HTwkqEo8yper2c-YeRl2PPvr20j1nUXyaioz1EBeiEGvsSYdEvQmFRni8DtAcy6SB2s_Kf27_Jo0ww_Uvax213CQUDFZuBNRGgz5dXLs-X/s1600/LiberAcus_etichetta.png" height="320" width="301" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
Un'altra novità visibile dall'utente è il nuovo pannello delle preferenze dal quale è possibile personalizzare vari aspetti del programma.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO0ZEZkrkdGewOdUCYfYlAcTwXk86rWbtGOrw1yPdBD_fZRfF0tvp7JMHnJJbIAI5MuFxsYXF-PDRCs8i393amiEL6og9HwE-95k7UpfeMLgk1cQlEc4JzQd-K_rIh_KD8mcuv_FeU7nTZ/s1600/LiberAcus_preferenze.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO0ZEZkrkdGewOdUCYfYlAcTwXk86rWbtGOrw1yPdBD_fZRfF0tvp7JMHnJJbIAI5MuFxsYXF-PDRCs8i393amiEL6og9HwE-95k7UpfeMLgk1cQlEc4JzQd-K_rIh_KD8mcuv_FeU7nTZ/s1600/LiberAcus_preferenze.png" height="320" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: left;">
Il resto delle novità interne riguarda la correzione di bug ed una gestione dati diversa che dovrebbe garantire prestazioni migliori in presenza di grandi quantità di dati.</div>
<div style="text-align: left;">
Per tutti coloro interessati allo sviluppo di questo programma potete contattarmi e raggiungere il <a href="https://code.google.com/p/liberacus/">sito del progetto</a>.</div>
<div style="text-align: left;">
Se invece siete interessati all'utilizzo di questo programma per la vostra attività, siete liberi di scaricarlo ed utilizzarlo a vostro piacimento.</div>
<div style="text-align: left;">
Potete scaricare direttamente la tarball del programma da questo link:</div>
<div style="text-align: left;">
https://drive.google.com/file/d/0B6BUiE6is8MyQWlLeEZwMmxJLWM/edit?usp=sharing</div>
<br />
Una volta scaricato l'archivio, dal Terminale, andate nella posizione in cui si trova il file e decomprimetelo con<br />
<br />
unzip liberacus-2.0.tar.gz<br />
<br />
Ora entrate nella directory liberacus-2.0 con il comando<br />
<br />
cd liberacus-2.0<br />
<br />
Quindi potete procedere alla compilazione<br />
<br />
./configure<br />
<br />
make<br />
<br />
sudo make install<br />
<br />
Ora potete avviare l'applicazione da Terminale digitando<br />
<br />
liberacus<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-88039014814998218822014-03-07T12:15:00.005+01:002014-03-07T12:15:39.387+01:00Raspberry Pi: come ottenere la risoluzione ottimale per il vostro monitor o televisore<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;">Nella
guida precedente (<a href="http://maxtrixnix.blogspot.it/2014/02/raspberry-pi-come-risolvere-i-problemi.html">leggi qui</a>) abbiamo visto come risolvere i problemi con il
collegamento HDMI al televisore o al monitor del Raspberry Pi, in
questo post vediamo invece come ottenere la risoluzione ottimale per
il vostro schermo.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;">Spesso
infatti la risoluzione scelta dal Raspberry Pi con i valori di
default è la classica VGA 640x480, decisamente bassa!</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;">il
file di riferimento è sempre config.txt che troviamo in /boot, ci
sono due opzioni che regolano la modalità video e la risoluzione,
sono <i>hdmi_group</i><span style="font-style: normal;"> e </span><i>hdmi_mode</i><span style="font-style: normal;">.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><i>hdmi_group</i><span style="font-style: normal;">
definisce il tipo di HDMI del display collegato, i valori possibili
sono:</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">0
= valore di default</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">1
= CEA</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">2
= DMT</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Il
valore di default sceglierà il tipo in base alle informazioni
ottenute dall'EDID (Extended Display Identification Data), che è una
struttura di dati forniti dal display, in pratica sono le
informazioni che utilizzano i computer per conoscere che tipo di
monitor è collegato e quali risoluzioni sono supportate.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><i>hdmi_mode</i><span style="font-style: normal;">
imposta la modalità video e la risoluzione, c'è una lunga lista di
valori possibili che evito di riportare qui, ma che potete vedere su
questo <a href="http://elinux.org/RPiconfig">sito</a>.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Ora
che conosciamo un minimo di teoria, passiamo alla pratica: come
faccio a sapere quale sia la risoluzione ottimale del mio monitor o
televisore?</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Aprite
il file di configurazione per modificarlo da terminale con</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">sudo
nano /boot/config.txt</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Prima
cosa da fare è abilitare le due opzioni </span><i>hdmi_group</i><span style="font-style: normal;">
e </span><i>hdmi_mode</i><span style="font-style: normal;">
cancellando il carattere '#' all'inizio delle righe ed impostiamo
entrambi i valori a 1, così da ottenere una risoluzione standard VGA
(640x480).</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Salvate
le modifiche premendo i tasti Ctrl + o, premete il tasto Invio per
confermare il nome del file, quindi uscite dall'editor con Ctrl + x.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Ora
riavviate il Raspberry Pi con</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">sudo
reboot</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Dopo
il login digitate questo comando per ottenere le informazioni dal
vostro monitor/TV</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
/opt/vc/bin/tvservice -d edid.dat<br />
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Avete
così ottenuto l'EDID, ora andiamo a leggere le informazioni
contenute con il seguente comando</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">/opt/vc/bin/edidparser
edid.dat</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Verranno
visualizzate sul terminale molte informazioni, dal costruttore del
display alla lista di tutte le risoluzioni supportate. Sarà qualcosa
di simile a quello che ho ottenuto io:</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br />
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Enabling
fuzzy format match...
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Parsing
edid.dat...
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
version 1.3, 1 extensions, screen size 16x9 cm
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
features - videodef 0x80 !standby !suspend !active off; colour
encoding:RGB444|YCbCr422; sRGB is not default colourspace; preferred
format is native; does not support GTF
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found monitor range descriptor tag 0xfd
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
monitor range offsets: V min=0, V max=0, H min=0, H max=0
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
monitor range: vertical is 49-61 Hz, horizontal is 15-46 kHz, max
pixel clock is 80 MHz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
monitor range does not support GTF
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found monitor name descriptor tag 0xfc
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
monitor name is SAMSUNG
</span></span></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<span style="font-size: small;"><u><b><span style="font-style: normal;">HDMI:EDID
found preferred CEA detail timing format: 1280x720p @ 60 Hz (4)
</span></b></u></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA detail timing format: 1280x720p @ 50 Hz (19)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
established timing I/II bytes are 20 00 00
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found DMT format: code 4, 640x480p @ 60 Hz in established timing
I/II
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
standard timings block x 8: 0x0101 0101 0101 0101 0101 0101 0101 0101
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
parsing v3 CEA extension 0
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
monitor support - underscan IT formats:no, basic audio:yes,
yuv444:yes, yuv422:yes, #native DTD:1
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA detail timing format: 1920x1080i @ 60 Hz (5)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA detail timing format: 1920x1080i @ 50 Hz (20)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA detail timing format: 720x480p @ 60 Hz (2)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA detail timing format: 720x576p @ 50 Hz (17)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA format: code 4, 1280x720p @ 60Hz (native)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA format: code 19, 1280x720p @ 50Hz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA format: code 5, 1920x1080i @ 60Hz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA format: code 20, 1920x1080i @ 50Hz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA format: code 3, 720x480p @ 60Hz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found CEA format: code 18, 720x576p @ 50Hz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found audio format 2 channels PCM, sample rate: 32|44|48 kHz, sample
size: 16|20|24 bits
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
found HDMI VSDB length 6
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
HDMI VSDB has physical address 1.0.0.0
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
HDMI VSDB supports AI:yes, dual link DVI:no
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
HDMI VSDB deep colour support - 48-bit:no 36-bit:no 30-bit:no
DC_yuv444:no
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
HDMI VSDB has no latency information
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
adding mandatory support for CEA (1) 640x480p @ 60Hz
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
filtering formats with pixel clock > 162 MHz or h. blanking >
1023
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
best score mode initialised to CEA (1) 640x480p @ 60 Hz with pixel
clock 25 MHz (score 0)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
best score mode is now CEA (1) 640x480p @ 60 Hz with pixel clock 25
MHz (score 61864)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
best score mode is now CEA (2) 720x480p @ 60 Hz with pixel clock 27
MHz (score 3066472)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
CEA mode (3) 720x480p @ 60 Hz with pixel clock 27 MHz has a score of
66472
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
best score mode is now CEA (4) 1280x720p @ 60 Hz with pixel clock 74
MHz (score 5190888)
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
DMT mode (4) 640x480p @ 60 Hz with pixel clock 25 MHz has a score of
18432
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
CEA mode (5) 1920x1080i @ 60 Hz with pixel clock 74 MHz has a score
of 4273832
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
CEA mode (17) 720x576p @ 50 Hz with pixel clock 27 MHz has a score of
2566472
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
CEA mode (18) 720x576p @ 50 Hz with pixel clock 27 MHz has a score of
66472
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
CEA mode (19) 1280x720p @ 50 Hz with pixel clock 74 MHz has a score
of 4617160
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
CEA mode (20) 1920x1080i @ 50 Hz with pixel clock 74 MHz has a score
of 3732360
</span></span></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<span style="font-size: small;"><u><b><span style="font-style: normal;">HDMI:EDID
preferred mode remained as CEA (4) 1280x720p @ 60 Hz with pixel clock
74 MHz
</span></b></u></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">HDMI:EDID
has HDMI support and audio support
</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">edid_parser
exited with code 0</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br />
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Ho
evidenziato in grassetto e sottolineato due righe in particolare,
perché sono quelle che ci dicono qual'è la modalità video
preferita.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Nel
mio caso, come potete vedere dall'ultima riga evidenziata qui sopra, la
risoluzione preferita è CEA (4), corrispondente a 1280x720p @ 60 Hz.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">CEA
è il tipo di HDMI, quindi imposterò </span><i>hdmi_group</i><span style="font-style: normal;">=1,
il numero tra parentesi corrisponde invece al valore da inserire per
impostare la modalità video, quindi nel mio caso </span><i>hdmi_mode</i><span style="font-style: normal;">=4.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Una
volta a conoscenza dei valori ottimali per il vostro monitor/TV,
andate a modificare di nuovo il file di configurazione con</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">sudo
nano /boot/config.txt</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<span style="font-size: small; font-weight: normal;"><span style="font-style: normal;">sostituite
i valori di </span><i>hdmi_group</i><span style="font-style: normal;">
e </span><i>hdmi_mode</i><span style="font-style: normal;"> con quelli
ottimali e ricordatevi di verificare che l'opzione </span></span><i>hdmi_safe</i> sia disabilitata, altrimenti la risoluzione sarà bloccata su VGA (640x480).<br />
Vi ricordo che un opzione, per essere disabilitata, deve avere il carattere '#' all'inizio della riga.<br />
Ora salvate con la solita combinazione Ctrl + o, Invio, Ctrl +
x e riavviate con</div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">sudo
reboot</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: small;"><span style="font-style: normal;">Ora
il vostro Raspberry Pi utilizza la risoluzione ottimale del vostro
monitor/TV.</span></span></div>
<br />
<div align="LEFT" style="margin-bottom: 0cm;">
<br /></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com1tag:blogger.com,1999:blog-6135547631044733480.post-43447459594258783832014-02-27T11:19:00.001+01:002014-03-07T10:34:10.334+01:00Raspberry Pi: come risolvere i problemi con la connessione HDMISono in molti ad avere problemi di connessione del Raspberry Pi ad un televisore/monitor tramite la porta HDMI, spesso ci si ritrova davanti ad uno schermo completamente nero.<br />
Anche io ho incontrato lo stesso problema, la connessione tramite video composito funzionava perfettamente, ma provando a collegarlo tramite HDMI nessun segnale!<br />
La soluzione a questo problema si trova in un file di configurazione in /boot, andiamo subito a modificarlo con:<br />
<br />
sudo nano /boot/config.txt<br />
<br />
Il file si presenta con una lista di opzioni di configurazione e molti commenti che aiutano a capire a cosa serve ciascuna voce (il tutto ovviamente in inglese).<br />
Le righe che iniziano con il carattere # sono commenti e di conseguenza vengono ignorati dal sistema, molte delle opzioni presenti nel file sono precedute dal suddetto carattere e quindi di fatto disabilitate. Per abilitare un opzione basterà rimuovere il carattere all'inizio della riga.<br />
<br />
La prima opzione del file è <i>hdmi_safe=1</i>, che attiva la modalità “sicura”, cioè imposta i parametri per la massima compatibilità possibile con tutti i tipi di TV/monitor. Tenete presente che, se attivate questa opzione, la risoluzione in uscita sarà la standard VGA (640x480).<br />
<br />
Saltando le opzioni relative alle dimensioni e posizione dello schermo, troverete <i>hdmi_force_hotplug=1</i>, che forza l'uscita video su HDMI anche quando non viene rilevato alcun monitor collegato. Il Raspberry Pi infatti, in fase di boot, verifica se è presente un monitor HDMI collegato, se non lo rileva viene impostata di default l'uscita video composito. Questa è l'opzione che ha risolto il mio problema!<br />
<br />
Altra opzione degna di nota è <i>hdmi_drive=2</i>, che forza la modalità HDMI (video + audio), piuttosto che DVI (solo video).<br />
<br />
Per finire, <i>config_hdmi_boost=4</i>, che rafforza il segnale e previene problemi di interferenze o assenza completa di segnale.<br />
<br />
Ricapitolando, ho abilitato le seguenti opzioni ed ho risolto ogni problema:<br />
<br />
<i>hdmi_force_hotplug=1</i><br />
<i>hdmi_drive=2</i><br />
<i>config_hdmi_boost=4</i><br />
<i><br /></i>
Dopo aver concluso le modifiche salvate premendo i tasti Ctrl + o, premete il tasto Invio per confermare il nome del file, quindi uscite dall'editor con Ctrl + x.<br />
Ora potete riavviare con sudo reboot e godervi l'uscita video sulla vostra TV.Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com1tag:blogger.com,1999:blog-6135547631044733480.post-589722088385123012013-12-18T20:34:00.000+01:002014-06-22T10:59:38.805+02:00Come abilitare TRIM per migliorare le prestazioni del SSD in Debian / Ubuntu Che cos'è TRIM e perché conviene abilitarlo?<br />
Il comando TRIM comunica al controller del SSD quali sono i blocchi attualmente non in uso, ad esempio quelli liberati a seguito della cancellazione di un file. Il mancato utilizzo del comando TRIM causa, nel lungo periodo, una rilevante riduzione delle prestazioni del SSD.<br />
E' recente la notizia che Ubuntu 14.04 "Trusty Tahr" uscirà con la funzione TRIM per gli SSD abilitata di default, vediamo come abilitarlo anche in Ubuntu 13.10.<br />
<br />
Prima cosa da fare è verificare che il nostro SSD supporti il comando TRIM, apriamo il Terminale e digitiamo:<br />
<br />
sudo hdparm -I /dev/sda | grep "TRIM supported"<br />
<br />
Se questo comando genererà una risposta simile a questa:<br />
<br />
*<span class="Apple-tab-span" style="white-space: pre;"> </span>Data Set Management TRIM supported (limit 8 blocks)<br />
<br />
allora potete procedere, se al contrario non otterrete alcuna risposta vorrà dire che il vostro SSD non supporta TRIM.<br />
<br />
<u><b>Eseguire TRIM manualmente:</b></u><br />
<u><br /></u>
Prima cosa da sapere è come eseguire TRIM da terminale:<br />
<br />
sudo fstrim -v /<br />
<br />
Questo comando eseguirà TRIM sull'intero disco di sistema, ci vorrà qualche minuto per il completamento, abbiate pazienza ed aspettate, anche se sembrerà non esserci alcuna attività sul SSD.<br />
Se avete più partizioni sul vostro SSD dovrete eseguire questo comando per ciascuna partizione, non fatelo per la partizione di swap in quanto non ne ha bisogno.<br />
<br />
<u><b>Far eseguire automaticamente TRIM dal sistema:</b></u><br />
<u><br /></u>
Ci sono diversi modi per far eseguire TRIM dal sistema in modo automatico, vediamo quali:<br />
<br />
<u>1. aggiungere l'opzione "discard" in fstab (NON CONSIGLIATO)</u><br />
<u><br /></u>
Aggiungere l'opzione discard nel vostro file fstab farà in modo che TRIM venga eseguito ogni qualvolta si cancella un file. Questo metodo non è consigliabile perché nel caso in cui dovete cancellare molti file il vostro SSD rallenterà vistosamente, inoltre è inutile eseguire TRIM ad ogni cancellazione di file. Comunque, nonostante lo sconsiglio, vi spiegherò come fare.<br />
<br />
sudo nano /etc/fstab<br />
<br />
Con questo comando apriamo il file fstab con l'editor di testo nano.<br />
All'interno del file ci sono tante righe quante sono le partizioni che vengono integrate nel file system principale, ogni riga ha il seguente formato:<br />
<br />
<file system> <punto di mount> <tipo> <opzioni> <dump> <pass><br />
<br />
La prima partizione in elenco è quella del sistema operativo, individuabile dal fatto che il punto di mount è /.<br />
Dopo l'indicazione del tipo di filesystem, nel nostro caso ext4, ci sono le opzioni. Dovreste trovare le seguenti opzioni sulla partizione del sistema operativo:<br />
errors=remount-ro<br />
Aggiungete discard alle opzioni separando con una virgola, in questo modo:<br />
discard,errors=remount-ro<br />
<br />
Se avete altre partizioni del SSD potete fare lo stesso anche per le altre, ma ricordatevi di non farlo per la partizione di Swap che non ne ha bisogno.<br />
Successivamente possiamo salvare premendo i tasti Ctrl + o, confermare il salvataggio premendo Invio, quindi uscire dall'editor con Ctrl + x.<br />
Riavviate il sistema e avrete il TRIM attivo.<br />
<br />
<u>2. eseguire all'avvio del sistema TRIM aggiungendolo al file /etc/rc.local</u><br />
<u><br /></u>
Questo metodo eseguirà TRIM durante l'avvio del sistema, il prezzo da pagare è il rallentamento del boot, altra nota negativa è che su un PC sempre acceso non verrà mai eseguito. Personalmente non ho applicato questo metodo sul mio PC perché lo spengo e lo riavvio più volte al giorno, ma è una scelta valida per molti, vediamo come fare.<br />
<br />
sudo nano /etc/rc.local<br />
<br />
Il file si presenta sostanzialmente così:<br />
<br />
#!/bin/sh -e<br />
#<br />
# rc.local<br />
#<br />
# This script is executed at the end of each multiuser runlevel.<br />
# Make sure that the script will "exit 0" on success or any other<br />
# value on error.<br />
#<br />
# In order to enable or disable this script just change the execution<br />
# bits.<br />
#<br />
# By default this script does nothing.<br />
exit 0<br />
<br />
Aggiungete il comando per invocare TRIM prima di exit 0, per ottenere questo:<br />
<br />
#!/bin/sh -e<br />
#<br />
# rc.local<br />
#<br />
# This script is executed at the end of each multiuser runlevel.<br />
# Make sure that the script will "exit 0" on success or any other<br />
# value on error.<br />
#<br />
# In order to enable or disable this script just change the execution<br />
# bits.<br />
#<br />
# By default this script does nothing.<br />
fstrim -v /<br />
exit 0<br />
<br />
Salvate premendo i tasti Ctrl + o, confermate il salvataggio premendo Invio, quindi uscite dall'editor con Ctrl + x.<br />
Riavviate il PC, da ora in poi, ad ogni avvio, verrà eseguito TRIM.<br />
<br />
<u>3. eseguire TRIM automaticamente una volta al giorno tramite /etc/cron.daily</u><br />
<br />
Questo è il metodo che preferisco, TRIM verrà eseguito una volta al giorno all'ora stabilita da cron. Se il PC dovesse essere spento nell'ora stabilita, allora verrà eseguito non appena sarà possibile farlo.<br />
Bene, vediamo come fare:<br />
<br />
sudo nano /etc/cron.daily/trim<br />
<br />
Creiamo un nuovo file chiamato trim all'interno di /etc/cron.daily, adesso scriviamo le seguenti righe:<br />
<br />
#!/bin/sh<br />
fstrim -v /<br />
<br />
Ora salvate premendo i tasti Ctrl + o, confermate il salvataggio premendo Invio, quindi uscite dall'editor con Ctrl + x.<br />
Ora bisogna rendere il file appena creato eseguibile con il comando:<br />
<br />
sudo chmod a+x /etc/cron.daily/trim<br />
<br />
Riavviate il PC, da ora in poi TRIM verrà eseguito automaticamente una volta al giorno.<br />
<br />
<b><u>Un piccolo trucco per limitare le scritture sul SSD allo scopo di allungarne la vita:</u></b><br />
<b><u><br /></u></b>
Probabilmente saprete già che la longevità del vostro SSD è legata al numero di scritture eseguite. Effettuare spesso operazioni in scrittura ne accorcerà sicuramente la vita, ad esempio, una cosa da evitare, se si utilizza Windows, è la deframmentazione del disco!<br />
Tornando ai sistemi GNU/Linux, un piccolo trucco per limitare le scritture su SSD è quello di disabilitare la scrittura della data di accesso ad un file. Per default, ogni volta si apre un file, il sistema operativo scriverà la data di accesso al file, questo si può disabilitare aggiungendo l'opzione "noatime" in /etc/fstab.<br />
Dal Terminale digitiamo:<br />
<br />
sudo nano /etc/fstab<br />
<br />
Ora aggiungiamo l'opzione noatime per ottenere qualcosa di simile:<br />
<br />
noatime, errors=remount-ro<br />
<br />
Salvate con le solite combinazioni di tasti Ctrl + o, confermate il salvataggio premendo Invio, quindi uscite dall'editor con Ctrl + x.<br />
<br />
Riavviate e godetevi a lungo il vostro SSD.<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-78426667081324688322013-11-08T18:36:00.000+01:002013-11-08T18:38:18.431+01:00GNOME SHELL, guida veloce<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkwE9pFRsmvTYmsuukhaXNmRuKvcZPUrm6FaKsmVNfkle-nx2ydsdtT6dU3mQKryrqGYVX462UROOny5eE5gfKvP0nPrauBFudGtuNhrLPFl-Stj_wdq6Es44GqXNc_-ehuKFB8pW97wQG/s1600/gnome_logo_white.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkwE9pFRsmvTYmsuukhaXNmRuKvcZPUrm6FaKsmVNfkle-nx2ydsdtT6dU3mQKryrqGYVX462UROOny5eE5gfKvP0nPrauBFudGtuNhrLPFl-Stj_wdq6Es44GqXNc_-ehuKFB8pW97wQG/s1600/gnome_logo_white.png" /></a></div>
<div style="text-align: center;">
<span style="font-size: medium;"><br /></span></div>
<span style="font-size: medium;">Fin
dalla prima release di GNOME Shell (o anche GNOME 3) ci sono state
tante critiche su questo ambiente desktop, tante polemiche sulla
mancanza di funzionalità e sulla scarsa possibilità di
personalizzazione rispetto al predecessore, GNOME Panel (meglio conosciuto
come GNOME 2).</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Sarà
davvero così? E' davvero così brutto GNOME Shell?</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Ovviamente
non esiste una risposta assoluta, dipende dai gusti e dalle esigenze
personali, il mio giudizio è diametralmente opposto a quello dei
denigratori di GNOME Shell, lo trovo molto bello da vedere, comodo da
utilizzare e sufficientemente personalizzabile.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Lo
avete mai provato? E' la prima volta che vi avvicinate al mondo
GNU/Linux? Con questa guida vi presenterò le funzionalità di questo
ambiente desktop e cercherò di motivare il mio giudizio.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">La
versione di cui vi parlo è la 3.8, quella presente di default su
Ubuntu GNOME 13.10, non è la recentissima 3.10.</span><br />
<span style="font-size: medium;"><br /></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN3BfSK4zuo_7neUxzDTDxEMjAmO9nLxphFi08vgNudtbN4mWfDCparAvsHafqLWwVIHwMub73RkIEZlWH7R__DkXKn5dTn55cxWOZJB2xlS7CiqdkkSipH8IpNWQDkWwmJiChtttqdEfB/s1600/Scrivania.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN3BfSK4zuo_7neUxzDTDxEMjAmO9nLxphFi08vgNudtbN4mWfDCparAvsHafqLWwVIHwMub73RkIEZlWH7R__DkXKn5dTn55cxWOZJB2xlS7CiqdkkSipH8IpNWQDkWwmJiChtttqdEfB/s400/Scrivania.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">La scrivania pulita</td></tr>
</tbody></table>
<br /></div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Barra dei
menù</b></span></div>
<div align="CENTER" style="margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><span style="font-weight: normal;">Iniziamo
a vedere come si presenta GNOME S</span><span style="font-weight: normal;">hell</span><span style="font-weight: normal;">
appena installato.</span></span></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><span style="font-weight: normal;">Davanti
a voi avrete la scrivania pulita, senza alcuna icona. In alto la
barra dei menù </span><span style="font-weight: normal;">con</span><span style="font-weight: normal;">
al centro la data e l'ora, a destra troverete le icone del controllo
audio, lo stato della connessione alla rete, eventualmente lo stato
di carica della batteria </span><span style="font-weight: normal;">(</span><span style="font-weight: normal;">se
state utilizzando un portatile</span><span style="font-weight: normal;">)</span><span style="font-weight: normal;">
e per finire il nome utente. Sulla sinistra invece troverete
“Attività”.</span></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Tutto
qui, il look è decisamente pulito ed essenziale. Iniziamo ad
analizzare gli elementi sulla barra dei menù:</span></div>
<ul>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;"><u>data
e ora</u>: cliccandoci sopra verrà visualizzato un pannello con il calendario del mese e gli appuntamenti. Il
calendario è direttamente collegato ad Evolution, l'applicazione di
gestione e-mail e agenda. Se sincronizzate
Evolution con il calendario del vostro account Google (o qualsiasi
altro calendario online compatibile) potrete visualizzare gli
appuntamenti direttamente su questo pannello. Da qui è anche possibile lanciare Evolution od aprire il pannello delle
impostazioni “Data e ora”.</span><br />
<span style="font-size: medium;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivJfw_cRlyU_rCRhm9Qbxiifqx9tEzv5lGOdDQFcSHkBYiIRMJhMnKjH7PPoH42d10jtaLq8uau2hPXdN87KXCJ7v3QHI2o8LCgKkzsUeGWE4nffzLB3nUcuojYhaAdKDiHdSycnspgE0f/s1600/calendario.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivJfw_cRlyU_rCRhm9Qbxiifqx9tEzv5lGOdDQFcSHkBYiIRMJhMnKjH7PPoH42d10jtaLq8uau2hPXdN87KXCJ7v3QHI2o8LCgKkzsUeGWE4nffzLB3nUcuojYhaAdKDiHdSycnspgE0f/s400/calendario.png" width="400" /></a></div>
<div style="text-align: center;">
<span style="font-size: medium;"><br /></span></div>
</div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;"><u>audio</u>:
l'icona del controllo volume da accesso ad un altro menù
interattivo con il quale possiamo regolare il volume o aprire il
pannello delle impostazioni “Audio”.</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;"><u>connessione
alla rete</u>: questa icona rappresenta lo stato della connessione,
il suo menù interattivo permette di abilitare/disabilitare le
connessioni disponibili (ad esempio via cavo o Wi-Fi) tramite degli
interruttori stilizzati. Permette anche di selezionare la rete Wi-Fi
alla quale collegarsi tra quelle disponibili. Anche questo menù vi
permette di aprire il pannello delle impostazioni che, in questo
caso, sarà quello di “Rete”.</span><br />
<span style="font-size: medium;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTBHdVi0sO3F1_JV536tFXYRBzivuugMML1BCtCluBTjdhvBQEHvxxkNhRCtjmwRgeqAHwsl2CrEaTLi42PiYAA4IXzxfiMIUp1OT2S0I_eIiDvbntDrKNn7Izj1Yj3F13VRI6jIpMwGpn/s1600/rete.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTBHdVi0sO3F1_JV536tFXYRBzivuugMML1BCtCluBTjdhvBQEHvxxkNhRCtjmwRgeqAHwsl2CrEaTLi42PiYAA4IXzxfiMIUp1OT2S0I_eIiDvbntDrKNn7Izj1Yj3F13VRI6jIpMwGpn/s1600/rete.png" /></a></div>
<div style="text-align: center;">
<span style="font-size: medium;"><br /></span></div>
</div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;"><u>nome
utente</u>: il nome utente ha al fianco un'icona dalla classica
forma del fumetto che indica lo stato del nostro account online
(fuori rete o disponibile). Cliccandoci sopra verrà visualizzato un
menù dal quale possiamo fare molte cose:</span></div>
<ul>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">cambiare
lo stato del nostro account online;</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">abilitare/disabilitare
le notifiche;</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">aprire
le impostazioni di sistema;</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">accedere
con un altro utente;</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">terminare
la sessione (log out)</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">bloccare
lo schermo (molto comodo se ci vogliamo allontanare dal PC e
vogliamo evitare sguardi indiscreti in nostra assenza);</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">mettere
il PC in stato di sospensione;</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">spegnere
il PC (un pannello ci chiederà conferma e ci darà anche la
possibilità di scegliere se spegnere definitivamente o riavviare).</span></div>
</li>
</ul>
</li>
</ul>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoC5tOLYqPZLQ89C-I4tKBNInwOFhh85GPbL1BjVhJSfH3a6s5NKmS_ealPozbE8j_1lt20d8KdQ9BE8vjIfaTnWI9PqqT0ha_QPpsmg47iuSvBdtB1bullrUgYZiX1bmq86qDMXPz-ptO/s1600/menu_utente.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoC5tOLYqPZLQ89C-I4tKBNInwOFhh85GPbL1BjVhJSfH3a6s5NKmS_ealPozbE8j_1lt20d8KdQ9BE8vjIfaTnWI9PqqT0ha_QPpsmg47iuSvBdtB1bullrUgYZiX1bmq86qDMXPz-ptO/s400/menu_utente.png" width="267" /></a></div>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Attività</b></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Ho
lasciato per ultimo “Attività” perché questa è la novità
introdotta con GNOME Shell e sostituisce di fatto il menù delle
applicazioni che gli utenti di GNOME Panel erano abituati ad
utilizzare. Cliccando con il mouse su “Attività”, o
semplicemente portando il mouse nell'angolo in alto a sinistra dello
schermo, o da tastiera premendo il tasto “Super” (meglio
conosciuto come tasto Windows, <a href="http://maxtrixnix.blogspot.it/2013/06/adesivi-per-coprire-il-logo-del-tasto.html">vedi questo post</a>), si accede alla modalità “activity
overview”. In questa modalità la funzionalità della barra dei
menù rimane invariata, ma sulla scrivania verranno visualizzati
diversi elementi che vado ad elencare:</span></div>
<ul>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">sul
lato sinistro dello schermo avremo una barra con le icone delle
applicazioni preferite e di quelle in esecuzione, molto simile al
“Dock” di OS X, chiamata “Dash”.</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">In
alto al centro verrà visualizzato un campo di ricerca con il quale
si posso cercare le applicazioni e/o altri file presenti sul nostro
disco.</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Sul
lato destro dello schermo avremo un selettore degli spazi di lavoro.
Inizialmente sarà parzialmente nascosto, basta andarci vicino con
il mouse per farlo comparire completamente.</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Al
centro dello schermo verranno visualizzate le finestre delle
applicazioni in esecuzione, saranno rimpicciolite ed allineate per
visualizzarle tutte, in stile “Exposé” di OS X.</span></div>
</li>
</ul>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7x84vA1EoR34O9CyB31JuX2Is-f3jVThBm8qCYjtn1x9-Dxn14JQ4rbwkBuIir2kQzKVRPIceVoBKTfLRIRcnZaa5BCnHE2nywCYabVGVxGE88h7BObfe6e27M19OEPeF-a_02lKlkmgQ/s1600/attivita.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7x84vA1EoR34O9CyB31JuX2Is-f3jVThBm8qCYjtn1x9-Dxn14JQ4rbwkBuIir2kQzKVRPIceVoBKTfLRIRcnZaa5BCnHE2nywCYabVGVxGE88h7BObfe6e27M19OEPeF-a_02lKlkmgQ/s400/attivita.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">la modalità "Attività", sul lato sinistro la mia Dash personalizzata</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Cercare e
lanciare le applicazioni</b></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">La
“Dash” di GNOME Shell funziona in modo simile al “Doc” di OS
X, è il modo più veloce per lanciare le applicazioni che
utilizziamo più frequentemente. Con un click sull'icona
l'applicazione corrispondente viene avviata e si esce dalla modalità
“Attività”. Inoltre è possibile trascinare le icone per
metterle nell'ordine che preferiamo.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">L'ultima
icona in basso sulla Dash serve a mostrare sullo schermo le
applicazioni disponibili sul nostro sistema, cliccando su un'icona
lanceremo quell'applicazione. Se vogliamo aggiungere un'icona nella
Dash, così da averla sempre a disposizione, basta cliccarci su con
il tasto destro e selezionare “<i>aggiungi ai preferiti</i>”.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Quando
vengono mostrate le icone delle applicazioni, in basso avremo la
possibilità di scegliere se visualizzare solo le più frequenti o
tutte.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Cliccando
una seconda volta sull'icona “Mostra applicazioni” torneremo alla
vista normale della modalità “Attività”.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Per
finire, possiamo utilizzare la ricerca per trovare e lanciare
l'applicazione desiderata. Io lo ritengo il metodo più veloce, a
patto di conoscere il nome dell'applicazione che cerchiamo. Basta
infatti iniziare a digitare le prime due o tre lettere del nome ed il
risultato della ricerca sarà immediatamente visibile. Alcuni nomi
delle applicazioni vengono localizzati in base alla lingua di
sistema, comunque la ricerca avrà successo sia digitando il nome
inglese, sia per quello in italiano.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Un
esempio è “Software Update” che in italiano si chiama
“Aggiornamenti software”, digitando “agg” o “upd” o
ancora “sof”, la ricerca troverà comunque il programma per
l'aggiornamento di sistema.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Ho
letto molti commenti di gente che rimpiange il menù delle
applicazioni e si lamenta del nuovo sistema, ma sinceramente non ne
capisco il motivo, perché cercare tra le voci di un menù non è né
più comodo né più veloce.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEEmG7J96qpX_LMZMpw2OkGM69P8IDXP8vTddp-NuB8k5WsLSzMBmcFpUJKr1Fx5oiDbjuo3fA82luUGtyAVqD79hrwEXR6hO8mXdrkuNWuW2_X0iJGwtN52MnJyU597Vi6uVxnR8KourZ/s1600/ricerca.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEEmG7J96qpX_LMZMpw2OkGM69P8IDXP8vTddp-NuB8k5WsLSzMBmcFpUJKr1Fx5oiDbjuo3fA82luUGtyAVqD79hrwEXR6hO8mXdrkuNWuW2_X0iJGwtN52MnJyU597Vi6uVxnR8KourZ/s400/ricerca.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">La ricerca di un'applicazione e molto comoda e veloce</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Ricerca di
altri file</b></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Ovviamente
la ricerca funziona anche per trovare i vostri file, cliccando
sull'icona verranno aperti con l'applicazione “Documenti”, che è
una sorta di anteprima dalla quale possono essere aperti per la
modifica con i rispettivi programmi dedicati. Ad esempio, un
documento di testo di LibreOffice verrà visualizzato in Documenti e
potrà essere aperto con LibreOffice per modificarlo.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Volendo
fare un altro paragone con OS X, la ricerca funziona in modo simile a
Spotlight.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Muoversi
tra le finestre e le applicazioni aperte</b></span></div>
<div align="CENTER" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Un
moderno ambiente desktop deve fornire un valido sistema per
districarci tra le tante applicazioni aperte contemporaneamente con
le altrettanto numerose finestre loro associate. Questo compito, in
GNOME Panel, era affidato alla barra delle finestre posta alla base
dello schermo, che è lo stesso principio che ha avuto Windows con la
sua barra delle applicazioni. In GNOME Shell questo compito è
affidato alla modalità “Attività”, che ci mostra velocemente
tutte le finestre aperte sullo schermo, debitamente scalate ed
allineate, per darci modo di selezionarne una e portarla in primo
piano con un click, oppure per chiuderle. Funziona nello stesso identico modo in cui un
utente Mac utilizza “Exposé”, ed io lo trovo estremamente comodo
ed intuitivo. Portare il mouse nell'angolo in alto a sinistra dello
schermo è un gesto veloce, possiamo dare un'occhiata a tutte le
finestre aperte e cliccare su quella che ci interessa. Le finestre
sono animate in tempo reale, quindi anche un video continuerà ad
andare avanti mentre lo guardiamo scalato dalla modalità “Attività”.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Ovviamente
tutto questo ha un costo in termini di risorse, su PC datati il tutto
può risultare meno fluido e più lento nella risposta, ma resta a
mio giudizio utilizzabile e comodo. Utilizzo GNOME Shell anche su un
netbook, se ce la fa un Atom ce la può fare qualunque altro
processore!</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Per
spostarci da un'applicazione ad un'altra c'è sempre la possibilità
di farlo da tastiera con la combinazione di tasti Alt+Tab, anche
questa è una funzione che utilizzo spesso, soprattutto quando devo
muovermi spesso tra due applicazioni aperte.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVeKnL12x7ECcOz69f7lXmGBZayKcoavgsGerbtJ6VVwGMySUkw9VbgKO7dc2VgbycKTkG9PvoZ5S6KTdrWS_swHxaRgR0M8OuFYbpJ0afIWFGOg0SgYSoRxxw-JWlf80wq5kXRmXyo-6w/s1600/finestre.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVeKnL12x7ECcOz69f7lXmGBZayKcoavgsGerbtJ6VVwGMySUkw9VbgKO7dc2VgbycKTkG9PvoZ5S6KTdrWS_swHxaRgR0M8OuFYbpJ0afIWFGOg0SgYSoRxxw-JWlf80wq5kXRmXyo-6w/s400/finestre.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">le finestre aperte scalate e affiancate</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Gestione
spazi di lavoro</b></span></div>
<div align="CENTER" style="margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">La
gestione degli spazi di lavoro è affidata al selettore degli spazi
di lavoro posto sulla parte destra dello schermo della modalità
“Attività”. Inizialmente avremo la miniatura di una scrivania
con le finestre delle applicazioni aperte, subito sotto ci sarà
un'altra miniatura della scrivania vuota. Trascinando una finestra da
una miniatura all'altra potremo organizzare le finestre aperte tra
più spazi di lavoro. Quando spostiamo una finestra sullo spazio di
lavoro vuoto, verrà aggiunta una nuova miniatura libera. In questo
modo, spostando le finestre, potremo creare più spazi di lavoro.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Per
spostarci da uno spazio all'altro basterà cliccare sulla miniatura
oppure direttamente da tastiera con la combinazione di tasti
Super+Pag.Su o Super+Pag.Giu.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Ovviamente,
nella modalità “Attività” verranno mostrate tutte le finestre
aperte dello spazio di lavoro selezionato, mentre non verranno
mostrate le finestre presenti sugli altri spazi di lavoro.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Liberando
uno spazio di lavoro da tutte le finestre lo eliminerà. Il
funzionamento è estremamente intuitivo, è sicuramente più facile
provarlo piuttosto che spiegare come funziona.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Tutto
questo ha di fatto reso inutile la riduzione ad icona della finestra
e di conseguenza il relativo pulsante che era posto nell'angolo in
alto a destra. Il principio è semplice, se voglio nascondere dalla
vista una finestra, la trascino in un altro spazio di lavoro, se la
voglio vedere mi sposto sullo spazio di lavoro dove l'ho messa oppure
la trascino di nuovo nello spazio di lavoro che sto utilizzando.</span></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyqvWQ_ZTxeiYBPNoeuYXs9a1LNTGO7swBLXPP3uKugHs1hIwIEKPJn0_GvmI6aG551GgBpG-CeWim4ROVArZx3QWAohwn8jWb2cJa687Uj3TjJQ9mKKC8diSgmVMx5AU9TF6FMoS2S9HE/s1600/spazi_lavoro.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyqvWQ_ZTxeiYBPNoeuYXs9a1LNTGO7swBLXPP3uKugHs1hIwIEKPJn0_GvmI6aG551GgBpG-CeWim4ROVArZx3QWAohwn8jWb2cJa687Uj3TjJQ9mKKC8diSgmVMx5AU9TF6FMoS2S9HE/s400/spazi_lavoro.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sul lato destro ci sono gli spazi di lavoro, qui possiamo trascinare le finestre da uno spazio ad un altro</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Area delle
notifiche</b></span></div>
<div align="CENTER" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">E'
una zona nella parte inferiore dello schermo dove compaiono le
notifiche, quali ad esempio il collegamento di una periferica o la
ricezione di un messaggio. Alcune notifiche possono essere
interattive, ad esempio si può rispondere ad un messaggio
direttamente dall'area delle notifiche, senza dover andare ad aprire
un'altra finestra.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">La
suddetta area è a scomparsa, per renderla visibile nuovamente basta
portare il mouse sul fondo dello schermo e muoverlo verso il basso. Nel caso
di una notifica relativa alla connessione di una periferica, si può
rendere visibile l'area delle notifiche per andare a smontarla.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjutojDLUS_s6f6C4k65_48gnV6xOywMU015Lf5BayeMF_0KI1XofMyoiF3PHIdvIEBLF18-YW3GNopq4rumSmTgjfP8OCLutITnIJ_3S6J-2qmqNBKXOjANIp9QqYHlOyIiG0JE5K5srFl/s1600/area_notifiche.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjutojDLUS_s6f6C4k65_48gnV6xOywMU015Lf5BayeMF_0KI1XofMyoiF3PHIdvIEBLF18-YW3GNopq4rumSmTgjfP8OCLutITnIJ_3S6J-2qmqNBKXOjANIp9QqYHlOyIiG0JE5K5srFl/s400/area_notifiche.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">In basso è visibile l'area delle notifiche, c'è Rhythmbox in esecuzione e ci sono dispositivi rimovibili montati</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Impostazioni
e personalizzazione</b></span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Eccoci
arrivati ad uno degli argomenti più criticati di GNOME Shell: la
personalizzazione. Per poter personalizzare il nostro desktop c'è
un'applicazione dedicata che si chiama “GNOME Tweak Tool”, il
nome in italiano è “Strumento di personalizzazione”. Dalla
modalità “Attività” basta digitare “tweak” e lo troverete
senza difficoltà. Questo programma ci presenta un gran numero di
opzioni suddivise per categorie:</span></div>
<ul>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Digitazione</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Estensioni
della shell</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">File</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Finestre</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Mouse</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Scrivania</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Shell</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Tema</span></div>
</li>
<li><div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Tipi
di carattere</span></div>
</li>
</ul>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Dovrei
scrivere diverse pagine per descrivere nel dettaglio tutte le
opzioni, quindi mi soffermerò solo su quelle che ritengo più
importanti.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Nella
categoria “Digitazione” troverete tutte le opzioni che riguardano
la tastiera e l'inserimento del testo.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">La
categoria “Estensioni della Shell” è il sistema che permette di
aggiungere caratteristiche e funzionalità al desktop, le estensioni
funzionano in modo molto simile a quelle dei browser internet.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Approfondirò
questo argomento tra un attimo.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
“<span style="font-size: medium;">File”,
“Finestre” e “Mouse” permettono di personalizzare alcune
azioni e poco più.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">In
“Scrivania” potete decidere come gestire la scrivania che, di
default è vuota e non ci si può mettere niente sopra. Attivando
l'opzione “Indica se il file manager debba gestire la scrivania”,
questa tornerà ad essere gestita come tutti sono abituati a fare,
ossia ci si possono parcheggiare file e la si può popolare di icone.
Le altre opzioni permettono di scegliere quali icone devono comparire
sulla scrivania, tipo il cestino o le periferiche, ecc...</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">La
categoria “Shell” ci da la possibilità di cambiare diversi
aspetti del desktop, ad esempio come visualizzare la data e l'ora,
gli spazi di lavoro, il comportamento del sistema quando chiudiamo il
portatile, ecc...</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">In
“Tema” possiamo modificare profondamente l'aspetto delle
finestre, le icone, il puntatore del mouse e tutti gli elementi
dell'interfaccia grafica, installando appositi temi. Tutto questo
sarà possibile solo dopo aver abilitato l'estensione “User themes”
nella categoria “Estensioni della shell”.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Z_-mIVn0YouxZbIocRF1O-LAX6kCZawE8BmtI2aeiNmhbG7PfB511I49ig5xgS1u2r5f178fsgCUKJHW7qlIW6-3TtLaYB13L0Kd5dERCeDc-JmOe4Po9AtfR-V_bVCYEkwo5Q3Kcae1/s1600/gnome_tweak.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Z_-mIVn0YouxZbIocRF1O-LAX6kCZawE8BmtI2aeiNmhbG7PfB511I49ig5xgS1u2r5f178fsgCUKJHW7qlIW6-3TtLaYB13L0Kd5dERCeDc-JmOe4Po9AtfR-V_bVCYEkwo5Q3Kcae1/s400/gnome_tweak.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">GNOME Tweak Tool</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
</div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Estensioni
della Shell</b></span></div>
<div align="LEFT" style="margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Le
estensioni della shell permettono di aggiungere funzionalità o
modificare le caratteristiche dell'ambiente desktop secondo le
proprie esigenze. Nella categoria “Estensioni della shell” ne
troveremo diverse preinstallate, sarà quindi possibile attivarle,
disattivarle o modificarne le opzioni se presenti.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Oltre
alle estensioni fornite con l'installazione di base, sarà possibile
installarne di nuove direttamente dal <a href="https://extensions.gnome.org/">sito dedicato</a>. In fondo alla lista delle estensioni installate troverete la scritta "Recupera più estensioni", che è il link al sito.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Anche
il sistema di installazione è molto semplice, sul sito infatti,
nella pagina dedicata all'estensione scelta, troveremo in alto a
sinistra un pulsante di tipo switch simile a quelli che troviamo
nell'interfaccia grafica di GNOME. Dopo aver attivato il pulsante con
un click, ci verrà chiesta la conferma per il download e
l'installazione, in pochi istanti sarà installata e funzionante sul
nostro desktop.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Tutti
coloro che desiderano una funzionalità mancante o che vorrebbero
modificare una caratteristica dell'ambiente possono cercare
l'estensione che fa al caso loro, o magari svilupparla personalmente.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Per
farvi qualche esempio tra le estensioni preinstallate:</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Volete
il menù delle applicazioni in stile GNOME Panel? C'è, basta
attivarlo.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Un
altro menù che trovo comodo e aggiungo sempre è quello per i
dispositivi rimovibili. Se collegate una penna USB od un hard disk
esterno, potrete selezionarli o espellerli tramite un apposito menù.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Io
ho trovato molte estensioni utili che completano GNOME Shell e non lo
reputo di certo un ambiente rigido o non personalizzabile.</span></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<br /></div>
<div align="CENTER" style="margin-bottom: 0cm;">
<span style="font-size: medium;"><b>Conclusioni</b></span></div>
<div align="CENTER" style="margin-bottom: 0cm;">
<br /></div>
<div align="LEFT" style="font-weight: normal; margin-bottom: 0cm;">
<span style="font-size: medium;">Quando
ho provato per la prima volta Unity non mi ha affascinato, nonostante
tutto l'ho utilizzato per più di un anno. GNOME Shell invece mi è
piaciuto da subito e non sono più tornato a Unity o ad altro. La mia
esperienza personale con gli ambienti desktop viene da circa 10 anni
di OS X, l'ho utilizzato fin dalla prima versione, ed alcune
caratteristiche di GNOME Shell sono chiaramente inspirate ad esso.</span></div>
<br />
<div align="LEFT" style="margin-bottom: 0cm;">
<span style="font-size: medium;">In
questi anni ho visto migliorare GNOME Shell (e forse un po anche
peggiorare OS X) ed adesso lo ritengo il migliore ambiente desktop
per eleganza, semplicità e comodità d'uso. Se non lo avete mai
provato vi consiglio di farlo, possibilmente per un periodo
abbastanza lungo per conoscerne tutte le funzioni, anche quelle più
nascoste.</span></div>
Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-80115080028948262072013-11-01T00:29:00.000+01:002013-11-01T00:29:14.524+01:00Installare ed utilizzare il metodo di input Anthy per la lingua giapponesePer chi come me ha studiato (o studia) la lingua giapponese, è fondamentale installare sul proprio computer il metodo di inserimento dei caratteri giapponesi. Io ho sempre utilizzato il motore di inserimento chiamato Anthy, quindi, in questa breve guida, vi spiegherò come installarlo e configurarlo.<br />
La distribuzione GNU/Linux che utilizzo è Ubuntu Gnome 13.10, la versione ufficiale di Ubuntu che sfoggia Gnome Shell versione 3.8.<br />
<br />
Iniziamo con l'installazione dei pacchetti necessari.<br />
In passato, sulle precedenti release di Ubuntu con Unity, ho sempre installato la lingua giapponese, completa di metodo di inserimento Anthy, tramite il pannello delle impostazioni "<i>Supporto lingue</i>". Bastava cliccare sul pulsante <i>Aggiungi/Rimuovi lingua</i> e spuntare la lingua giapponese, in Ubuntu Gnome 13.10 invece il pannello denominato "<i>Regione e lingua</i>" non ha alcun pulsante per installare una lingua aggiuntiva. Ci sono quindi due modi per aggirare l'ostacolo, installare il vecchio pannello "<i>Supporto lingue</i>" tramite l'<i>Ubuntu Software Center </i>o installare il giapponese direttamente dal <i>Terminale</i>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQT4bneaCNBs4GxFnCPwhRvD3av-g0E12NJHkJ8OVowTzCvGxfns-QfTQPtpa-VxtSLTZoqCmnzzLwfR7BQ4bMFi3hR1wTIeG0mL1ovjkR2723cTVWMzBuFD-f-hgKuc7Es6jj2TOYq5LQ/s1600/impostazioni.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="353" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQT4bneaCNBs4GxFnCPwhRvD3av-g0E12NJHkJ8OVowTzCvGxfns-QfTQPtpa-VxtSLTZoqCmnzzLwfR7BQ4bMFi3hR1wTIeG0mL1ovjkR2723cTVWMzBuFD-f-hgKuc7Es6jj2TOYq5LQ/s400/impostazioni.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Le impostazioni di sistema alle quali ho aggiunto il vecchio "<i>Supporto lingue</i>"</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Seguiamo la via più diretta, aprite il <i>Terminale</i> e installiamo i pacchetti con i seguenti comandi:<br />
<br />
> sudo apt-get update<br />
<br />
Ricordatevi sempre di aggiornare la lista dei pacchetti prima di installare qualcosa.<br />
<br />
> sudo apt-get install language-pack-ja language-pack-gnome-ja language-pack-ja-base language-pack-gnome-ja-base<br />
<br />
Questo installerà le traduzioni in lingua giapponese del sistema.<br />
<br />
> sudo apt-get install ibus anthy anthy-common ibus-anthy<br />
<br />
Questo installerà il framework iBus (Intelligent Input Bus) ed il motore di inserimento Anthy per la lingua giapponese.<br />
<br />
Ora che avete installato tutti i pacchetti necessari, avviate il programma di configurazione chiamato "<i>Input method</i>". Vi apparirà una finestra dal look piuttosto spartano dove non potrete fare altro (oltre che leggere le informazioni riportate) che cliccare su Ok per andare avanti.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitSQLzph2iPIHnQKr-S8scn6bzTwp5-w89pbj6fq2y54A7sUPYIbvs3jIvgfBAZtFe8syAQ4VOcggShEdst4QS-C1guwx_SjGGe5tuxPo-vn6qTQPvccyxj2p14uYFT9MH7LVLtnPywDsg/s1600/im-config01.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitSQLzph2iPIHnQKr-S8scn6bzTwp5-w89pbj6fq2y54A7sUPYIbvs3jIvgfBAZtFe8syAQ4VOcggShEdst4QS-C1guwx_SjGGe5tuxPo-vn6qTQPvccyxj2p14uYFT9MH7LVLtnPywDsg/s400/im-config01.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Questo è la finestra spartana di Input Method Configuration</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
A questo punto vi chiederà se volete esplicitamente selezionare la configurazione e vi consiglierà di rispondere NO, voi invece cliccate su SI!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX6r9VtUMm5e_W_6G57I8rLQzdQ6RDUnfwU8AG8BVVx3R37sHKbXJ5BrV9FJThdgI0G0ph-9lF7lkEDU8GfCzp6DsT4Icx4tkARDW7q3WtDIDwtIldpL7CBn7C4FYwiIIAWZNxTP49bz_l/s1600/im-config02.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="286" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX6r9VtUMm5e_W_6G57I8rLQzdQ6RDUnfwU8AG8BVVx3R37sHKbXJ5BrV9FJThdgI0G0ph-9lF7lkEDU8GfCzp6DsT4Icx4tkARDW7q3WtDIDwtIldpL7CBn7C4FYwiIIAWZNxTP49bz_l/s400/im-config02.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Vogliamo modificare la configurazione, quindi clicchiamo Si</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Quindi vi chiederà di scegliere la configurazione di Input Method, scegliete iBus e cliccate su ok.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfqEAe6VYbyVjLbUWygfC7mA1dnBMr9ngMM_1RO8y9JQGKItP7F8A4XUU7_zx35wWl1CMpFWzpQ3g3y05dNThenYmcYyzE3pWaxnpSCK4l2LsqE1esVQpKXFJEd_HZtprT2J61QG5cTE8B/s1600/im-config03.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfqEAe6VYbyVjLbUWygfC7mA1dnBMr9ngMM_1RO8y9JQGKItP7F8A4XUU7_zx35wWl1CMpFWzpQ3g3y05dNThenYmcYyzE3pWaxnpSCK4l2LsqE1esVQpKXFJEd_HZtprT2J61QG5cTE8B/s400/im-config03.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Selezioniamo iBus</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
L'ultima schermata riporterà delle informazioni riassuntive sulla configurazione scelta, cliccate Ok e il programma si chiuderà.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4l5aVlhQF_fumnxV2Hsk83YPPtX7zMJhIf7FvQrpMbecLnUOH1lKwx2NEY8qVGypb2n3rMHgxsKxXGpE5lW8E5PlbFxwvEdoRX56dT4A2VJ14lE-4kX0DsOEineKKvSRo7IxFrgtWKc3/s1600/im-config04.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4l5aVlhQF_fumnxV2Hsk83YPPtX7zMJhIf7FvQrpMbecLnUOH1lKwx2NEY8qVGypb2n3rMHgxsKxXGpE5lW8E5PlbFxwvEdoRX56dT4A2VJ14lE-4kX0DsOEineKKvSRo7IxFrgtWKc3/s400/im-config04.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Schermata riepilogativa</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Torniamo alle Impostazioni di sistema e aprite il pannello delle impostazioni "<i>Regione e lingua</i>", da qui potete scegliere la lingua di sistema e i metodi di inserimento da utilizzare.<br />
Se cliccate sul tab <i>Sorgenti di input</i> troverete inizialmente la sola lingua italiana nell'elenco. Cliccate sull'icona <b>+</b> e selezionate <i>Giapponese (Anthy)</i>, quindi cliccate su <i>Aggiungi</i>. Ora avete due metodi di inserimento nell'elenco, <i>Italiana</i> e <i>Giapponese (Anthy)</i>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOKNT-tRu_UN8pUMxz0_ru0HBpCvHW2EeGSznMIOWLQhggF0NqzR8lDisqhTZPEn-W1OH_S6Vi0llVfSoMxo6G5BY8-s0Oxm8gAF3Z4ZdYx2S9o7fwLqzV2fPNFFW9Uuo-RgyzQ8jyXbJ6/s1600/regione_lingua.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOKNT-tRu_UN8pUMxz0_ru0HBpCvHW2EeGSznMIOWLQhggF0NqzR8lDisqhTZPEn-W1OH_S6Vi0llVfSoMxo6G5BY8-s0Oxm8gAF3Z4ZdYx2S9o7fwLqzV2fPNFFW9Uuo-RgyzQ8jyXbJ6/s400/regione_lingua.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ora avete due sorgenti di input: italiana e giapponese</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Selezionando la lingua giapponese comparirà un'icona delle opzioni di Anthy posta in basso, accanto a quella che raffigura la tastiera. Cliccando sulle opzioni potrete personalizzare minuziosamente le funzioni del motore di inserimento.<br />
Una personalizzazione che vi posso consigliare è quella di utilizzare la disposizione della tastiera di default. Cliccate sul tab <i>Typing method</i> e selezionate <i>Default</i> per la <i>Keyboard layout</i>. Questo farà in modo di usare la disposizione della vostra tastiera, presumibilmente italiana, invece di quella americana o giapponese.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeDOXC5JM8O45rLbtZQpbREq9MYtFH6cKNr_1M0OWhvuTH6Z8pTYtyq1cy7TesLKXj7oGlPNvleJ3F9FUBlm38LSdfoUQbNCCot95YV54ke4BrLdz3vdn76xEAYMk2hGc86xJLZW0rFD90/s1600/ibus_setup.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeDOXC5JM8O45rLbtZQpbREq9MYtFH6cKNr_1M0OWhvuTH6Z8pTYtyq1cy7TesLKXj7oGlPNvleJ3F9FUBlm38LSdfoUQbNCCot95YV54ke4BrLdz3vdn76xEAYMk2hGc86xJLZW0rFD90/s400/ibus_setup.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pannello delle opzioni di Anthy</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Come potete vedere nella parte destra della finestra, le scorciatoie da tastiera per cambiare metodo di inserimento sono <i>Maiusc+Super+Spazio</i> o <i>Super+Spazio</i> per andare rispettivamente al metodo precedente o a quello successivo. Per "Super" si intende il tasto contrassegnato dal simbolo di <i>Windows</i> sulle tastiere per PC (nel mio caso è il tasto Tux, visto che ho provveduto ad applicarci un apposito adesivo, vedi <a href="http://maxtrixnix.blogspot.it/2013/06/adesivi-per-coprire-il-logo-del-tasto.html">il post sugli adesivi per coprire il tasto Win</a>), mentre su quelle Mac è il tasto Command (ex tasto Apple nelle tastiere dei vecchi Mac).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSS268L963r3LxMRd7aMROV2N5lfuax5VRxN9tVGuWqjGptu8OLWRij1WS7pdQK2xeQOF9oPI2pPdcRq4pUiAqaiBc-oYZvlPSjl0dgqdohCt2ip6qvYU5_ckrtF7qcM3Sx18cilTwZ61b/s1600/IMAG0014.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSS268L963r3LxMRd7aMROV2N5lfuax5VRxN9tVGuWqjGptu8OLWRij1WS7pdQK2xeQOF9oPI2pPdcRq4pUiAqaiBc-oYZvlPSjl0dgqdohCt2ip6qvYU5_ckrtF7qcM3Sx18cilTwZ61b/s400/IMAG0014.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Il tasto Tux sulla mia tastiera Logitech</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Potete anche notare che, nella barra dei menù posta nella parte superiore dello schermo, adesso avrete un nuovo menù che indica il metodo di inserimento in uso (it oppure あ) e vi permette di cambiarlo.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifSAEZpoJbMwkdUoLNgbxknYyXqR2SkyR1zNV6fRwG7RhRY5QyKUc4UEiRngDkIf9rylxUPfw7kAErxzHL-KuCqn9dp0yF8IBPjqhYaswUWSAnT2wttJCpiv4JVqYC1kV-njLhcSpj-iX7/s1600/barra_menu.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifSAEZpoJbMwkdUoLNgbxknYyXqR2SkyR1zNV6fRwG7RhRY5QyKUc4UEiRngDkIf9rylxUPfw7kAErxzHL-KuCqn9dp0yF8IBPjqhYaswUWSAnT2wttJCpiv4JVqYC1kV-njLhcSpj-iX7/s400/barra_menu.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Un comodo menù per il metodo di inserimento</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
Bene, ora siete pronti a scrivere in giapponese, magari per tenervi in contatto con i vostri amici del Sol Levante.<br />
Nel prossimo post vorrei parlarvi di Gnome Shell 3.8 e di come ho personalizzato il mio sistema.<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-34800055939453265712013-09-11T21:41:00.001+02:002015-04-14T21:32:09.538+02:00Raspberry Pi - come impostare un numero IP staticoIn questa guida spiegherò come impostare un indirizzo IP statico sul vostro Raspberry Pi, prima di iniziare la procedura pratica vorrei illustrare un po di teoria.<br />
Un indirizzo IP serve ad identificare un dispositivo collegato in rete, generalmente il vostro router assegna dinamicamente un indirizzo IP ad ogni nuovo dispositivo collegato. Se abbiamo un computer collegato alla rete casalinga e lo scolleghiamo, il suo indirizzo IP viene liberato e lo stesso potrebbe essere assegnato ad un altro nuovo dispositivo che dovesse collegarsi successivamente. La stessa cosa avviene per il vostro Raspberry Pi, il quale ad ogni riavvio potrebbe avere un indirizzo IP differente.<br />
Avere un IP dinamico risulta quindi decisamente scomodo quando vogliamo accedere in remoto al nostro Raspberry Pi, infatti ogni volta dovremmo essere a conoscenza del suo indirizzo IP. Questo vale sia per accedere al nostro hard disk condiviso tramite Samba, sia per accedere a Transmission-daemon o aMule-daemon e ancora se vogliamo accedere tramite SSH.<br />
Impostare un IP statico farà in modo che, all'avvio, il Raspberry Pi otterrà sempre lo stesso indirizzo IP e di conseguenza sapremo sempre a quale indirizzo trovarlo.<br />
Detto questo effettuiamo il login ed iniziamo a conoscere come vedere quale indirizzo IP ha attualmente il Raspberry Pi con il seguente comando:<br />
<br />
sudo ifconfig<br />
<br />
Questo comando visualizza molte informazioni riguardanti la connessione di rete, in particolare quelle della sezione denominata eth0 riguardano la connessione via cavo ethernet, wlan0 invece riguarda la connessione Wi-Fi.<br />
Le informazioni che ci saranno utili sono l'indirizzo IP, descritto come "indirizzo inet:" e il numero della "Maschera". Un indirizzo IP è formato da quattro serie di numeri separati da un punto, anche la maschera ha un formato simile e di solito è 255.255.255.0, ma non sempre.<br />
<br />
Un'altra informazione necessaria è l'indirizzo IP del nostro router, possiamo trovarla con il seguente comando:<br />
<br />
route<br />
<br />
Anche in questo caso verranno visualizzate diverse informazioni, il valore che vi interessa lo troverete nella riga che inizia con "default", sotto la colonna Gateway.<br />
Nella riga subito sotto invece, sotto la colonna Genmask, troverete il valore della maschera che dovrebbe essere la stessa di quella trovata con ifconfig.<br />
<br />
Ora che abbiamo ottenute tutte le informazioni possiamo andare a modificare il file interfaces che si trova in /etc/network/, quindi scriviamo:<br />
<br />
cd /etc/network<br />
<br />
Facciamo una copia di sicurezza di interfaces in modo da poterlo ripristinare in qualsiasi momento.<br />
<br />
sudo cp interfaces interfaces.backup<br />
<br />
Ora apriamo interfaces con l'editor di testo nano:<br />
<br />
sudo nano interfaces<br />
<br />
Il file di default dovrebbe essere come questo:<br />
<br />
auto lo<br />
<br />
iface lo inet loopback<br />
iface eth0 inet dhcp<br />
<br />
allow-hotplug wlan0<br />
iface wlan0 inet manual<br />
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf<br />
iface default inet dhcp<br />
<br />
Prima cosa da fare è aggiungere il carattere # all'inizio della riga "iface eth0 inet dhcp", questo la farà diventare un commento e verrà ignorata.<br />
Quindi subito sotto aggiungiamo le seguenti righe:<br />
<br />
auto eth0<br />
iface eth0 inet static<br />
<br />
Di seguito aggiungiamo nell'ordine l'indirizzo IP del Raspberry Pi, l'indirizzo del router ed infine la maschera, come segue:<br />
<br />
address [indirizzo_IP_del_Raspberry_PI]<br />
gateway [indirizzo_IP_del_router]<br />
netmask [numero_della_maschera]<br />
<br />
Alla fine il vostro file dovrebbe somigliare a questo:<br />
<br />
auto lo<br />
<br />
iface lo inet loopback<br />
#iface eth0 inet dhcp<br />
auto eth0<br />
iface eth0 inet static<br />
<br />
address 11.96.182.58<br />
gateway 11.96.172.1<br />
netmask 255.255.255.0<br />
<br />
allow-hotplug wlan0<br />
iface wlan0 inet manual<br />
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf<br />
iface default inet dhcp<br />
<br />
Salviamo premendo i tasti Ctrl + o, premiamo il tasto Invio per confermare il nome del file, quindi usciamo dall'editor con Ctrl + x.<br />
Ora riavviamo il Raspberry Pi scrivendo<br />
<br />
sudo reboot<br />
<br />
Se non avete fatto errori ora l'indirizzo IP sarà quello da voi impostato.<br />
Verifichiamo se la connessione ad internet funziona provando con il comando ping sul sito di Google o qualunque altro indirizzo valido.<br />
<br />
ping www.google.com<br />
<br />
Il risultato deve essere qualcosa del genere:<br />
<br />
PING www.google.com (173.194.40.20) 56(84) bytes of data.<br />
64 bytes from mil02s06-in-f20.1e100.net (173.194.40.20): icmp_req=1 ttl=51 time=264 ms<br />
64 bytes from mil02s06-in-f20.1e100.net (173.194.40.20): icmp_req=3 ttl=51 time=267 ms<br />
64 bytes from mil02s06-in-f20.1e100.net (173.194.40.20): icmp_req=4 ttl=51 time=232 ms<br />
64 bytes from mil02s06-in-f20.1e100.net (173.194.40.20): icmp_req=5 ttl=51 time=237 ms<br />
<br />
Fermatelo premendo Ctrl + c.<br />
Avete finito, il vostro Raspberry Pi ora ha l'indirizzo IP statico e saprete sempre come collegarvi in remoto.<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0tag:blogger.com,1999:blog-6135547631044733480.post-42709429347905644472013-08-24T14:30:00.001+02:002015-06-09T22:05:18.853+02:00Raspberry Pi - come installare e configurare aMule-daemonNel precedente <a href="http://maxtrixnix.blogspot.it/2013/08/raspberry-pi-come-installare-e.html">post</a> vi ho guidati nell'installazione e configurazione di Transmission-daemon sul Raspberry Pi, vediamo adesso come installare aMule-daemon, il client peer-to-peer per le reti di scambio file eDonkey e Kademlia. Come Transmission-daemon anche aMule-daemon lavora in background e si potrà controllare in remoto da un computer o altro dispositivo collegato alla rete.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMPzIrQoq7KNs46HLa9pgLmY6-pQ6pgeABGwuSk6NfkSUXP8IhY1BUu3y_ztK-Fb5lPUgrmxOXqwTh7l_M-14_tcCQpBQVVSM6SWjp7EBoAEA28Qip_ltiMFCExyvTKEOi2eGkfgmdw7OA/s1600/amule.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMPzIrQoq7KNs46HLa9pgLmY6-pQ6pgeABGwuSk6NfkSUXP8IhY1BUu3y_ztK-Fb5lPUgrmxOXqwTh7l_M-14_tcCQpBQVVSM6SWjp7EBoAEA28Qip_ltiMFCExyvTKEOi2eGkfgmdw7OA/s400/amule.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">aMule - il client peer-to-peer per le reti eDonkey e Kademlia</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
<br />
Prima di iniziare la procedura di installazione assicuratevi di aver collegato e configurato correttamente un disco esterno tramite porta USB, se non lo avete già fatto fatelo ora (<a href="http://maxtrixnix.blogspot.it/2013/06/raspberry-pi-come-installare-e.html">qui troverete come farlo</a>).<br />
A questo punto poniamo il caso che il vostro disco sia montato in /mnt/nas.<br />
Prima di installare aMule-daemon aggiorniamo la lista dei pacchetti del repository con<br />
<br />
> sudo apt-get update<br />
<br />
quindi installiamo con<br />
<br />
> sudo apt-get install amule-daemon amule-utils amule-utils-gui<br />
<br />
aMule avrà bisogno di 2 cartelle, una dove mettere i file completati ed una dove mettere i file temporanei.<br />
Se non abbiamo già due cartelle adatte allo scopo sul nostro disco esterno possiamo crearle adesso.<br />
<br />
> mkdir /mnt/nas/incoming<br />
<br />
> mkdir /mnt/nas/temp<br />
<br />
Ora avvieremo per la prima volta aMule in modo che questo crei i file di configurazione, otterremo un messaggio d'errore, ma ignoratelo, è normale che succeda.<br />
<br />
> amuled<br />
<br />
I file di configurazione verranno messi in una cartella nascosta nella nostra home, il suo nome è .aMule. Le cartelle che hanno il nome che inizia con un punto sono nascoste, ma potete vederle aggiungendo l'opzione -a al comando ls, così<br />
<br />
> ls -a<br />
<br />
Ora impostiamo un password per aMule invocando il comando:<br />
<br />
> amuled -e<br />
<br />
Ci verrà chiesto di inserire la password.<br />
<br />
Se per qualche strano motivo non riuscite ad impostare la password con il comando amuled -e, allora potrete inserirla manualmente nel file di configurazione in questo modo:<br />
Inserite il sequente comando inserendo la password da voi scelta al posto di <i>password</i>.<br />
<br />
> echo -n "<i>password</i>" | md5sum | awk '{print $1}'<br />
<br />
Verrà visualizzato sul terminale una serie di lettere e numeri apparentemente senza senso, in realtà quella è la vostra password criptata in md5.<br />
<br />
Copiatela ed aprite il file di configurazione per inserire la password con<br />
<br />
> nano .aMule/amule.conf<br />
<br />
amule.conf è un file piuttosto lungo, ad ogni riga corrisponde
un'impostazione. Per rendere più ordinata questa lunga lista di opzioni,
è stata suddivisa in sezioni contrassegnate da un nome posto tra
parentesi quadre.<br />
<br />
Cercate la sezione [ExternalConnect] ed inserite la password criptata alla voce ECPassword. Poche righe sotto cercate la sezione[WebServer] ed inserite di nuovo la password criptata alla voce Password.<br />
<br />
Ora che la password è inserita, continuiamo con la modifica del file di configurazione. Se non lo avete già aperto per inserire la password manualmente apritelo adesso con il comando<br />
<br />
> nano .aMule/amule.conf<br />
<br />
<br />
Nella sezione [eMule] andate alla riga che inizia con TempDir ed inserite l'indirizzo della cartella per i file temporanei:<br />
<br />
TempDir=/mnt/nas/temp<br />
<br />
Poi trovate la riga con IncomingDir ed inserite l'indirizzo della cartella per i file completati:<br />
<br />
IncomingDir=/mnt/nas/incoming<br />
<br />
Per default l'indirizzo di queste due cartelle è dentro la cartella .aMule, questo vorrebbe dire utilizzare la scheda SD per scaricare i nostri file! Per questo motivo le modifichiamo inserendo gli indirizzi delle cartelle sull'HD esterno.<br />
<br />
Se il vostro provider internet è Fastweb sarebbe preferibile impostare le URL dei nodi Kad e dei server ed2k. Potete farlo trovando le righe che iniziano rispettivamente con KadNodesUrl e Ed2kServersUrl, modificandole come segue:<br />
<br />
KadNodesUrl=http://www.adunanza.net/files/emule/adu_nodes.dat<br />
Ed2kServersUrl=http://update.adunanza.net/servers.met<br />
<br />
Ora andate a cercare la sezione [ExternalConnect] ed assicuratevi che la riga AcceptExternalConnections sia impostata ad 1 come segue:<br />
<br />
AcceptExternalConnections=1<br />
<br />
Questo rende attivo il collegamento in remoto al demone.<br />
Per finire, nella sezione [WebServer] modifichiamo questa riga come segue:<br />
<br />
Enabled=1<br />
<br />
Questa attiva il server web o meglio una pagina web che permette il controllo del programma.<br />
Possiamo salvare le modifiche premendo i tasti Ctrl + o, premiamo il tasto Invio per confermare il nome del file, quindi usciamo dall'editor con Ctrl + x.<br />
Ora sarà necessario modificare un altro file per permettere allo script di avvio del demone di funzionare correttamente.<br />
<br />
> sudo nano /etc/default/amule-daemon<br />
<br />
Nella riga AMULED_USER inserite il vostro nome utente<br />
<br />
AMULED_USER="<i>nome_utente</i>"<br />
<br />
Salvate e uscite dall'editor con i soliti Ctrl + o, Invio e Ctrl + x.<br />
La configurazione è completata, ora potete avviare aMule-daemon con il comando<br />
<br />
amuled -f<br />
<br />
l'opzione -f forza l'avvio in background, in questo modo potrete chiudere il terminale e lasciarlo lavorare.<br />
<br />
<u>Accedere ad aMule-daemon in remoto da un altro computer</u><br />
<u><br /></u>
Per poter accedere in remoto e controllare aMule abbiamo due possibilità, la prima è quella di utilizzare l'apposita pagina web creata dal web server di aMule-daemon, la seconda è quella di installare l'interfaccia grafica del programma sul computer che vogliamo utilizzare per controllarlo.<br />
<br />
Utilizzare la pagina web è la cosa più semplice ed immediata, senza contare il vantaggio di poter utilizzare qualsiasi tipo di device per controllare il demone, l'importante è che abbia un browser internet.<br />
Per accedere alla pagina web di aMule-daemon dovete inserire nel browser l'indirizzo IP del Raspberry Pi seguito dal carattere : (due punti) ed il numero della porta che di default è 4711. Sarà qualcosa del genere:<br />
<br />
172.16.254.1:4711<br />
<br />
Vi comparirà una pagina con la richiesta di inserire la password, digitate la password che avete usato per aMule e accederete alla pagina di controllo del demone.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2hR9JWyAi1JaaBxUDd5He0vpzPnDdHgaNNfKkta8CPy9uA5jRxVWJDnTKIi7JGPDXOPKvWXlVcxo3AlPJsNPt6wEH0JPHDp3QUy25q9nxnhJ-RTbluhlSs8HQ8kBQB4Ve6xSK9wuqemHv/s1600/amule_webserver.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2hR9JWyAi1JaaBxUDd5He0vpzPnDdHgaNNfKkta8CPy9uA5jRxVWJDnTKIi7JGPDXOPKvWXlVcxo3AlPJsNPt6wEH0JPHDp3QUy25q9nxnhJ-RTbluhlSs8HQ8kBQB4Ve6xSK9wuqemHv/s400/amule_webserver.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">la pagina di aMule vi chiede la password per l'accesso</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
<br />
Per collegarvi in remoto dal vostro computer desktop è possibile installare ed utilizzare l'interfaccia grafica aMuleGUI. Il vantaggio di utilizzare l'interfaccia grafica è quello di avere un controllo completo del programma, come se fosse installato sul vostro computer. Se utilizzate Ubuntu potete installarlo utilizzando Ubuntu Software Center cercando aMuleGUI, per altri sistemi derivati da Debian potete installarlo da Terminale con il comando<br />
<br />
sudo apt-get install amule-utils-gui<br />
<br />
Per altre distribuzioni GNU/Linux utilizzate i comandi destinati all'installazione dei pacchetti.<br />
L'utilizzo di aMuleGUI è molto simile a quello del programma aMule, appena avviato vi comparirà una finestra con i dati relativi alla connessione in remoto.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAPxFRhDM0wYCgWvLdeXTc5C6jhMjjUVLSeoD3XIP9RqTcP8uFKuD-6RhKEhfXsYAeJSTuvI1AQ-5XYennsyRN7ZT4YNcXwARzIGFGAgZ3lEyDTWMv71c0s2XdORlKsMrryGZR71vARNBC/s1600/amule_gui_connessione.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="327" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAPxFRhDM0wYCgWvLdeXTc5C6jhMjjUVLSeoD3XIP9RqTcP8uFKuD-6RhKEhfXsYAeJSTuvI1AQ-5XYennsyRN7ZT4YNcXwARzIGFGAgZ3lEyDTWMv71c0s2XdORlKsMrryGZR71vARNBC/s400/amule_gui_connessione.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Parametri di connessione in remoto ad aMule-daemon</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
<br />
Nel campo "Connetti a" inserite l'indirizzo IP del vostro Raspberry Pi, nel campo successivo inserite il numero della porta che di default è 4712. Per finire inserite la password che avete utilizzato per aMule e fate un click sul tasto Connetti.<br />
<br />
Buon utilizzo!<br />
<br />Massimilianohttp://www.blogger.com/profile/07717085888734756919noreply@blogger.com0