研究室のマシンのハードディスクの調子が悪くなってきたので 買い換えたのですが、U-ATA 15GB という今まで使ったことがないような ハードディスクがやってきて、しっかりはまったので注意点を書こうと 思ってます。
とりあえずつないでブートしてみる。
wd1 at pciide0 channel 0 drive 0: <IBM-DPTA-351500> wd1: drive supports 16-sector pio transfers, lba addressing wd1: 14324MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 29336832 sectors wd1: 32-bits data port wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4
ここで注意することは cyl × head × sec は 16514064 にしかならないのに、 total sector 数は 29336832 となっているところです。うっかり cyl, head, sec を 信用すると 8GB 迄しか使えません。
fdisk で BIOS の認識している geometry と NetBSD の認識している geometry を確認する。
# fdisk wd1 NetBSD disklabel disk geometry: cylinders: 29104 heads: 16 sectors/track: 63 (1008 sectors/cylinder) BIOS disk geometry: cylinders: 1023 heads: 32 sectors/track: 63 (2016 sectors/cylinder) Partition table: 0: <UNUSED> 1: <UNUSED> 2: <UNUSED> 3: <UNUSED>
ここで注意することは BIOS で認識されている geometry と NetBSD が 認識している geometry が全然違うところです。今回は他の OS との 共存は考えていないので、気にしていませんが、他の OS と共存する場合は BIOS の情報の heads, sectors/track を使って disklabel(8) を実行しないと きっとブートしなくなります。
ここで NetBSD の geometry 情報の cylinders はブートの時と違う値で 今回は cyl × head × sec が 29336832 となっており、この値を使うと disk 全体が使えることになります。
disklabel(8) を実行します。 今回は NetBSD の認識している disklabel をそのまま使うので、こんな disktab entry を書きました。
DPTA-351500|IBM DPTA 351500:\ :dt=IDE:ty=winchester:\ :nc#29104:ns#63:nt#16:\ :se#512:rm#5400:\ :pa#819504:oa#0:ba#8192:fa#512:ta=4.2BSD:\ :pb#410256:ob#819504:tb=swap:\ :pc#29336832:oc#0:tc=unused:\ :pd#29336832:od#0:td=unused:\ :pe#410256:oe#1229760:be#8192:fe#512:te=4.2BSD:\ :pf#1024128:of#1640016:bf#8192:ff#512:tf=4.2BSD:\ :pg#1024128:og#2664144:bg#8192:fg#512:tg=4.2BSD:\ :ph#25648560:oh#3688272:bh#8192:fh#512:th=4.2BSD:
こうしておいて
# disklabel -w -r wd1 DPTA-351500
として disklabel を書いてやりました。
覚えている範囲内ではこうしておけば後は普通に newfs して使うことが できたはずです。single user mode で boot できるようになった時点で 本当に boot できるかどうかを確認してから他の partition の 中身のコピーをしたほうが悲しくないかも知れません。