Primi passi con NetBSD

Da Wiki di NetBSD Italia.

(Differenze fra le revisioni)
m (Primo boot e primo login =)
(rendo l'howto wiki-compatibile)
Riga 163: Riga 163:
=== Configurazione e altro ===
=== Configurazione e altro ===
-
=== Primo boot e primo login ===
+
==== Primo boot e primo login ====
NetBSD partirà  correttamente (speriamo :-P). Si può notare che i
NetBSD partirà  correttamente (speriamo :-P). Si può notare che i
Riga 175: Riga 175:
alla scheda video e scheda audio.
alla scheda video e scheda audio.
Una volta finito il boot dobbiamo vedere qualche cosa del genere:
Una volta finito il boot dobbiamo vedere qualche cosa del genere:
-
[...]
+
<pre>
Tue Jul 24 10:29:21 CEST 2007
Tue Jul 24 10:29:21 CEST 2007
Riga 181: Riga 181:
login: _
login: _
-
[...]
+
</pre>
-
Questa è la schermata di login, abbiamo a disposizione 4 terminali
+
 
 +
Questa è la schermata di login, abbiamo a disposizione 4 terminali
virtuali accessibili con la combinazione dei tasti C-M-Fn (C sta per
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
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
+
hanno già usato un sistema operativo Unix-like troveranno questo
ambiente familiare, questo vale anche per gli user che non hanno mai
ambiente familiare, questo vale anche per gli user che non hanno mai
usato un OS Unix-like, basta soltanto ambientarsi. Esploriamo i vari
usato un OS Unix-like, basta soltanto ambientarsi. Esploriamo i vari
terminali premendo questa combinazione dei tasti, per esempio se
terminali premendo questa combinazione dei tasti, per esempio se
-
premiamo C-M-F3 possiamo vedere:
+
premiamo C-M-F3, possiamo vedere:
-
[...]
+
<pre>
NetBSD/i386 (brucaliffo) (ttyE2)
NetBSD/i386 (brucaliffo) (ttyE2)
login: _
login: _
-
[...]
+
</pre>
-
Da come si può osservare la schermata è quasi uguale,
+
 
-
cambia ttyE2, infatti ogni terminale ha un nome, ed ogni terminale può
+
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
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
soltanto che di default dovremmo avere un vt100 su console e vt220 su
ttyE1, ttyE2, ttyE3.
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ù
+
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
utenti. Come abbiamo visto inizialmente possiamo loggarci soltanto con
-
il superutente root. Si chiama proprio superutente perché l'utente
+
il superutente root. Si chiama proprio superutente perché l'utente
-
root può fare *qualunque* cosa, per esempio eseguire tutti i
+
root può fare '''qualunque''' cosa, per esempio eseguire tutti i
-
programmi, accedere a tutte le directory e così via. L'utente root non
+
programmi, accedere a tutte le directory e così via. L'utente root non
-
ha limiti.
+
ha limiti. <br>
-
Per questo è da incoscenti usarlo per fare le operazioni di tutti i
+
Per questo è da incoscienti usarlo per fare le operazioni di tutti i
giorni, come per esempio navigare in internet, leggere news, mandare
giorni, come per esempio navigare in internet, leggere news, mandare
-
mail o giocare semplicemente a tetris.
+
mail o giocare semplicemente a tetris o rogue.<br>
-
L'utente root va quindi usato con moderazione, fare tutto da root è un
+
L'utente root va quindi usato con moderazione, fare tutto da root è un
-
male.
+
male.<br>
Logghiamoci da root, scriviamo root, premiamo invio e scriviamo la
Logghiamoci da root, scriviamo root, premiamo invio e scriviamo la
-
nostra password di root (che non verrà visualizzata su schermo) e
+
nostra password di root (che non verrà visualizzata su schermo) e
-
confermiamola sempre con il tasto invio.
+
confermiamola sempre con il tasto invio.<br>
-
[...]
+
<pre>
login: root
login: root
Password:
Password:
Riga 232: Riga 235:
We recommend creating a non-root account and using su(1) for root access.
We recommend creating a non-root account and using su(1) for root access.
brucaliffo# _
brucaliffo# _
-
[...]
+
</pre>
 +
 
Abbiamo quindi appreso che ogni comando si conforma con invio. Alla
Abbiamo quindi appreso che ogni comando si conforma con invio. Alla
fine dell'installazione sysinst ci ha consigliato di leggere il man
fine dell'installazione sysinst ci ha consigliato di leggere il man
page afterboot(8), facciamolo subito:
page afterboot(8), facciamolo subito:
-
[...]
+
<pre>
brucaliffo# man afterboot
brucaliffo# man afterboot
-
[...]
+
</pre>
-
Il comando man(1) è utilissimo per ogni user e sysadmin, infatti
+
 
 +
Il comando man(1) è utilissimo per ogni user e sysadmin, infatti
grazie a man possiamo leggere manuali in linea di tutto il software
grazie a man possiamo leggere manuali in linea di tutto il software
installato. I man pages esistono anche per il software aggiuntivo
installato. I man pages esistono anche per il software aggiuntivo
-
quindi di norma ogni software ha il suo/sui man page/s.
+
quindi di norma ogni software ha il suo/sui man page/s.<br>
-
Il man page afterboot che stiamo leggendo è un semplice file di testo
+
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
e lo vediamo grazie ad un pager chiamato less, possiamo spostarci su e
-
giù con le freccie o "k" e "j".
+
giù con le frecce o "k" e "j".<br>
-
Una volta letto il man page si può uscire premendo il tasto "q".
+
Una volta letto il man page si può uscire premendo il tasto "q".
-
Ora riabbiamo la nostra cara shell.
+
Ora abbiamo di nuovo la nostra cara shell.
Come detto all'inizio vogliamo accertarci che tutte le periferiche
Come detto all'inizio vogliamo accertarci che tutte le periferiche
sono state rilevate correttamente, non arrabbiatevi se la periferica
sono state rilevate correttamente, non arrabbiatevi se la periferica
-
non è riconosciuta, probabilmente si può risolvere ricompilando il
+
non è riconosciuta, probabilmente si può risolvere ricompilando il
kernel abilitando il supporto per quella determinata scheda/periferica.
kernel abilitando il supporto per quella determinata scheda/periferica.
Esaminiamo quindi l'output di dmesg:
Esaminiamo quindi l'output di dmesg:
-
[...]
+
<pre>
brucaliffo# dmesg
brucaliffo# dmesg
-
[...]
+
</pre>
-
Cosa non riuscite a leggere quello che c'è in alto ma leggete soltanto
+
 
 +
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
le ultime 24 righe? Non vi preoccupate, esistono i pager e le pipe
(non quelle che si fumano :-)) per risolvere questo problema:
(non quelle che si fumano :-)) per risolvere questo problema:
-
[...]
+
<pre>
brucaliffo# dmesg | less
brucaliffo# dmesg | less
-
[...]
+
</pre>
 +
 
