mercoledì, dicembre 21, 2011

Consigli per il partizionamento (ragionato) del disco per l'installazione di Linux

Premessa
A meno che non abbiate uno smartphone con Android è probabile che per molti di voi i laboratori di informatica siano stati la prima occasione di utilizzare un sistema operativo GNU/Linux. È possibile che ne siate anche incuriositi o interessati. E magari vorreste anche installarvelo a casa su una comoda partizione. Qui di seguito trovate un paio di consigli e qualche link che vi possono aiutare non tanto nella procedura di installazione stessa, quanto nella scelta delle partizioni.

La maggioranza delle distribuzioni di Linux infatti comprende una procedura guidata per l'installazione che ad in certo punto analizzerà il disco fisso del vostro PC, riconoscerà l'eventuale presenza di altri sistemi operativi e vi chiedere dove (e come) installare il vostro sistema Linux-based, proponendovi di utilizzare di una certa quota dello spazio libero che avete a disposione.

A proposito, se siete alla vostra prima esperienza con Linux, personalmente vi consiglio di installare Ubuntu, al secondo posto consiglio Fedora (scoprirete ben presto che si tratta di una questione di gusto personale e che la lista delle distribuzioni GNU/Linux è lunghissima: qui un esempio non necessariamente completo, qui una bella timeline).

Il mio invito è quello di non usare la procedura automatica, ma di specificare manualmente le partizioni. Seppure può sembrare folle incitare dei nuovi utenti a compiere un'operazione complicata e delicata come quella del partizionamento vi assicuro che un partizionamento ben fatto vi farà risparmiare tempo in futuro. Quella proposta sotto è una soluzione semplice da attuare, ma che vi offrirà grandi vantaggi rispetto al "installa tutto in un'unica partizione" che è la soluzione proposta di default dalle procedure di installazione di cui sopra. Non temete, i tool di partizionamento che si attivano scegliendo di specificare le partizioni manualmente hanno interfacce abbastanza intuitive da usare e, dopo aver letto un paio di istruzioni, il vero problema sarà *decidere quali e quante* partizioni creare. Questa guida serve ad aiutarvi in quest'ultimo step.

Prima di iniziare
Come detto sopra il partizionamento è un'operazione abbastanza delicata quindi eseguite un backup tutti i vostri file personali e possibilmente anche del sistema (solitamente sui portatili queste utility vengono preinstallate dal produttore del PC e hanno quindi nomi simili a "Acer recovery", "HP recovery manager", etc.). È bene fare sempre un backup prima di operazioni di aggiornamento/installazione importanti (sia su Windows che su Linux). In generale, è una buona pratica anche fare backup periodici e regolari, per quest'ultima esigenza consiglio di installare su Ubuntu l'ottimo programma Back In Time, una guida sull'installazione e l'uso si trova qui).

Vale la pena che vi leggiate anche queste due link, sono una buona introduzione su cos'è una partizione e cos'è un filesystem: [Gestione disco], [Partizionamento manuale].

Vai con il partizionamento
(tratto da qui)

Sostanziamente vi servono tre partizioni, quelli indicati qui sotto sono i loro mount-point:
1) "/" (detta anche "partizione di root" o "root") è la partizione di sistema, quella dove vanno a finire gli eseguibili dei programmi che installate, dei vari comandi di sistema e tutte le librerie (da stdio.h passando per stdlib, etc.) Qui dentro va anche il "bootloader" (GRUB2, ad oggi) ossia quel programma che vi permette di scegliere quale sistema operativo avviare al momento dell'accensione della macchina (dentro la cartella /boot). Tenete conto che qui denro ci sarà anche /tmp la directory di sistema dove vengono salvati i file temporanei (e.g. i file che aprite dal browser senza salvarli, le immagini disco prodotte temporaneamente se volete fare una copia di un CD, per non parlare di tutti i file prodotti temporaneamente da vari programmi). Tenete presente che arrivare a riempire le directory di sistema può comportare numerosi grattacapi, non da ultimo, se /tmp si riempe il sistema si potrebbe semplicemente bloccare perchè non riesce più ad eseguire alcune operazione che richiedono la creazione di file temporanei. Quanto grande deve essere questa partizione dipende anche da quanti programmi avete in mente di installare. I requisiti minimi di installazione ammontano a 8 GB[+]. Se non avete problemi di spazio 50 GB dovrebbero essere più che sufficienti a permettervi di installare i vostri programmi preferiti e avere un bel po' di spazio per installare programmi anche coroposi.

