Magazine Informatica

Guida all'installazione di Gentoo: preparazione dei dischi.

Creato il 18 maggio 2013 da Linuxlandia
gentoo logo muccaIntroduzione ai dispositivi a blocchi.

Dispositivi a blocchi.
Si dà ora un'occhiata approfondita agli aspetti relativi ai dischi in Gentoo Linux e in Linux in generale, tra cui i filesystem Linux, le partizioni e i dispositivi a blocchi. Quindi, una volta acquisita familiarità con i dischi e i filesystem, si viene guidati attraverso il processo di configurazione delle partizioni e dei filesystem per l'installazione di Gentoo Linux.
Per cominciare, si introducono i dispositivi a blocchi. Il dispositivo a blocchi più famoso è probabilmente quello che rappresenta la prima unità IDE in un sistema Linux, /dev/sda. I dischi SCSI e Serial ATA vengono entrambi etichettati come /dev/sd*; anche i dischi IDE sono etichettati come /dev/sd* con il nuovo framework libata nel kernel. Se si sta usando un vecchio framework per le periferiche, allora il primo disco IDE sarà /dev/hda.
I dispositivi a blocchi rappresentano un'interfaccia astratta ai dischi. I programmi utente possono usare questi dispositivi a blocchi per interagire con i dischi, senza doversi chiedere se si tratta di unità IDE, SCSI o di qualsiasi altro tipo. Il programma può semplicemente indirizzare la memorizzazione su disco attraverso dei blocchi contigui, accessibili in modalità casuale, e di dimensione pari a 512 byte ciascuno.
gentoo particiones1
Partizioni.
Nonostante sia possibile usare un intero disco per il sistema Linux, ciò non è quasi mai messo in pratica. Invece, i dispositivi a blocchi del disco sono divisi in parti più piccole e più maneggevoli. Sui sistemi x86 queste parti sono chiamate partizioni.
Le partizioni sono divise in tre tipi: primarie, estese e logiche.
Una partizione primaria è una partizione che ha le sue informazioni memorizzate nel MBR (master boot record). Poichè MBR è molto piccolo (512 byte), possono essere definite solo quattro partizioni primarie (per esempio, da /dev/sda1 a /dev/sda4).
Una partizione estesa è una speciale partizione primaria (cioè deve essere una delle quattro), che contiene altre partizioni. In origine non esisteva una tale partizione, ma poichè quattro partizioni erano troppo poche, è stata data la possibilità di estendere lo schema di formattazione senza perdere la compatibilità.
Una partizione (volume) logica è una partizione compresa dentro la partizione estesa. Le informazioni di una partizione logica non sono posizionate nel MBR, ma sono dichiarate nella partizione estesa.
Memorizzazione avanzata dei dati.
I CD di Installazione x86 forniscono anche supporto per LVM2. LVM2 aumenta la flessibilità della propria configurazione di partizioni. Durante le istruzioni di installazione ci si concentra sulle partizioni tradizionali ma è opportuno sapere che anche LVM2 è supportato.
4.b. Impostare uno schema di partizionamento
Schema di partizionamento predefinito
Se non si è interessati a elaborare uno schema di partizionamento per il sistema, si può usare quello di questo Manuale:
Partizione
Filesystem
Grandezza
Descrizione
/dev/sda1
ext2
32M
Partizione di boot
/dev/sda2
(swap)
512M
Partizione swap
/dev/sda3
ext3
Resto dello spazio su disco
Partizione root
Se si è interessati ad avere informazioni su quanto dovrebbe essere grande una partizione primaria (o volume logico), o anche su quante partizioni si ha bisogno, seguono alcuni suggerimenti.
Numero e dimensione delle partizioni.
Il numero delle partizioni dipende fortemente dal proprio ambiente. Per esempio, se si hanno molti utenti su una stessa macchina, molto probabilmente si desidera tenere separate le directory /home, aumentando così la sicurezza e rendendo più facile il backup. Se si sta installando Gentoo per utilizzarlo come mailserver, /var dovrebbe essere separata poichè tutta la posta viene memorizzata in essa. Una buona scelta del filesystem è quella che massimizza le prestazioni. I gameserver è bene che abbiano una partizione separata per /opt, visto che la maggior parte dei server di gioco sono installati lì. La stessa cosa vale per /home: sicurezza e backup. E' importante che /usr sia grande a sufficienza, perchè contiene oltre a tutte le applicazione anche l'archivio di Portage che occupa da solo 500MB, esclusi i sorgenti.
Come si è visto, molto dipende da cosa si desidera realizzare. Partizioni o volumi separati hanno i seguenti vantaggi:
  • Si può scegliere il filesystem con maggiori prestazioni per ogni partizione o volume
  • L'intero sistema non può esaurire lo spazio libero se uno strumento malfunzionante scrive all'infinito su una partizione od un volume
  • Nel caso si rendano necessari, i controlli sul filesystem sono ridotti, poichè possono essere condotti in parallelo diverse analisi (questo vantaggio è più per i dischi multipli che per le partizioni multiple)
  • La sicurezza può essere aumentata montando alcune partizioni o volumi in sola lettura, nosuid (i bit setuid vengono ignorati), noexec (i bit executable sono ignorati) etc.
Anche le partizioni multiple hanno però degli svantaggi: se non sono configurate correttamente, si potrebbe avere un sistema con moltissimo spazio libero in una partizione e niente più spazio in un'altra. Un altro inconveniente è che partizioni separate - specialmente per punti di montaggio importanti come /usr o /var - spesso richiedo all'amministratore di avviare il sistema con un initramfs per montare le partizioni stesse prima che altri script di avvio siano eseguiti. Tuttavia questo non accade sempre, perciò il risultato può essere vario.
C'è inoltre un un limite di 15 partizioni per SCSI e SATA.
Come esempio di partizionamento, ecco quello di un disco da 20Gb, usato come un laptop di dimostrazione (contenente webserver, mailserver, gnome, ...):
gentoo particiones2
Esempio di uso del filesystem.
$ df -h
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext3 509M 132M 351M 28% /
/dev/sda2 ext3 5.0G 3.0G 1.8G 63% /home
/dev/sda7 ext3 7.9G 6.2G 1.3G 83% /usr
/dev/sda8 ext3 1011M 483M 477M 51% /opt
/dev/sda9 ext3 2.0G 607M 1.3G 32% /var
/dev/sda1 ext2 51M 17M 31M 36% /boot
/dev/sda6 swap 516M 12M 504M 2% <not mounted>
(Spazio non partizionato per uso futuro: 2 Gb)

/usr è quasi pieno (83% dello spazio già in uso), ma una volta installato tutto il software, non cresce molto. Sebbene allocare diversi GigaByte per /var possa sembrare eccessivo è opportuno ricordare che Portage utilizza questa locazione per compilare i pacchetti. Se si desidera mantenere /var su una dimensione ragionevole di 1GB è necessario modificare la variabile PORTAGE_TMPDIR in /etc/portage/make.conf in modo da farla puntare ad una partizione grande a sufficienza per compilare grossi software, quali OpenOffice.
Usare fdisk per partizionare il disco.
Importante: Se si intende avere partizioni più grandi di 2T, si vada alle istruzioni Usare parted per partizionare il disco invece di queste. fdisk non è in grando di manipolare grandi partizioni.
La parte seguente spiega come creare lo schema di partizione di esempio descritto precedentemente usando fdisk.
L'organizzazione delle partizioni dell'esempio è stata descritta in precedenza:
Partizione
Descrizione
/dev/sda1

Partizione di boot
/dev/sda2

Partizione swap
/dev/sda3

Partizione root
Cambiare le partizioni in base alle proprie impostazioni.
Eseguire fdisk.
# fdisk /dev/sda

Si visualizzerà un prompt come questo:
Prompt di fdisk.
Command (m for help):

Digitare p per visualizzare le attuali partizioni presenti sul disco:
Un esempio di partizionamento.
Command (m for help): p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 49 264600 82 Linux swap
/dev/sda3 50 70 158760 83 Linux
/dev/sda4 71 2184 15981840 5 Extended
/dev/sda5 71 209 1050808+ 83 Linux
/dev/sda6 210 348 1050808+ 83 Linux
/dev/sda7 349 626 2101648+ 83 Linux
/dev/sda8 627 904 2101648+ 83 Linux
/dev/sda9 905 2184 9676768+ 83 Linux
Command (m for help):

Questo disco è configurato per avere sette filesystem Linux (chiamati "Linux" nelle corrispondenti partizioni) e una partizione swap (chiamata "Linux swap").

Rimuovere tutte le partizioni.
Si procede ora alla rimozione dal disco di tutte le partizioni esistenti. Digitare d per eliminare una partizione. Per esempio, per eliminare /dev/sda1:
Eliminare una partizione.
Command (m for help): d
Partition number (1-4): 1

