Preparazione dischi rigidi con GNU/LinuxPreparare un disco rigido è la prima cosa da fare quando ci si vuole installare un sistema operativo. Senza filesystem, infatti, un kernel non sa come o dove andare a prendere un dato su un determinato supporto.
*** Partizioni ***Una partizione è un "pezzo" di supporto di memorizzazione, solitamente un disco rigido, che può "contenere" un filesystem.
Un disco rigido viene partizionato scrivendo nel settore numero 0 del disco stesso, chiamato MBR (
Master
Boot
Record) una serie di dati che identificano quante e quali partizioni il disco dovrà avere, la loro dimensione ed il filesystem. Questi dati vanno a fare parte della "tabella di partizione".
Un disco rigido può avere fino a quattro partizioni primarie, oppure una primaria ed una estesa in MSDOS, o diverse combinazioni per altri sistemi operativi come GNU/Linux.
In un ambiente Windows/DOS all'interno di una partizione estesa ci possono essere più partizioni cosiddette "logiche", fino ad un massimo di 127. Il kernel Linux usa un approccio "differente" nella lettura della tabella di partizione, cosicchè si possono avere configurazioni molto variabili in un ambiente GNU.
Se state costruendo un disco di sistema ci deve
comunque essere almeno una partizione primaria.
Fate attenzione: qualsiasi modifica alla tabella di partizione potrà ripercuotersi, con effetti anche gravi, sui dati immagazzinati su disco. Siate SEMPRE cauti quando maneggiate le partizioni di un disco rigido!!*** Filesystem ***Partizionare un disco non basta. Bisogna anche "prepararlo" per l'arrivo dei dati da immagazzinare. Così come è messo un disco rigido non può memorizzare alcunchè, perchè non c'è alcuna "regola" che dica al kernel come o dove andare a prendere il dato che serve in un determinato momento. Ecco perchè i filesystem sono nati.
I filesystem sono
sistemi ordinati di organizzazione di dati su un supporto di memorizzazione di massa come un disco rigido, un floppy disk, una chiavetta USB.
Ce ne sono di tanti tipi, ed esistono quasi fin dall'avvento dei nastri magnetici. Il primo filesystem su nastro magnetico risale al 1954, opera della DEC (Digital Equipment Corporation), e si chiamava DECTape.
Ora i più diffusi sono NTFS per sistemi operativi Windows e ext3, XFS, JFS e ReiserFS per sistemi GNU/Linux. Ovviamente a filesystem diverso corrisponde un diverso tool per la sua creazione. In Windows c'è il facile "Formatta disco" nelle Proprietà di un disco logico. Per GNU/Linux la varietà è ampia: potendo creare NTFS anche in Linux c'è
mkntfs; c'è mke2fs per filesystem ext2 e ext3; mkfs.xfs per XFS, mkreiserfs per Reiser e una caratteristica propria solo di GNU: un tool per la creazione di filesystem swap,
mkswap.
*** Un po' d'ordine ***Ma se volete installare un sistema GNU/Linux dovete sapere che cosa vi serve, e dove metterlo. Di metodi per partizionare un disco ce ne sono tanti, mi limiterò a consigliare dei procedimenti generali per una buona partizione, per poi descrivere a grandi linee tre tool testuali per la creazione o la modifica di tabelle di partizione.
Generalmente una partizione di root è indispensabile. E' richiesta da ogni distribuzione.
La root (/) è la directory radice del sistema operativo. Ad essa sono connesse tutte le altre per via diretta, e da essa dipendono.Una partizione da avere è la partizione di swap. Alcuni dicono che averla come prima partizione renda più veloce il lavoro del computer. Personalmente non ho riscontrato grandi differenze avendola per prima o per seconda. L'importante è non metterla
troppo lontana dall'inizio del disco. Per esempio, se avete 15 partizioni in un disco da 160GB, se mettete la swap come ultima, da 2GB costringerà le testine a fare molta più fatica per lavorare sul filesystem di swap, rendendo generalmente più lenta l'elaborazione dei dati.
Vorrei anche precisare che
non sempre il sistema usa la swap. In linea di massima avere una swap di dimensioni all'incirca pari a quelle della memoria RAM è già sufficiente.
Potrebbero poi essere, non dico necessarie, ma utili più partizioni distinte dalla partizione di root.
Ad esempio alcuni smaliziati di GNU/Linux trovano molto comodo avere una /boot/ separata dal resto.
La directory /boot contiene tutti i file necessari per l'avvio del sistema, compreso il kernel. NON giocate con la directory boot senza sapere quello che fate, perchè potrebbe risultare un sistema non bootabile!!Proprio per la proprietà della /boot di contenere il kernel alcuni utenti, volendo testare più di un kernel o più di una distribuzione su uno stesso computer può scegliere di creare una /boot separata.
Anche una
/home separata può rivelarsi utile.
La directory /home contiene tutti i file posseduti da utenti non-root.Mettete che un giorno vorrete cambiare distribuzione, o reinstallare la vecchia per un qualche motivo, o aggiornare quella che avete. Formattando la / e reinstallando il sistema operativo avrete la vostra bella /Home immacolata, con ancora tutti i file di configurazione lasciati dalla precedente installazione, senza dover rifare noiosi passaggi per riconfigurare aspetti relativi dell'ambiente di lavoro.
Oppure la /usr, la /tmp, una /var separata per leggere tutti i log che vi passano per la testa... tutto si può fare. Basta organizzarsi un poco. Ricordate sempre però di fare le cose ordinatamente.
*** Tool testuali ***Diciamo la verità. Se doveste installare una distribuzione come la Ubuntu le mie spiegazioni si potrebbero fermare qui. Il resto lo farebbe un tool chiamato
gparted, che da interfaccia grafica partizionerebbe e formatterebbe automaticamente un disco rigido così come lo volete.
Anch'io devo dire la verità. Io ho sempre una certa angoscia quando uso uno di questi strumenti, perchè non so mai veramente che cosa salterà fuori. Mo sento tranquillo solo se uso uno dei tre programmi che ora vado a spiegare.
--- fdisk --- Molto probabilmente si trova in una qualsiasi distribuzione. E' un tool di default per la gestione delle partizioni GNU/Linux. Ma per utenti alle prime armi in un terminale usarlo potrebbe non essere semplice. Per questo ora vado a spiegare, a grandi linee, che cosa fa, con quali comandi e come.
L'invocazione caratteristica di
fdisk è
fdisk /dev/<nome_periferica>
dove <nome_periferica> è la periferica (NON la partizione!!!) che volete andare a modificare. Generalmente, se si tratta del primo disco rigido nel canale IDE primario è
/dev/hda. Se si tratta di SATA potrebbe essere
/dev/sda.
Generalmente, sdX è il nome dato dal kernel Linux a qualsiasi periferica di memorizzazione di massa su bus USB, FireWire, SATA, eSATA o SCSI generico. Ricordo che il bus USB viaggia su Linux come emulazione del bus SCSI.Potrà esservi presentato un avviso di un numero di cilindri superiore a 1024. Se nel sistema non usate DOS o Windows 95/98/ME questo messaggio non ha alcuna ragione di preoccuparvi.
Premendo "m" verrà stampato un gruppo di opzioni utilizzabili all'interno di fdisk. Quelle che potrebbero interessarvi sono 'a', 't', 'n', 'l', q', 'd', 'v' e 'w'. Premendo "x" avrete una lista più esaustiva di comandi ed entrerete in modalità "eXpert". Quasi sicuramente non avrete bisogno di questa modalità.
a --> Rende bootabile/non bootabile una partizione.
t --> Cambia il tipo di partizione selezionata.
n --> Aggiunge una partizione.
q --> Esce da fdisk
senza scrivere su MBR.
w --> Esce da fdisk
e scrive su MBR i cambiamenti.
d --> Cancella una partizione.
l --> Stampa una lista di partizioni compatibili con fdisk.
v --> Verifica l'integrità della tabella di partizione.
p --> Lista le partizioni presenti, o quelle che verranno scritte o modificate.
fdisk ragiona per numeri. Se scegliete di creare, cancellare o modificare una partizione dovrete prima richiamare la lista con 'p' e vedere il numero della partizione che volete cancellare o modificare. Se ne vorrete creare una fdisk darà per scontato che la nuova partizione avrà un numero di un'unità superiore alla partizione massima registrata.
La partizione estesa ne contiene una o più logiche. Ma essa non fa testo: se vorrete installare dati nella partizione estesa (supponiamo che sia hda2) dovrete prima crearla, poi creare delle logiche al suo interno. Queste logiche avranno una numerazione da hda3 in poi. Allora potrete creare filesystem in hda3, hda4, hda5...Eventualmente, se non siete sicuri potete in qualsiasi momento uscire in modo "Pulito" premendo CTRL+C da tastiera. fdisk uscirà senza scrivere nulla su disco, e voi potrete rifare il vostro partizionamento.
Per un backup della tabella di partizione riferitevi alla sezione "Backup".
--- cfdisk --- Io uso poco cfdisk. Lo uso poco per lo stesso motivo per cui non uso tool grafici.
Ha un'interfaccia ncurses molto spartana, ma è pur sempre un'interfaccia.
L'invocazione è semplice:
cfdisk /dev/<nome_periferica>. Vi viene messa davanti una schermatina stile DOS con la possibilità di scorrere dall'alto in basso e viceversa con le frecce direzionali su e giù, e potete navigare nella barra degli strumenti in basso con le frecce direzionali sinistra e destra. E? relativamente semplice.
"Bootable" --> rende bootabile una partizione.
"Delete" --> cancella una partizione.
"Help" --> aiuto più o meno esaustivo su cfdisk.
"Maximize" --> massimizza utilizzo della partizione correntemente selezionata.
"Print" --> stampa la tabella di partizione a schermo o su file.
"Quit" --> esce da cfdisk senza scrivere su MBR.
"Type" --> cambia filesystem della partizione corrente.
"Units" --> cambia rappresentazione delle unità di misura (MB, settori, cilindri).
"Write" --> esce da cfdisk
scrivendo le modifiche su MBR.
Le partizioni "Primary" sono primarie; le "Logical" sono logiche nell'estesa. Notate che la partizione estesa non viene mostrata da cfdisk.
Lo spazio libero è rappresentato dalla voce "Free space", nella colonna "FS type".
Tutto qui. Con "Type" vi viene mostrata una lista di ID di partizione da cui prendere per settare o cambiare il tipo di partizione.
Anche qui, come in fdisk, premendo CTRL+C si può uscire senza scrivere nulla su MBR, un po' come uscire con "Quit". Quindi, se fate disastri, CTRL+C è la vostra ancora di salvezza. Non fatevi prendere dal panico. ;)
--- sfdisk --- Ah.
sfdisk è il mio tool preferito. Per almeno cinque motivi:
1-può prendere comandi da standard input;
2-può prendere configurazioni di MBR da backup salvati;
3-può prendere comandi direttamente dal prompt;
4-è maledettamente difficile da usare :) ;
5-ti costringe a pensare per cilindri invece che per byte.
sfdisk è un tool per hacker. Non ve lo nascondo. Guardate qui:
#sfdisk /dev/hda << EOF
>,75,82
>,1000,83,*
>,1200,83
>,,83
>EOF
Ho appena detto a sfdisk di partizionarmi /dev/hda in questo modo:
--La prima partizione primaria Linux swap da 75 cilindri;
--La seconda partizione primaria Linux nativa da 1000 cilindri, bootabile;
--La terza primaria Linux nativa da 1200 cilindri;
--Tutto il resto del disco come Linux nativo.
La sintassi di utilizzo di sfdisk è abbastanza semplice, una volta che è capita. Essenzialmente sfdisk accetta quattro parametri:
-inizio partizione (in cilindri);
-fine partizione (in cilindri);
-tipo partizione (in esadecimale o valore di default E,S,L,X);
-flag di boot (*=bootabile; -=non bootabile).
Ogni valore di dimensione di partizione è espresso in cilindri. Per facilitarvi le cose, potete digitare da riga di comando
sfdisk -l /dev/<nome_periferica>
e guardare nella riga che comincia per "Units =". Subito dopo "cylinders of" c'è scritto un numero. Quel numero è il numero di byte per cilindro del vostro disco rigido. E' una costante che può variare da disco a disco.
Comunque ricordate che se volete fare una partizione da N Gigabytes (inteso come 1000 MB), avendo n come numero di byte per cilindro e c il numero di cilindri nella partizione che volete creare, avrete:
c = N / n
Ricordate che N e n devono avere lo stesso ordine di grandezza. Se N è espresso in megabyte, anche n dovrà essere espresso in megabyte. E così via.
Come avrete già notato, sfdisk può leggere valori separati da virgole. Le virgole separano i quattro valori di base che ho elencato sopra, in standard input (come ho scritto) o interattivamente, invocandolo:
sfdisk /dev/<nome_periferica>
Se si lamenta perchè il disco non è in accesso esclusivo aggiungete un
--no-reread alla riga di invocazione. Se volete solo fare pratica senza scrivere nulla potete aggiungere anche un
-n, che rende il tutto "read-only". Anche qui CTRL+C vale ed è spesso usato per salvarvi il disco rigido.
I valori si immettono così:
<inizio_partizione>,<fine_partizione>,<id_partizione>,<flag_boot>
Il <flag_boot> è opzionale. Notate che se andate di default sfdisk
non mette flag di boot, da nessuna parte. Dovete essere voi a specificare quale flag mettere da che parte. Comunque è necessario solo il boot.
Valori assenti prendono valori di default. Come avevo scritto sopra, ad esempio, la riga
>,1000,83,*
crea una partizione primaria che comincia dal cilindro successivo a quello dove finisce quella prima (in questo caso la swap, che finisce al 75), ha una dimensione di 1000 cilindri, ha id 83 (Linux nativa) ed è bootabile. Il valore di inizio è di default, ed è 76.
L'ultima partizione ha due valori di default:
>,,83
Comincia nel cilindro successivo a quello dove finisce quella prima, ha una dimensione di default che prende tutto lo spazio libero rimasto e ha un id 83.
Se create una partizione estesa potrete continuare a creare partizioni logiche all'interno dell'estesa.
sfdisk ha alcuni valori di default per i tipi di partizione: E, S, L e X, dove stanno per estesa (
Extended -5-), swap (
Swap -82-), Linux nativa (
Linux -83-) e Linux estesa (Linux e
Xtended -85-).
--- Alcuni ID di partizioni --- Di seguito ho riportato alcuni ID di partizione, semmai vi servano e/o voleste avere un veloce riferimento senza andare a giochicchiare troppo nei tool di partizionamento.
5 --> Estesa DOS (compatibile con estesa Linux)
85 --> Estesa Linux (meglio usare la DOS per compatibilità)
7 --> HPFS/NTFS
b --> Fat32
82 --> Linux swap
83 --> Linux nativa (può essere ext2, ext3, XFS, JFS, ReiserFS...)
Molti altri ID li potete trovare in fdisk, usando "l" per accedere alla lista di tipi di partizioni.