Hack
device
  追加
  pci dump
DiskLabel
    fictitious
    magic number
  remrunqueue
  uvm
    pmap.c
    pmap_enter
autoconfiguration
  Question
  acpi
  profiling
  問題解決
Porting
Boot
build.sh
  machine
参照
  書籍・雑誌
  URL

Last Update: "2007/03/16 00:47:23 makoto"
Software 入口 | NetBSD 解説 | sysinst | macppc | pkgsrc 各論 | TsubaiBSD 絹/software/全文検索
at www.ki.nu

Hack NetBSD

Last Update: "2008/11/03 23:02:14 makoto"

DiskLabel

Re: Booting NetBSD on Old World Mac
http://mail-index.netbsd.org/port-macppc/2007/12/15/0000.html
disklabel の不思議 (とくださん tokuda.net の 2008/04 の日記から)
1. (04/08) | 2. (04/09) | 3. (04/09)

fictitious

fictitious
# /dev/rsd1c:
type: SCSI
disk: mydisk
label: fictitious
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 64
sectors/cylinder: 4032
cylinders: 19386
total sectors: 78165360
rpm: 7200
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0 

magic number

次のように言われるのは何 ?
partition> W
Label disk [n]? y
disklabel: ioctl DIOCWDINFO: Label magic number or checksum is wrong!
(disklabel or kernel is out of date?)
Label not written
partition> 
区画 の項目に書いたように、disk の先頭にある情報の取扱いについては、次のよ うな用語・道具があります。
道具 処理対象 (書込先) 機種
fdisk MBR PC/AT
disklabel NetBSD label NetBSD
pdisk Apple Partition Map macppc
BSD の由緒ある情報は disklabel ですが、その後に出て来た PC/AT の情報 との互換性から、この両方の情報が必要です。 現状では、MBR が第一の情報で、その中に disklabel や apm がある、と考えるの が妥当です。で、disklabel を書く時に、MBR があることを前提とする arch と、そうでない arch があります。 あるいは、 MBR に何か変なものが書いてあると遠慮するけれど、 何もなければ書いてくれる、 という arch もあります (i386)。
  1. dd を使って先頭部分を消しておく
  2. fdisk を使って初期化しておく
のどれかで解消出来ると思われます。1. は
dd if=/dev/zero of=/dev/wd0a count=4
などの方法で行ないます。書込先を間違えると大変なことに なりますから、
  • back up をとっておく
  • of= の先については、実行する前に何度も確認する
などの注意が必要です。特にいくつも disk がつながっている機械 では細心の注意が要ります。 2. の方法の場合には、
fdisk -u /dev/wd0c
のように始めて以後対話的に作業します。

3. がある意味、安易で確実かも知れませんが、 ある disk (wd0) の label を wd1 にそっくり写すような場合です。 その時に、 次のように NetBSD label の位置を知って、そこから写します。 例えば、次のように c: が 1526173 から始まっていた場合に 0 から写す他に

# size offset fstype [fsize bsize cpg/sgs] a: 14336784 1526173 RAID # (Cyl. 1514*- 15737*) b: 273097 771128 RAID # (Cyl. 765*- 1035*) c: 975241892 1526173 unused 0 0 # (Cyl. 1514*- 969015*) d: 976773168 0 unused 0 0 # (Cyl. 0 - 969020) e: 771057 63 Linux Ext2 0 0 # (Cyl. 0*- 764) f: 1024128 15862957 swap # (Cyl. 15737*- 16753*) g: 481948 1044225 Linux Ext2 0 0 # (Cyl. 1035*- 1514*) h: 959880980 16887085 RAID # (Cyl. 16753*- 969015*)
次のようにそこから 40 セクタくらいを写します。
# dd if=/dev/rwd0d of=/dev/rwd1d count=40 # dd if=/dev/rwd0d of=/dev/rwd1d skip=1526173 seek=1526173 count=40
Last Update: Mon, 01 Jun 2009 15:00:15 GMT 1.1.1.1 2008/03/12