Diff for /wikisrc/guide/misc.mdwn between versions 1.3 and 1.5

version 1.3, 2013/03/21 11:11:21 version 1.5, 2021/04/12 13:15:03
Line 1 Line 1
 **Contents**  This page was moved to:
   [The NetBSD Guide - Miscellaneous operations](//www.NetBSD.org/docs/guide/en/chap-misc.html)
 [[!toc levels=3]]  
 # Miscellaneous operations  
 This chapter collects various topics, in sparse order  
 ## Installing the boot manager  
 ### fdisk  
 Sysinst, the NetBSD installation program, usually installs the NetBSD boot  
 manager on the hard disk. The boot manager can also be installed or reconfigured  
 at a later time, if needed, with the  
 command. For example:  
     # fdisk -B wd0  
 If NetBSD doesn't boot from the hard disk, you can boot it from the installation  
 floppy and start the kernel on the hard disk. Insert the installation disk and,  
 at the boot prompt, give the following command:  
     > boot wd0a:netbsd  
 This boots the kernel on the hard disk (use the correct device, for example sd0a  
 for a SCSI disk).  
 *Note*: Sometimes `fdisk -B` doesn't give the expected result (at least it  
 happened to me), probably if you install/remove other operating systems like  
 Windows 95 or Linux with LILO. In this case, try running `fdisk -i` (which is  
 known as `fdisk /mbr` from DOS) and then run again `fdisk` from NetBSD.  
 ### installboot  
 There is another tool for installing a bootloader, named  
 Depending on the platform you are using, its usage differs, so you should read  
 the manpage and its extensive *EXAMPLES* section.  
 E.g., if you want to install the bootloader for a ffs filesystem to the  
 partition you have your NetBSD in (in this case, `sd0c`), you would use:  
     installboot -v /dev/rsd0c /usr/mdec/bootxx_ffs  
 ## Deleting the disklabel  
 Though this is not an operation that you need to perform frequently, it can be  
 useful to know how to do it in case of need. Please be sure to know exactly what  
 you are doing before performing this kind of operation. For example:  
     # dd if=/dev/zero of=/dev/rwd0c bs=8k count=1  
 The previous command deletes the disklabel (not the MBR partition table). To  
 completely delete the disk, the whole device `rwd0d` must be used. For example:  
     # dd if=/dev/zero of=/dev/rwd0d bs=8k  
 The commands above will only work as expected on the i386 and amd64 ports of  
 NetBSD. On other ports, the whole device will end in c, not d (e.g. `rwd0c`).  
 ## Speaker  
 I found this tip on a mailing list (I don't remember the author). To output a  
 sound from the speaker (for example at the end of a long script) the  
 driver can be used in the kernel config, which is mapped on `/dev/speaker`. For  
     echo 'BPBPBPBPBP' > /dev/speaker  
 *Note*: The `spkr` device is not enabled in the generic kernel; a customized  
 kernel is needed.  
 ## Forgot root password?  
 If you forget root's password, not all is lost and you can still recover the  
 system with the following steps: boot single user, mount `/` and change root's  
 password. In detail:  
 1. Boot single user: when the boot prompt appears and the five seconds  
    countdown starts, give the following command:  
        > boot -s  
 2. At the following prompt  
        Enter pathname of shell or RETURN for sh:  
    press Enter.  
 3. Write the following commands:  
        # fsck -y /  
        # mount -u /  
        # fsck -y /usr  
        # mount /usr  
 4. Change root's password:  
        # passwd root  
        Changing local password for root.  
        New password: (not echoed)  
        Retype new password: (not echoed)  
 5. Exit the shell to go to multiuser mode.  
        # exit  
 If you get the error `Password file is busy`, please see the section below.  
 ## Password file is busy?  
 If you try to modify a password and you get the mysterious message `Password  
 file is busy, it probably means that the file `/etc/ptmp` has not been deleted  
 from the system. This file is a temporary copy of the `/etc/master.passwd` file;  
 check that you are not losing important information and then delete it:  
     # rm /etc/ptmp  
 *Note*: If the file `/etc/ptmp` exists you can also receive a warning message at  
 system startup. For example:  
     root: password file may be incorrect - /etc/ptmp exists  
 ## Adding a new hard disk  
 This section describes how to add a new hard disk to an already working NetBSD  
 system. In the following example a new SCSI controller and a new hard disk,  
 connected to the controller, will be added. If you don't need to add a new  
 controller, skip the relevant part and go to the hard disk configuration. The  
 installation of an IDE hard disk is identical; only the device name will be  
 different (`wd#` instead of `sd#`).  
 As always, before buying new hardware, consult the hardware compatibility list  
 of NetBSD or ask on a mailing list to make sure the new device is supported by  
 When the SCSI controller has been physically installed in the system and the new  
 hard disk has been connected, it's time to restart the computer and check that  
 the device is correctly detected, using the  
 command. This is the sample output for an NCR-875 controller:  
     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  
 If the device doesn't appear in the output, check that it is supported by the  
 kernel that you are using; if necessary, compile a customized kernel (see  
 [[Compiling the kernel|guide/kernel]]).  
 Now the partitions can be created using the  
 command. First, check the current status of the disk:  
     # 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 this example the hard disk already contains a DOS partition, which will be  
 deleted and replaced with a native NetBSD partition. The command  
 `fdisk -u sd0` allows to modify interactively the partitions. The modified data  
 will be written on the disk only before exiting and fdisk will request a  
 confirmation before writing, so you can work relaxedly.  
 **Disk geometries**  
 The geometry of the disk reported by fdisk can appear confusing. Dmesg reports  
 4226725 sectors with 8188/3/172 for C/H/S, but 8188\*3\*172 gives 4225008 and  
 not 4226725. What happens is that most modern disks don't have a fixed geometry  
 and the number of sectors per track changes depending on the cylinder: the only  
 interesting parameter is the number of sectors. The disk reports the C/H/S  
 values but it's a fictitious geometry: the value 172 is the result of the total  
 number of sectors (4226725) divided by 8188 and then by 3.  
 To make things more confusing, the BIOS uses yet another *fake* geometry (C/H/S  
 524/128/63) which gives a total of 4225536, a value which is a better  
 approximation to the real one than 425008. To partition the disk we will use the  
 BIOS geometry, to maintain compatibility with other operating systems, although  
 we will lose some sectors (4226725 - 4225536 = 1189 sectors = 594 KB).  
 To create the BIOS partitions the command `fdisk -u` must be used; the result is  
 the following:  
     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>  
 Now it's time to create the disklabel for the NetBSD partition. The correct  
 steps to do this are:  
     # disklabel sd0 > tempfile  
     # vi tempfile  
     # disklabel -R -r sd0 tempfile  
 If you try to create the disklabel directly with  
     # disklabel -e sd0  
 you get the following message  
     disklabel: ioctl DIOCWDINFO: No disk label on disk;  
     use "disklabel -I" to install initial label  
 because the disklabel does not yet exist on the disk.  
 Now we create some disklabel partitions, editing the `tempfile` as already  
 explained. The result is:  
     #      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*: When the disklabel has been created it is possible to optimize it  
 studying the output of the command `newfs -N /dev/rsd0a`, which warns about  
 the existence of unallocated sectors at the end of a disklabel partition. The  
 values reported by newfs can be used to adjust the sizes of the partitions with  
 an iterative process.  
 The final operation is the creation of the file systems for the newly defined  
 partitions (`a:` and `e:`).  
     # newfs /dev/rsd0a  
     # newfs /dev/rsd0e  
 The disk is now ready for usage, and the two partitions can be mounted. For  
     # mount /dev/sd0a /mnt  
 If this succeeds, you may want to put an entry for the partition into  
 ## How to rebuild the devices in /dev  
 First shutdown to single user, partitions still mounted `rw` (read-write); You  
 can do that by just typing `shutdown now` while you are in multi user mode, or  
 reboot with the `-s` option and make `/` and `/dev` read-writable by doing.  
     # mount -u /  
     # mount -u /dev  
     # mkdir /newdev  
     # cd /newdev  
     # cp /dev/MAKEDEV* .  
     # sh ./MAKEDEV all  
     # cd /  
     # mv dev olddev  
     # mv newdev dev  
     # rm -r olddev  
 Or if you fetched all the sources 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  
 You can determine $arch by  
     # uname -m  
     # sysctl hw.machine_arch  

Removed from v.1.3  
changed lines
  Added in v.1.5

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb