Chapter 21. Operazioni varie

Table of Contents

21.1. Installare il gestore di boot
21.2. Rimuovere le laber del disco
21.3. Altoparlante
21.4. Dimenticata la password di root?
21.5. Aggiungere un nuovo disco rigido
21.6. File delle password occupato?
21.7. Come costruire le periferiche in /dev

Questo capitolo raccoglie vari argomenti, in ordine sparso:

21.1. Installare il gestore di boot

Sysinst, il programma di installazione di NetBSD generalmente installa il gestore di boot di NetBSD sull'disco rigido. Il gestore di boot può anche essere installato o riconfigurato in qualsiasi momento successivo, se necessario, con il comando fdisk. Per esempio:

# fdisk -B wd0

Se NetBSD non effettua il boot dal disco rigido, lo si pò fare dal floppy di installazione e avviando il kernel sul disco rigido. Inserire il disco di installazione e, al prompt di boot, dare il seguente comando:

> boot wd0a:netbsd

Questo avvia il kernel sul disco rigido (usare il device corretto, per esempio sd0a for un disco SCSI).

Note

Probabilmente se si installano/rimuovono altri sistemi operativi come Windows 95 o Linux con LILO, talvolta fdisk -B non dà il risultato atteso (almeno così è successo a me). In questo caso, bisogna provare ad eseguire fdisk -i (il quale è noto come fdisk /mbr sul DOS) e quindi ancora fdisk da NetBSD.

21.2. Rimuovere le laber del disco

Sebbene questa non sia un'operazione che bisogna effettuare frequentemente, può essere utile sapere come farla in caso di bisogno. Assicurarsi di sapere esattamente cosa si stà andando a fare prima di effettuare questo genere di operazione. Per esempio:

# dd if=/dev/zero of=/dev/rwd0c bs=8k count=1

Il comando precedente elimina la label del disco (non la tabella della partizione MBR). Per eleminare completamente il disco, dev'essere utilizzato il device wd0d. Per esempio:

# dd if=/dev/zero of=/dev/rwd0d bs=8k

21.3. Altoparlante

Ho trovato questo trucco in una lista di discussione (non ricordo l'autore). Per generare un suono dall'altoparlante (per esempio alla fine di un lungo script) può essere usato il driver spkr nella configurazione del kernel, il quale è mappato su /dev/speaker. Per esempio:

echo 'BPBPBPBPBP' > /dev/speaker

Note

Il device spkr non è abilitato nel kernel generico; è necessario un kernel personalizzato.

21.4. Dimenticata la password di root?

Se si dimentica la password di root, non tutto è perso e si può ancora “recuperare” il sistema con i seguenti passi: avviare in modalità singolo utente, montare / e cambiare la password di root. In dettaglio:

  1. Avviare l'utente singolo: quando compare il prompt di boot e comincia il conto alla rovescia di 5 secondi, dare il seguente comando:

    > boot -s
  2. Al seguente prompt

    Enter pathname of shell or RETURN for sh:

    premere Enter.

  3. Scrivere i seguenti comandi:

    # fsck -y /
    # mount -u /
    # fsck -y /usr
    # mount /usr
  4. Cambiare la password di root:

    # passwd root
    Changing local password for root.
    New password: (non mostrata)
    Retype new password: (non mostrata)
    # 
  5. Uscire dalla shell per andare in modalità multiutente

    # exit

21.5. Aggiungere un nuovo disco rigido

Questa sezione descrive come aggiungere un nuovo disco rigido su un sistema NetBSD già funzionante. Nel seguente esempio sarà aggiunto un nuovo controller SCSI e un nuovo disco rigido, connesso al controller. Se non si necessita di aggiungere un nuovo controller saltare la parte rilevante e passare alla configurazione del disco rigido. L'installazione di un disco rigido IDE è identica; l'unica differenza sarà il nome del device (wd# anzichè sd#).

Come sempre, prima di acquistare nuovo hardware, consultare la lista di compatibilità hardiware di NetBSD e assicurarsi che la nuova periferica sia supportata dal sistema.

Quando il controller SCSI è stato fisicamente installato nel sistema e il nuovo disco rigido è stato connesso, è tempo di riavviare il computer e controllare che la periferica sia correttamente rilevata, utilizzando il comando dmesg. Questo è un esempio di output per un controller NCR-875:

ncr0 at pci0 dev 15 function 0: ncr 53c875 fast20 wide scsi
ncr0: interrupting at irq 10
ncr0: minsync=12, maxsync=137, maxoffs=16, 128 dwords burst, large dma fifo
ncr0: single-ended, open drain IRQ driver, using on-chip SRAM
ncr0: restart (scsi reset).
scsibus0 at ncr0: 16 targets, 8 luns per target
sd0(ncr0:2:0): 20.0 MB/s (50 ns, offset 15)
sd0: 2063MB, 8188 cyl, 3 head, 172 sec, 512 bytes/sect x 4226725 sectors

Se la periferica non compare nell'output, controllare che sia supportata dal kernel che si stà utilizzando; se necessario compilare un kernel personalizzato (see Chapter 31, Compiling the kernel).

Adesso le partizioni possono essere create utilizzando il comando fdisk. Prima, controllare lo stato corrente del disco:

# fdisk sd0
NetBSD disklabel disk geometry:
cylinders: 8188 heads: 3 sectors/track: 172 (516 sectors/cylinder)

BIOS disk geometry:
cylinders: 524 heads: 128 sectors/track: 63 (8064 sectors/cylinder)

Partition table:
0: sysid 6 (Primary 'big' DOS, 16-bit FAT (> 32MB))
    start 63, size 4225473 (2063 MB), flag 0x0
        beg: cylinder    0, head   1, sector  1
        end: cylinder  523, head 127, sector 63
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>

In questo esempio il disco rigido contiene già una partizione DOS, la quale verrà rimossa e rimpiazzata con una partizione NetBSD nativa. il comando fdisk -u sd0 consente di modificare interattivamente la partizione. I dati modificati saranno scritti nel disco solo dopo l'uscita e fdisk richiederà una conferma prima della scrittura, così da poter lavorare rilassati.

Per creare le partizioni del BIOS dev'essere utilizzato il comando fdisk -u; il risultato è il seguente:

Partition table:
0: sysid 169 (NetBSD)
    start 63, size 4225473 (2063 MB), flag 0x0
        beg: cylinder    0, head   1, sector  1
        end: cylinder  523, head 127, sector 63
1: <UNUSED>
2: <UNUSED>
3: <UNUSED>

Ora è tempo di creare la disklabel per la partizione NetBSD. I passi corretti per farlo sono:

# disklabel sd0 > tempfile
# vi tempfile
# disklabel -R -r sd0 tempfile

Adesso creiamo qualche partizione disklabel, modificando tempfile come già spiegato. Il risultato è:

#      size   offset   fstype [fsize bsize   cpg]
a:  2048004       63   4.2BSD   1024  8192    16 # (Cyl.  0*- 3969*)
c:  4226662       63   unused      0     0       # (Cyl.  0*- 8191*)
d:  4226725        0   unused      0     0       # (Cyl.  0 - 8191*)
e:  2178658  2048067   4.2BSD   1024  8192    16 # (Cyl.  3969*- 8191*)

Note

Quando la partizione disklabel è stata creata è possibile ottimizzarla studiando l'output del comando newfs -N /dev/rsd0a, il quale avvisa dell'esistetnza di settori non allocati alla fine della partizione disklabel. I valori riportati da niwfs possono essere utilizzati per aggiustare la dimensione delle partizioni con un processo iterativo.

L'operazione finale è la creazione di un sistema di file (file system, NdT) per le nuove partizioni definite (a ed e).

# newfs /dev/rsd0a
# newfs /dev/rsd0e

Adesso il disco è pronto per l'uso e le due partizioni possono essere montate. Per esempio:

# mount /dev/sd0a /mnt

Se si ha successo, si può voler mettere una voce per la partizione in /etc/fstab.

21.6. File delle password occupato?

Si si prova a modificare una password e si ottiene il misterioso messaggio “Password file is busy”, questo probabilmente vuol dire che il file /etc/ptmp non è stato cancellato dal sistema. Questo è una copia temporanea del file /etc/master.passwd: controllare che non si stiano perdendo informazioni importanti, dunque cancellarlo:

 # rm /etc/ptmp 

Note

Se il file /etc/ptmp esiste si possono anche ricevere messaggi di avviso all'avvio del sistema. Per esempio:

root: password file may be incorrect - /etc/ptmp exists

21.7. Come costruire le periferiche in /dev

Innanzi terminare il singolo utente, le partizioni sono ancora montate “rw” (read-write); si può farlo digitando semplicemente shutdown now metre si è in modalità multi utente, o riavviare con l'opzione -s e rendere / e /dev leggi-scrivibile (read-writable, NdT).

# mount -u /
# mount -u /dev

Allora:

# mkdir /newdev
# cd /newdev
# cp /dev/MAKEDEV* .
# sh ./MAKEDEV all
# cd /
# mv dev olddev
# mv newdev dev
# rm -r olddev

O se si sono scaricati tutti i sorgenti in /usr/src:

# mkdir /newdev
# cd /newdev
# cp /usr/src/etc/MAKEDEV.local .
# ( cd /usr/src/etc ; make MAKEDEV )
# cp /usr/src/etc/obj*/MAKEDEV .
# sh ./MAKEDEV all
# cd /
# mv dev olddev; mv newdev dev
# rm -r olddev

É possibile determinare $arch da

# uname -m

or

# sysctl hw.machine_arch