Benissimo, ora possiamo vedere e muoverci sull'output di dmesg come se
Benissimo, ora possiamo vedere e muoverci sull'output di dmesg come se
stessimo leggendo un man page, infatti usiamo lo stesso pager (less) e
stessimo leggendo un man page, infatti usiamo lo stesso pager (less) e
-
l'approccio è quindi uguale.1
+
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
+
Non trovate che è piuttosto noioso esaminare l'output in questo modo?
-
una determinata stringa o meglio regular expression, tutto ciò che
+
, lo è, greppiamolo quindi! grep è un tool GNU che serve per cercare
-
combacia grep ce lo stampa a video.
+
una determinata stringa o meglio regular expression, tutto ciò che
 +
combacia grep ce lo stampa a video.<br>
Proviamolo subito esaminando le varie periferiche,
Proviamolo subito esaminando le varie periferiche,
-
scheda di rete:
+
* scheda di rete:
-
[...]
+
<pre>
brucaliffo# dmesg | grep -i realtek
brucaliffo# dmesg | grep -i realtek
rtk0 at pci0 dev 16 function 0: Realtek 8139 10/100BaseTX
rtk0 at pci0 dev 16 function 0: Realtek 8139 10/100BaseTX
-
[...]
+
</pre>
-
controller SATA PCI:
+
* controller SATA PCI:
-
[...]
+
<pre>
brucaliffo# dmesg | grep -i adaptec
brucaliffo# dmesg | grep -i adaptec
satalink0: Adaptec AAR-1210SA serial ATA RAID controller (rev. 0x02)
satalink0: Adaptec AAR-1210SA serial ATA RAID controller (rev. 0x02)
-
[...]
+
</pre>
 +
* scheda video:
 +
