一如既往, 在购买新硬件之前, 查阅此NetBSD的硬件兼容性列表以确认系统支持此设备.
当SCSI控制器已经安装在系统上,并且新硬盘已经连上了, 现在要重新启动电脑以确认设备可识别, 使用 dmesg 命令. 例如一个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
如果输出中没有该设备, 检查一下是否该设备被你的内核支持; 如需要, 重新编译一个定制内核 (参 Chapter 31, 编译内核).
现在可以使用 fdisk 命令建立分区. 首先, 检查当前的磁盘状态:
代码: 全选
# 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>
本例中这块硬盘已经包含了一个DOS分区, 它将被删除并用一个原生的NetBSD分区代替. 命令 fdisk -u sd0 允许人机交互地修改分区. 修改的数据只有在已经确认或fdisk得到一个确认后才能被写道硬盘上, 所以不必紧张.
磁盘几何
显示的磁盘几何可能会令你很迷惑. Dmesg显示的是4226725扇区以及8188/3/172和C/H/S, 但是8188*3*172得4225008而不是 4226725. 原因是现代的磁盘未作几何修正,并且每磁道的扇区数根据柱面数变化: 唯一感兴趣的是扇区数. 磁盘报告的C/H/S值是一个虚构几何: 这里的172是总的扇区数(4226725)除以8188再除以3.
更令人困惑的是, BIOS也使用另一个 “假的” 几何(C/H/S 524/128/63) ,这样得出的总数是4225536, 这个数值比4225008更接近实际值. 我们要使用BIOS几何给磁盘分区, 这时为了保持与其它操作系统的兼容性, 尽管这样做会损失部分扇区 (4226725 - 4225536 = 1189 sectors = 594 KB).
创建BIOS分区要使用 fdisk -u 命令; 结果如下:
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>
现在要为NetBSD的BIOS分区创建disklabel. 争取的步骤是:
代码: 全选
# disklabel sd0 > tempfile
# vi tempfile
# disklabel -R -r sd0 tempfile
如果你想直接创建disklabel
代码: 全选
# disklabel -e sd0
你会看见如下信息
disklabel: ioctl DIOCWDINFO: No disk label on disk;
use "disklabel -I" to install initial label
因为磁盘上还不存在disklabel.
现在我们创建disklabel分区, 如上所述编辑 tempfile . 结果是:
[INDENT]# 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*)
[/INDENT]
说明
当disklabel被创建后,它能进一步完善,学习 newfs -N /dev/rsd0a命令的输出, 它警告在磁盘分区最后存在为分配的扇区. newfs报告的值可用于重复调整分区大小.
最后的操作是在刚建立的分区创建文件系统 (a 和 e).
代码: 全选
# newfs /dev/rsd0a
# newfs /dev/rsd0e
这块磁盘已经可以使用了, 并且这两个分区可被挂载. 例如:
代码: 全选
# mount /dev/sd0a /mnt
如果成功, 你可能想将此分区项放入 /etc/fstab文件中.