sabato 21 luglio 2012

Gnomando


"La risposta è dentro di te ma è sbagliata ! " (Parola di Quelo)


Eccolo qui. È un desktop completo e funzionale basato su Gnome Shell, con risultati estetici per altro molto interessanti.

Tutto nasce l'altra mattina, mentre il mio sguardo vagava tra i fondi di caffè e riflettevo su Shell e sui suoi difetti più rilevanti che qui sintetizzo :

  1. la mancanza di un dock veramente decente (menu compresi).
  2. la mancanza di una tasklist accessibile.
  3. la difficoltà nel lanciare più instanze (di un terminale per esempio).
  4. la mancanza di icone sullo schermo.
  5. la mancanza di pulsanti per gestire le finestre.
  6. la mancanza di un vassoio di sistema.
  7. eccetera.

Così mi sono detto : perché non farne una piccola specifica e vedere come risolverne i problemi ?

Specifica dei requisiti

Abbiamo la lista, abbiamo i mezzi, diamoci da fare !

Premetto che al punto 7 ci lavorerò in futuro ma già arrivare fino al punto 6 dà delle belle soddisfazioni.

Partiamo dal punto 1.

Ci sono varie estensioni che fanno il caso nostro con dock di ogni genere ma ricordo distintamente che un paio di anni or sono, in un momento di tristezza lavoravo con XP (confesso che ho ancora un paio di vecchi PC in giro dove c'è il suo fantasma).

XP era un bel prodotto, molto configurabile e ovviamente l'avevo cambiato come piaceva a me.

Allora usavo rocketdock, ed era molto comoda. Ovviamente era closed source, con plugin closed source e capace di intercettare ogni singolo tasto o movimento del mouse, quindi potenzialmente pericolosa per i miei standard di sicurezza.

Sotto Linux c'è qualcosa di molto meglio di rocketdock, c'è Cairo Dock che è nata proprio per essere integrata in Gnome.

Cairo dock ci risolve molto elegantemente il punto 1 e il punto 2, perché dispone di una taskbar, inoltre è possibile risolvere anche il punto 3 meglio di come farebbe un menù ordinario e non dà fastidio, lasciando allo schermo, massima visibilità.

Non è meraviglioso tutto ciò ?

Bene a questo punto non ci restano che i punti 4 e 5 che risolveremo con una modifica della configurazione e il punto 6 che modificheremo con una estensione, scritta qui su due piedi e una sedia.

Let's start

Per partire, useremo la guida al favoloso mondo di Debian per installare una Wheezy o la prossima fantastica distribuzione che verrà nel futuro.

Dico subito che l'installazione che ho fatto è stata la più semplice, cioè la classica Squeeze, desktop standard con un dist-upgrade postumo in single user mode e un autoremove.

Ho installato anche il multimedia, come spiegato nell'apposito capitolo.

Alla ripartenza, la qualità estetica razionale della nuova Debian, si è subito fatta notare :



e in modalità Activities :


Premesso che durante l'installazione ho aggiunto ciò che mi serviva per far funzionare il mio hardware (pacchetti broadcom-sta-dkms per il mio wi-fi e linux-firmware-nonfree per la Radeon), la prima cosa da fare è stata installare le librerie per i programmi a 32 bit (trattandosi di una installazione a 64), per far questo è sufficiente lanciare :

sudo apt-get ia32-libs-gtk
 
sempre che abbiate messo il vostro utente tra i sudoers, come spiegato durante l'installazione.

D'ora in poi quando dirò di installare un pacchetto, si intenderà questa procedura.

Comunque questo installerà tutto il supporto a partire dalle libc a 32 bit per eseguire i programmi a 32 su un 64 bit. 

Firefox, e Thunderbird, vanno installati a parte e io li installo in /opt, come root scaricandoli dal sito ufficiale. State attenti che allo stato attuale, mentre nella distribuzione trovate browser a 64 bit, browser precompilati come Firefox e Chrome sono ancora a 32, però per Firefox potete scegliere di installare da ftp la versione a 64 che non è ancora ufficiale.

Una volta scaricati dovete costruire i link con alacarte e metterli dove meglio preferite (di solito nel menù Internet).

Una caratteristica di questo tipo di installazione è quella di fornirvi il browser aggiornato appena Mozilla deciderà di rilasciare una nuova versione. Non sarà però possibile l'aggiornamento in automatico, perché l'avete installato come root, comunque, una volta avvisati, potrete avviare il browser come root, andare in Help -> About Firefox e quindi Check for Update, aggiornandolo per tutti gli utenti.

Stessa cosa dicasi per Thunderbird.

Ora cerchiamo di risolvere il punto 4 e recuperare le nostre icone sullo schermo, questo si fa da dconf-editor in questo modo :


Chiave :  org->gnome->desktop->backgroud->show-desktop-icons

Il tema delle icone di default di Gnome è abbastanza ugly ma c'è Gnome Brave che è esteticamente molto più accettabile, quindi installiamo i pacchetti gnome-brave-icon-theme e già che ci siamo anche lo gnome-tweak-tool, cioè gli Advanced Settings essenziali che ci serviranno per il prossimo passaggio.

Aperto gnome-tweak-tool e superato l'impatto dell'immagine sulla destra, possiamo andare nell'apposita sessione :


cioè aggiungendo a Shell, dove ci sono gli Arrangement of button on the titlebar, il tag All e recuperando così i tasti per minimizzare e massimizzare oltre che quello per chiudere, cioè il punto 5.

Già che ci siete, visto che avete un sacco di spazio non usato in alto, potete aggiungere la data, i secondi e il giorno della settimana all'orologio. Vi consiglio di evitare i secondi perché distrae un attimo.

Ora spostiamoci su Theme :


e modifichiamo Icon Theme a Gnome-brave.

Il desktop ha assunto un aspetto diverso e più usabile :


Ci manca Cairo Dock e un po` di sofware da aggiungere :

Installiamo i pacchetti :


flashplugin-nonfree
cairo-dock
file-roller
nautilus-share
nautilus-open-terminal
gedit

E se volete anche :

simple-scan
geany
chromium
audacity
banshee 

Se avete installato anche la parte multimedia vi potrebbe far piacere :

ffmpeg
avidemux

e tutto quello che preferite, secondo le vostre esigenze.

Impostare Cairo Dock 

Cairo dock, offre una serie di funzionalità che sono replicate da Gnome Shell e molte che invece mancano.

Per esempio non ha senso avere un gestore dei desktop da queste parti, visto che i desktop di Gnome Shell sono dinamici e vanno benissimo così, anche se un po`duri da usare all'inizio. Per switchare da uno all'altro basta dare Alt-Ctrl-Up o Alt-Ctrl-Down e si scorre che è una meraviglia, per organizzarli si va in Activities.

Per lanciare Cairo Dock, occorre avviare quella che nel menù si chiama :

GLX-Dock

cioè Cairo Dock con le OpenGL.

Nella barra del Dock, troverete anche il simbolino di Debian con il tanto compianto menù originale che vi mancava.

Premendovi il tasto destro, sotto Cairo Dock, troverete la voce Launch Cairo Dock At Startup che una volta cliccata consoliderà la barra nel vostro desktop.

Sempre col tasto destro su qualsiasi iconcina troverete Cairo Dock con la sessione Configure.

Lì potete scegliere: vi dico velocemente quello che ho modificato secondo le mie preferenze :
  • Non amando molto gli effetti speciali ho tolto tutti gli effetti da Behaviour lasciando il Fade Out in appearance disappearance, e Bounce come animation su OnClick.
  • Come Appearance ho scelto Curve.
  • Sotto Add-Ons ho lasciato solo Application-Menu, dove ho cambiato l'iconcina con una stellina che ho trovato su Internet, perché il simbolo di Debian mi sembrava poco indicato.

Eliminati tutti i contenuti, la barra si presenta con a destra il menù e i launchers e a sinistra la taskbar, con le varie istanze :


Aperta una finestra sopra la barra, questa si dissolve permettendo la piena usabilità per poi apparire quando si raggiunge col mouse il fondo dello schermo.

Il risultato dopo un minimo di abitudine è molto buono.

Resta inalterato il meccanismo di Gnome Shell, per i desktop, le activities e le applications.

Multiple istanze 

Il problema delle multiple istanze si risolve egregiamente proprio dalla Cairo Dock.

Infatti esistono programmi come Synaptic, Skype, la Mail, Eclipse eccetera, che non ammettono multiple istanze e programmi come nautilus il terminale e il browser che ne ammettono e sono auspicabili.

L'idea alla base del vecchio menù era quello di lanciare comunque multiple istanze, la logica dei moderni pannelli è di lanciarne una sola per evitare che la gente si incasini.

Con Cairo Dock, si può scegliere, limitatamente alle applicazioni nel launcher,  tramite un flag :



Il flag si trova nel menù Edit (raggiungibile sempre dal tasto destro sull'icona) nella sezione Extra Parameters e si chiama :

Prevent this launcher from stealing this application from taskbar

Se lo si imposta, lanciando per esempio due file manager, si vedranno due differenti istanze di nautilus e non verrà richiamata la stessa due volte per obbligare a un Ctrl-N, che è una aberrazione.

Il launcher integrato in Activities, resterà ovviamente invariato e siccome sarà diverso da quello principale, consiglio di lasciarlo praticamente vuoto in modo che ospiterà solo i launcher delle finestre attive (taskbar) quadrando il cerchio.

Due parole sulle Extensions

A seguito di varie critiche riguardanti l'usabilità, sollevate anche da Torvalds, il team dello Gnomo ha pensato di sviluppare le famose extensions.

Il nuovo Gnome ha infatti esportato le proprie funzionalità grafiche e operative, in ambiente javascript e andando in una apposita cartella che dovrebbe essere   /usr/share/gnome-shell/js , trovate tutta la descrizione dei pannelli e dei menù di sistema.

Ovviamente nel puro stile gnomesco, il tutto è scevro di documentazione e di commenti e la gente si arrabatta come può.

Le estensioni, permettono di inserire o globalmente /usr/share/gnome-shell/extensions o localmente all'interno della home dell'utente ~/.local/share/gnome-shell/extensions, dei folders con chiave unica (name@domain) in cui si trovano  coppie di files cioè : un json descrittivo metadata.json e un file javascript, extension.js.

Tali pezzetti di codice possono essere eseguiti se attivati, dopo la preparazione dell'interfaccia, aggiustandone alcuni aspetti.

Se poi siete abbastanza bravi come i ragazzi di Mint, potete anche scrivervi degli stupendi menù e trasformare l'ambiente in qualcosa di molto simile a Cinnamon.

System Tray

Il System Tray di Gnome è piuttosto perverso, come sappiamo appare in una barra in semitrasparenza andando nell'angolino in fondo a destra dello schermo.

Non vi spiegherò come eliminare questa barra, perché ci sono diverse estensioni che lo fanno e personalmente non mi dà fastidio.

Diverso è il discorso di ciò che accade per esempio lanciando Skype o Banshee, dove l'iconcina resta lì è richiede strane acrobazie per andarla a recuperare.

Questo, quando paradossalmente abbiamo tutto quello spazio scandalosamente vuoto a disposizione nella barra in alto.

Purtroppo non ho trovato un modo dinamico per portare tutte le icone del tray nella barra in alto. Ci ho lavorato d'altra parte qualche ora, però possiamo scegliere come mettere e cosa togliere.

Si procede così :

mkdir ~/.local/share/gnome-shell/extensions/adjusttoppanel@duraminga
cd ~/.local/share/gnome-shell/extensions/adjusttoppanel@duraminga
e ora che siamo qui dentro dare gedit metadata.json e inserire il seguente testo :

{
  "description": "Adjust top Panel",
  "name": "Adjust Top Panel",
  "shell-version": [
    "3.2",
    "3.4"
  ],
  "uuid": "adjusttoppanel@duraminga",
  "version": 1
}

Bene, fatto questo salviamo e usciamo.

Poi scriviamo un altro file con gedit extension.js e ci inseriamo :

/**
 Copyright 2012 by El Duraminga (elduraminga.blogspot.it)

 Adjust Top Panel is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 
Adjust Top Panel is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 Please see the GNU General Public License at <http://www.gnu.org/licenses/>.
**/

const Panel = imports.ui.main.panel;
const StatusIconDispatcher = imports.ui.statusIconDispatcher;

// Insert your lists here
const removeFromPanel=['a11y'];
const addToSystemTray=['skype','banshee','vlc','empathy'];


function init() {}

function enable() {
  for ( i=0;i<removeFromPanel.length;++i )
  {
    Panel._statusArea[removeFromPanel[i]].actor.hide();
  }
  for ( i=0;i<addToSystemTray.length;++i )
  {
    StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS[addToSystemTray[i]]=addToSystemTray[i];
  }
}

function disable() {
  for ( i=0;i<removeFromPanel.length;++i)
  {
    Panel._statusArea[removeFromPanel[i]].actor.show();
  }
  for ( i=0;i<addToSystemTray.length;++i)
  {
    StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS[addToSystemTray[i]]='';
  }
}

Focalizziamo l'attenzione sui due vettori :

const removeFromPanel=['a11y'];
const addToSystemTray=['skype','banshee','vlc','empathy'];


Nel primo ci sono le icone che stanno in alto e che non vogliamo più, normalmente la gente lo fa per nascondere l'accesso facilitato, che in fondo però non è brutto, io l'ho messo a titolo di esempio (a11y) .

La lista completa la trovate in /usr/share/gnome-shell/js/ui/panel.js, tra le prime righe.

La seconda è l'insieme delle icone che, se a attivate, andranno rimosse dalla barra in fondo per essere portate in quella in alto, io ci ho messo skype, banshee, vlc ed empathy, se avete altro lo potete aggiungere.

Attivandola con gnome-tweak-tool, dovreste ottenere il risultato desiderato.

Conclusioni

Tutte le conclusioni che possiamo trarre, le vedete nella prima schermata in alto, fino ad ora il sistema nel suo complesso si è rivelato molto comodo.

A mio parere una soluzione simile, se a nessuno viene in mente di cambiare radicalmente le cose nei prossimi mesi, è abbastanza stabile e innovativa da diventare un modo comodo di lavorare, soprattutto perché offre un sacco di spazio.

Nel nuovo Gnome c'è anche Epiphany (basato su webkit) che si chiama semplicemente Web e che si apre in full screen. Anche se è ancora un po` immaturo, si può per esempio lasciare su uno dei desktop virtuali di Gnome e lavorare sugli altri switchando con Ctrl-Alt- Up & Down, in modo da avere una piena visibilità per eventuali applicazioni o documentazione.

Poi ognuno può decidere come meglio crede, in fondo questo è il bello dell'essere free.

mercoledì 18 luglio 2012

Il favoloso mondo di Debian




In questo articolo ripropongo un post già scritto, con estensioni e aggiornamenti, riguardo a Debian e in particolare a Wheezy che sta cambiando molto rapidamente.

Prima di tutto la bella notizia : Wheezy che per chi non lo sapesse è il pinguino dal farfallino rosso di Toy Story 2 , è stato congelato e riportato al Polo Sud.

Si suppone che "presto" ( che nella scala temporale di Debian equivale a circa sei mesi ). diverrà una stable e andrà a costituire uno dei capi saldi più interessanti dell'intero panorama sfenisciforme.

Un mesetto fa, in occasione di una giornata di vuoto afoso particolarmente pesante, in cui scrissi che sembrava che il presidente Skroob (Scrocco) avesse risucchiato l'aria del pianeta con un enorme aspirapolvere, installai una KDE su Wheezy concludendo che andava abbastanza bene.

Oggi che sono finiti anche i vari anticicloni coi nomi di diavoli e demoni, che vanno tanto di moda in tempi di crisi, confermerei parzialmente la mia iniziale impressione, precisando che circa un terzo di KDE va bene e astenendomi sul commentare tutto il resto.

È giunto quindi il momento di riparlare di Debian,  di cosa è e di come si installa, un po`per cultura generale, un po`perché la nuova Wheezy col kernel 3.2Gnome 3.4 e Kde 4.8 , uniti alla proverbiale affidabilità di questa distribuzione, si annuncia molto interessante.


Filosofia Debian e relative asperità

 

No Linux for newbe

Debian non è una distribuzione per newbe, infatti coloro che non sono newbe, di solito la usano per creare le più famose e variopinte distribuzioni commerciali che, a loro volta sono usate per altre distribuzioni, ancora più variopinte. 

Debian è stata ideata da un tale Ian Murdok nel 1993, cioè circa due anni dopo l'annuncio di Torvalds sulla nascita di Linux.

Il progetto Debian, ha sempre avuto come scopo la diffusione e la salvaguardia del software libero e lo ha fatto con la stesura di un vero e proprio "contratto sociale", in puro stile Rousseau.

Se ne deduce che tutto quello che trovate in Debian è idealmente "libero" cioè è software rilasciato in Open Source sotto licenza GNU o analoga, che ne consentono la libera distribuzione e modifica.

In un mondo perfetto tutto questo sarebbe bellissimo mentre nel mondo reale ci porta ad alcune inevitabili asperità.

Per esempio il mio nuovo computer ha una scheda Radeon (eh lo so ...), la AMD rilascia i suoi driver legacy che sono sempre stati fonte di incompatibilità di varia natura, di cui esiste una estesa letteratura. A me non davano molto fastidio a parte un crash dell'intero ambiente grafico ogni 15 minuti circa e qualche Kernel Panic allo spegnimento del sistema. Adesso non vanno proprio più.

I drivers open prima non acceleravano il 2D/3D (non una gran perdita per i cultori di twm), quelli nuovi funzionano bene o quasi, però richiedono firmware caricato nella scheda e il firmware è "non-free".

Dunque se hai una scheda che è montata sulla metà dei computer del mondo o non usi l'accelerazione grafica o metti qualcosa d'altro, tipo Ubuntu che è completamente basata su Debian (e quindi ne sfrutta il lavoro), ma non adotta la stessa filosofia ... e a proposito di filosofia, Seneca direbbe : Cui Prodest ?

Un altro strano cruccio della distribuzione Debian è che se cercate Firefox per esempio non lo trovate. Dovete cercare IceWeasel e la motivazione è che Mozilla ha limitato la distribuzione del pacchetto Firefox e ne ha registrato il marchio.

Però IceWeasel non è mai esattamente uguale all'ultima versione di Firefox e restate indietro (nel male e nel bene) di qualche generazione.

Personalmente ritengo che il fatto che un Browser, in pratica lo strumento più facilmente attaccabile su un sistema moderno, non sia ricompilato da a uno a caso e sia gestito in modo centralizzato da una organizzazione seria come Mozilla, non sia poi così grave.

Ma essere santi si sà comporta immani sacrifici, e se volete il software Firefox installato per default sulla maggioranza delle distribuzioni,  o installate il software dal sito ufficiale e lo mettete nella home (pessima idea per ovvi motivi di sicurezza) o lo mettete in /opt come root e rinunciate agli aggiornamenti, o installate Ubuntu e siamo da capo.

Queste sono le asperità di cui parlo nel titolo, per il resto la filosofia Debian garantisce che ciò che averrà in seno a questa distribuzione, sarà sempre nell'interesse dell'utente e della comunità, senza imposizioni commerciali e quindi fornirà sempre una varietà piuttosto eterogenea di soluzioni allo stesso problema.

Stable, Testing e Unstable

Debian, ha i propri dischi che trovate qui ,l'utente di solito può scegliere tra vari tipi e modelli di installazione.

Mi dilungo un attimino sullo schema attuale delle distribuzioni Debian per capirci qualcosa di più.

È abbastanza chiaro, per chi usa Linux che una distribuzione non è altro che un insieme di pacchetti software che si possono installare, modificare rimuovere eccetera.

La logica vuole che i pacchetti (decine di migliaia), siano interdipendenti per questione di librerie generiche e dipendenze implicite o esplicite di compilazione, quindi occorre stabilire dei vincoli di aggiornamento.

Sui server di debian.org e dei vari mirror, troviamo la distribuzione stabile o stable, che ha un nome a seconda della versione: Lenny 5.0, Squeeze 6.0, Wheezy 7.0 ecc... e la distribuzione non stabile o unstable, che è sempre la Sid.

Queste sono le distribuzioni conosciute storicamente, fino a quando Debian ha aperto i repositories Testing che sono una soluzione intermedia (con qualche criticità).

Il software nel mondo open ha delle patch e degli improvements, le prime sono interenti i bug di programmazione (buffer overflow, segmentation fault, global termonuclear war ecc. ...) , i secondi sono delle nuove features che (tranne rare eccezioni come chromium), comportano quasi sempre l'introduzione di nuove problematiche.

Nonostante i singoli pacchetti siano compilati e funzionino correttamente, non è garantito che non entrino in conflitto con certe versioni di pacchetti interdipendenti : per esempio non è garantito che a fronte di un aggiornamento di Xorg, funzioni ogni singolo driver di ogni singola scheda grafica, specie se sono closed source e quindi non direttamente gestiti e testati dalla comunità.

Ebbene, secondo la visione di Debian, perché una stable, possa definirsi tale, fin dai sei mesi prima dell'uscita ufficiale non deve più incorporare improvements, ma solo patch in una lenta opera di stabilizzazione. Il ciclo completo l'ho rappresentato nell'immagine seguente.

In sintesi :
  • I nuovi pacchetti con le nuove features, finiscono nella Unstable che è Sid che è aggiornata continuamente e infatti è una rolling release.
  • Quando i pacchetti inseriti si dimostrano "stabili nell'insieme" e in assenza di bug rilevanti in un paio di settimane, sono portati nella Testing che è la prossima distribuzione stabile, allo stato attuale Wheezy che quindi è anch'essa una rolling release.
  • Alcuni mesi prima del rilascio della nuova stable, la Wheezy diviene frozen, e accetta solo aggiornamenti di stabilità senza più improvements (mentre la Sid continuerà ad evolvere ad libitum).
  • Al momento del rilascio, la stable è duplicata in un nuovo repository, col nome nuovo che sarà dato alla prossima release,il link della stable passa sulla precedente testing e il link della testing sul nuovo repository, così il ciclo continua.
È possibile, dopo una installazione regolare, scegliere da quali repositories scaricare, attualmente abbiano la possibilità di vagare tra : squeeze, wheezy , stable, unstable, testing e ciò comporta le seguenti conseguenze :
  1. Se si sceglie sid o unstable, avremo sempre una distribuzione rolling sulla breccia (molto sulla breccia). Di solito è quella usata dalle distribuzioni "Debian based" ma per il solo fatto che poi sono compiuti dei test e degli aggiornamenti a parte dalla comunità che la rilascia, sia questa profit (es. Ubuntu) o non-profit (es. LMDE).
  2. Se si sceglie squeeze (o qualsiasi prossima stable by name), questa riceverà un supporto per tre anni (un anno dopo la release successiva). Quello della 5.0 (Lenny) è scaduto nel febbraio 2012.
  3. Se si sceglie stable, si riceverà la squeeze e i relativi aggiornamenti, fino a quando la wheezy diverrà stabile, poi si potrà aggiornare alla nuova versione.
  4. Se si sceglie wheezy o la qualsiasi altra testing by name, avremo una distribuzione rolling fino alla data di rilascio e poi diventerà stable. Anzi inizierà a diventare stabile circa 6 mesi prima del rilascio, cioè dopo la data di "congelamento".
  5. Se si sceglie testing avremo una rolling che diverrà stabile in prossimità dei rilasci per poi impazzire nuovamente verso strade nuove e sconosciute.
Premesso che chi ha un server, rimarrà probabilmente sulle distribuzioni stable, fino a quando scadrà il supporto, per gli utenti desktop la scelta della Unstable o della Testing è più opportuna, specialmente a molti mesi dal rilascio.

La Testing è di solito la scelta migliore in quanto riduce al minimo la possibilità purtroppo non remota, di malfunzionamento in seguito ad un aggiornamento, tuttavia, se certi pacchetti che usiamo di solito, risultano pesantemente instabili, li ritroviamo stabili in versione precedente, sulla stable (se c'erano), instabilli nella Unstable mentre non li troviamo affatto nella Testing fino alla successiva (eventuale) stabilizzazione.

Per esempio allo stato attuale manca Compiz , presente invece nella stable e nella unstable, e se si pensa che Unity è implementata come estensione di Compiz, e Ubuntu è Debian based, c'è parecchio materiale su cui riflettere.

 

 Contrib e non-free

A fronte della decisione di installare una qualsiasi versione, dovrete fare i conti con una ulteriore piccola differenziazione, a seconda che vogliate essere : dei puristi, dei puristi con contributi, o dei normali utilizzatori senza alcun fine politico.

Infatti per ogni versione sono presenti tre repositories :
  1. main,  che contiene solo software Debian, GNU puro e pulito.
  2. contrib, che contiene altri software in generale comunque libero.
  3. non-free, che contiene il software closed e i firmware che ci fanno funzionare tutto.
A tempo debito, durante l'installazione procederemo alla scelta della distribuzione e all'inserimento di questi repositories.

Il mio personale consiglio è quello di inserirli tutti e tre, perché questo (purtroppo) è l'unico modo di essere certi di avere a disposizione il massimo supporto hardware.

I mille modi per installare Debian

Vi sono una moltitudine di modi in cui debian si presenta, e altrettante modalità di installazione, tutte piuttosto incomprensibili per chi non è un esperto del settore.

Se poi cercate di installare da chiavetta USB, potreste trovare tanti manuali, tutti diversi e tutti obsoleti, da sentire quella irrefrenabile voglia di prendere a martellate il computer.

La struttura basilare della distribuzione è un insieme di files che sta su un CD con il contenuto di qualche decina di megabytes.

Si parte da lì e si arriva al set completo di DVD in versione estesa con contenuti speciali, da fare invidia al Signore degli Anelli.

Naturalmente se volete i DVD completi della Stable o della Testing (che rilascia un branch settimanale), dovete usare il bittorrent o altri strumenti perversi ma alla fine vi mancherà comunque qualcosa.

Diversamente dovete disporre della rete (che comunque vi servirà sempre) e qui state attenti che non tutte le schede Wireless, hanno pieno supporto in fase di installazione, perché mancano i drivers closed, mentre se avete un pezzetto di cavo di rete e una porta fissa, non ci dovrebbero proprio essere problemi.

La versione per installare dalla rete, che è la più comune, si chiama netinst e sta sul più classico dei CD.

Il CD e l'installazione

Oggi e presumibilmente per i prossimi sei mesi, il CD di installazione di Debian è Squeeze, che è arrivata alla sesta sub-release.

Se state facendo una installazione che dovete condividere con Windows o altri sistemi operativi (quali non lo so), vi consiglio di leggere il mio precedente post dal titolo "partizionare il disco" e seguirne le linee guida generali.

Dopo avere inserito il CD ed eseguito il reboot otterrete questo :



Varie strade

A questo punto, se state installando la stable corrente, dovete semplicemente scegliere quale ambiente installare.

Per installare GNOME che è lo standard per Debian, basta usare un installatore o Install o Graphical Install.

Se volete invece installare XFCE o KDE potete scegliere Advanced options, e quindi Alternative Desktop Environment.

Se scegliete di installare una distribuzione diversa dall'attuale cioè la Unstable (Sid) o la Testing ( attualmente Wheezy) , potete anche scegliere una differente strada che è quella dell'installazione minimale, per poi aggiornare alla giusta distribuzione e solo alla fine aggiungere il rimanente software.

Il modo più semplice è sicuramente il primo però installa tanti pacchetti obsoleti che richiedono rimozione (automatica ma sempre rimozione) ed è sicuramente la strada più lunga.

Il metodo dell'installazione minimale è più immediato e dinamico e vi permette anche di personalizzarla ma non è così facile perché non è automatico. In questo secondo caso basta proseguire col Install normale o grafico, ci preoccuperemo in seguito di aggirare l'installazione del desktop.

In ogni caso, scegliendo Install, partirà il sistema originale di installazione di Debian in formato testo ed il preferito dai sistemisti mentre noi che facciamo gli screenshots possiamo concederci quello grafico, che è praticamente identico anche se più appariscente.

Queste sono immagini che ho preso da una serie di screenshots su vbox, ma la stessa cosa l'ho fatta ovviamente sul PC vero.

1 - Linguaggi e Localizzazioni




Debian chiede attraverso una serie di schermate, quattro cose diverse :

- La lingua di installazione
- La location
- Il charset
- La tastiera

La prima è la lingua di installazione, che sarà anche la lingua di default del sistema e potete scegliere quella che volete : di solito italiano o per i puristi inglese (i vari vocabolari li potete poi installare a parte).

La location invece è importante, perché è quella che determina i locales e quindi anche la timezone che deve essere giusta, per evitare problemi di sincronizzazione.

L'Italia, se siete in questo paese, si trova per ora in Europe, poco sotto Holy See ....


La prossima schermata è "Configure locales" ma si riferisce al charset. Linux non usa gli ISO8859 ma l'unicode UTF8, quindi se indicate United States, avete tutti i caratteri per le lingue occidentali, compresi quelli latini.

Debian dovrebbe scegliere comunque da sola quelli giusti.

Per quanto riguarda la quarta e ultima domanda di questa prima fase, cioè la keyboard, dovreste mettere il modello che avete, io di solito la imposto come "American" poi in seguito ci aggiungo i dead keys.

2 - Rete e varie

Qui siamo alla configurazione di rete. Se avete una sola scheda l'installazione andrà su quella scheda, se ne avete due o più vi sarà chiesto quale usare.

Se usate una scheda wired, partirà la ricerca del dhcp in automatico, se invece avete una wireless che per puro caso funziona, dovete specificare sia l'SSID oltre che la password.

Poi c'è l'hostname. L'hostname è il nome di riferimento del computer ed è importante dargli un nome caratteristico sulla rete di cui fa parte, se la rete è locale è il nome del computer.

Per quanto riguarda il domain, se non sapete esattamente cosa state facendo non mettete niente : se inventate un dominio a caso, potreste avere dei problemi col DNS.

In seguito viene chiesta la password di root, da ripetere due volte, poi il nome dell'utente alternativo completo (da cui il sistema estrapolerà lo username) e quindi le password.

Ora ... ho visto molta gente scrivere password di root complicatissime tipo Xtyr33GGHHqwes78rw e poi loggarsi come giulio con password giulio ... NOOOOO !!! Non si fa, ok ?

Perché poi siccome usiamo il sudo per poter installare programmi, giulio può diventare tranquillamente root, tant'è che sui server non si installa praticamente mai il sudo e le installazioni sono fatte da root con ssh o in locale.

3 - Il Disco

Se siete arrivati qui ci sono buone possibilità che abbiate letto anche i paragrafi precedenti e di conseguenza il mio precedente post : "partizionare il disco" che casualmente parla proprio di quello che dovremmo fare ora, cioè l'operazione più pericolosa e complessa.

Il guaio di Debian è che non fa tutto da sola, a meno che non vogliate usare l'intero disco ; per fare installazioni differenti, dovete sapere esattamente quello che state facendo e usare il partizionamento manuale. Per questo motivo come detto nel post citato, la cosa migliore è usare uno strumento di partizionamento diverso come quello fornito da Windows 7.

Un aspetto micidiale di Debian è che se poi gli lasciate partizionare il disco per conto suo non fa quello che pensate che dovrebbe fare, per esempio il disco di Squeeze nel 2012 non formatta etx4 ma ext3 ... :o , mentre a mano potete fare quello che volete.

Comunque potete iniziare formattando la partizione di sistema, cioè quella montata su / e se avete seguito il consiglio della home separata, stare particolarmente attenti a non formattare la home se ci avete già messo dati, o altrimenti formattarla per prepararla la prima volta.




Comunque per nostra fortuna Debian indicherà molto chiaramente una F dove farà la formattazione:


Come File System consiglio di usare ovviamente ext4. Questa schermata è puramente indicativa e riferita a vbox, voi dovreste vedere i vostri dischi e le vostre partizioni. Attenzione perché la swap sarà sempre formattata in automatico dal sistema e ciò è cosa buona, perché contiene solo immagini di vecchie pagine di memoria ormai dimenticate.


4 - Il Mirror

Il mirror di Debian è il posto da cui scaricherete tutto quello che vi serve da adesso in poi, quindi è importante mettere un mirror vicino e veloce.

Nel mio caso e con la mia connessione Internet, i mirror più veloci risultano casualmente quelli esteri allo Stato Italiano, roba tipo tedesca, svizzera, austriaca, francese, spagnola eccetera.

Il mirror potrebbe essere cambiato in un secondo tempo, tramite modifica del file sources, ma ne parleremo in seguito.

Aggiungo qui la richiesta sul Package Survey. È una statistica sui pacchetti più usati. L'innocenza di Debian si vede anche nel fatto che per Default vi presenta un No.

5 - Cosa Installare

Eccoci al domandone, cosa installiamo ?

Per default vi vengono proposte tre voci :

- Laptop, se state installando un laptop.
- Standard System Utilities
- Graphical desktop environment




Qui siamo al famoso bivio, possiamo scegliere di procedere in modalità testo rimuovendo Graphical desktop environment, per l'installazione minimale prima dell'aggiornamento, o lasciare Graphical desktop environment e caricare la vecchia versione completa per poi rimpiazzarla.

Nel primo caso decideremo in seguito, nel secondo caso se avete usato il default, avrete Gnome, se avete scelto un desktop alternativo, avrete il vostro Kde o Xfce.

Una cosa importante.

Si narra dall'alba dei tempi che si possa cambiare desktop come si cambiano i calzini.

Ecco ... non è proprio così.

Se installate KDE su una installazione di Gnome, potreste trovare i menù parecchio incasinati e rimuovere completamente Gnome potrebbe non essere semplice come si pensa.

In questo, consiglio sempre un atteggiamento minimalista, perché aggiungere software è un attimo, toglierlo invece può essere più problematico.

Fatta la vostra scelta, potete attendere tranquillamente il termine dell'installazione, sorseggiando del te al bergamotto o succhiando radici di rabarbaro.


Alla fine il disco sarà espulso e il sistema vi richiederà di ripartire, la vostra installazione potrebbe essere quasi conclusa ... o soltanto all'inizio.
 

Da Stable a ...

Sudando

Alla ripartenza della macchina ora dovreste loggarvi come root.

C'è una grande differenza tra Debian e la maggior parte delle distribuzioni commerciali : l'utente root è abilitato e può loggarsi (ma solo in modalità testo come al solito) mentre l'utente che avete inserito non è nei sudoers.

Se avete scelto una installazione minimale, avete il vostro prompt e probabilmente dovrete installare esplicitamente il sudo con :
apt-get install sudo.
Se ne avete scelto uno con il desktop grafico, alla ripartenza siete in modalità grafica che non ammette login come root.

Con una combinazione di tasti tipo Ctrl-Alt-F2, otterrete comunque presto la login di testo e quindi potrete entrare come root.

Se non riuscite ad ottenere la login di testo, entrate col vostro utente in modalità grafica e date su, poi la password di root.

Se non riuscite ancora, l'unica speranza che vi rimane è un viaggio a Hogwards.

Appena ottenuta una login di root, inserite poi subito nei sudoers il vostro utente con il comando :

usermod -a <utente> --groups sudo 

Si cambia

Ora che abbiamo il prompt, se vogliamo una stable è già quasi tutto fatto perché dobbiamo solo aggiungere i contrib, i non-free,  e il software aggiuntivo.

Se vogliamo qualcosa di diverso, è questo il momento di fare le giuste richieste.

Tali richieste possono essere fatte da root, modificando il file /etc/apt/sources.list che è quello dove sono contenute le fonti. Consiglio prima di tutto di entrare in single user mode (abbattendo così eventuali servizi), lo si può fare con :

init 1

e poi digitando la password di root ovviamente.

Bene, ora per passare per esempio da Squeeze a Wheezy editiamo il file con :

vi /etc/apt/sources.list

E troviamo l'elenco dei repositories abilitati che sono letti dal sistema di packaging di Debian, e in particolare da apt-get, il famoso comando che ha i poteri della supermucca.


Modifichiamo il file in questo modo :

#

# deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official amd64 NETINST Binary-1 20120512-20:40]/ squeeze main

#deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official amd64 NETINST Binary-1 20120512-20:40]/ squeeze main

deb http://<mirror>/ wheezy main contrib non-free
deb-src http://<mirror>/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
# squeeze-updates, previously known as 'volatile'
#deb http://mirror.switch.ch/ftp/mirror/debian/ squeeze-updates main
#deb-src http://mirror.switch.ch/ftp/mirror/debian/ squeeze-updates main

Vediamo quali sono le modifiche indicate in neretto.

Per prima cosa lasciate solo security.debian.org e il mirror che abbiamo scelto e che troverete già lì.

Le altre righe si commentano col #.

La parola squeeze diventa wheezy.

A tutte queste righe si aggiunge contrib e non-free che implementano gli extra compresi i pacchetti non free, come i famosi drivers e firmware closed source che aiutano molto.

Finito l'editing, diamo prima l'update :

apt-get update

e poi la dist-upgrade

apt-get dist-upgrade

Che occuperà il computer per molto, molto tempo ...

Alla fine dell'installazione, prima di riavviare, consiglio il comando :

apt-get autoremove

che ripulirà eventuali vecchi pacchetti non più in uso.

riavviando entreremo in Wheeze col nuovo ambiente e il nuovo kernel così saremo pronti ad gli ulteriori pacchetti che ci servono.

Se durante la fase di installazione vi sono fatte domande inquietanti, non preoccupatevi molto e siate propositivi, in fondo state installando qualcosa da zero e non potete fare troppi danni a ciò che ancora non c'è.

Aggiungere l'ambiente grafico

Se avete già installato l'ambiente grafico la vostra macchina è quasi pronta, se invece avete optato per una installazione minimale, è arrivato il momento di aggiungerlo ora (sempre che lo vogliate).

In questo caso potete usare i task :
 
apt-get install task-gnome-desktop

per Gnome, oppure

apt-get install task-kde-desktop

per Kde, oppure

apt-get install task-xfce-desktop

per Xfce, oppure

apt-get install task-lxde-desktop

per Lxde.

Questi installeranno tutto quello che serve per aggiornare il dekstop all'ambiente che preferiamo.

In questa fase possiamo poi installare un sacco di altre cose con comandi tipo :

apt-get install flashplugin-nonfree 

che per esempio si scarica flash e lo installa nei browser, poi io raccomando per i felici possessori di macchine multicore ( come I3, I5, I7 ) dotate di un feroce sistema di risparmio energetico il daemon indispensabile cpufreqd :

apt-get cpufreqd

giusto per evitare che la macchina (originariamente progettata per Windows che integra questa gestione), in condizioni di stress si spenga continuamente o prenda fuoco.

E poi tante altre cose che dipendono da quello che vogliamo ottenere e che ci serve.

Debian Multimedia (Opzionale)

Linux è sicuramente allo stato attuale una delle piattaforme più complete per la riproduzione di files multimediali di ogni genere. Ciò è dovuto in gran parte al software FFMPEG che con le sue librerie libavcodec, si è nel tempo affermato come un backend essenziale per questo sistema operativo.

Il famoso VLC è strettamente connesso col lavoro eseguito su ffmpeg, e installando il progetto ffdshow, su Windows si trasformano Media Player e Media Center in una sorta di VLC (leggermente più pesanti ma a mio parere sicuramente meglio integrati e ingegnerizzati).

Debian installa gran parte delle librerie necessarie a tale codifica ma per diverse questioni, comprese quelle brevettuali, certi codec come FFAC e certi software che li usano come il mitico Avidemux,  non sono presenti sui repositories di Debian o se sono presenti sono compilati con appositi flags che escludono alcune funzionalità.

C'è un repository a parte che è non ufficiale ma quasi e che si trova su questo dominio

Attenzione, perché per installare questi pacchetti dobbiamo operare una piccola security breach, cioè installare una chiave aggiuntiva che non è Debian, se la cosa vi da fastidio non fatelo.

Un procedimento ve lo descrivo in linea di comando ma lo potete fare più semplicemente con il Package Manager (Synaptic) :

Editiamo il solito file /etc/apt/sources.lst e aggiungiamo (con synaptic, aggiungendo il primo si aggiunge anche il secondo) :

deb http://www.deb-multimedia.org wheezy main non-free
deb-src http://www.deb-multimedia.org wheezy main non-free

Poi diamo un update :
apt-get update
Dovremmo ricevere un errore riguardante un problema di sicurezza e quindi procedere con l'installazione di un pacchetto contenente le nuove chiavi :
apt-get install deb-multimedia-keyring
e qui riceveremo l'informazione che il pacchetto non è autenticato, perché infatti stiamo scaricandone l'autenticazione, confermiamo quindi l'installazione.

A questo punto avremo installato la nuova chiave di deb multimedia e potremo installare anche i pacchetti multimediali, consiglio di dare  :
apt-get update
apt-get upgrade
per aggiustare eventuali sospesi. 

Drivers proprietari

In Linux, tra drivers e librerie aggiunte ci dovrebbe già essere quasi tutto quello che serve, per far funzionare il vostro hardware.

Il problema è nel termine quasi che nella maggioranza dei casi significa, che esiste un driver proprietario che risolve il problema e in poche eventualità che invece si va verso una strada senza uscita (di solito comunque per cose poco importanti, tipo particolari modelli di telecamera e simili).

Prima di quella stupenda invenzione chiamata dkms, i drivers proprietari erano una vera e propria pena, perché richiedevano una compilazione ad ogni sostituzione del kernel (che avviene molto spesso). Ricordo a questo proposito che con la mia vecchia scheda NVidia tanti anni fa, feci uno scriptino lanciato in rc.local, il quale dava uname -a ,  confrontava la stringa e se era diversa da quella memorizzata in un file ricompilava il driver, anticipando così i tempi.

Comunque, lasciamo perdere i ricordi, passiamo invece all'oggi dove distribuzioni nate per semplificare la vita all'utente, come Ubuntu, hanno appositi tools che fanno la scansione dell'hardware e verificano la presenza di drivers proprietari, proponendone l'installazione.

Ovviamente su Debian ve la dovete cavare un po` di più per conto vostro.

Facciamo un esempio concreto : dopo la nuova installazione mi sono accorto di non avere più il Wi-Fi e non è una cosa simpatica, in questo caso come si procede ?

Se usiamo l'ambiente grafico ci sono vari tools, come kinfocenter o hardinfo.

Per i cultore della linea di comando, si può fare tutto più semplicemente con lspci, o lsusb.

Con un lspci ottengo quindi un lungo elenco tra le cui righe leggo :

...
02:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)
...

che con buone probabilità dovrebbe essere quello che cerco, è un BCM4313 della Broadcom.
Quindi con synaptic (Package Manager),  cerco  "BCM4313" e trovo varie voci tra le quali :

broadcom-sta-dkms

Una volta installato il pacchetto e riavviato (ma solo per scrupolo) il Wi-Fi è tornato dal suo lungo viaggio nell'ignoto e funziona benissimo.

Conclusioni

Comprendo che per chi non è abituato alle acrobazie sulla linea di comando, l'installazione di Debian possa sembrare un non-sense, ci si potrebbe chiedere perché non ripiegare comunque su cose già fatte da altri : in fondo per lavorare è meglio non perdere tempo.

Vero ! Ma si sa come fa a finire, inizi con Slackware, poi passi a Fedora e alla fine ti ritrovi a smanettare disperatamente su Ubuntu-Unity, cercando di dare un senso alternativo a ciò che invece è evidente.

Per lo meno Debian ha una certa "etica" e non ha nulla da farsi perdonare e ciò è abbastanza.
 Se proprio dovessi scegliere oggi qualcosa di alternativo a Debian, l'unica scelta sarebbe quella di LMDE che è sempre Debian, è apprezzata dalla comunità, è costantemente stabile e soprattutto costantemente usabile da versione a versione, cosa che oggi non è da tutti.

Vedremo quali possibilità e quali convergenze ci saranno in futuro.


lunedì 9 luglio 2012

Squaqquerare i dischi

Spiego subito l'origine di questo post.

Capita che l'altro giorno abbia avuto qualche problema di noia e caldo, ma tanto caldo che la goccia di condensa che scaturiva dal condizionatore, evaporava prima di toccare terra ! Ma tanto caldo che mi è toccato mettere in rc.local, la seguente sequenza  :


cpufreq-set -c 0 -u 1.73Ghz
cpufreq-set -c 1 -u 1.73Ghz
cpufreq-set -c 2 -u 1.73Ghz
cpufreq-set -c 3 -u 1.73Ghz

per evitare che il mio quadriprocessore si spegnesse continuamente, non so se rendo l'idea ;) !

In questo momento noioso ho pensato di provare Ubuntu, perché avevo sentito in giro che alcuni reduci, erano riusciti a farla diventare una distribuzione per programmatori umani, distruggendo pezzetti di Unity.

Purtroppo, mentre mi inoltravo per questa selva oscura che la diritta via era smarrita, raccoglievo lentamente i "perché" che trovavo sparsi qui e là sul cammino.

Ora, è ben noto che la quantità dei "perché" che una persona può raccogliere, dipendono dalla persona e dallo stato d'animo.

Nonostante la noia, in quanto sentimento vacuo, lasci spazio ad un enorme numero di "perché", dopo pochi minuti sono riuscito rapidamente a riempire le scatole e ho optato per un ritorno sulla retta via, disseminandola per altro di allegorie dal vago sfondo dissacratorio.

Chiedo venia per tali allegorie e per tale scelta infausta ma non è questo il punto del post, il fatto è che il passaggio da un sistema operativo all'altro è stato fatto con una chiavetta USB da 4 giga e molta indifferenza e allora, visto che il proposto proposito era fallito, mi sono detto : ... perché non spiego due cose su come distruggere un disco e ripristinare tutto con gioia e senza problemi.

Già che ci sono magari insegno anche un po` di arte del volo che come diceva il caro Douglas Adams : "consiste nel lanciarsi contro la terra senza colpirla" o quanto meno evitare le conseguenze del colpo.

Così ho cercato un termine per descrivere la cosa più invereconda che si potesse fare a un disco di sistema, ho tentato di ispirarmi al verso del pinguino, ma non ho trovato rapidamente su Internet una precisa definizione di tale verso, tranne scoprire che alcuni "ragliano".

Turbato da questa notizia mi sono inventato un termine alternativo per il titolo che volevo dare al post. Un titolo che rendesse bene l'idea dell'azione completamente generica che può compiere un qualsiasi sistemista apatico e proveniente da mondi alieni e scimmieschi, la prima volta che si trova con un # di fronte e il comando dd già pronto tra le dita.

Gioie e dolori del disco di sistema

Torniamo sulla terra e partiamo col dire che il disco, specialmente quello di sistema, è nella maggior parte dei sistemi operativi commerciali, assolutamente inviolabile.

Esistono vari tools per modificare, aggiungere togliere e backuppare partizioni ma nella maggioranza dei casi la maggior parte delle persone utilizza tools che fanno il disk dump a blocchi di tutto, con grande dispendio di energie e di mezzi.

Sarebbe bello, senza troppe complicazioni, spedirsi dischi via rete, con nonchalance, salvare tutti i propri dati e creare un'altra macchina perfettamente funzionante, insomma far danzare le partizioni tra DOM e dischi fissi, e in sintesi squaqquerare il disco come ci pare e piace.

Ebbene, in Linux è possibile fare qualsiasi cosa con un po`di fantasia e di conoscenza.

Ho già spiegato in un post precedente, che il disco può essere partizionato per riservarsi i propri dati, montando la home separatamente.

Di solito il disco di sistema, non contiene i dati utente e si reinstalla ma ci sono un milione di motivi, tra i quali il caldo e la noia, che possono indurre a risentimenti temporanei nei confronti della vostra macchina o a scelte sciagurate e che richiedono poi un rapido recovery della situazione.

Con e senza il rescue disk

In Linux c'è il concetto di resque disk, che in pratica è un CD live pieno di utilities.

Per il backup si può fare con o senza il resque disk per il recovery invece ci vuole per forza almeno un Live CD.

È importante che il disco Live sia allo stesso numero di bit del sistema installato, cioè 32 o 64 bit.

Se mi usate un disco a 64 bit su un sistema a 32 o viceversa, la prima volta che mi fate un chroot, potete causare danni inimmaginabili.

Già che ci siete non mischiate pere con banane e vedete di trovare qualcosa con una versione del kernel piuttosto vicina se non identica a quella che avete sul sistema.

Comunque, partire con un CD live vi permette di non "montare" il disco e vederlo da un punto di vista esterno. Ciò è molto utile.

Già ! Perché c'è gente che conosco che di fronte ad un disco di sistema pensano di salvare i dati impunemente con un bel tar czf lamiacopiasicura.tgz / , e sono quelli che normalmente perdono ogni speranza dopo aver perso circa 10 ore ed essersi trovati un tarball malato e di dimensioni immense.

Non si fa così !

Non si fa perché se il disco è montato non solo ci possono essere altri volumi in /media o /mnt (per esempio il disco in cui volete metterlo ....) ma anche le cartelle che avevo definito unbackupable, come la proc, la sys e la dev, che sono dinamiche. Insomma roba dura da digerire, specie se poi cerchi di ripristinarla e spacchi tutto.

Il modo migliore è quello di eseguire il tar da un disco esterno Live, ma può anche essere che non vogliate farlo, perché non avete lì il CD o perché non gradite riavviare la macchina.

Se avete il Live CD, prima di tutto collegate il disco esterno, che dovrebbe finire in /media/diskname, aprite un terminale di root e poi, una volta appurato il device del disco che vi accingete a salvare (/dev/sdaX) date qualcosa tipo :

mkdir /mnt/mydisk
mount /dev/sdaX /mnt/mydisk
cd /mnt/mydisk
tar cvfz /media/diskname/System.20120707152345.tgz .
cd /
sync
umount /mnt/mydisk
Così facendo trasferiremo tutto il tarball dei files di sistema compressi che nel mio caso, essendo una Debian di circa 5.5 giga stanno su una chiavetta di 4.

Notate l'uso improprio e smodato del sync, che ho imparato dagli script di chiusura di Slackware (Patrik dixit), e l'uso della data in formato perfettamente ordinabile che uso come chiave per i miei files di backup.

Importante, se non volete impazzire in seguito, è anche salvarsi una tabellina con questo comando :
ls -la /dev/disk/by-uuid > /media/diskname/UUID.20120707152345.txt
poi capirete perché .


Motivi per non usare il rescue disk

Ci sono vari motivi più o meno validi, tra cui spiccano la pigrizia e la fretta, che potrebbero indurvi a risolvere la cosa sbrigativamente.

La buona notizia è che non c'è problema a patto che siate gli unici ad usare il computer in quel momento.

Potete per esempio dare un :

 init 1 

Che nella maggior parte dei casi vi fa accedere al disco in single user mode, e ripetere la procedura di cui sopra, senza il live CD (che ricordiamo ci vuole comunque per il recovery).

Vediamo di capire due cose:

  1. Il single user mode vi serve perché abbatte tutti i servizi che avete in memoria, compreso l'ambiente grafico, altrimenti il backup che state creando potrebbe mancare di coerenza.
  2. Nella procedura fate una seconda volta un mount della stessa partizione che avete montato come / e questo vi serve perché se rimontate la partizione, lì dentro le famose directory unbackupable diverranno backupable, cioè saranno una esatta copia fisica del disco e non quelle montate presenti nel vostro sistema, esattamente come se usaste un disco Live.
Se il doppio mount non funziona in certe condizioni, lasciate perdere e usate il live cd ma di solito non ci sono problemi.

Ripristiniamo con un live CD

Dunque,arrivati qui dovremmo avere un disco col nostro tarball, il live cd col giusto kernel e una partizione più o meno vuota dove infilarlo.

Dovete partire col LiveCD aprire un terminale (anche grafico se volete e se c'è) e prima di eseguire il mount, della partizione, assicurarvi che sia vuoto. Se non lo è dovete procedere (sempre da root) con un mkfs.ext4 /dev/sdaX o simili in modo da cancellare completamente il contenuto della partizione riformattando .... ATTENZIONE CHE SIA QUELLA GIUSTA !!!

Usate anche lo stesso file system di quella vecchia. Se cambiate il file system potreste avere vari problemi oppure passarla liscia modificando solo /etc/fstab, ma non ci giurerei.

Una volta ripulita la partizione potete tranquillamente attaccare il disco con l'immagine al live CD e dare qualcosa tipo :

mkdir /mnt/mydisk
mount /dev/sda3 /mnt/mydisk
cd /mnt/mydisk
tar xvfzps /media/diskname/System.20120707152345.tgz .
cd /
sync
Notate la sequenza xvfzps che dovrebbe contribuire a espandere il disco esattamente come l'avete trovato quando avete salvato i dati, le quali casualmente, sono le stesse sequenze che trovate negli scripts di installazione di Slackware (Patrik docet).

Notate anche che manca umount, ma non è una dimenticanza, infatti non abbiamo finito .

Lunga e diritta correva la strada

Si non abbiamo finito, perché qui sorgono i veri problemi !

Nel vecchio sistema Linux, quando ancora c'era il lilo al posto del grub, avremmo infatti dovuto rilanciare il lilo, ma nel nuovo sistema abbiamo a che fare con due grandi innovazioni, il grub, e soprattutto i DISK UID, che permettono la gestione flessibile delle partizioni ma sono una spina nel fianco per questi giochetti.

Nel mondo moderno ad ogni partizione coincide un codice di disco differente, quindi che dobbiamo fare ?

Ricordate la tabellina che vi ho detto di salvare in /media/diskname/UUID.20120707152345.txt ?

Ecco è il momento di dare :


cat /media/diskname/UUID.20120707152345.txt


e tenerselo pronto su un terminale, possibilmente a portata di copia incolla.

Da un altro terminale diamo :
ls -la /dev/disk/by-uuid
confrontandola con la tabellina di prima.

Se avete giocato con un altro sistema sicuramente avrete il disco dove c'è montata / che avete riformattato e poi il sistema vi ha sicuramente riformattato in automatico la partizione di swap.

Le informazioni sui codici vecchi, oltre che sulla tabellina che vi siete salvati, dovreste trovarli in /etc/fstab che è uno dei punti critici, il meno critico in realtà, il più critico è purtroppo GRUB che specialmente nella sua ultima versione è un po` troppo "delicato".

Qui ci sono due scelte. Se avete un sistema semplice in cui c'è solo il vostro sistema e avete temporaneamente riformattato con pentimento, potete ritornare indietro.

Potete quindi mettere i vecchi codici alle due o tre partizioni riformattate, con un comando tipo :
tune2fs /dev/sdaX -U <vecchio codice uuid>
dove sdax è ovviamente la partizione che ha il nuovo UUID sbagliato e l'altro è il codice che recuperate dalla tabellina che avete salvato.  Non vi preoccupate se il sistema vi dà un errore quando tentate di cambiare l'UID della partizione di swap, va tutto bene !

La seconda scelta invece consiste nel cambiare i files sensibili agli UUID e tenersi quelli nuovi. È un po`più complicato ma è più corretto.

Per cambiare gli UUID potete usare un editor grafico dal LiveCD e modificare :

/mnt/mydisc/etc/fstab 

/mnt/mydisc/boot/grub/grub.cfg

Se siete bravi potete anche usare il sed :

sed -i "s/<vecchio codice>/<nuovo codice>/g" <file da cambiare>

e sostituire al volo tutte le presenze.

L'ultimo passaggio

Adesso è il momento di entrare nel sistema che abbiamo appena ricostruito ma non ancora smontato con :


mount -o bind /dev /mnt/mydisk/dev
mount -o bind /sys /mnt/mydisk/sys
mount -o bind /proc /mnt/mydisk/proc
chroot /mnt/mydisk 

et voilà ! Siamo nel nostro vecchio disco dall'aria familiare e diamo :
grub-install /dev/sda 
immaginando ovviamente che il GRUB sia installato nel MBR del /dev/sda.

Ora usciamo e diamo umount del disco, con qualcosa tipo :


exit
umount /mnt/mydisk


Ripartiamo e tutto sarà esattamente come quando l'abbiamo lasciato prima di fare danni o almeno si spera.

Vedo Pinguini Volare




 
Ora, insegneremo come fare volare un Pinguino, cioè data la macchina A con il nostro sistema operativo e la macchina B vuota (naturalmente sulla stessa rete) e con caratteristiche simili ma non necessariamente identiche, sempre PC ma con schede grafiche diverse dimensioni di disco diversi e processori diversi (anche se della stessa categoria), copiare al "volo" il sistema da una macchina all'altra.

Bene, per prima cosa mettete un LiveCD nella macchina B e date il boot.

Partizionate il disco tranquillamente riservando abbastanza spazio al sistema operativo. Quanto spazio occupa il sistema lo potete sapere andando sulla macchina A con il semplice comando df.

La messa a punto del disco o la si fa a mano con i vari mkfs, mkswap, parted eccetera o con le utilities nel LiveCD, tendenzialmente il famoso gparted, tools insomma, con i quali creiamo la partizione di swap e il system disk cioè quello che andrà montato in /. Per eventuali altri dischi/partizioni faremo con comodo in seguito.

Ricordiamo sempre anche il comando che ci serve per sapere gli UUID, che è ls -la /dev/disk/by-uuid .

Una volta preparate sul disco B vediamo il nome di queste due partizioni, tipo /dev/sdaX .

Ora, da un terminale da root, diamo sulla macchina B i primi tre comandi della sequenza che abbiamo già visto :

mkdir /mnt/mydisk
mount /dev/sdaX /mnt/mydisk
cd /mnt/mydisk

e poi diamo un comando che può essere leggermente diverso a seconda della versione di netcat che avete sul vostro sistema.

Nel netcat originale che trovate su Debian per esempio, potete usare gli switch -l -p <port number>, nella orribile versione moderna e "sicura" che trovate sul live cd di Ubuntu non c'è il -p perché è un comando ridondante e implicito nel -l che diventa -l <port number>.

Comunque in sintesi il comando è :


nc -l -p 9823 | tar xvpsz .

Con un numero di porta a caso e dove manca il flag f di tar.

Dall'altra parte entrate in init 1 e rimontate il disco come ho già spiegato nel backup senza resque disk, poi stesso procedimento :

mkdir /mnt/mydisk
mount /dev/sdaX /mnt/mydisk
cd /mnt/mydisk
tar cvz . | nc -q 0 <B ip address> 9823

dove sdaX è la partizione di sistema sul disco A e B ip address è l'ip address della macchina B che potete recuperare con un semplice ifconfig sul live cd.

Appena dato l'invio, vedrete il pinguino volare da una macchina all'altra, volo che dovrebbe terminare alla fine del trasferimento.

Note dolenti

La parte finale, come nel caso precedente è un pasticcio, per il fatto che non ho trovato allo stato attuale un buon configuratore funzionante di GRUB 2.0, senza passare dall'installazione del sistema operativo.

Per /etc/fstab non c'è problema, è molto più facile, comunque questa è la parte del discorso che richiede maggiore destrezza.

Si tratta come avrete capito di modificare sulla macchina B gli UUID nel file /etc/fstab e /boot/grub/grub.cfg con quelli delle nuove partizioni, in modo da rispettare le nuove regole, come avevamo fatto prima.

Qui ci sono due avvertenze :
  1. Dovete cambiare tutti gli UID nei files perché sono tutti diversi.
  2. Potreste non avere bisogno di tutte le partizioni oppure aggiungene altre, dovete giocare un po`col file grub.cfg e fate un po`a occhio, tanto il sistema si trova ancora al sicuro su A.
Alla fine uscite, riavviate e il vostro pinguino dovrebbe essersi clonato e trasferito da una macchina all'altra.

Conclusioni

Questo è un esempio di quello che si può fare con un sistema operativo "vero".

Potreste anche trovarvi un giorno in condizioni assurde tipo il fatto di operare su server moderni che raccolgano le virtualizzazioni di server reali e obsoleti che avete in azienda, nel qual caso dovrete magari smazzarvela con RAID software e cosucce di questo tipo.

Esistono varie tecniche e sicuramente potrete trovare anche modi migliori di quelli che ho indicato io ma ciò che ho cercato di trasmettere, è più che altro lo spirito dei pinguini volanti che squaqquerano e che sono convinto, se non lo conoscevate ancora,  d'ora in poi resterà comunque sempre con voi.

Amen.

martedì 3 luglio 2012

Il buio oltre la siepe


Chiosa di O'Toole alla legge di Murphy : Murphy era un ottimista.

 

Storia

40 anni fa nacquero i primi sistemi operativi commerciali, da quel famoso gruppetto di eroi che orbitavano attorno al MIT, con i primi risvolti speculativi (Unix) che portarono poi ai primi scismi ideologici (GNU).

Erano tempi diversi in cui gli uomini erano uomini e programmatori hacker. I primi con la naturale tendenza a vivere in un loro ambiente limitato in cui facevano rigorose domande e ottenevano rigorose risposte, i secondi capaci di capire il funzionamento della macchina fino all'ultimo transistor e assolutamente impermeabili ai concetti di semplicità e utilizzabilità della stessa.

L'atteggiamento non era dettato ovviamente dall'originalità dei soggetti in questione (sebbene in sostanza lo fossero) ma dalle scarse capacità delle macchine dell'epoca. Non è che un PDP 8 si potesse programmare in qualcosa di diverso dall'Assembler e il fatto che il PDP 11 si potesse programmare in C, era perché nel frattempo avevano inventato il C.

Pensate però che la nascita del primo computer utilizzabile dal pubblico, era stata più o meno parallela alla nascita del C e del moderno Unix, riscritto nel 1971 per opera di Dennis Ritchie e Ken Thompson nei laboratori Bell.

Il primo computer grafico con tanto di Desktop e mouse fu infatti inventato da Xerox, ed era una orribile scatola col monitor messo di traverso e chiamato Xerox Alto terminato nel 1973 (10 anni prima di Lisa) e che per motivi di costo e di business target, fu accantonato in malo modo da questa azienda.



Poi arrivò il falco, cioè il compianto Jobs che dopo essere riuscito a commercializzare in piccolo la sua prima mela, si comprò lo studio (allora il concetto di brevetto era molto più labile di oggi), e sfornò il Lisa, con la conseguente "finta guerra" con Gates e la diffusione del concetto di Personal Computer, che piano piano ci porta ai giorni nostri.

Strati di conoscenza

Nella mia vita, vi garantisco di non avere mai pensato, nemmeno per un momento che Esc-Shift-A fosse il miglior modo per portare il cursore alla fine di una riga di testo, almeno dopo l'invenzione del tasto "End".

La razza di quelli che asserivano che VI in fondo era il miglior editor mai creato e che si ostinavano ad usarlo in una finestra grafica di Windows, sta naturalmente estinguendosi, però a costo di sembrare obsoleto continuo a pensare che far partire la moderna scienza informatica dall'insegnamento nelle scuole dell'utilizzo di Facebook, sia quantomeno un tantino esagerato.

Nella mia personale visione che stranamente coincide quasi sempre con quello che poi si rivela essere il pensiero di Linus Torvalds, esistono vari strati di apprendimento e vari livelli di accesso ad una qualsiasi macchina.

Prendiamo uno strumento come Linux Ubuntu per esempio. Si installa in un attimo, diciamo che nella maggior parte dei casi funziona subito e mette a disposizione una interfaccia semplice all'utente.

Non occorre avere 10 anni di esperienza come firmwarista per usarlo, non ci sono schede perforate e per certe scelte è molto più semplice della maggior parte di molti altri sistemi.

Quindi l'utente normale è contento e l'utente avanzato ? Quello che usa il computer per gli esperimenti più truci ? Il programmatore sperimentale acrobatico ? Sono contenti anche loro perché possono accedere alla macchina in lungo e in largo, scavare nei bit del sistema operativo, modificare il kernel e tante altre belle "cose".

Con Windows le "cose" sono più limitate ma non sono molto diverse, il livello di accesso all'informazione è molto profondo (anche se non sembra). Giusto a titolo di esempio, il progetto FFDShow,  prende tutta l'infrastruttura multimediale di Linux che è una delle più complete in assoluto e la proietta in Media Player e Media Center , permettendo la riproduzione di qualsiasi formato audio e video, sotto brevetto e non.

Ovviamente non mi riferisco alle inutili complicazioni e al tentativo ad ogni costo di allontanarsi dagli standard commerciali che ha sempre caratterizzato la diffusione di questo sistema operativo, né al fatto che alla fine chiunque lo utilizzi abbia sempre l'impressione più o meno giustificata di poter perdere qualsiasi cosa in qualsiasi istante.

Diverso è il discorso di MAC. MAC è una scatola chiusa piena di software che una volta era aperto.

Se cercate di vedere un video in formato diverso da quello generato da QTime, dovete usare software "malvagi" come il VLC che fino a due anni fa su questa piattaforma non era nemmeno accelerato, farete piangere il ritratto di Steve che tenete sopra il letto e probabilmente in cambio dovrete pure perire un giorno tra le fiamme dell'inferno.

Idiosincrasie

Leggo in questi giorni che il browser Chrome di Google è stato portato su iOS ma ha dovuto rinunciare al suo motore javascript (che è uno dei pregi di Chrome) perché la Apple "vieta di installare propri interpreti".

Leggo che alcuni brevetti hanno impedito a Samsung di commercializzare alcuni dei loro dispositivi in vari paesi, perché troppo simili esteticamente a quelli di Apple, che montano un sistema operativo diverso di una azienda diversa con caratteristiche differenti.

Leggo che Apple, ha dovuto versare diversi milioni di dollari per il nome iPAD che casualmente era già stato usato da altri.

Leggo anche che si scriverà i suoi servizi di Mappe e navigazione, per non avere a che fare con il suo pseudo concorrente Google.

A mano a mano che leggo mi viene in mente quanto codice di origine aperta BSD condivide con Linux, mi chiedo perché OSX  usi lo standard Posix e software compatibile con X e quanto Apple stessa debba a quella X, visto ciò che appena citato nella storia o perché il motore WebKit sia una rielaborazione del motore di Konqueror.

E poi leggo di Facebook che dopo avere invaso il mondo con quintalate di pubblicità virale fa il bello e il cattivo tempo tra urla e schiamazzi di utenti che si lamentano perché : "Internet ha un nuovo font".

E poi ci sono gli "amici" di Google con i quali ogni giorno combatto per mantenere un minimo di vita privata, che progettano un futuro dove tutti indosseranno i Goggles, almeno in fase temporanea prima dello sviluppo definitivo della tecnologia Borg.

Piano piano avanzano, con i nuovi standard come HTML5 che permetterà a chiunque di accedere al vostro computer in modo completamente nuovo, o i non standard, il cloud e i servizi forzati, DropBox che si trasforma in social network e Google che fornisce il Disk Storage, o Linkedin che diventa come Facebook e Facebook che inserisce le Question/Answer eccetera.

Insomma alla fine mi chiedo ... ma che sta succedendo ? Dove è la vecchia ideologia della birretta e del panino di gomma di fronte ai terminali a fosfori verdi ? OK ! Sto esagerando ma tutta sta gente,  che cosa fa per il progresso di quella scienza che li ha portati ad essere quelli che sono e a quale costo soprattutto ?

Gli ultimi pinguini di atlantide

Il problema è che mentre leggo tutto questo, lo faccio da un sistema Linux e più guardo cosa è diventato Linux negli ultimi anni, più mi sento come uno degli ultimi abitanti di atlantide.

È come se l'intero sistema dell'open source e del free software, fosse concettualmente sprofondato con tutto il resto, sia a causa delle guerre intestine che per gli attacchi del mercato, che  per le nuvole di tempesta che continuavano ad approntarsi all'orizzonte, fino ad aspettare la grande nuvola che si è ingoiata tutto, come il nulla della Storia Infinita.

Su Linux si può certo ancora scegliere.
 
Posso scegliere se usare Unity cioè la nuova interfaccia di Ubuntu che ha l'indiscutibile pregio di unificare il mobile, al desktop, nel senso che trasforma il vostro computer in un grosso telefono che non telefona.

Sennò c'è KDE che è un enorme calderone di pseudo-innovazione che dopo avere intrapreso la nuova strada della versione 4, ha fatto seguire una serie di ben 8 release considerate stabili con bug storici, tipo errori allo startup messaggi inutili, configurazioni campate in aria, crash grafici, e arricchendosi sempre di più di tecnologie invasive e inutili come Nepomuk, osteggiate dagli stessi progettisti.

Mi sovviene che il motivo per cui non si siano lasciati drogare dalla teoria della grande unificazione delle interfacce e che abbiano mantenuto differenti layout per le varie tipologie di macchine (come casualmente ha fatto anche Apple), potrebbe essere dovuto al fatto (per ora fortuito) che non c'era posto per nuove alluncinazioni.

Poi si può scegliere Gnome Shell. Ora .... che dire di Gnome Shell ? Innanzi tutto che è un progetto che subito è stato accolto con eccezionale fervore dalla comunità, tanto che lo stesso Torvalds l'ha definito "unholy mess".

Un giudizio sicuramente affrettato, dovuto certamente all'impatto iniziale di chi abituato a lavorare comodamente scopre di non poterlo più fare e inizia a cercare scripts ed extensions ma sempre con quell'amaro in bocca, tipico di chi ha dovuto ingoiare un rospo.

Eppure abbiamo passato i primi anni del nuovo millennio, con degli ottimi prodotti, in primis fu KDE con le versioni 3.5 che era una interfaccia di tutto rispetto, programmazione ad oggetti, auto-documentazione, completa network transparency e coordinazione tra le varie applicazioni.

Poi le ultime versioni 2 di Gnome Panel che erano una vera potenza.

I componenti miglioravano il kernel 2.X di Linux era un mondo avanti rispetto al 2.4, Xorg era diventato eccezionale (e lo è tuttora).

Perché quindi questo coinvolgimento e sconvolgimento del mondo civile, questo affossamento definitivo ? Forse perché gli utenti erano stanchi delle solite interfacce e volevano qualcosa di completamente diverso ?

Può essere ! Ma vedendo le reazioni della vecchia utenza non si direbbe.

Altrimenti non avremmo interi eserciti di utenti osannanti a  Xfce che con tutti il rispetto che la comunità si merita, assomiglia alle interfacce che usavo nel 1996 e non ha nemmeno un editor del menu, senza usare alacarte e trascinarsi dietro mezzo gnomo. Anzi fino all'ultima versione non aveva nemmeno la network transparency in Thunder .

Se veramente piacessero queste mostruosità ai più, perché allo stato attuale la distribuzione più scaricata secondo Distrowatch, è Mint che è l'unica a proporre una interfaccia tradizionale tramite pesanti modifiche di Gnome Panel, Gnome Shell e Xfce ?

Vien da pensare che chi abbia preso queste decisioni, l'abbia fatto quindi sotto pressione di alcuni gruppi che ben poco avevano a che fare con Linux e con la sua filosofia.

Che siano stati le vittime o gli ideatori originali a dettare il percorso del green mile, non è particolarmente importante : ciò che è importante è il punto a cui siamo arrivati e cosa succederà quando anche la Microsoft, sputerà fuori il suo bel Windows 8 con interfaccia Metro convertendo di colpo a questa nuova filosofia l'80% dei restanti computer del mondo.

Il nuovo che è avanzato

Capisco che questo apparente lamento sembra essere inconcludente ma ci porta ad una semplice conclusione, di più di 140 caratteri ma comunque semplice e comprensibile.

La verità è che il futuro è già stato scritto e la risposta a qualsiasi vostro dubbio è sempre e comunque 42.

L'informatica è stata ri-progettata a misura di mercato, allo scopo di essere monoculturale e distribuita. Tendenzialmente scomparirà come scienza, perché ingloberà e sarà inglobata da qualsiasi attività umana e sociale.

In questo senso la visione più corretta e coerente è quella di Google, che vede nei suoi sogni un mondo a forma di browser e miliardi di esseri umani che vanno al cesso con gli occhialini della realtà aumentata per capire dove si trova la carta igienica.

In questo clima, non ha quindi alcun senso parlare di sistemi operativi, e di prodotti software, tutto è semplicemente migrato da uno stato di conoscenza e di evoluzione, ad uno stato di assatanato edonismo tecnologico.

Il Nerd è stato sostituito silenziosamente dal Geek, e le riviste di tecnologia non parlano di tecnologia ma di pettegolezzi informatici, come il colore dell'ultima cover dell'iPhone o il comodissimo telefono Samsung da 12 pollici che pare siano ormai argomenti fondamentali nei colloqui di più alto livello, perché questa è l'unica argomentazione che ci sia dato sostenere.

E visto che l'informatica come la conosciamo sparirà, c'è da chiedersi che fine farà l'informatico del futuro, perché a parte quei pochi fortunati che finiranno per lavorare per le grandi aziende, che di indotto producono ben poco e anzi tendono ad accentrare tutto nei propri centri di ricerca, a parte la migrazione in Asia a lavorare negli scantinati dove si gestisce oggi la vera tecnologia, non è che ci siano molti sbocchi.

Probabilmente la figura del nuovo informatico uscito dalla selezione naturale della specie nel mondo occidentale,  sarà quella del giovine allampanato e lampadato, espertissimo di prodotti consueti, di social media e di viral marketing, con in tasca un mobile device di marca qualsiasi che in forza dei suoi 19.400 contatti su Facebook gli permetterà di essere un social leader e persuader.

Quindi mi raccomando adattatevi e cercate di somigliargli il più possibile, perché se la teoria evolutiva si accorge che ci sono in giro anomalie, potrebbe non nutrire per voi alcuna pietà.