<pre>
brucaliffo# dmesg | grep -i nvidia
brucaliffo# dmesg | grep -i nvidia
vga1 at pci1 dev 0 function 0: NVIDIA RIVA TNT (rev. 0x04)
vga1 at pci1 dev 0 function 0: NVIDIA RIVA TNT (rev. 0x04)
-
[...]
+
</pre>
-
scheda audio:
+
* scheda audio:
-
[...]
+
<pre>
brucaliffo# dmesg | grep -i ensoniq
brucaliffo# dmesg | grep -i ensoniq
eap0 at pci0 dev 18 function 0: Ensoniq AudioPCI (rev. 0x01)
eap0 at pci0 dev 18 function 0: Ensoniq AudioPCI (rev. 0x01)
-
[...]
+
</pre>
-
hard disk:
+
* hard disk:
-
[...]
+
<pre>
brucaliffo# dmesg | grep -E "^wd0 "
brucaliffo# dmesg | grep -E "^wd0 "
wd0 at atabus2 drive 0: <MAXTOR STM3160211AS>
wd0 at atabus2 drive 0: <MAXTOR STM3160211AS>
-
[...]
+
</pre>
 +
 
 +
Ottimo, tutto l'hardware è stato rilevato correttamente.
-
Ottimo, tutto l'hardware è stato rilevato correttamente.
 
L'opzione "-i" che abbiamo dato a grep significa "ignore-case" quindi
L'opzione "-i" che abbiamo dato a grep significa "ignore-case" quindi
ignora maiuscole e minuscole. Di default infatti grep rispetta
ignora maiuscole e minuscole. Di default infatti grep rispetta
maiuscole e minuscole (case-sensitive).
maiuscole e minuscole (case-sensitive).
 +
L'opzione "-E" serve per le regexp (regular expression), infatti
L'opzione "-E" serve per le regexp (regular expression), infatti
-
quella tra doppi apici è una regexp, il "coppo" (^) significa che
+
quella tra doppi apici è una regexp, il "coppo" (^) significa che
quello che cerchiamo deve stare all'inizio della riga, lo spazio
quello che cerchiamo deve stare all'inizio della riga, lo spazio
invece significa che dopo wd0 che si deve trovare all'inizio della
invece significa che dopo wd0 che si deve trovare all'inizio della
Riga 306: Riga 318:
questa regexp, sono un po' ostiche all'inizio, per maggiori
questa regexp, sono un po' ostiche all'inizio, per maggiori
informazioni digitate un bel "info grep".
informazioni digitate un bel "info grep".
-
Infatti per leggere documentazione non esiste soltanto man, man di
+
 
-
solito è piuttosto scarno, descrive le varie opzioni del programma, ne
+
Per leggere documentazione infatti non esiste soltanto man, man di
-
da una breve descrizione ma nulla in più. Con info(1) infatti possiamo
+
solito è piuttosto scarno, descrive le varie opzioni del programma, ne
 +
una breve descrizione ma nulla in più. Con info(1) infatti possiamo
leggere tutta la documentazione nel formato Info (vedere texinfo(5) se
leggere tutta la documentazione nel formato Info (vedere texinfo(5) se
-
sì è ancora più curiosi). Anche usare info non è difficile, però lo
+
si è ancora più curiosi). Anche usare info non è difficile, però lo
proveremo dopo quando ci siamo fatti uno user.
proveremo dopo quando ci siamo fatti uno user.
-
** Nuovo utente
+
==== Nuovo utente ====
-
 
