PCいぢり

チラシの裏

マルチブート

2007-05-30 21:53:35 | 自作PC
2006年12月に購入し放置中の P5B-V をマルチブートにしたい。 つながっているデバイスは、Maxtor 7H500F0(500GのHDD)、パイオニア製のスーパーマルチドライブ DVR-A12J とFDD。材料はその他に DOSフォーマット済みのフロッピーが2枚と、FedoraCore6のDVDとSolaris10のDVD。 ちなみにCPUはE6600(確か2.4GHz)、メモリは3万で買ったブランド製1Gx2。年末に色々買ったが 全部放置してて償却できないままで非常にもったいない。 値段もずいぶん下がったしorz

そんなわけで使わないと勿体無いのでOSを色々入れる事から始める。OS入れるところはさっくりと 省略するが、1台のHDDに色々入れようとするとパーティションを切らないといけない。 Solarisのパーティションツールは非常に使い辛いし、Windowsのもunix系のパーティション を操作できないので、FedoraCoreのfdiskを使うのが一番簡単である。 そこで最初にFC6でパーティションを全部 切ってHDDを全部切り分けた後、FC6をインストールして、その後Solaris x86 11/06を入れようとしたが、 入らないorz

色々調べた結果、どうやら空きシリンダが1つSolarisには必要らしい。 FC6で余り0に切ってしまうとSolarisを入れることが出来ない。なんてこった。

