22 Nov 2009
In questi giorni ho deciso di cominciare una guida più o meno completa ad un comando che purtroppo, nel mondo degli smanettoni "non avanzati", è poco conosciuto; si tratta di chroot.
Infatti, tra un impegno ed un altro, mi sono accorto sul forum di Arch Linux, e non solo, di dover fornire spiegazioni riguardo questa utility, che non è, d'altronde, ricca di documentazione e spiegata come vorrei (e come vorrebbero). :P
Innanzi tutto, una breve introduzione: chroot serve per entrare in una data directory provvista di filesystem Unix e, all'interno di questa, bash, per sfruttarla alla stregua di una vera e propria directory radice, allo scopo di eseguire programmi o riparare, come mi è successo spesse volte, problemi vari. Nello specifico, mi sono trovato a spiegare chroot nell'ambito della risoluzione di problemi legata a sistemi che, in circostanze varie, non eseguono correttamente la procedura di boot, per cui non ci si può loggare all'interno del sistema per riparare i danni.
Chroot quindi, oltre che una utility per scopi più o meno noti, può servire da trucchetto d'emergenza per riparare al fatto di aver fatto una razzata; spesso si sente dire "Linux va formattato solo in caso di problemi gravissimi". Ebbene, questo è falso, perchè in caso di problemi gravissimi abbiamo il nostro chroot pronto a darci una mano in qualsiasi circostanza :D

Ma vediamone per bene il funzionamento: innanzi tutto, abbiamo bisogno, come ho detto su, di una subdirectory con un filesystem Unix e la bash installata; nel caso in cui dovessimo riparare dei danni, la nostra partizione target può diventare facilmente una subdirectory del sistema operativo che stiamo utilizzando tramite una semplice operazione di montaggio. Creiamo quindi il punto di aggancio:
sudo mkdir /media/target
E montiamo, finalmente, il nostro pseudo-filesystem, o la partizione bersaglio dei cambiamenti che vogliamo effettuare, legandolo in questo modo alla nostra root reale.
mount /dev/sdaX /media/target
A questo punto, se vogliamo solo modificare dei file senza compiere operazioni che interessino i dispositivi o i dati presenti in /proc, possiamo anche saltare il montaggiodi altre parti del nostro sistema base nel sistema bersaglio. Però, c'è un però.
Però, se vogliamo compiere operazioni come un aggiornamento, che interessa ovviamente alcuni dati di /dev e alcuni dati di /proc, conviene rendere disponibili queste informazioni al sistema ospite; come fare? Tramite altri due comandi di montaggio, il primo che riguardi la directory /dev, e l'altro che interessi /proc: in questa maniera rendiamo leggibili le informazioni riguardo l'hardware della macchina al sistema ospite, che potrà, in parecchi casi, averne bisogno. Per esempio per una ricompilazione del kernel. Per esempio.
Ordunque, andiamo a montare /dev con alcune opzioni che non so minimamente cosa significhino, ma dato che sono scritte sul Gentoo Handbook e le ho usate moltissime volte le prendo per buone :mrgreen:
sudo mount -o bind /dev /media/target/dev
E andiamo poi a montare uno pseudo-proc, almeno da quanto ho capito per via della sintassi di comando leggermente più articolata.
sudo mount -t proc none /media/target/proc
Per una spiegazione completa dei comandi integro il commento del buon Alex Anghelone, che ci dice a cosa serve tutto questo:
Il modulo bind di mount serve per montare un determinato percorso in più punti, un pò come il link simbolico ma molto più potente in quanto viene gestito come una specie di partizione condivisa. Per dire, il repository di arch sul portalinux risiede fisicamente sulla home del tuo utente ma viene montato col modulo bind dentro la doc root del sito per renderla visibile :)
-t proc invece monta il filesystem di tipo proc, sostanzialmente ci hai azzeccato solo che non ti monta uno pseudo-proc, ma un proc vero e proprio solo che lo fai a manella :D quando avvi la tua distribuzione gli script di init danno quel comando li per montarti /proc sul sistema.
A questo punto, siamo pronti. Possiamo tuffarci nel sistema ospite, ed iniziare riparazioni, modifiche, aggiornamenti, installazioni e quant'altro:
sudo chroot /media/target
Come vediamo, il PS1 è cambiato, e rappresenta il .bashrc che abbiamo impostato per l'utente root sulla directory target, nella quale adesso siamo loggati come root e possiamo effettuare ogni tipo di modifica.
Per uscire dalla nuova directory radice, ovviamente, basta un semplice comando exit
;)
In questo modo, si possono far eseguire programmi in una sandbox a prova di bomba, in quanto non condivide nulla, a parte qualche informazione, con la macchina ospitante. Godetevi il vostro chroot, e cominciate a usarlo massivamente per i compiti più disparati. Posso veramente dire: chroot, mai più senza :mrgreen:
21 Nov 2009
Questa mattina, assieme alla nuova release di Wordpress, ho voluto rendere finalmente operativo il tema sul quale lavoricchiavo da un po' di tempo, per il blog, visto che la vecchia veste grafica mi aveva un po' stufato.
In sintesi, di seguito, le novità che ho introdotto e tutte le chicche più o meno utili che vi accompagneranno nella lettura. :D
- Nuovo header: come ogni nuova versione (snapshot release) di questo blog, c'è un nuovo header completamente disegnato da me, che beerà il vostro sguardo ad ogni accesso: il Tux che saluta e vi dice che vi roota è fighissimo dai :mrgreen:
- La breadcrumb navigation ultranerd: Guardate sotto l'header, a sinistra; vedrete una scritta familiare :lol:
- Il box per post recenti, commenti, archivio: Mi piaceva un sacco questa caratteristica del tema originario su cui ho lavorato, e l'ho voluta mentenere, seppur con qualche cambio qua e là.
- Ombre de qua, ombre de là...: Mi sono divertito un po' ad usare la proprietà text-shadow di CSS, così adesso i titoli dei post, delle pagine, e alcuni link (come quelli nell'header), sonodecorati con delle ombre alquanto sexy che non richiedono l'uso di metodi particolari; basta un parametro ben settato e via ;)
- Tutte le features del vecchio tema :D
Beh, mi pare di aver detto tutto; mi riservo il diritto di ottimizzare il tutto nei prossimi giorni, e cambiare un po' il codice per adattarlo meglio a queste mie pagine: Enjoy :mrgreen:
19 Nov 2009
Spesso, troppo spesso, ci troviamo a dover scrivere e lavorare al computer in una condizione di costante rompimento di cosiddetti da parte degli altri. Non è così? No? Beh, allora voi siete gli anormali: vi assicuro che per la maggior parte della gente tutto questo calore umano mentre si lavora non è decisamente il massimo.
Immagino che abbiate quindi immaginato una condizione di totale eremitaggio, mentre scrivete, in modo da non essere mai disturbati da chat prorompenti, interlocutori troppo "verbosi", tantomeno da notifiche improvvise che distolgono la vostra attenzione.
Come ho già accennato in passato, io sono solito soffrire di un gigantesco disturbo dell'attenzione che mi porta a clickare qualunque cosa io veda e reputi interessante; in questa maniera la produttività di qualunque individuo, compreso me, è portata a calare drasticamente, andando a zero in giornate di particolare voglia di far nulla :P
Finalmente, dopo tanto tempo alla ricerca di qualcosa di simile, ho scoperto la soluzione a questo male, e ne parlerò un poco: esiste per PC e Mac, con nomi diversi, ma il concetto è sempre lo stesso; offrire all'utente un editor di testo alquanto scarno ma senza distrazioni. Il concetto di distractionless è stato messo a punto in questi ultimi anni dove le rotture di scatole via web e non si sono moltiplicate in maniera esponenziale, dalle semplici notifiche di Gmail alle finestre di chat dei vari messenger.
Esistono vari editor esenti dal concetto di distrazione, e posso confermare che sono veramente utili: per Linux esiste PyRoom, disponibile nei repository delle maggiori distribuzioni, su AUR per ArchLinux, editor distractionless che calca le orme del più celebre WriteRoom per Mac :)

Ma andiamo a scavare nei meandri del funzionamento di questi editor, in particolare PyRoom: da quando parte, l'applicazione oscura lo schermo, impostandosi in modalità fullscreen, e ci mette a disposizione un riquadro, dove brilla il nostro cursore, esattamente come un editor di testo a riga di comando; premendo CTRL+H possiamo visualizzare un dialog di aiuto, e vengono messe a disposizione anche delle shortcut per lavorare a più file contemporaneamente. Tramite CTRL+P accediamo al dialogo delle preferenze, dove possiamo scegliere il carattere visualizzato (io non abbandono mai il mio Monaco 7), alcuni parametri relativi all'editing e il delay tra un salvataggio automatico e l'altro. L'essenziale, insomma :D
La seconda tab delle preferenze, con mio sommo gaudio, ci fa selezionare i temi disponibili e, qualora ce ne fosse la voglia o la necessità, ce ne fa creare di nuovi semplicemente modificando le poche opzioni a disposizione, ossia colore della cornice e del testo, e colore di sfondo. Successivamente possiamo salvare il layout da noi creato ed utilizzarlo: semplice come bere un bicchier d'acqua ;)
Con ulteriori scorciatoie possiamo scoprire le grandissime potenzialità di questo editor, anche se io, al momento, mi accontento di lavorare ad un solo file per volta. Ottima cosa, comunque, quella di far diventare "asociale" l'applicazione, permettendo così di svolgere il proprio lavoro esattamente come, una volta, ci si metteva i tappi nelle orecchie.
Il muto casino del web e del desktop adesso non vi darà più fastidio, ragazzi. Happy Editing :mrgreen:
17 Nov 2009
L'altra sera, in preda al torpore, mi sono addormentato. E mentre dormivo, ho fatto un sogno, un sogno splendido.
Ho sognato un programmatore, seduto, davanti ad un PC con GNOME. Ed Empathy. Il programmatore digitava, digitava, digitava, passando dalla finestra di chat all'editor di testo; all'improvviso, "ti condivido il mio desktop così lo vedi" e l'altro: "aspè che Kopete è un po' lentino con la condivisione desktop". Essì, perchè nel sogno anche Kopete era basato su Telepathy. Così come erano basati su Telepathy tutti i servizi di comunicazione tra applicazioni di entrambi gli ambienti desktop. Telepathy riusciva quindi ad interfacciarsi, a fare da mediatore tra gli eterni rivali GNOME e KDE.

Keep dreamin'! Lo so che non c'entra una fava :D
Improvvisamente, oltre a condividere il desktop, il programmatore scriveva in contemporanea con l'interlocutore, un altro programmatore magari, e collaboravano allo stesso file, l'uno da Gedit, l'altro da Kate, come se nulla fosse.
E altrettanto improvvisamente: "oh, senti questa canzone che spacca". Una richiesta di stream audio. E uno sentiva la musica dell'altro; il tutto tramite pochi click, perchè chi gestiva le connessioni tra i programmi e i protocolli era sempre Telepathy.
In un baleno i due condividevano file, informazioni, righe di testo, il tutto a prescindere dall'ambiente. Bastava solo che Telepathy fosse attivo, e l'applicazione programmata per interagire.
Non sarebbe fantastico se i programmatori di entrambi i Desktop Environment maggiori mettessero in piedi queste funzionalità? Non ci vorrebbe poi molto, in fondo; manca solo una divisione di persone dedicate a questo, e la voglia di fare.
Ma purtroppo, ultimamente, la voglia di fare è piuttosto poca, e manca la manodopera virtuale per fare qualunque cosa, anche un bottoncino piccolo. Sarebbe troppo bello, se Telepathy interagisse in questa maniera con le applicazioni del nostro desktop.
Non ci sarebbe più bisogno di molti servizi, perchè diventerebbero, almeno per gli utenti GNOME e KDE, obsoleti; e le altre apps avrebbero tutto il vantaggio ad integrare features del genere, adeguandosi al framework Telepathy. In questa maniera la tecnologia diverrebbe di nuovo ausiliaria per l'uomo, e non più fonte di frustrazione. Programmi che interagiscono. Da ambiente ad ambiente. Senza razzismo, senza distinzione di librerie.
Ma chissà quando ci arriveremo.
Se ci arriveremo.
16 Nov 2009
In questi giorni mi sono trovato a schifare un po' l'icona che ha Firefox, di default, in ArchLinux: quella cosetta un po' orrenda, il globo blu.
Tanta gente peraltro, da quando sono diventato una sorta di helpdesk vivente, mi ha chiesto perchè, una volta installato il volpone in Arch, vedesse quella robaccia al posto della molto più attraente icona utilizzata dalla maggior parte delle distribuzioni Linux.

La risposta definitiva a tutto ciò l'ho scoperta qualche giorno fa, e si chiama Firebrand. :)
Questo simpatico script che possiamo tranquillamente installare prelevando il PKGBUILD da AUR si occupa, in un solo colpo, di riportare le icone relative a Firefox presenti nel nostro sistema, da quell'orrenda sfera blu con cagate di piccione sopra alla sexy volpe rosso fuoco, o, se vogliamo oppure necessitiamo del brand di Iceweasel o Swiftweasel, possiamo applicare anche questi.
Com'è possibile? Semplicemente perchè Firebrand, una volta eseguito, ci chiede quale tipo di "etichetta" vogliamo apporre al nostro browser, e si comporta di conseguenza.
Lo script può comodamente essere installato con yaourt, altrimenti potete scaricare il tarball del PKGBUILD a questa pagina. ;)
Happy branding :D