+
Non aspettiamo allora e creiamo subito uno user! (Sostituire <shell>
Non aspettiamo allora e creiamo subito uno user! (Sostituire <shell>
con una shell, per esempio /bin/ksh, <"Nome e Cognome" dell'utente>
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,
con il vostro Nome e Cognome, <utente> con il nuovo nome dell'utente,
per esempio leot, o claudio, o quello che volete.
per esempio leot, o claudio, o quello che volete.
-
[...]
+
<pre>
brucaliffo#
brucaliffo#
useradd -m -G wheel -s <shell> -c <"Nome e Cognome" dell'utente> <utente>
useradd -m -G wheel -s <shell> -c <"Nome e Cognome" dell'utente> <utente>
-
[...]
+
</pre>
 +
 
Scegliamo ora una buona password per quest'utente con:
Scegliamo ora una buona password per quest'utente con:
-
[...]
+
<pre>
brucaliffo# passwd <utente>
brucaliffo# passwd <utente>
-
[...]
+
</pre>
Descrivo un brevemente questi due comandi utilissimi che di norma
Descrivo un brevemente questi due comandi utilissimi che di norma
Riga 333: Riga 346:
;-))) si commenta da solo, cambia la password di quell'utente dato
;-))) si commenta da solo, cambia la password di quell'utente dato
come argomento (omettendo l'argomento cambia la password del nostro
come argomento (omettendo l'argomento cambia la password del nostro
-
utente, in questo caso l'utente root). Per quanto riguarda useradd(8)
+
utente, in questo caso l'utente root).
-
crea l'utente. L'opzione "-m" sta per "creami una /home"; la /home è
+
 
 +
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
la directory in cui stanno tutti i file di quell'utente e quindi tutti
i vari documenti, le varie configurazione che riguardano quell'utente.
i vari documenti, le varie configurazione che riguardano quell'utente.
-
E' la directory (cartella) personale dell'user, vedremo più tardi
+
E' la directory (cartella) personale dell'user, vedremo più tardi
come manipolare file e cartelle. L'opzione "-G" invece significa
come manipolare file e cartelle. L'opzione "-G" invece significa
"aggiungi questo utente a questo/questi gruppo/gruppi", sotto Unix
"aggiungi questo utente a questo/questi gruppo/gruppi", sotto Unix
Riga 343: Riga 358:
ed un gruppo (gruppo). In NetBSD il gruppo di default per tutti gli
ed un gruppo (gruppo). In NetBSD il gruppo di default per tutti gli
utenti si chiama "users". Possiamo ad esempio permettere a tutti
utenti si chiama "users". Possiamo ad esempio permettere a tutti
-
gli utenti del gruppo users di vedere un nostro file solo in lettura.
+
gli utenti del gruppo users di vedere un nostro file solo in lettura.<br>
-
Il gruppo "wheel" invece esiste in tutti i sistemi *BSD, è molto
+
Il gruppo "wheel" invece esiste in tutti i sistemi *BSD, è molto
utile, infatti certi software, come ad esempio su(1) (tool che serve
utile, infatti certi software, come ad esempio su(1) (tool che serve
per cambiare utente, lo vedremo in seguito) non possono essere
per cambiare utente, lo vedremo in seguito) non possono essere
-
eseguiti se non si fa parte del gruppo "wheel". L'opzione "-s" è il
+
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
tipo di shell di quell'utente, le shell installate di default sono
ksh, sh e csh, quindi queste sono sempre valide. Se installate si
ksh, sh e csh, quindi queste sono sempre valide. Se installate si
-
possono impostare anche altre shell, ce ne sono moltissime.
+
possono impostare anche altre shell, ce ne sono moltissime.<br>
-
L'opzione "-c" è il commento per quell'utente, di norma Nome e
+
L'opzione "-c" è il commento per quell'utente, di norma Nome e
-
Cognome, può far comodo ad alcuni software ma di certo non è
+
Cognome, può far comodo ad alcuni software ma di certo non è
indispensabile, omettetelo tranquillamente se non avete voglia di
indispensabile, omettetelo tranquillamente se non avete voglia di
-
commentare quello user. L'ultimo argomento ed anche il più importante
+
commentare quello user. L'ultimo argomento ed anche il più importante
-
è il nome dell'utente.
+
è il nome dell'utente.
   
   
-
 
+
==== Primo login con il nuovo utente ====
-
** Primo login con il nuovo utente
+
Ok, ora abbiamo un utente, lasciamo la shell root così come è e
-
 
+
-
Ok, ora abbiamo un utente, lasciamo la shell root così come è e
+
spostiamoci in un altro terminale con C-M-F2 (Control + Alt + F2),
spostiamoci in un altro terminale con C-M-F2 (Control + Alt + F2),
-
facciamo la stessa procedura che abbiamo fatto con l'utente root,
+
facciamo la stessa procedura che abbiamo fatto con l'utente root.
quindi:
quindi:
-
[...]
+
<pre>
NetBSD/i386 (brucaliffo) (ttyE1)
NetBSD/i386 (brucaliffo) (ttyE1)
Riga 381: Riga 394:
Terminal type is wsvt25.
Terminal type is wsvt25.
leot@brucaliffo$ _
leot@brucaliffo$ _
-
[...]
+
</pre>
 +
 
Benissimo, siamo riusciti a loggarci con successo, spostiamoci ora sul
Benissimo, siamo riusciti a loggarci con successo, spostiamoci ora sul
primo terminale (C-M-F1) per fare il logout dell'utente root:
primo terminale (C-M-F1) per fare il logout dell'utente root:
-
[...]
+
<pre>
brucaliffo# exit
brucaliffo# exit
-
[...]
+
</pre>
 +
 
Con exit abbiamo fatto il logout, un ottima alternativa ad exit
Con exit abbiamo fatto il logout, un ottima alternativa ad exit
-
leggermente più rapida in ksh è C-d (Ctrl + d).
+
leggermente più rapida in ksh è C-d (Ctrl + d).
Siccome non siamo sicuri che ci siamo loggati con il nostro utente
Siccome non siamo sicuri che ci siamo loggati con il nostro utente
vogliamo una conferma con who(1):
vogliamo una conferma con who(1):
-
[...]
+
<pre>
leot@brucaliffo$ who am i
leot@brucaliffo$ who am i
leot    ttyE1    Jul 24 12:48
leot    ttyE1    Jul 24 12:48
-
[...]
+
</pre>
 +
 
Possiamo anche vedere tutti gli utenti loggati semplicemente con un
Possiamo anche vedere tutti gli utenti loggati semplicemente con un
"who", in questo caso abbiamo root loggato sul primo terminale e leot
"who", in questo caso abbiamo root loggato sul primo terminale e leot
loggato sul quarto terminale:
loggato sul quarto terminale:
-
[...]
+
<pre>
leot@brucaliffo$ who
leot@brucaliffo$ who
root    console  Jul 24 13:00
root    console  Jul 24 13:00
leot    ttyE3    Jul 24 12:51
leot    ttyE3    Jul 24 12:51
-
[...]
+
</pre>
-
Un altro comando simile a who(1) ma non uguale è w(1):
+
 
-
[...]
+
Un altro comando simile a who(1) ma non uguale è w(1):
 +
<pre>
leot@brucaliffo$ w
leot@brucaliffo$ w
  2:11PM  up 15 mins, 2 users, load avarages: 0.47, 0.24, 0.17
  2:11PM  up 15 mins, 2 users, load avarages: 0.47, 0.24, 0.17
Riga 411: Riga 428:
leot    console -                1:59PM    0 w
leot    console -                1:59PM    0 w
leot    ttyp0  192.168.1.4      2:10PM    1 emacs
leot    ttyp0  192.168.1.4      2:10PM    1 emacs
-
[...]
+
</pre>
-
Da come si può osservare con w(1) possiamo anche vedere quello che sta
+
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
facendo l'utente, nell'esempio l'utente leot (che sta sulla macchina
fisicamente) sta sul primo terminale e sta eseguendo "w", il secondo
fisicamente) sta sul primo terminale e sta eseguendo "w", il secondo
-
utente è sempre leot, solo che proviene da bianconiglio (192.168.1.4)
+
utente è sempre leot, solo che proviene da bianconiglio (192.168.1.4)
e sta eseguendo "emacs".
e sta eseguendo "emacs".
 +