E' stata memorizzata l'eliminazione della partizione. Non verrà più visualizzata se si digiterà p, ma non sarà eliminata fino a quando non si salveranno i cambiamenti. Se si è commesso un errore e si vuole uscire senza salvare, digitare q e invio e la partizione non verrà rimossa.
Ora, se si desidera effettivamente eliminare tutte le partizioni sul sistema, digitare p per visualizzare l'elenco delle partizioni, e poi digitare d seguito dal numero della partizione, per eliminarle. Il risultato è una tabella con nessuna partizione:
Tabella con nessuna partizione.
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System

gentoo particiones

Command (m for help):

Ora che la tabella è vuota, si è pronti a creare le partizioni. Come esempio, si fa riferimento allo schema di partizionamento visto precedentemente: non si deve seguire queste istruzioni alla lettera se non si desidera implementare lo stesso schema.
Creare la partizione di boot.
Per prima cosa, creare una piccola partizione di boot. Digitare n per creare una nuova partizione, poi p per selezionare una partizione primaria, seguito da 1 per selezionare la prima partizione primaria. Quando si visualizza il prompt per il primo cilindro, premere enter. Quando si visualizza il prompt per l'ultimo cilindro, digitare +32M per creare una partizione di 32 Mbyte ed impostarla come avviabile.
Creare la partizione di boot.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (Premere Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Quando si digita p, si dovrebbe vedere la seguente partizione:
Partizione di boot creata.
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux

E' necessario rendere questa partizione avviabile. Digitare a e selezionare 1 per rendere avviabile questa partizione. Se si preme di nuovo p, si noterà che un * è stato posto nella colonna "Boot".
Creare la partizione swap.
Si procede ora alla creazione della partizione swap. Per farlo, digitare n per creare una nuova partizione, poi p per dire a fdisk che si desidera creare una partizione primaria. Digitare 2 per creare la seconda partizione primaria, /dev/sda2. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, digitare +512M per creare una partizione di 512MB. Dopo aver fatto questo, digitare t per impostare il tipo di partizione, 2 per selezionare la partizione che si è creata e infine 82 per impostare il tipo di partizione a "Linux Swap". Finiti questi passaggi, digitando p si dovrebbe avere una tabella partizionata simile a questa:
Elenco delle partizioni dopo aver creato la partizione swap.
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap

Creare la partizione root.
Si procede ora alla creazione della partizione root. Digitare n per creare una nuova partizione, poi p per dire a fdisk che si vuole una partizione primaria. Digitare 3 per creare la terza partizione primaria, /dev/sda3. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, premere enter per creare una partizione che occupi il resto dello spazio su disco. Infine, digitando p si dovrebbe avere una tabella partizionata simile a questa:
Elenco delle partizioni dopo aver creato la partizione root.
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
/dev/sda3 82 3876 28690200 83 Linux

Salvare lo schema delle partizioni
Per salvare lo schema delle partizioni e uscire da fdisk, digitare w.
Salvare e uscire da fdisk.
Command (m for help): w

gentoo particiones3
4.d. Usare parted per partizionare il disco
In questo capitolo si verrà guidati alla creazione dello schema di partizioni dell'esempio descritto precedentemente nelle istruzioni. A differenza del capitolo precedente, questa volta verrà descritto il metodo da usare usando parted. Sia parted che fdisk offrono le stesse funzioni, quindi se si sono fatte partizioni con fdisk in precedenza, si può saltare questa sezione e continuare con Creare i filesystem.
Lo schema di partizioni usato nell'esempio è mostrato nella seguente tabella:
Partizione.

Descrizione
/dev/sda1

Partizione di boot
/dev/sda2

Partizione di swap
/dev/sda3

Partizione root
Modificare lo schema di partizioni in base alle proprie preferenze.
Il programma parted è una variante più moderna di fdisk. Offre un'interfaccia più semplice per il partizionamento del disco e supporta partizioni molto grandi (più di 2T). Eseguire parted sul proprio disco (nel nostro esempio, usaimo /dev/sda:
Eseguire parted.
# parted /dev/sda
GNU Parted 2.3
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.

Per valutare tutte le opzioni offerte da parted, scrivere help e premere INVIO. Per ora, continueremo chiedendo a parted di mostrarci le partizioni attualmente in uso nel disco selezionato. Per questo scopo si può usare il comando print.
Un esempio di configurazione di partizioni mostrata da parted.
(parted) print
Model: SCSI Block Device
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 2148MB 2148MB primary ext4
2 2148MB 3222MB 1074MB primary linux-swap(v1)
3 3222MB 21.5GB 18.3GB primary lvm

Facoltativo: impostare l'etichetta GPT
Molti dischi nei sistemi x86/amd64 sono preparati con l'etichetta msdos. Tuttavia, se si intende creare partizioni molto grandi (2T o più), bisogna usare l'etichetta gpt (la GUID Partition Table) per il proprio disco. Usando parted, questo può essere fatto con mklabel gpt:

Avvertenza: Cambiare il tipo di partizione rimuoverà tutte le partizioni dal proprio disco. Tutti i dati nel disco andranno perduti.
gentoo ficheros
Impostare l'etichetta GPT.
(parted) mklabel gpt

Rimuovere tutte le partizioni.
Se non è stato fatto prima (ad esempio atraverso l'perazione precedente mklabel o perché il disco è stato appena formattato), inizieremo con la rimozione dal disco delle partizioni esistenti. Digitare rm <number> dove <number> è la partizione che si desidera rimuovere.
Rimuovere una partizione dal disco.
rm 2

Ripetere l'operazione per tutte le partizioni di cui non si ha bisogno. Attenzione, però, a non fare errori in questa fase - parted esegue modifiche immediate (a differenza di fdisk, che le esegue successivamente, consentendo di eseguire un "undo" prima di salvare o uscire da fdisk).
Creare le partizioni.
Ora si possono creare le partizioni definite in precedenza. Creare le partizioni con parted non è molto difficile - tutto quello che occorre è informare parted riguardo alle seguetni impostazioni:

  • Il tipo di partizione da usare. Il tipo è generalmente primary nel caso in cui non si intenda avere più di 4 partizioni (con l'etichetta msdos). altrimenti, bisognerà fare della quarta partizione una partizione extended che gestisce tutto il disco rimanente, e creare delle partizioni logical al suo interno. Se si un partizionamento con etichetta gpt allora non c'è limite al numero di partizioni primarie.

  • Il tipo di file system da usare. Il programma parted supporta i file system più diffusi e sa di quale tipo di ID di partizione ha bisogno per quelle partizioni. Questo non significa che paretd creerà il file system sulla partizione (si può farlo con il comando mkpartfs, ma più avanti noi useremo i comandi regolari mkfs.* a questo scopo). L'ID di partizione è spesso usato da alcuni strumenti di autorilevamento per sapere come comportarsi con una particolare partizione.

  • La posizione di inizio di una partizione (che può essere indicata in MB o in GB)

  • La posizione di fine di una partizione (che può essere indicata in MB o in GB)

Un vantaggio di parted è che si può usare semplicemente la dimensione della partizione per trovare automaticamente le posizioni corrette di inizio e di fine, come si vede nel prossimo esempio.
# Creare una partizione da 32 mbyte per /boot

(parted) mkpart primary ext2 0 32mb
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i

# Creare una partizione da 512 mbyte per swap
(parted) mkpart primary linux-swap 32mb 542mb
# Creare una partizione che occupa tutto il disco rimanente.
# -1s (men uno s) significa fino alla fine del disco
(parted) mkpart primary ext4 542mb -1s
Warning: You requested a partition from 542MB to 21.5GB.
The closest location we can manage is 542MB to 21.5GB.
Is this still acceptable to you?
Yes/No? y

Si può ora digitare print e vedere di nuovo lo schema di partizioni per confermare che tutto sia come desiderato. Quando si è soddisfatti, si esce usando il comando quit di parted.
Creare i filesystem.
Ora che le partizioni sono state create, è il momento di inserire il filesystem. Se non si è interessati alla scelta del filesystem e vanno bene quelli che si usano in modo predefinito in questo Manuale, continuare con la sezione su come Applicare un filesystem ad una partizione. Altrimenti ecco una descrizione dei filesystem disponibili.
Il kernel di Linux supporta diversi tipi di partizione. Seguono le descrizioni di ext2, ext3, ext4, ReiserFS, XFS e JFS, visto che sono i più comuni sui sistemi Linux.
ext2 è il vero e proprio filesystem di Linux ma non possiede il supporto per il metadata journaling, il che significa che le routine che effettuano all'avvio i controlli sul filesystem ext2 possono impiegare diverso tempo. Al momento esiste una scelta abbastanza ampia di filesystem journaled di nuova generazione che sono in grado di effettuare controlli sulla consistenza molto velocemente e sono generalmente preferiti alle controparti non-journaled. I filesystem journaled prevengono i lunghi tempi di attesa che solitamente si riscontrano quando viene riavviato il sistema e il filesystem si trova in uno stato inconsistente. Se si ha intenzione di installare Gentoo su un disco molto piccolo (meno di 4GB), in tal caso si dovrà indicare ad ext2 di riservare un numero sufficiente di inode quando si crea il filesystem. Il comando mke2fs usa l'opzione "bytes-per-inode" per calcolare quanti inode un filesystem dovrebbe avere. Se si usa mke2fs -T small /dev/<device> il numero degli inode sarà generalmente il quadruplo per un dato filesystem secondo il suo "bytes-per-inode" riduce da 16kB a 4kB. E' possibile ottimizzare ulteriormente usando mke2fs -i <ratio> /dev/<device>.
ext3 è la versione journaled del filesystem ext2, fornisce il metadata journaling per un veloce recupero dei dati in aggiunta ad altre caratteristiche di journaling avanzate come full data e ordered data journaling. Utilizza un indice Htree che abilita alte prestazioni in quasi tutte le situazioni. In breve, ext3 è un filesystem davvero molto valido e affidabile, ed è raccomandato per qualsiasi sistema e scopo. Se si ha intenzione di installare Gentoo su un disco molto piccolo (meno di 4GB), in tal caso si dovrà indicare ad ext3 di riservare un numero sufficiente di inode quando si crea il filesystem. Il comando mke2fs usa l'opzione "bytes-per-inode" per calcolare quanti inode un filesystem dovrebbe avere.Se si usa mke2fs -j -T small /dev/<device> il numero degli inode sarà generalmente il quadruplo per un dato filesystem secondo il suo "bytes-per-inode" riduce da 16kB a 4kB. E' possibile ottimizzare ulteriormente usando mke2fs -j -i <ratio> /dev/<device>.
ext4 è un filesystem creato da una ramificazione del progetto ext3 con l'introduzione di nuove funzionalità, miglioramenti nelle prestazioni e la rimozione di limiti di dimensioni, con piccoli cambiamenti ai formati interni del disco. Può arrivare fino a volumi di 1 EB con la dimensione massima per i file di 16 TB. Invece della allocazione a blocchi classica di ext2/3 basata sulla mappatura a bit, ext4 usa le extent, che migliorano le prestazioni per i file grandi e riducono la frammentazione. Ext4 inoltre è provvisto di algoritmi più sofisticati per l'assegnazione dei blocchi (assegnazione ritardata e assegnazione multiblocco) che danno ai driver del filesystem maggiori opportunità di ottimizzare l'uso dello spazio sul disco. Il filesystem ext4 è un compromesso tra la stabilità del codice sei sistemi in produzione e il desiderio di introdurre estensioni ad un filesystem vecchio di almeno un decennio.
JFS è il filesystem con journaling ad alte prestazioni di IBM. JFS è un filesystem leggero, veloce ed affidabile basato su B+Tree con buone prestazioni in varie condizioni.
ReiserFS è un filesystem basato su B+tree che offre ottime prestazioni generali, specialmente nella gestione di una grande quantità di piccoli file, al costo di più cicli di CPU. ReiserFS sembra avere una manutenzione più ridotta degli altri filesystem.
XFS è un filesystem con metadata journaling ricco di caratteristiche interessanti e ottimizzato per una forte scalabilità. XFS sembra essere poco tollerante a vari problemi hardware.
Applicare un filesystem a una partizione.
Per creare un filesystem su una partizione o volume, sono disponibili gli strumenti per ogni filesystem possibile:
Filesystem
Comando per la creazione
ext2

mkfs.ext2
ext3

mkfs.ext3
ext4

mkfs.ext4
reiserfs

mkreiserfs
xfs

mkfs.xfs
jfs

mkfs.jfs
Per esempio, per avere la partizione di boot (/dev/sda1) ext2 e la partizione root (/dev/sda3) ext3, si usa:
Applicare un filesystem su una partizione.
# mkfs.ext2 /dev/sda1
# mkfs.ext3 /dev/sda3

Ora si procede alla creazione dei filesystem sulle partizioni (o volumi logici) create precedentemente.
Attivare la partizione swap.
mkswap è il comando usato per inizializzare le partizioni swap:
 Inizializzare la partizione swap.
# mkswap /dev/sda2

Per attivare la partizione swap, usare swapon:
Attivare la partizione di swap.
# swapon /dev/sda2

Creare e attivare lo swap con i comandi illustrati.
Montare.
Ora che le partizioni sono inizializzate e hanno un filesystem, è il momento di montarle. Usare il comando mount. Non dimenticarsi di creare le necessarie directory di mount. Nell'esempio ecco come montare le partizioni root e boot:
Montare le partizioni.
# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

Nota: Se si vuole che /tmp risieda in una partizione separata, assicurarsi di cambiare i permessi dopo il mount: chmod 1777 /mnt/gentoo/tmp. Questo vale anche per /var/tmp.

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :