Primi passi con NetBSD

Da Wiki di NetBSD Italia.

Questo articolo non rispetta le linee guida per i contenuti per tanto necessita di essere wikificato (ovvero reso conforme sulla base di queste regole). Offri il tuo contributo per migliorare questo wiki secondo le convenzioni di NetBSD-it.

Introduzione

Questo testo descrive la procedura d'installazione standard di NetBSD. La piattaforma di riferimento utilizzata è i386 ma non vi sono sostanziali differenze fra le varie architetture. Si inizierà con una installazione passo-passo, il primo boot e alcune operazioni di base, concludendo con la configurazione della rete e poche altre operazioni di amministrazione.

La lettura di questo documento è 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 va 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'utente NetBSD.


Indice

Iniziamo con l' installazione

Boot iniziale, selezione lingua e mappatura tastiera

Per iniziare l'installazione di NetBSD inserisci il floppy di installazione appena creato e riavvia il computer, oppure avvialo da un CD scritto, memory card, dispositivo USB flash, (etc.). Il kernel sarà avviato dal dispositivo di installazione e inizierà a visualizzare un sacco di messaggi sullo schermo, la maggior parte dei quali dirà che l'hardware non è stato trovato o non è stato configurato. È normale perché il kernel di default cerca di trovare tutto l'hardware supportato da NetBSD; probabilmente non avrai tutti quei dispositivi nella tua macchina.

Una volta partito il boot selezioniamo la lingua preferita, in questo modo i messaggi di sysinst saranno in quella lingua che abbiamo scelto.

Figura 1.1. Selezioniamo la lingua

Immagine:Lingua.png


Nel nostro caso seleziono l'opzione a.

Ora ci chiede il tipo di tastiera

Figura 1.2. Selezioniamo un tipo di tastiera

Immagine:Tastiera.png


la tastiera che ho è italiana, quindi seleziono l'opzione k.

Tipo di installazione

Ok, inizia l'installazione vera e propria... Abbiamo diverse opzioni...

Figura 1.3. Il menù principale di sysinst

Immagine:Install.png


Per installare NetBSD selezioniamo l' opzione a "Install NetBSD to hard disk".

Figura 1.4 Confermare l' installazione di NetBSD

Immagine:Install-yes.png


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 wd1.

Figura 1.5. Scegliamo un hard disk

Immagine:wd0.png


Apro una piccola parentesi su come NetBSD chiama gli hard disk, whole disk wdn dove n è un numero, (wd0,wd1,wd2,wd3) questo numero dipende dal canale primary o secondary e da master o slave nel caso di un hard disk IDE. Quindi 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)

Sysinst chiederà cosa vogliamo fare, full, minimal o custom, rispettivamente, tutta, minimale o personale. Come nella figura successiva.

Figura 1.6. full o custom

Immagine:Custom-inst.png


sono tutti software più o meno di vitale importanza, siccome siamo dei curiosi selezioniamo c (Custom installation) in modo tale da vedere tutti i sets.

Figura 1.7. Selezioniamo i distribution sets

Immagine:Distribution0.png


Da come si può vedere possiamo selezionare il tipo di kernel (a..e), ed i vari sets (f..m). 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 m (X11 sets)

Figura 1.8. Deselezioniamo X11

Immagine:Distribution1.png

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...

Figura 1.9. Geometria dell' Hard Disk

Immagine:Geometria.png

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).

Figura 2.0. Edit the MBR partition table

Immagine:edit-mbr.png

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 installeremo NetBSD proprio come una torta, con tante fette). Bene, selezioniamo quindi la partizione, io scelgo a, infatti tutte sono unused (inutilizzate) come previsto.

Figura 2.1. Partizionamento I

Immagine:Partizione0.png

Una volta selezionata la partizione ci dice il tipo (kind), dobbiamo installarci NetBSD

Figura 2.2. Partizionamento II

Immagine:Partizione1.png

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 set 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 / 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 momento 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). Comunque è consigliabile usare MD5 o Blowfish, evitate DES.

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.

Prime esperienze

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 è 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. Esploriamoli 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 Return e scriviamo la nostra password di root (che non verrà visualizzata su schermo) e confermiamola sempre con il tasto Return.

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 conferma con Invio. Alla fine dell'installazione sysinst ci ha consigliato di leggere il man page afterboot sezione 8, facciamolo subito:

brucaliffo# man afterboot

Il comando man(1) è utilissimo per ogni user e amministratore di sistema, infatti grazie a man possiamo leggere manuali in linea di tutto il software installato. Le pagine di manuale esistono anche per il software aggiuntivo quindi di norma ogni software ha la sua pagina di manuale

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 pò 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. È 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. 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 (e altre shell) è 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 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 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 con 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</code> 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 pò 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).

Configurazione di base

Impostazione della rete

Negli ultimi anni il PC si è trasformato in un mezzo di comunicazione e la rete si è diffusa moltissimo nel corso degli ultimi due decenni. Un PC quindi è di solito collegato anche all'esterno o ad una piccola LAN (rete locale), impariamo quindi ad impostare la rete su NetBSD.

Se si hanno familiarità con altri OS Unix-like il procedimento sarà facilissimo e quasi uguale. Anche se sei un nuovo utente NetBSD e non hai mai usato altri OS non ti preoccupare.

Il tool che ci serve va usato da root, infatti impostare la rete è una cosa importante e seria e quindi da utente normale (di norma) non è concesso farlo. Questo tool si chiama ifconfig, illustro un attimo una situazione che probabilmente è simile alla vostra: ci sono anche altri PC, 192.168.1.4 ad esempio e 192.168.1.1 è il router che ci permette di collegarci all'esterno che andrà quindi usato come gateway. Quel router supporta anche DHCP proviamo quindi prima a configurare la rete utilizzando il DHCP (quindi con dhclient) poi senza DHCP con ifconfig:

leot@brucaliffo$ su
Password:

# dhclient
Internet Software Consortium DHCP Client V3.0.1rc11
Copyright 1995-2002 Internet Software Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP

Listening on BPF/rtk0/00:0e:2e:3b:05:2e
Sending on   BPF/rtk0/00:0e:2e:3b:05:2e
Sending on   Socket/fallback
DHCPDISCOVER on rtk0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on rtk0 to 255.255.255.255 port 67 interval 21
ip length 328 disagrees with bytes received 332.
accepting packet with data after udp payload.
DHCPOFFER from 192.168.1.1
DHCPREQUEST on rtk0 to 255.255.255.255 port 67
ip length 328 disagrees with bytes received 332.
accepting packet with data after udp payload.
DHCPACK from 192.168.1.1
bount to 192.168.1.10 -- renewal in 41272

(accertiamoci che abbia funzionato pingando il PC bianconiglio con IP 192.168.1.4)

# ping -c 2 192.168.1.4
PING 192.168.1.4 (192.168.1.4): 56 data bytes
64 bytes from 192.168.1.4: icmp_seq=0 ttl=64 time=1.705ms
64 bytes from 192.168.1.4: icmp_seq=1 ttl=64 time=0.325ms

----192.168.1.4 PING Statistics----
2 packets transmitted, 2 packets received, 0.0% packet loss
round trip min/avg/max/stddev = 0.325/1.015/1.705/0.976 ms

Ottimo! Da come si può vedere siamo riusciti a pingare bianconiglio. Ora proviamo pingando all'esterno Google:

# ping -c 2 www.google.it
ping: Cannot resolve "www.google.it" (Host name lookup failure)

Bene, da come possiamo vedere non riesce a pingare google perché non riesce a risolvere quel "www.google.it" per fare ciò dobbiamo editare il nostro /etc/resolv.conf vediamo subito come si può fare:

# printf "# my /etc/resolv.conf\n\n## OpenDNS\nnameserver 208.67.222.222\nnameserver 208.67.220.220\n" > /etc/resolv.conf

Quindi il file resolv.conf dovrebbe essere qualche cosa del genere:

# my /etc/resolv.conf

## OpenDNS
nameserver 208.67.222.222
nameserver 208.67.220.220

Proviamo ora se il ping a google funziona:

leot@brucaliffo$ ping -c 1 www.google.it
PING google.navigation.opendns.com (208.67.217.230): 56 data bytes
64 bytes from 208.67.217.230: icmp_seq=0 ttl=50 time=380.082 ms

----google.navigation.opendns.com PING Statistics----
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 380.082/380.082/380.082/0.000 ms

Benissimo ora funziona anche la risoluzione degli hostname. Però non siamo soddisfatti, vogliamo un IP fisso usando il tool ifconfig:

# ifconfig rtk0 192.168.1.5
# route add default 192.168.1.1

In questo modo usiamo ifconfig e non DHCP, quindi anche se il nostro router non è un DHCP server possiamo navigare tranquillamente, con ifconfig abbiamo impostato l'interfaccia di rete rtk0 con route gli abbiamo detto che la macchina con IP 192.168.1.1 è un gateway (infatti il 192.168.1.1 è il router e per andare fuori dalla LAN dobbiamo dirlo a lui).

Modificare rc.conf

È ovvio che fare tutti questi passaggi all'avvio è una cosa dannatamente noiosa, non abbiamo tempo da perdere! Per fortuna che, per dire che ogni volta che accendiamo il PC vogliamo quel IP e quel gateway, c'è rc.conf.

Questo file è molto importante in NetBSD in esso sono racchiusi un sacco di informazioni utili, ad esempio quello che deve avviarci all'avvio, le impostazioni di rete, il nome del hostname ed altro, vediamo ora un /etc/rc.conf di esempio (preso da brucaliffo, il mio elaboratore):

#	$NetBSD: rc.conf,v 1.96 2000/10/14 17:01:29 wiz Exp $
#
# see rc.conf(5) for more information.
#
# Use program=YES to enable program, NO to disable it. program_flags are
# passed to the program on the command line.
#

# Load the defaults in from /etc/defaults/rc.conf (if it's readable).
# These can be overridden below.
#
if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
fi

# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES

# Add local overrides below
#
wscons=YES

#### Begin leot rc.conf personal config ####
#
# the service that i need or not...
sendmail=NO
sshd=YES

#
# various config
hostname=brucaliffo

#
# network config
auto_ifconfig=yes
ifconfig_rtk0="inet 192.168.1.5 netmask 255.255.255.0"
defaultroute=192.168.1.1

#### End leot rc.conf personal config ####

Da come si può osservare le ultime tre righe non commentate (tutte le righe che iniziano con # sono dei commenti e quindi non vengono prese in considerazione) sono quelle che ci interessano per impostare la rete. Un altra ottima alternativa per gli user che amano DHCP sarebbe stato un semplice:

dhclient=YES


usare gli hostname

È anche possibile rendere il pc parte di una rete interna. Prima di tutto dobbiamo scegliere il nome del dominio della nostra rete: volete usare .google.com ? nessun problema, potete, infatti il pc sapràche fate riferimento ad un pc della vostra rete e non di quella di google grazie al file /etc/hosts che vedremo in seguito.Noi ad esempio useremo il dominio .pippo.pluto (per far vedere che i nomi sono del tutto arbitrari e non soggetti a regole di alcun tipi ... è meglio comunque evitare strani simboli).

Dopo aver scelto il nome della nostra rete apriamo il file rc.conf e modifichiamo l'hostname in questo modo:

#
hostname=brucaliffo.pippo.pluto
#

Fatto ciò il nostro computer appartiene alla rete .pippo.pluto conservando comunque come hostname il solo brucaliffo.

Ora bisogna dire all'OS quali pc fanno parte del nostro dominio usando il file /etc/hosts sopra citato:

#
192.168.1.5 brucaliffo.pippo.pluto brucaliffo
#

Ecco fatto, ora l'OS sa che questo pc fa parte del dominio interno, facendo quindi un ping il l'OS sa che non deve pingare un pc in internet che ha hostname brucaliffo e che ha dominio pubblico .pippo.pluto .Ora ci rimane solo da aggiungere tutti gli altri pc della rete:

#
192.168.1.6 brucachiappa.pippo.pluto brucachiappa
#

Facendo: "#ping brucachiappa" il pc sa che deve pingare l'ip 192.168.1.6 della LAN


Installare software aggiuntivo

Una volta che abbiamo configurato la rete abbiamo la voglia di testarla e installare nuove applicazioni. Su NetBSD installare nuove applicazioni è semplice. Ci sono due diversi modi: installare il precompilato con il tool pkg_add o compilare ed installare usando il framework pkgsrc.

Voglio un attimo eliminare i vari luoghi comuni che ci sono con i software da compilare: pkgsrc è semplice, risolve tutte le dipendenze e quindi non vi farà impazzire, consideratelo quindi una via per installare nuovo software.

Prima configuriamo la variabile che dice a pkg_add dove andare a prendere i pacchetti:

brucaliffo# export PKG_PATH="ftp://ftp.fr.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0/"

Consiglio di mettere questo comando nel vostro .profile in modo da non doverlo digitare ad ogni avvio.

Ok, ora siamo pronti installiamo GNU Emacs giusto per vedere se tutto funziona:

brucaliffo# pkg_add -v emacs-nox11-22.1.tgz

Aspettiamo un pò in modo che scarichi Emacs, le eventuali dipendenze, e lo installi. Una volta installato da utente normale possiamo provarlo:

leot@brucaliffo$ emacs

Benissimo, Emacs funziona! Per vedere tutti i pacchetti aggiuntivi installati (sia con pkg_add che con pkgsrc) possiamo usare pkg_info. Anche per eliminare un pacchetto l'approccio è uguale sia per quelli installati con pkg_add che con pkgsrc, basta un pkg_delete <pacchetto> ed il gioco è fatto.


Conclusione

In questa piccola guida abbiamo imparato ad iniziare ad usare NetBSD. C'è ancora molto da imparare, rimando quindi ad una lettura dell'ottima Guida di NetBSD reperibile in inglese su questo link[1].

Strumenti personali