Sappiamo le basi, giusto per un login e logout, impariamo ora a
Sappiamo le basi, giusto per un login e logout, impariamo ora a
-
manipolare file e directory.
+
manipolare file e directory.<br>
-
Creiamo una directory, il comando per creare una directory è mkdir(1),
+
Creiamo una directory, il comando per creare una directory è mkdir(1),
per vedere invece il contenuto di una directory esiste il comando
per vedere invece il contenuto di una directory esiste il comando
ls(1), invece per capire il percorso in cui siamo posizionati il tool
ls(1), invece per capire il percorso in cui siamo posizionati il tool
-
di cui abbiamo bisogno è pwd(1):
+
di cui abbiamo bisogno è pwd(1):
-
[...]
+
<pre>
leot@brucaliffo$ mkdir data
leot@brucaliffo$ mkdir data
leot@brucaliffo$ ls
leot@brucaliffo$ ls
Riga 429: Riga 447:
leot@brucaliffo$ pwd
leot@brucaliffo$ pwd
/home/leot
/home/leot
-
[...]
+
</pre>
 +
 
Impariamo ora a muoverci tra le cartelle:
Impariamo ora a muoverci tra le cartelle:
-
[...]
+
<pre>
leot@brucaliffo$ cd data
leot@brucaliffo$ cd data
leot@brucaliffo$ pwd
leot@brucaliffo$ pwd
Riga 463: Riga 482:
leot@brucaliffo$ pwd
leot@brucaliffo$ pwd
/home/leot
/home/leot
-
[...]
+
</pre>
-
Possiamo vedere che non è difficile spostarsi tra le directory, può
+
 
 +
