PORTEGE3010 で Solaris7 (device reconfiguration 篇)

[TOP] -- [Solaris] -- [azusa]

さて,install が終了したら,HDD を PORTEGE に戻して起動させてみます。 ここで,私の場合 / が mount できなくて single user mode でしか 起動しませんでした。

can't open device /dev/dsk/c0d0s0

現状確認

一般に DeskTop 機は PCI バス上に IDE の controller が繋がっているため, / file system のための device は (多少の違いはあれ) 以下のようになっていると思います。

# ls -l /dev/dsk/c0d0s0
/dev/dsk/c0d0s0 ->
../../devices/pci@0,0/pci-ide@c,1/ata@0/cmdk@0,0:a,raw

しかし PORTEGE では,IDE は ISA 上の device となります。 Secondary Boot で interactive を選択し,show-devs を実行してみましょう。

> show-devs
+boot/memory@0,0
i86pc-memory@0,0
i86pc-mmu@0,0
packages@0,0
isa/motherboard@1,61
isa/asy@1,3f8
isa/lp@1,378
isa/fdc@1,3f0
isa/kd@1,60
isa/kdmouse@1,60
isa/PNP0E03@1,3e0
isa/YMH0021@1,220
isa/bios@0,c0000
isa/bios@0,cc000
isa/ata@1,1f0
pci@0,0
pci@0,0/pci1179,1@0
pci@0,0/pci1179,1@4
pci@0,0/pci1179,1@b
pci@0,0/pci1179,1@11
pci@0,0/pci1179,1@13
pci@0,0/pci1179,1@13,1

問題認識と準備

この isa/ata@1,1f0 と表示されているのがそれです。 で,/dev/dsk/c0d0s0 の sym-link を,こちらを指すように 変更しないといけないわけです。現在の問題を依存関係順に整理すると,

  1. /dev/dsk, /devices を再構成する必要がある。
  2. そのためには, / file system に書き込みできるようにする必要がある。
    現状では single user mode でしか起動しないので,/ は read only として mount されている。
  3. / に書けるようにするには, / を remount する必要がある。 そのためには,isa/ata@1,1f0 を指す device file を作成する必要がある。

ここで堂々巡りに陥っているかのように見えますが,一時的に remount する ための device file は,どこに作成しても構いません。なので,とりあえず 書ける file system を用意して,そこに device file を作成します。 私の場合,

# mount /tmp

とすると /tmp に書けるようになったので,これを利用する ことにしました。違う directory を使用する場合は,以下適宜読みかえて ください。

一時的な device file の作成

で,まず /tmp/devices を作成します。

# mkdir /tmp/devices
# drvconfig -r /tmp/devices

これだけです。次に,/tmp/dev/dsk を作成します。

# disks -r /tmp

/ の remount

これで,remount のための準備は整いました。念のため,ちゃんと device file が作成されているか確認してみます。

# ls -l /tmp/dev/dsk/c0d0s0
/tmp/dev/dsk/c0d0s0 -> ../../devices/isa/ata@1,1f0/cmdk@0,0:a

と,isa/ata@1,1f0 への sym-link になっていれば O.K. です。あとは,これを使って / を remount します。

# mount -F ufs -o remount /tmp/dev/dsk/c0d0s0 /

df コマンドで,/ が remount できたか確認してください。このとき,/ エントリが 2つ 見えるかもしれませんが,気にしなくても O.K. です (^^;

# df
/proc             (/proc              ):       0 blocks     1410 files
/                 (/dev/dsk/c0d0s0    ): 3749858 blocks   363983 files
/dev/fd           (fd                 ):       0 blocks        0 files
/tmp              (swap               ): 1193808 blocks    15627 files   
/                 (/tmp/dev/dsk/c0d0s0 ): 3749858 blocks   363983 files 

/dev/dsk, /devices の作り直し

これで / に書きこみができるようになり,やっと device file を作り直す準備ができました。あとは,/tmp に対して行ったのと同様に,device file を作りなおすだけです。

# drvconfig
# disks -C

disks コマンドには,-C オプションを つけてください。

念のため,device file が作り直されているか確認しておきましょう。 私の場合,なぜか作り直した device file では,controller number が 2 になってしまっていました (^^;。このため,/etc/vfstab を書き直す必要がありました。

# ls -l /dev/dsk/c0d0s0
/dev/dsk/c0d0s0: No such file or directory
# ls -l /dev/dsk/c2d0s0
/dev/dsk/c2d0s0 -> ../../devices/isa/ata@1,1f0/cmdk@0,0:a

これで reboot をかけると,見事,起動するようになります。 `/' が mount できるようになったことを確認したら,一度 sys-unconfig をかけることをおすすめします。

# sys-unconfig

仕上げの bootpath 設定

さて,これでも bootpath の設定が PCI を指したままなので, 起動する度に毎回 Device Configuration Assistant が起動 してしまいます。

これを避けるために一度 Device Configuration Assistant で Boot Tasks を選択して,Property Settings において bootpath の 値を変更してください。

/isa/ata@1,1f0/cmdk@0,0:a

[TOP] -- [Solaris] -- [azusa]
Copyright © 2000 TSUMURA,Tomoaki
邑 tsumura@kuis.kyoto-u.ac.jp