気を取り直して最初からやり直し。パーティション情報を全部消して、今度は最初に Solarisを入れる。 Maxtor 7H500F0 は 60801 シリンダあるのだが、Solarisから見ると60800しか見えない。 どうやら1シリンダは何かのために必要な領域なのだろう。 Primaryパーティション1として15Gほど確保して残りは空き領域にしたまま、 Solarisをインストールしてから、Grubの設定を見る。 これらは後で必要になるので紙にメモっておく。
# cd /boot/grub
# cat menu.lst
title Solaris 10 11/06 s10x_u3wos_10_X86
root (hd0,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
title Solaris_failsafe
root (hd0,0,a)
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe
Solarisを入れ終わったら、今度はFC6を入れる。FC6のDVDを入れて起動し、 インストールの画面を出す。P5B-Vはなぜかtextモードじゃないとうまく いかないので、boot: linux text と最初に入れて起動する。 言語やキーボードを選んだ後、パーティションタイプを選ぶ所まできたら、 Alt+F2 を押してシェルを出し、ここでパーティションを切る。
sh-3.1# fdisk /dev/sda
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               2        1914    15366172+  bf  Solaris
なるほどSolarisで作ったPrimary1のパーティション/dev/sda1が シリンダ2から始まっている。最初にこれがわかっていれば無駄な苦労をしなくて済んだ のになあ。

Primary2をlinux、Primary3をwindows、残り全部(Primary4)を拡張(Extended) パーティションにしてその中にswapを作る。メモリ2Gもあればswapなんぞ要らない 気がするが…。最終的にこんな風にきった。それぞれのパーティションにOSを1つずつ 入れるつもり。
sh-3.1# fdisk -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           2        1914    15366172+  bf  Solaris
/dev/sda2            1915        3828    15374205   83  Linux
/dev/sda3            3829       25888   177196950    7  HPFS/NTFS
/dev/sda4           25889       60801   280438672+   5  Extended
/dev/sda5           25889       26524     5108638+  82  Linux swap / Solaris
/dev/sda6           26525       48584   177196918+   7  HPFS/NTFS
/dev/sda7           48585       49856    10217308+   b  W95 FAT32
/dev/sda8           49857       51770    15374173+  83  Linux
/dev/sda9           51771       53684    15374173+  83  Linux
/dev/sda10          53685       60801    57167271    7  HPFS/NTFS
インストールの設定をフガフガと入力し、GRUB Boot Loader の設定のところまで来た。 FC6のローダならSolarisも読んでくれると過大な期待をして、デフォルトの MBR にGrubを入れてしまった(今思えば/dev/sda2の先頭に 入れておくんだった)。

FC6のインストール後、再起動すると、GrubメニューにSolarisが無い。 FC6しか立ち上がらない。ブートメニューを編集してSolarisブートするように指示 してもダメだった。結局MBRにSolaris起動できるローダーを入れ直す必要があるのだが、 今度はせっかくいれたFC6が立ち上がらなくなる恐れがあるので、FDにローダを いれてFC6をFDDから起動できるようにしておく。まず/dev/sda2 にローダを入れて、次にddでFDにコピーする。
# grub-install /dev/sda2
# dd if=/dev/sda2 of=/dev/fd0 bs=512 count=1
このFDからブートできるのを確認したら、FC6 の grub.conf もメモって置く。
# cd /boot/grub
# cat menu.lst
title Fedora Core 6 (2.6.18-1.2798.fc6)
root (hd0,1)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-1.2798.fc6.img
次は起動しなくなったSolarisのレスキュー。Solaris のDVDから起動し、インストーラの Grubが立ち上がったところで、すかさず "e" を押してEdit。前にメモっておいた Solaris のmenu.lst になるように編集する。キーマップが異なるのがツライ。 まだかろうじて指がASCII 配列を覚えているがそろそろヤバいw
root (hd0,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
をを。これでインストールしたSolarisが起動する。Solarisでgrubをインストール し直すのだが、その前に、grubのメニューにFC6を追加。
# cd /boot/grub
# vi menu.lst
# cat menu.lst (一部省略)
title Solaris 10 11/06 s10x_u3wos_10_X86
root (hd0,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
title Solaris_failsafe
root (hd0,0,a)
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe
title Fedora Core 6 (2.6.18-1.2798.fc6)
root (hd0,1)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-1.2798.fc6.img
menu.lstに追加したら、これをMBRにインストールすればいいんだけど、Solarisでどうやるんですかね。 とりえず man grub; man installgrub と辿って書いてあることをそのまま実行。
# cd /boot/grub
# installgrub ./stage1 ./stage2 /dev/rdsk/c1d0s0
stage1 written to partition 0, sector 0 (abs 16065)
stage2 written to partition 0, 233 sectors starting at 50 (abs 16115)
MBRがでかくなるからHDDの先頭1シリンダが使えないのかなあ。でもなんか違う気もする。 スライス情報を記憶する場所が必要なのかな?まあいいや。man だと c0d0s0 になってるけど、自分とこはなぜかc1d0s0だ。

念のためSolarisブート用フロッピーも作っておく。この手順もオンラインマニュアルに載っているが、 ボリュームマネージャを止めるという手順が書いてない。用意した2枚目のFDを ドライブにいれて下記の手順を実行する。
# /etc/init.d/volmgt stop
# mkdir /mnt2
# mount -F pcfs /dev/diskette /mnt2
# mkdir -p /mnt2/boot/grub
# cp /boot/grub/* /mnt2/boot/grub
# umount /mnt2
# cd /boot/grub
# /sbin/installgrub stage1 stage2 /dev/rdiskette
作ったフロッピーからSolarisとFC6が起動するのを確認してOKだった。フロッピーを ドライブから抜いて、MBRからSolarisをブートしようとしたら、立ち上がらない。というか メニューにSolarisが無い。さっきインストールしたはずなのに。

でアレコレ調べるとMBRに書くというオプション(-m)を入れ忘れていたのに気づいた。 実行するとさっきとメッセージが違うし慎重だw
# cd /boot/grub
# installgrub -m ./stage1 ./stage2 /dev/rdsk/c1d0s0
Updating master boot sector destroys existing boot managers (if any).
continue (y/n)?y
stage1 written to partition 0, sector 0 (abs 16065)
stage2 written to partition 0, 233 sectors starting at 50 (abs 16115)
stage1 written to master boot sector
再起動して、MBRのGrubからSolarisとFC6が起動するのを確認してOKだった。 フロッピーの2枚目からも両方起動できるのを確認済みなので、次はWindowsXPを入れる。

WindowsXPをインストールするとMBRにWindowsのブートセレクタが入ってGrubが壊れちゃうので、 インストールする前に、MBRのバックアップを取る。フロッピーの1枚目はもう要らない(2枚目 で両方起動できる)ので、1枚目にコピっておく。
# uname
Linux
# mformat a:
# mount -t vfat /dev/fd0 /mnt
# cd /mnt
# dd if=/dev/sda of=./mbr_grub.bin bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0183814 secounds, 27.9 kB/s
# mdir a:
mbr_grub.bin
このようにして作ったmbr_grub.binは大事に取っておく。

次にWindowsXPのインストール。Primary3のパーティションにインストールする。 インストーラからは"C:"ドライブに見えるので、そこをNTFSでクイックフォーマットして、 インストールする。

XPのインストールが終わってXPが起動したら、コマンドプロンプトを起動。ブートローダ 設定ファイルの隠し属性を取って編集できるようにする。
c:hoge>cd 
c:>attrib
  SH    C:boot.ini
c:>attrib -s -h boot.ini
Cドライブのルートに現れた boot.ini を編集する。1行を書き加える。
c:mbr_grub.bin="Grub (Solaris 10, Fedora Core 6)"
あと1枚目のFDに作ったはずの mbr_grub.bin を C:において置く。 これで再起動すると、MBRに入ったWindowsブートローダからGrubを呼び出せるようになる。 FC6とSolarisがちゃんと起動できるのを確認し、ついでに、GrubからWindowsを起動できるように 設定する。Solarisを起動して menu.lstを編集し3行追加する。
# cd /boot/grub
# vi menu.lst
# cat menu.lst
(中略)
title Windows Boot Loader
rootnoverify (hd0,2)
chainloader +1
これでWindowsのブートローダとgrubを行ったり来たり出来るようになる。 2枚目のフロッピーのmenu.lstも同様に変更し、大事に取っておく。

Windows Boot Loader Screen Shot Grub Screen Shot

最後にキモをまとめておく。
  • 最初にSolarisをインストールしてSolarisのパーティションだけ作る(Primary1)。
  • 次にPrimary2にlinuxを入れてfdiskでパーティションを全部切る。
  • grub は Solarisのを使う。
  • Windowsは一番最後にいれるがその前に必ずMBRをバックアップする。
次は2月に買って同様に放置中のWindowsVistaをいれるつもりなんだけど、 いつになるのやらマンドクセ('A`)
しかも FedoraProjectのWiki に行ったら明日Fedora7が出るとか書いてあるしw