Possiamo vedere che non è difficile spostarsi tra le directory, può
essere utilissimo l'uso del tasto TAB che autocompleta le directory e
essere utilissimo l'uso del tasto TAB che autocompleta le directory e
volendo anche i programmi in certe shell. ksh supporta
volendo anche i programmi in certe shell. ksh supporta
l'autocompletamento.
l'autocompletamento.
 +
Impariamo ora a rimuovere le directory che avevamo creato, il comando
Impariamo ora a rimuovere le directory che avevamo creato, il comando
per rimuovere una cartella vuota si chiama rmdir(1):
per rimuovere una cartella vuota si chiama rmdir(1):
 +
<pre>
leot@brucaliffo$ cd $HOME/data
leot@brucaliffo$ cd $HOME/data
leot@brucaliffo$ ls -1
leot@brucaliffo$ ls -1
Riga 477: Riga 499:
leot@brucaliffo$ ls
leot@brucaliffo$ ls
documenti
documenti
-
[...]
+
</pre>
 +
 
Le cartelle fanno molto comodo per tenere ordinati i nostri file, ma
Le cartelle fanno molto comodo per tenere ordinati i nostri file, ma
-
dobbiamo imparare a modificare i file, magari file di testo, i tool
+
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
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)
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
l'editor installato di default su NetBSD, un editor quindi da
-
conoscere giusto per le basi, non voglio aggiungere molto su Vi perché
+
conoscere, almeno le basi, non voglio aggiungere molto su Vi perché
-
su The NetBSD Guide c'è un ottima sezione sull'editor Vi e
+
su The NetBSD Guide[1] c'è un ottima sezione sull'editor Vi e
sull'editing di base di Vi. Se vi colpisce Vi, consiglio di provare
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
+
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
editor di base minimale ma ha molte funzioni, nVi e Vim hanno varie
-
caratteristiche e sono ancora più potenti dell'editor Vi). Un altro
+
caratteristiche e sono ancora più potenti dell'editor Vi). Un altro
-
editor sicuramente da provare è GNU Emacs scritto da Richard Stallman
+
editor sicuramente da provare è GNU Emacs scritto da Richard Stallman
(rms continua ancora con lo sviluppo di Emacs ma ci sono un sacco di
(rms continua ancora con lo sviluppo di Emacs ma ci sono un sacco di
-
contributi di altri user).
+
contributi da parte di altri developer e user).
-
Altro tool utile che ci serve oltre all'editor è file(1) che serve a
+
 
 +
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
determinare il tipo di file (per esempio un file di testo o anche un
-
video, un immagine...)
+
video, un immagine...).<br>
-
Un altro tool simile a cat(1) che useremo sarà head(1) che stampa le
+
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
prime righe di un file, simile a tail(1) che invece stampa le righe
-
partendo dalla fine.
+
partendo dalla fine.<br>
Useremo anche echo(1) per scrivere del testo.
Useremo anche echo(1) per scrivere del testo.
-
[...]
+
<pre>
leot@brucaliffo$ touch dmesgfile.txt
leot@brucaliffo$ touch dmesgfile.txt
leot@brucaliffo$ ls
leot@brucaliffo$ ls
Riga 521: Riga 545:
wsdisplay0: screen 4 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)
NetBSD/toaster: we wish the toaster to be happy too.
NetBSD/toaster: we wish the toaster to be happy too.
-
[...]
+
</pre>
-
L'esempio qui sopra è piuttosto semplice, l'unica cosa un po' strana è
+
L'esempio qui sopra è piuttosto semplice, l'unica cosa un po' strana è
">" che serve per dirigere l'output su quel file. Abbiamo usato anche
">" che serve per dirigere l'output su quel file. Abbiamo usato anche
-
">>", cioè append proprio per appendere del testo (infatti quando
+
">>", cioè append, proprio per appendere del testo (infatti quando
abbiamo fatto il "dmesg > file" quello che avevamo precedentemente
abbiamo fatto il "dmesg > file" quello che avevamo precedentemente
-
scritto è stato sovrascritto, con l'append invece se il file esiste lo
+
scritto è stato sovrascritto, con l'append invece se il file esiste lo
"appende" alla fine).
"appende" alla fine).
TODO: continuare, i tool di base sono quasi finiti, si inizia a fare
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
sul serio editando varie conf (in particolare rc.conf), e altri tool
-
un po' più seri.
+
un po' più seri.

Versione delle 09:49, 29 lug 2007

Indice

Iniziare con NetBSD HOWTO

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 The NetBSD Guide[1]. 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! (i nostri avi Unix erano pigri

-))) 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 The NetBSD Guide[1] 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.

Strumenti personali