Primi passi con NetBSD

Da Wiki di NetBSD Italia.

Indice

Introduzione

In questo HOWTO si inizierà con un installazione base di NetBSD/i386 passo-passo. Questo Howto è consigliato a tutti quelli che vogliono iniziare ad usare questo OS o a quelli che hanno iniziato da poco. Per ampliare le conoscenze di NetBSD và sicuramente letto Guida di NetBSD. Nella prima parte cercherò di descrivere l'installazione (può quindi essere letto durante l'installazione). Nella seconda parte parlerò invece delle configurazioni base e di altre azioni utili per l'user NetBSD.


Installazione

Boot iniziale, selezione lingua e mappatura tastiera

Una volta partito il boot selezioniamo la lingua preferita, in questo modo i messaggi di sysinst saranno in quella lingua che abbiamo scelto. La lingua che preferisco tra quelle è l'Inglese, seleziono quindi l'opzione "a".

Ora ci chiede il tipo di tastiera, la tastiera che ho è italiana, quindi seleziono l'opzione "j".

Tipo di installazione

Ok, inizia l'installazione vera e propria... Abbiamo diverse opzioni... Vogliamo installare NetBSD quindi selezioniamo "a" (Install NetBSD to hard disk). Confermiamo la nostra scelta con un Sì (Yes).

Selezione del supporto dove installare NetBSD

Il messaggio che ci appare subito dopo sono gli hard disk che NetBSD trova, nel mio caso trova soltanto wd0 (ho soltanto un hard disk). Apro una piccola parentesi su come chiama gli hard disk NetBSD, gli hard disk vengono chiamati di solito wdn dove n è un numero, questo numero dipende dal canale e da master o slave se è un hard disk IDE. Quindi se abbiamo quattro hard disk wd0 sarà il primary master, wd1 sarà il primary slave, wd2 secondary master ed infine wd3 secondary slave, è semplice. Ritornando all'installazione se si hanno più hard disk mi avrebbe fatto scegliere in quale hard disk installare NetBSD. Premiamo quindi invio una volta selezionato l'hard disk.

Selezionare il software (i distribution sets)

Ora possiamo scegliere i distribution sets, sono tutti software più o meno di vitale importanza, siccome siamo dei curiosi selezioniamo "b" (Custom installation) in modo tale da vedere tutti i sets. Da come si può vedere possiamo selezionare il tipo di kernel (a..g), ed i vari sets (h..o). L'elaboratore in cui sto installando NetBSD non ha un ruolo ben preciso, sò soltanto che ci accederò via SSH, quindi niente X. Selezioniamo quindi "o" (X11 sets), e poi "g" (Deselect all the above sets). Quando abbiamo scelto tutti i vari sets che vogliamo possiamo confermare il tutto selezionando "x" (Install selected sets).

Impostazioni hard disk e partizionamento (fdisk e disklabel)

Una volta selezionati i sets ci chiede la geometria dell'hard disk che abbiamo selezionato all'inizio... Nella maggior parte dei casi il BIOS ha ragione e quindi non dobbiamo modificare nulla, però questa domanda è utile nei casi in cui il BIOS non ha ragione. Per i più curiosi i vari valori cylinders/head/sectors sono di norma scritti sull'etichetta sopra l'hard disk. Selezionamo "a" (This is the correct geometry).

