Appendice B. Installazione senza sysinst

Sommario
B.1. Partizionamento e installazione: teoria
B.2. L'installazione in pratica

L'autore di questa appendice è Wojciech Puchar

Questa appendice descrive il procedimento da utilizzare per installare NetBSD senza fare uso di sysinst. Ci si può chiedere perché non usarlo; ecco alcune ragioni:

Questa appendice descrive solo la configurazione di sistemi i386 in cui NetBSD sarà l'unico sistema operativo sul disco fisso. Ho cercato tuttavia di evidenziare le parti specifiche di questa architettura sperando di ricevere qualche contributo per quanto riguarda gli altri port (da inviare, in inglese, a wojtek@3miasto.net).

Per mettere in pratica quanto descritto in quest'appendice è richiesta una conoscenza dei comandi di base di Unix (cd, ls, cp, tar, ecc.).

B.1. Partizionamento e installazione: teoria

Il processo di installazione consiste dei seguenti passi:

  1. partizionamento del disco fisso

  2. creazione del/dei filesystem

  3. installazione del boot loader (dipendente dalla piattaforma e non presente in alcuni port, quali sparc, ecc.)

  4. decompressione dei tarball nelle partizioni create

  5. configurazione finale (creazione dei dispositivi /dev, /etc/fstab, impostazione del nome dell'host, ecc.)

B.1.4. Filesystems

Il filesystem standard usato da NetBSD è quello detto "ffs" o "ufs" (Fast File System o Unix File System). Anche se "fast" (veloce) non significa "il più veloce al mondo", si tratta di un file system dotato di buone prestazioni per uso generale e di meccanismi di protezione in caso di crash. Per creare il filesystem ci si può limitare a usare il comando newfs senza parametri, ma vale la pena di cercare di ottimizzarne l'uso. Vediamo ora una breve descrizione dei principali parametri su cui intervenire:

-m (percentuale)

imposta la percentuale di spazio riservato. Il default di 10% è piuttosto abbondante e si può scendere al 5% senza particolari problemi ma è bene non scendere al di sotto di questo valore, perché riempiendo molto un filesystem ffs lo si rallenta.

-b (dimensione del blocco)

imposta la dimensione in byte del blocco. Per i dischi di grosse dimensioni usare 8192 (8KB), mentre per quelli molto piccoli (<500MB) conviene usare 4096 per risparmiare spazio. Usando blocchi ancora più grandi non si velocizzano le operazioni e si può sprecare spazio, a meno di non memorizzare principalmente file di grosse dimensioni quali MP3 o filmati.

-f (dimensione del frammento)

imposta la dimensione del frammento. Un blocco può essere suddiviso fino a un massimo di 8 frammenti e pertanto conviene impostare una dimensione pari a 1/8 della dimensione del blocco: 512 byte per blocchi da 4096 byte e 1024 byte per blocchi da 8192 byte. Il frammento è l'unità di allocazione minima per i file (come il cluster per Windows).

-i (byte di dati per inode)

gli inode sono strutture usate per memorizzare informazioni sui file. Per ogni file ci deve essere almeno un inode (ma anche più di uno, per consentire al ffs di memorizzare i dati del file vicino al file stesso). La dimensione di default di 4096 è inadatta ai dischi di grosse dimensioni, perché consente di avere fino a 5 milioni di file su un dispositivo da 20GB. Una valutazione di massima consiglia l'uso di -i 16384 per dischi >2GB e di -i 32768 per dischi da 8GB. Usando valori più grandi non si risparmia più spazio perché un inode occupa 128 byte

Per esempio, le opzioni che uso per una partizione >10GB sono

# newfs -m 5 -b 8192 -f 1024 -i 32768 /dev/{nome_partizione}

La lettura della pagina di manuale di newfs è caldamente consigliata.

B.2. L'installazione in pratica

Negli esempi seguenti supporremo che il disco fisso sia wd0, il CD cd0 (se presente) e la scheda di rete ep0 (se presente). Se i nomi reali sul vostro sistema sono diversi, basta sostituirli a quelli degli esempi.

B.2.3. Creare le partizioni con disklabel

# disklabel -I -i wd0

Il comando precedente serve per iniziare a partizionare un disco vuoto. Non specificare l'opzione -I se si vuole modificare una disklabel esistente.

Verrà mostrato il prompt:

partition> 

Il sistema è in attesa di comandi. I comandi più importanti sono ? (help), I (imposta varie informazioni sul disco) e le lettere minuscole da a fino a h (impostano le informazioni per le rispettive partizioni).

Incominciamo con il comando I. Il sistema chiede il tipo di disco (accettare il default), il nome del disco (idem) e la label. La label è a piacere; per esempio si può scrivere il proprio nome. In caso di furto del disco fisso si può dimostrare di essere il proprietario perchè fdisk di DOS/Windows non cancella questa informazione.

Numero di partizioni: scegliere 8 (ma anche di più se ce n'è bisogno). Lasciare i valori di default per le altre opzioni, visto che le informazioni relative alla geometria dei dischi moderni sono in realtà fittizie.

Ora bisogna creare le partizioni, cominciando con le partizioni "d" e "c" che si riferiscono all'intero disco:

partition> d
Filesystem type [?] [unused]: 
Start offset [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [39693.8c, 40011300s, 19536.8M]: $
partition> c
Filesystem type [?] [unused]: 
Start offset [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [39693.8c, 40011300s, 19536.8M]: $

Poi si passa alla creazione della partizione da mettere all'inizio del disco. Nel partizionamento classico di Unix si tratta della partizione "a", di circa 50MB. Questa dimensione deve essere aumentata opportunamente se si intende tenere molta posta in spool o avere spazio in /tmp o /home senza creare partizioni separate per /var o /home.

partition> b
Filesystem type [?] [unused]: 4.2BSD
Start offset [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [0c, 0s, 0M]: 100000s

100000 settori corrispondono a circa 50MB o poco meno.

Creiamo la seconda partizione (swap) di circa 585MB:

partition> a
Filesystem type [?] [unused]: swap
Start offset [0c, 0s, 0M]: 100000s
Partition size ('$' for all remaining) [0c, 0s, 0M]: 1200000s

e infine la partizione "e" per /usr fino alla fine del disco:

partition> e
Filesystem type [?] [unused]: 4.2BSD
Start offset [0c, 0s, 0M]: 1300000s
Partition size ('$' for all remaining) [0c, 0s, 0M]: $

Verificare che tutto sia a posto con il comando P:

partition> P
8 partitions:
#        size   offset     fstype   [fsize bsize cpg/sgs]
  a:   100000        0     4.2BSD        0     0    0   # (Cyl.    0 - 99*)
  b:  1200000   100000       swap                       # (Cyl.   99*- 1289*)
  c: 40011300        0     unused        0     0        # (Cyl.    0 - 39693*)
  d: 40011300        0     unused        0     0        # (Cyl.    0 - 39693*)
  e: 38711300  1300000     4.2BSD        0     0    0   # (Cyl. 1289*- 39693*)

Infine dare i comandi:

partition> W
Label disk [n]? y
Label written
partition> Q

La disklabel è stata scritta. Congratulazioni, la parte più impegnativa dell'operazione è terminata

B.2.5. Decomprimere i set di installazione

Montare le partizioni su /mnt:

# mount -o async,noatime /dev/wd0a /mnt
# mkdir /mnt/usr
# mount -o async,noatime /dev/wd0e /mnt/usr
...
montare le altre partizioni create
...

Le opzioni async e noatime non sono obbligatorie: tendono a favorire la velocità delle operazioni a discapito dell'integrità del filesystem. La protezione dai crash di sistema in questo momento non è fondamentale, visto che si può ripulire tutto e riinstallare facilmente in caso di crash.

Le sezioni seguenti descrivono alcuni comuni metodi di installazione:

CDROM
FTP
NFS
nastro

B.2.5.4. Installazione da nastro

Anche se i desktop solitamente non hanno unità a nastri, i server spesso ne hanno una (e talvolta anche un lettore di CD, tanto per occupare un po' di spazio). L'installazione da nastro è molto semplice anche se, purtroppo, i PC non possono fare il boot da nastro e quindi bisogna utilizzare i floppy.

Per preparare un nastro per l'installazione bisogna avere a disposizione un'altra macchina con un'unità a nastri.

Riavvolgere il nastro:

# mt rewind

impostare una dimensione di blocco senza limitazioni per i nastri SCSI

# mt setblk 0

Questo cambia la piccola dimensione di default del blocco a una dimensione qualsiasi. Usando blocchi di grandi dimensioni si possono velocizzare le operazioni, soprattutto sui drive DAT/DDS.

È meglio disabilitare la compressione perché alcuni lettori non sono in grado di leggere un flusso compresso. D'altronde comprimendo dei file già compressi non si hanno benefici, anzi si potrebbe perfino ottenere un peggioramento (fino al 15% sui dischi HP DDS!):

# mt compression 0

Memorizzare i file della distribuzione:

# cd /dove_si_trovano_i_tarball
# tar -b64 -cvf /dev/nrst0 *.tgz

Quest'ultimo comando scrive tutti i file tgz su nastro con una dimensione di blocco di 64*512 byte (32KB, una dimensione di blocco ben testata per tutti i DAT).

Avendo usato il dispositivo /dev/nrst0 (prima unità a nastri SCSI, senza riavvolgimento) si può ora registrare anche qualche altro archivio, per esempio qualche utile package di base (per es. editor).

# cd /dove_sono_i_package/All
# tar -b64 -cvf /dev/nrst0 joe*.tgz screen*.tgz

Con il comando precedente sono stati aggiunti l'editor joe e il programma screen. È meglio non aggiungere troppi package in questo file.

Ora si possono aggiungere altri package da installare dopo che il sistema è entrato in funzione in modalità multiutente.

# tar -b64 -cvf /dev/nrst0 package_vari

e anche, volendo,

# tar -b64 -cvf /dev/nrst0 *.tgz

Ora si può riavvolgere ed estrarre il nastro:

# mt rewoffl

Il nastro per l'installazione è pronto! Poiché i lettori DDS sono compatibili all'indietro, può essere conveniente acquistare un lettore DDS-1 o DDS-2 usato economico per il computer di casa. Così sarà possibile preparare nastri di installazione e, ovviamente, fare il backup del computer: un vantaggio non da poco, che a mio avviso vale sicuramente la spesa.