2) "/home" è la partizione con i dati dell'utente, quella che contiene le home-directory ("~") di ciascun account utente (e.g. /home/cristian se esiste un utente con username "cristian" sulla macchina). Avere la cartella home in una partizione separata vi permetterà di gestire dati e salvataggi più facilmente, per esempio potrete reinstallare il sistema da zero e ritrovare tutti i vostri dati al loro posto (questo *NON* vi solleva dalla necessità e responsabilità di fare i backup). Tenete conto che questa partizione contiene anche diverse cose utili come, per esempio, i file che indicano i vostri settaggi preferiti per il desktop oppure i segnalibri del browser[°].
Questa scelta si dimostra utilissima nel caso in cui abbiate problemi con il sistema (per esempio non riuscite più a fare partire Linux), infatti in questi casi basta avere un liveCD e una chiavetta o disco esterno per recuperare facilmente i vostri dati. Se riavviate da liveCD vedrete che la vostra partizione /home viene riconosciuta come un disco separato e quindi potrete semplicimente copiare tutti i vostri file su un hd esterno[-]. A volte, specie se si è alle prime armi, il modo più semplice per risolvere un problema è reinstallare[§]. Con una partizione home separata potete farlo senza problemi e per perdere i vostri dati vi rimarranno due possibilità: 1) li cancellate da soli [succede, succede...] 2) danneggiate fisicamente il disco in modo irreparabile.

3) swap (che in realtà non è un mount point ma il tipo di partizione, lo trovate tra i "tipi di filesystem" anche se non è un filesystem). Lo swap è una partizione speciale, usata dal sistema come sostituto della RAM nel caso questa fosse completamente piena (però, facendo parte del disco fisso è considerevolmente più lenta della RAM). Lo zen degli amministratori di sistema dice che "ci si rende conto di aver bisogno dello swap quando manca" ovvero quando il vostro PC smette di funzionare perchè ha occupato tutta la RAM (e tutto lo swap eventualmente) e non sa dove andare a scrivere i dati prodotti dalle vostre applicazioni. Una regola abbastanza nota e "tradizionale" stabilisce che lo swap deve essere il doppio della RAM, ma è anche vero che questa regola è stata creata quando le RAM si misuravano in MB! Su un computer con una memoria RAM dell'ordine di qualche GB se non avete problemi di spazio su disco fisso potete limitarvi a creare una partizione di swap grande quanto la RAM. Anche qui i vostri bisogni potrebbero cambiare dall'utilizzo che fate del PC. Ulteriori informazioni sullo swap e qualche consiglio rispetto a quale punto del disco installarlo si trovano nelle guide linkate qui sotto.

Una guida un po' datata, ma in italiano e più dettagliata si trova qui e qui trovate un'altra, interamente dedicata al partizionamento.

Infine, tenete conto che "your mileage may vary" ovvero che le soluzioni ottimali per voi dipendono dal vostro utilizzo del PC[#]. Se siete abituati ad usare molti programmi contemporaneamente allora è bene che non vi manchi lo swap, se solitamente installate molti programmi (magari solo per provarli), non risparmiate spazio nella partizione di sistema. Tenete conto che per queste partizioni pochi GB fanno la differenza, invece se avete bisogno di spazio per salvare i vostri file probabilmente quello che fa la differenza si misura in centinaia di GB o TB e la soluzione più semplice in questi casi è probabilmente dotarsi di un hard disk esterno (esistono hard disk esterni anche di 1 TB che non hanno bisogno di alimentazione esterna e hanno dimensioni contenute). Tenete pure conto del fatto che le memorio di massa costano poco (~ 0.05 €/GB, ad oggi)[*].

Fare a meno delle partizioni
Se avete un computer con almeno 1 GB di RAM e dual core (per i PC fissi è probabile che sia così se l'avete comprato dopo il 2005, per i portatili è così dal 2008 [fatti salvi i netbook, naturalmente]) potreste valutare la possibilità di installare Linux su una macchina virtuale. In breve una macchina virtuale è un software che vi permette generare un ambiente che emula il comportamento di un PC, quindi un PC virtuale, che funziona utilizzando le risorse del vostro PC "fisico". Sulla maccina virtuale è quindi possibile installare un sistema operativo, detto "guest", e utilizzarlo come se fosse una macchina fisicamente diversa. Compito del software di virtualizzazione è quello di "tradurre" le richieste alle risorse virtuali in richieste alle risorse reali (fisiche) del vostro PC. Il sistema operativo sul vostro PC fisico si dice "host".

Per questo potete installare un software come VirtualBox e, dopo aver scaricato l'immagine CD di installazione della vostra distribuzione preferita (non è necessario masterizzare il CD), usate la procedura guidata per creare una nuova macchina virtuale. Naturalmente la macchina virtuale creata dovrà avere un'architettura compatibile con quella del CD di installazione, se siete nel dubbio scaricate il CD con la versione x86/32 bit e create una macchina virtuale con la stessa architettura.

Naturalmente è possibile anche fare il contrario installando solo Linux sul vostro PC e usandolo come host per un sistema guest Windows. Su Ubuntu basta fare:
sudo apt-get install virtualbox virtualbox-guest-additions-iso
per installare VirtualBox, a questo punto potrete lanciare il programma dal menu "Applicazioni/Accessori/VirtualBox" e creare una nuova macchina virtuale usando la procedura guidata. Per fare questo vi servirà il CD di installazione di Windows o un'immagine (.iso) del CD stesso.

Quindi qui la scelta principale da fare in questo caso è "qual è il mio sistema operativo principale?", se usate Windows chiedetevi anche se esistono dei programmi alternativi su GNU/Linux che possono sostituire quelli che usate su Windows (in generale la risposta è sì). Il consiglio è che scegliate come sistema principale quello in cui eseguite le operazioni maggiormente "computation intensive". Se avete in mente di usare il PC per scrivere programmi probabilmente vi troverete più comodi usando Linux, se siete giocatori/giocatrici e avete i vostri giochi installati in Windows probabilmente vorrete usare quello come sistema principale. Se volete fare entrambe le cose, dato che probabilmente le farete in momenti separati ;-), vi conviene partizionare il disco e non usare la macchina virtuale.
Tenete anche conto del fatto che GNU/Linux può leggere e scrivere comodamente e facilmente le partizioni Windows (filestem NTFS), il contrario invece è meno facile[**], sono anche possibili soluzioni "ibride"[++].

Scusate la prolissità, spero che tutto questo possa essere d'aiuto.

Cristian

Note:
[*] Un problema di queste genere di guide è che invecchiamo molto velocemente, anche tra quelle linkate ne trovete alcune che indicano come "hardware tipico" un disco di qualche GB e una RAM di qualche decina di MB. Anch'io qui ho fatto qualche esempio, prendete tutti questi numeri cum grano salis.
[+] Fonte. Questo fatto vi permette, volendo, di installare il vostro sistema operativo su una chiavetta USB e portarvelo comodamente in giro. Non è fantascienza, anzi è il metodo standard per chi volesse navigare in sicurezza e anonimato da un internet cafè e in particolare nei paesi in cui la libertà di opinione non è garantita questo è vitale. Il problema è che per utilizzare il vostro sistema dovete riavviare il computer (cosa non sempre possibile).
[°] Tipicamente tutte queste informazioni si trovano dentro dei file di configurazione che sono salvati dai programmi all'interno di cartelle nascoste, che hanno nomi che iniziano con un punto (".") e si trovano dentro "~". Per esempio la cronologia, i segnalibri e i cookies del mio browser preferito [Firefox] sono in "~/.mozilla/firefox".
[-] Comandi utili in questi casi sono rsync e dd (usate il manuale [man] per ulteriori informazioni).
[§] "Don't think to yourself, "I'll be careful, I won't need to reinstall." Wrong. You will definitely hose up your system at least once, and for the novice, reinstalling is often the easiest way to fix it." (cit. dal link segnalato sopra)
[#] Vale la pena notare che questi consigli dipendono anche dalla vostra esperienza con Linux. È possibile che a un certo punto potrete avere voglia di mettere anche /usr su una partizione separata, oppure di usare filesystem come btrfs che hanno la possibilità di creare facilmente degli snapshot del disco. Ma a quel punto probabilmente ne saprete più di me...
[**] Per farlo si può installare in Windows il programma Ext2Read, nonostante il nome vede anche i filesystem di tipo ext4, il default per le installazioni di Ubuntu. Ext2Read può anche scrivere su questi filesystem, ma è consigliabile usarlo in sola lettura. Per gli stessi scopi esiste anche Ext2Fsd. Disclaimer: non ho mai provato questi due programmi quindi se qualcuno volesse scrivere qualche feedback in merito sarebbe gradito.
[++] Questa soluzione sembra percorribile e più solida di Ext2Read/Ext2Fsd anche se un po' più complicata.

martedì, novembre 29, 2011

Nota sull'installazione di Root 5.30 in Ubuntu 11.10 (gcc v.4.16)

Ciao a tutti,

Dato che mi è capitato di reinstallare ROOT condivido con voi due consigli utili per evitare un paio di errori nell'installazione. La versione interessata è la 5.30 (attualmente "recommended") ed il sistema operativo è Linux Ubuntu 11.10 (ultimo disponibile).
Per l'installazione seguite il capitolo 3.1 del file INSTALL che trovate nella cartella $ROOTSYS/root/README/

In particolare dopo aver fatto
./configure --help
scegliete l'architettura in base al vostro sistema operativo, molto probabilmente una tra queste[1]:
* linux - per i386 Linux with gcc >= 3
* linuxx8664gcc - per x86-64 Linux with gcc >= 3.x
quindi fate:
./configure ARCHITETTURA --prefix

(attenzione aggiungete l'opzione --prefix, che nell'INSTALL non è segnalata[2])
infine per compilare fate:
make -k LDFLAGS="-Wl,--no-as-needed"

Se avete un processore dual core (probabile, se avete un computer comprato dopo il 2005[3]) aggiungete al make sopra l'opzione -j2 quindi:
make -j2 -k LDFLAGS="-Wl,--no-as-needed"
Le opzioni a make servono per evitare l'errore un errore del tipo "Undefined reference to ..." che capita con gcc v4.16[4].

Ciao,

Cristian

[1]potete saperlo facendo
uname -a
se vedete nell'output x86_64 avete installato Ubuntu a 64 bit altrimenti se c'è solo x86 è a 32 bit (i386).
[2]]http://root.cern.ch/phpBB3/viewtopic.php?p=33036
[3]per vedere il numero di processori fate, vedrete tante righe quanti processori
less /proc/cpuinfo | grep processor
Un altro comando utile è:
sudo lshw -c cpu
[4]http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=13341