Last Update: "2011/08/14 18:21:47 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)。
- dd を使って先頭部分を消しておく
- fdisk を使って初期化しておく
- 既に label が書いてある disk から dd で一部を写す
のどれかで解消出来ると思われます。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 の位置を知って、そこから写します。
MBR 形式を使っている arch では、
例えば、次のように 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
|