Ottimo, è arrivata l'ora di partizionare l'hard disk... Ci chiede quindi se vogliamo usare l'intero disco o no. Ho appena acquistato l'hard disk e voglio accertarmi che l'hard disk sia vergine, quindi seleziono "a" (Edit the MBR partition table). Questa opzione è utilissima se in quell'hard disk ci sono anche altri OS e non vogliamo perderli. Apro anche qui una parentesi che interesserà a tutti gli user provenienti da OS quali GNU/Linux, Windows o altri. Nei *BSD (e quindi anche in NetBSD) dobbiamo fare soltanto una partizione. In sistemi come ad esempio GNU/Linux dobbiamo fare una partizione per ogni gerarchia, quindi per esempio / (root), swap, /home e così via. Nei *BSD ci sono gli slices (tradotto in italiano "fette", infatti possiamo immaginare benissimo l'hard disk in cui installeremò NetBSD proprio come una torta, con tante fette). Bene, selezioniamo quindi la partizione, io scelgo "a", infatti tutte sono "unused" (inutilizzate) come previsto. Una volta selezionata la partizione ci dice il tipo (kind), dobbiamo installarci NetBSD quindi selezioniamo "c" (NetBSD). Ricordo che si può rimuovere la partizione selezionando "b" (Delete partition) sul tipo. In automatico mi prende tutto lo spazio possibile. Seleziono anche "install". Una volta fatto proseguiamo...

Ora ci chiede se installare il bootcode e quindi sovrascrivere il MBR (Master Boot Record). Può essere fastidioso soltanto se abbiamo dei boot loader (ad esempio GRUB) e vogliamo utilizzarli anche per NetBSD. Io scelgo "a" (Yes). Abbiamo fatto la partizione... però ancora non ci sono gli slices, con disklabel creiamoli selezionando "a" (Set sizes of NetBSD partitions).

Da come si può leggere un installazione completa senza X occupa almeno 288Mb, mentre con X almeno 338Mb (questa dimensione dipende dai vari sets che abbiamo selezionato in precedenza). Di default NetBSD fa una swap e poi una grossa root (/). Non ci sta bene tutto questo, quindi cambiamolo. Creo una /usr di circa 20Gb (sono molti!), una /var di 3Gb, per la root gli do 4Gb. Tutto il resto è per /home (quindi metto un bel "+"). Ci chiede di confermare se tutto va bene... Da questa richiesta si possono vedere benissimo tutti gli slices, selezioniamo "x" (Partition sizes ok) una volta controllati tutti gli slices. Ci chiede ora il nome dell'hard disk... Possiamo lasciare benissimo quello di default (di solito corrisponde al nome dell'hard disk vero e proprio, anche questa informazione dovrebbe trovarsi sull'etichetta dell'hard disk). Può sembrare strano ma ancora non abbiamo scritto (e quindi eliminato nulla) se si hanno dati importanti è questo il momento giusto per abbandonare sysinst per i più sbadati altrimenti "b" (Yes). Con newfs ci crea tutti i vari slices, dobbiamo solo attendere qualche secondo.

Ultime impostazioni

FIXME: Ottimo, scegliamo "a" (Use the BIOS console) perchè vogliamo usare tastiera e monitor. (bootblocks)

Sysinst ora ci chiede in che modo deve stampare i messaggi dell'installazione dei distribution sets. Lasciamo benissimo "a" (Progress bar). Ora selezioniamo il supporto in cui prendere i sets, il CD-ROM va benissimo, quindi selezioniamo "a" (CD-ROM / DVD). Anche la directory di default dobrebbe andare bene, quindi confermiamo. Ora vediamo questa "progress bar" e la percentuale del set che può essere letto in alto (il set è qualche cosa del tipo <set>.tgz dove l'estensione ".tgz" sta per tar gzipped). La procedura di installazione dei sets è completata (cavolo, ci sono voluti solo 2-3 minuti! :-)), confermiamo con un bel Return.

Benissimo, ora possiamo selezionare il timezone, di solito la data sul BIOS deve essere impostata su UTC. Stiamo in Italia, quindi selezioniamo "Europe/Rome" (ci sono anche San Marino e Vaticano).

Ormai è arrivato il momendo dei vari setting, si inizia con il password cipher, la maggior parte delle distro GNU/Linux usa MD5, OpenBSD (e forsi altri OS) dovrebbero usare Blowfish, io scelgo "c" (Blowfish 2^7 round). Vogliamo una password di root, selezioniamo quindi "a" (Yes) e scegliamoci una bella password. Ora ci chiede la shell che dovrà usare il superutente "root". Scelgo ksh (Korn Shell) perchè tra sh e csh è la mia preferita (volendo possiamo anche installare BASH, zsh e molte altre shell in un secondo momento).

Installazione completata e riavvio

Ok, ora l'installazione è finita... Come ci consiglia sysinst al prossimo boot dobbiamo leggerci il manpage afterboot(8) con un bel "man afterboot" ed editare rc.conf per finire a configurare i vari demoni da avviare o disattivare (l'rc.conf è piuttosto minimale inizialmente, quindi i demoni avviati di default sono pochi).

Ok, ora ci accoglie di nuovo la schermata iniziale... Selezioniamo "d" (Reboot the computer) per riavviare il nostro elaboratore.

Configurazione e altro

Primo boot e primo login

NetBSD partirà correttamente (speriamo :-P). Si può notare che i messaggi del kernel sono tutti verdi, questi messaggi possono essere anche letti con dmesg(8). Il tool dmesg(8) è utilissimo, infatti è anche consigliabile che al primo boot facciamo un breve esame di quest'output in modo da osservare se NetBSD ha trovato correttamente le varie periferiche, quindi siamo interessati alla scheda di rete nel PC, nel mio caso una Realtek 8139, al controller SATA PCI Adaptec (basato su chipset Silicon Image), all'hard disk SATA e volendo anche alla scheda video e scheda audio. Una volta finito il boot dobbiamo vedere qualche cosa del genere:

Tue Jul 24 10:29:21 CEST 2007

NetBSD/i386 (brucaliffo) (conole)

login: _

Questa è la schermata di login, abbiamo a disposizione 4 terminali virtuali accessibili con la combinazione dei tasti C-M-Fn (C sta per Control, M sta per Alt ed Fn per... F1, F2, F3, F4). Gli user che hanno già usato un sistema operativo Unix-like troveranno questo ambiente familiare, questo vale anche per gli user che non hanno mai usato un OS Unix-like, basta soltanto ambientarsi. Esploriamo i vari terminali premendo questa combinazione dei tasti, per esempio se premiamo C-M-F3, possiamo vedere:

NetBSD/i386 (brucaliffo) (ttyE2)

login: _

Da come si può osservare la schermata è quasi uguale, cambia ttyE2, infatti ogni terminale ha un nome, ed ogni terminale può essere di diverso tipo, per ora non ci interessa il tipo, dico soltanto che di default dovremmo avere un vt100 su console e vt220 su ttyE1, ttyE2, ttyE3.

NetBSD (come qualsiasi altro OS Unix-like che si rispetti) è multiutente, cioè ad un PC possono accedere più utenti e può avere più utenti. Come abbiamo visto inizialmente possiamo loggarci soltanto con il superutente root. Si chiama proprio superutente perché l'utente root può fare qualunque cosa, per esempio eseguire tutti i programmi, accedere a tutte le directory e così via. L'utente root non ha limiti.
Per questo è da incoscienti usarlo per fare le operazioni di tutti i giorni, come per esempio navigare in internet, leggere news, mandare mail o giocare semplicemente a tetris o rogue.
L'utente root va quindi usato con moderazione, fare tutto da root è un male.
Logghiamoci da root, scriviamo root, premiamo invio e scriviamo la nostra password di root (che non verrà visualizzata su schermo) e confermiamola sempre con il tasto invio.

login: root
Password:
Jul 24 11:02:02 brucaliffo login: ROOT LOGIN (root) ON conosole
Last login: Tue Jul 24 08:20:47 2007 on conosole
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California. All rights reserved.

NetBSD 3.1 (LEOT) #0: Mon Jul 23 15:08:50 CEST 2007

Welcome to NetBSD!

Terminal type is wsvt25.
We recommend creating a non-root account and using su(1) for root access.
brucaliffo# _

Abbiamo quindi appreso che ogni comando si conforma con invio. Alla fine dell'installazione sysinst ci ha consigliato di leggere il man page afterboot(8), facciamolo subito:

brucaliffo# man afterboot

Il comando man(1) è utilissimo per ogni user e sysadmin, infatti grazie a man possiamo leggere manuali in linea di tutto il software installato. I man pages esistono anche per il software aggiuntivo quindi di norma ogni software ha il suo/sui man page/s.
Il man page afterboot che stiamo leggendo è un semplice file di testo e lo vediamo grazie ad un pager chiamato less, possiamo spostarci su e giù con le frecce o "k" e "j".
Una volta letto il man page si può uscire premendo il tasto "q". Ora abbiamo di nuovo la nostra cara shell.

Come detto all'inizio vogliamo accertarci che tutte le periferiche sono state rilevate correttamente, non arrabbiatevi se la periferica non è riconosciuta, probabilmente si può risolvere ricompilando il kernel abilitando il supporto per quella determinata scheda/periferica. Esaminiamo quindi l'output di dmesg:

brucaliffo# dmesg

Cosa non riuscite a leggere quello che c'è in alto ma leggete soltanto le ultime 24 righe? Non vi preoccupate, esistono i pager e le pipe (non quelle che si fumano :-)) per risolvere questo problema:

brucaliffo# dmesg | less

Benissimo, ora possiamo vedere e muoverci sull'output di dmesg come se stessimo leggendo un man page, infatti usiamo lo stesso pager (less) e l'approccio è quindi uguale.

Non trovate che è piuttosto noioso esaminare l'output in questo modo? Sì, lo è, greppiamolo quindi! grep è un tool GNU che serve per cercare una determinata stringa o meglio regular expression, tutto ciò che combacia grep ce lo stampa a video.
Proviamolo subito esaminando le varie periferiche,

  • scheda di rete:
brucaliffo# dmesg | grep -i realtek
rtk0 at pci0 dev 16 function 0: Realtek 8139 10/100BaseTX
  • controller SATA PCI:
brucaliffo# dmesg | grep -i adaptec
satalink0: Adaptec AAR-1210SA serial ATA RAID controller (rev. 0x02)
  • scheda video:
brucaliffo# dmesg | grep -i nvidia
vga1 at pci1 dev 0 function 0: NVIDIA RIVA TNT (rev. 0x04)
  • scheda audio:
brucaliffo# dmesg | grep -i ensoniq
eap0 at pci0 dev 18 function 0: Ensoniq AudioPCI (rev. 0x01)
  • hard disk:
brucaliffo# dmesg | grep -E "^wd0 "
wd0 at atabus2 drive 0: <MAXTOR STM3160211AS>

Ottimo, tutto l'hardware è stato rilevato correttamente.

L'opzione "-i" che abbiamo dato a grep significa "ignore-case" quindi ignora maiuscole e minuscole. Di default infatti grep rispetta maiuscole e minuscole (case-sensitive).

L'opzione "-E" serve per le regexp (regular expression), infatti quella tra doppi apici è una regexp, il "coppo" (^) significa che quello che cerchiamo deve stare all'inizio della riga, lo spazio invece significa che dopo wd0 che si deve trovare all'inizio della riga ci deve essere uno spazio. Non vi preoccupate se non avete capito questa regexp, sono un po' ostiche all'inizio, per maggiori informazioni digitate un bel "info grep".

Per leggere documentazione infatti non esiste soltanto man, man di solito è piuttosto scarno, descrive le varie opzioni del programma, ne dà una breve descrizione ma nulla in più. Con info(1) infatti possiamo leggere tutta la documentazione nel formato Info (vedere texinfo(5) se si è ancora più curiosi). Anche usare info non è difficile, però lo proveremo dopo quando ci siamo fatti uno user.

Nuovo utente

Non aspettiamo allora e creiamo subito uno user! (Sostituire <shell> con una shell, per esempio /bin/ksh, <"Nome e Cognome" dell'utente> con il vostro Nome e Cognome, <utente> con il nuovo nome dell'utente, per esempio leot, o claudio, o quello che volete.

brucaliffo#
useradd -m -G wheel -s <shell> -c <"Nome e Cognome" dell'utente> <utente>

Scegliamo ora una buona password per quest'utente con:

brucaliffo# passwd <utente>

Descrivo un brevemente questi due comandi utilissimi che di norma vanno fatti subito dopo ogni installazione di NetBSD. Allora il comando passwd(1) (passwd non password!) si commenta da solo, cambia la password di quell'utente dato come argomento (omettendo l'argomento cambia la password del nostro utente, in questo caso l'utente root).

Per quanto riguarda useradd(8) crea l'utente. L'opzione "-m" sta per "creami una /home"; la /home è la directory in cui stanno tutti i file di quell'utente e quindi tutti i vari documenti, le varie configurazione che riguardano quell'utente. E' la directory (cartella) personale dell'user, vedremo più tardi come manipolare file e cartelle. L'opzione "-G" invece significa "aggiungi questo utente a questo/questi gruppo/gruppi", sotto Unix infatti esistono i gruppi, un file ha sempre un propietario (l'utente) ed un gruppo (gruppo). In NetBSD il gruppo di default per tutti gli utenti si chiama "users". Possiamo ad esempio permettere a tutti gli utenti del gruppo users di vedere un nostro file solo in lettura.
Il gruppo "wheel" invece esiste in tutti i sistemi *BSD, è molto utile, infatti certi software, come ad esempio su(1) (tool che serve per cambiare utente, lo vedremo in seguito) non possono essere eseguiti se non si fa parte del gruppo "wheel". L'opzione "-s" è il tipo di shell di quell'utente, le shell installate di default sono ksh, sh e csh, quindi queste sono sempre valide. Se installate si possono impostare anche altre shell, ce ne sono moltissime.
L'opzione "-c" è il commento per quell'utente, di norma Nome e Cognome, può far comodo ad alcuni software ma di certo non è indispensabile, omettetelo tranquillamente se non avete voglia di commentare quello user. L'ultimo argomento ed anche il più importante è il nome dell'utente.

Primo login con il nuovo utente

Ok, ora abbiamo un utente, lasciamo la shell root così come è e spostiamoci in un altro terminale con C-M-F2 (Control + Alt + F2), facciamo la stessa procedura che abbiamo fatto con l'utente root. quindi:

NetBSD/i386 (brucaliffo) (ttyE1)

login: leot
Password:
Last login: Tue Jul 24 10:48:57 2007 on ttyE2
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California. All rights reserved.

NetBSD 3.1 (LEOT) #0: Mon Jul 23 15:08:50 CEST 2007

Welcome to NetBSD!

Terminal type is wsvt25.
leot@brucaliffo$ _

Benissimo, siamo riusciti a loggarci con successo, spostiamoci ora sul primo terminale (C-M-F1) per fare il logout dell'utente root:

brucaliffo# exit

Con exit abbiamo fatto il logout, un ottima alternativa ad exit leggermente più rapida in ksh è C-d (Ctrl + d).

Siccome non siamo sicuri che ci siamo loggati con il nostro utente vogliamo una conferma con who(1):

leot@brucaliffo$ who am i
leot     ttyE1    Jul 24 12:48

Possiamo anche vedere tutti gli utenti loggati semplicemente con un "who", in questo caso abbiamo root loggato sul primo terminale e leot loggato sul quarto terminale:

leot@brucaliffo$ who
root     console  Jul 24 13:00
leot     ttyE3    Jul 24 12:51

Un altro comando simile a who(1) ma non uguale è w(1):

leot@brucaliffo$ w
 2:11PM  up 15 mins, 2 users, load avarages: 0.47, 0.24, 0.17
USER     TTY     FROM              LOGIN@  IDLE WHAT
leot     console -                 1:59PM     0 w
leot     ttyp0   192.168.1.4       2:10PM     1 emacs

Da come si può osservare con w(1) possiamo anche vedere quello che sta facendo l'utente, nell'esempio l'utente leot (che sta sulla macchina fisicamente) sta sul primo terminale e sta eseguendo "w", il secondo utente è sempre leot, solo che proviene da bianconiglio (192.168.1.4) e sta eseguendo "emacs".

Sappiamo le basi, giusto per un login e logout, impariamo ora a manipolare file e directory.
Creiamo una directory, il comando per creare una directory è mkdir(1), per vedere invece il contenuto di una directory esiste il comando ls(1), invece per capire il percorso in cui siamo posizionati il tool di cui abbiamo bisogno è pwd(1):

leot@brucaliffo$ mkdir data
leot@brucaliffo$ ls
data
leot@brucaliffo$ pwd
/home/leot

Impariamo ora a muoverci tra le cartelle:

leot@brucaliffo$ cd data
leot@brucaliffo$ pwd
/home/leot/data
leot@brucaliffo$ cd .
leot@brucaliffo$ pwd
/home/leot/data
leot@brucaliffo$ mkdir documenti && mkdir work && mkdir documenti/personali
leot@brucaliffo$ ls
documenti work
leot@brucaliffo$ ls ..
data
leot@brucaliffo$ cd ..
leot@brucaliffo$ ls
data
leot@brucaliffo$ cd data/documenti
leot@brucaliffo$ ls
personali
leot@brucaliffo$ cd ../..
leot@brucaliffo$ ls
data
leot@brucaliffo$ pwd
/home/leot
leot@brucaliffo$ cd ..
leot@brucaliffo$ ls
leot
leot@brucaliffo$ cd /
leot@brucaliffo$ pwd
/
leot@brucaliffo$ cd
leot@brucaliffo$ pwd
/home/leot

