Maのエッセイへ

デスクトップでも動かしてみる

基本的な作業は,「Gentoo linuxでCUIな「ノート型ワークステーション」を仕立ててみる」のとおりです。
ここでは,「HDD2台による特別な話」を書いておきたいと思います。

1 前提

マザーボードは,MSiの890FXA-GD70です。
IDEは1系統でその1st(Master)にHDD,2nd(Slave)にDVDドライブをつないでいます。
こちらのHDDにはwindowsXPが全領域に入っており,
仮にBIOSでこちらの起動順位を上げると,何もせず自然にXPが立ち上がります。
SATAは7系統でSATA3にHDDをつないでいます。
こちらはgentoo linuxを入れておりますし,grubも入れております。
windowsXPではIDEがドライブ0,SATA3がドライブ1と認識されている状況です。
その下で,
「SATAのHDDは,単体でもgentooが起動できるようにしておきたい。」
そして,MS-1058と異なり
「起動時に何もしなくてもどれか1つのOSは自然に起動してほしい。」
ことを最優先にします。
……普段の生活で,メインの機械なもので……。
  「実はU115がメインでしょ?」って指摘は却下!

2 領域の確保

まずMBMはインストールしません。SATAのHDDのMBRにgrub(stage1)を入れてしまいます。
ちなみにIDEのMBRに入れる方がわかりやすいのですが,それだと今回の目標である
「IDE単独でもwindowsが起動する」に反するので採用していません。
あと,windows用のgrubをIDEに入れるとか,boot.iniいじってNTLoaderにやらせるとかあり得ますが,
結果的にはこのやり方が一番「windowsの入っているHDDには影響がない」と思います。

例によってwindowsのディスク管理で領域は確保してしまいます。

2 BIOSの設定

このマザーボード(のBIOS)は,起動画面(派手なんだ。これが。)で「DEL」を押すとBIOS設定画面に行くので,
BIOS設定画面で「DVD→SATAのHDD」の順に起動するようにしておきます。
その上で,CDから起動してインストールを開始します。
あとは,grubのインストールまで一緒です。
grubのインストールが終わったらそこで立ち止まってください!
私は2010年11月18日版の起動CDをあえて使いましたが,最新のだと
fdisk /dev/hdxが軒並みfdisk /dev/sdxでないとだめだと思いますが,
そこは全然気にしないでください。
……たぶん後で書き換えることになる話ですから。

3 /boot/grub/grub.confと/etc/fstabの書き換え

ここで今回のキーポイントです。
CDから起動しているこの状態でSATAのHDDを/dev/sda,IDEのHDDを/dev/hde,DVDを/dev/hdfと認識しているのですが,
これはHDDからの起動になると,なんとSATAのHDDを/dev/sdb,IDEのHDDを/dev/sdaと認識してしまうのです。
な〜ぜ〜?
……しかもgrubのシェルだとSATAが(hd0),IDEが(hd1)って訳わかんね〜よ!
そこで最初から/boot/grub/grub.confと/etc/fstabを書き換えておきます。
「nano -w ファイル名」ね。
まず簡単な/etc/fstabから
これは「/dev/hdax」となっているところを「/dev/sdbx」に置き換えます。
保存すればOK。
次に/boot/grub/grub.conf。
これは第1段階としてreal_rootのところの「/dev/hda3」を「/dev/sdb3」に置き換えます。
次に「title Gentoo Linux 2.6.35-r12」の前に次の記述を加えます。
「title WindowsXP  map (hd0) (hd1)  map (hd1) (hd0)  root (hd1,0)  makeactive  chainloader +1」 これ,ポイントは,mapで(hd0)と(hd1)を入れ替えている点で,
これをやっておかないとなぜか凍りついてしまいます。
この点につき,「windowsは本来プライマリーマスターのMBRにwindowsのブートローダー以外をインストールすると起動できません」とする記述があるんだけど,私はこれは正確じゃないなと思います。
というのはwindowsのブートローダー以外であるMBMをライマリーマスターのMBRに入れても(ちなみにFreeBSD謹製BootMgrでも)きちんと動きますし,今回の私はプライマリーマスターのMBRにwindowsのブートローダーがインストールされているはずなのです。(実際BIOSでIDEから起動するようにすると問題なく動くので。)
これらを書き換えたら,再起動の手順です。
……私と同じ環境ならこれで動くはず。

4 動かない時の対策

grubのシェルモードが有効です。
この手順だとgrubのOS選択画面は出るはずなんで,
ここで「c」を押すと,grubのシェルモードになります。
そこで「root (hd0,」でTABキーを押すことで何が補完されるか見ることで,
(hdx)のxが確定します。
(私の場合選択肢が出る方がlinux用,windowsはパーティションを切ってないので選択肢なし。またfdiskで登場するファイルシステムの種別の数値でも区別が付くでしょう。linuxは通常83,swap用が82,windowsは7です。)
「(hd1,x)」のxは直す必要がないはずです。
その他,/boot/grub/grub.confでtitle行の次からを1行ずつ入れていくとその通り動きますし,
「e」を打つとその行が編集できますから,編集した後で「b」を押すと,それでも起動します。
(ここで編集した内容は保存されないので,思いっ切りいろいろ試せます。)
ちなみに,gentooやwindowsが動いてしまえばしめたもので,あとはひっかかるとすれば,
ntfs-3gのインストールの後の/etc/fstabの書き換えですが,
うまく動いていれば「ls /dev」で使えるデバイス一覧が出ます。
それと「df」とを照らし合わせれば,windowsとlinuxそれぞれのHDDの名前がわかるでしょう。

結果

これで,いちいちBIOSの起動順の変更をやらなくとも,
電源投入後放っておくたけでwindowsが動きますし,
gentooにしたければgrubのOS選択画面で忘れずにgentooを選ぶだけです。
(2010.12.31.)

Maのエッセイへ