OpenSolarisでMBR修復

素敵な経験をした気がする。嘘だけど。
OpenSolarisというかJarisのgrubDebianが見えないからしょうがないやれやれだぜとか思いつつ/rpool/boot/grub/menu.lstをいじって再起動したはいいが上手くいかないので強制終了したのちに今一度起動したところ画面の左下にただ一文だけ、


Bad PBR sig..


と。
PBRはMBRの次に呼ばれるあいつだから、まあ強制終了が悪かったのだね。起動中のPower button長押しはやめたほうがいいだろうね。Ctrl+Alt+Delで再起動の後の方がいいのかな。
いやしかし自分のPCが壊れるのは気が楽で良いね。幸いたいしたデータはなかったし。時間は食われたが。


その後。

  1. たまたまあったdebian-netinst CDを使ってrescue modeでDebian側のデータが生きていることを確認。
    • fdisk -lと lv /ect/fstabでpartition構造確認。
    • ついでに/boot/grub/menu.lstをメモ。
  2. たまたまあったKnoppix5.1.1で起動するもNICカードが認識しなくてがっかり。
  3. たまたまあったJaris(OpenSolaris)のLive CDでネットの情報を頼りにgrub installしてみる。
  4. 出来た。叫ぶ。


参考。

実質行ったのは以下の一文だけ。

# /sbin/installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c5t0d0s0
Updating master boot sector destroys existing boot managers (if any).
continue (y/n)?y
stage1 written to partition 2 sector 0 (abs 521469900)
stage2 written to partition 2, 267 sectors starting at 50 (abs 521469950)
stage1 written to master boot sector

-mオプションを付けるとGrubインストールだけでなくMBRも書き込む。どうやらMBRも壊れていたらしくて。
問題は/dev/rdsk/c5t0d0s0の調べ方。
/dev/rdskの下にはc5t0d0s0と似たようなモノが100近くある。意味分からん。
ということで上記URLにあるように

# /sbin/prtvtoc /dev/rdsk/c?t?0d0s?

をひたすら、あるだけ実行してみた。
ヒットしたのはc4t0...とc5t0...の30くらい。
c4...はLiveCDのにおいがしたのでパス。c5...はどれも同じ情報が出力された。

# prtvtoc /dev/rdsk/c5t0d0s2
*
* /dev/rdsk/c5t0d0s2 partition map
*
* Dimensions:
*     512 bytes/sector
*      63 sectors/track
*     255 tracks/cylinder
*   16065 sectors/cylinder
*    9297 cylinders
*    9295 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00    4209030 145115145 149324174
       1      3    01      16065   4192965   4209029
       2      5    01          0 149324175 149324174
       8      1    01          0     16065     16064

最下の表を見る.TagはPartition typeで、2のものがROOT。Flagsは00がReadable and Writable。詳細は以下。

よってPartition 0に書き込む訳だ。


..というわけでc5t0d0s0にしたわけだ。
まあ良く分かってない。原文もそこまで詳しく書いてないし。


とりあえず直ったぜ!!!!




Solarisのデバイスネームc5t0d0sについて。後で読む。