Possiamo vedere che non è difficile spostarsi tra le directory, può essere utilissimo l'uso del tasto TAB che autocompleta le directory e volendo anche i programmi in certe shell. ksh supporta l'autocompletamento.

Impariamo ora a rimuovere le directory che avevamo creato, il comando per rimuovere una cartella vuota si chiama rmdir(1):

leot@brucaliffo$ cd $HOME/data
leot@brucaliffo$ ls -1
documenti
work
leot@brucaliffo$ rmdir work
leot@brucaliffo$ ls
documenti

Le cartelle fanno molto comodo per tenere ordinati i nostri file, ma dobbiamo imparare a modificare i file, magari file di testo. I tool che ci servono sono diversi, prima di tutto touch(1) per creare un file vuoto, cat(1) che serve per stampare l'output di un file, vi(1) l'editor installato di default su NetBSD, un editor quindi da conoscere, almeno le basi, non voglio aggiungere molto su Vi perché su Guida di NetBSD c'è un ottima sezione sull'editor Vi e sull'editing di base di Vi. Se vi colpisce Vi, consiglio di provare nVi e Vim, sono dei cloni di Vi con diverse funzionalità (Vi è un editor di base minimale ma ha molte funzioni, nVi e Vim hanno varie caratteristiche e sono ancora più potenti dell'editor Vi). Un altro editor sicuramente da provare è GNU Emacs scritto da Richard Stallman (rms continua ancora con lo sviluppo di Emacs ma ci sono un sacco di contributi da parte di altri developer e user).

Altro tool utile che ci serve oltre all'editor Vi è file(1) che serve a determinare il tipo di file (per esempio un file di testo o anche un video, un immagine...).
Un altro tool simile a cat(1) che useremo sarà head(1) che stampa le prime righe di un file, simile a tail(1) che invece stampa le righe partendo dalla fine.
Useremo anche echo(1) per scrivere del testo.

leot@brucaliffo$ touch dmesgfile.txt
leot@brucaliffo$ ls
dmesgfile.txt
leot@brucaliffo$ file dmesgfile.txt
dmesgfile.txt: empty
leot@brucaliffo$ vi dmesgfile.txt

(premiamo ora "i" per andare in modalità inserimento)

Of course it runs NetBSD.

(premiamo ora "ESC" per uscire dalla modalità inserimento)
(scriviamo :wq per salvare (w) e uscire (q))

leot@brucaliffo$ cat dmesgfile.txt
Of course it runs NetBSD.
leot@brucaliffo$ dmesg > dmesgfile.txt
leot@brucaliffo$ head -n 1 dmesgfile.txt
NetBSD 3.1 (LEOT) #0: Mon Jul 23 15:08:50 CEST 2007
leot@brucaliffo$ echo "NetBSD/toaster: we wish the toaster to be happy too."
NetBSD/toaster: we wish the toaster to be happy too.
leot@brucaliffo$ echo "NetBSD/toaster: we wish the toaster to be happy too." >> dmesgfile.txt
leot@brucaliffo$ tail -n 2 dmesgfile.txt
wsdisplay0: screen 4 added (80x25, vt100 emulation)
NetBSD/toaster: we wish the toaster to be happy too.

L'esempio qui sopra è piuttosto semplice, l'unica cosa un po' strana è ">" che serve per dirigere l'output su quel file. Abbiamo usato anche ">>", cioè append, proprio per appendere del testo (infatti quando abbiamo fatto il "dmesg > file" quello che avevamo precedentemente scritto è stato sovrascritto, con l'append invece se il file esiste lo "appende" alla fine).

TODO: continuare, i tool di base sono quasi finiti, si inizia a fare sul serio editando varie conf (in particolare rc.conf), e altri tool un po' più seri.

Leot

Strumenti personali