GRUBでのデュアルブート方法について試したので忘却録にします
※英語でインストールしてるので適宜対応してください

普通にデュアルブートなら一つHDDにOSを入れる記事が多いのですが、
ちょっと今回はいろいろと。。。。。

今回の構成は
・HDDを4台(HDD1, HDD2, HDD3, HDD4とします)
・HDD1とHDD2をLinuxのソフトウェアでRAID 1にしてCentOS 5.11を入れる
・HDD2とHDD3をLinuxのソフトウェアでRAID 1にしてCentOS 6.7を入れる
・CentOS 5.11をメインにして最初のgrubの画面でCentOS 6.7にもブートできるようにする

1.CentOS 5.11をインストール
まずCentOS 5.11のインストールメディアからインストールしていきます。
 
 ※インストールの時に注意点が一つ:GRUBブートローダーは /dev/mdX ドライブじゃなくてHDD1かHDD2のMBR領域に入れるように

1.1 メディアからブート
通常インストールと同じようにブートしていきます。
パーティションの作成までは全く変わらないのでそこまで飛ばします。

CentOS5start

1.2 パーティションレイアウト
RAID 1を構築してそこにインストールするため [Create custom layout.] を選択します。

layoutPart

1.3 パーティション作成
 ソフトウェアRAIDだとパーティション単位でRAIDを組むことになるので、
各HDD(HDD1, HDD2)に [Software RAID Partition] をインストールパーティションとして必要な分作っていきます。

 ※RHELのパーティション推奨:https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s2-diskpartrecommend-x86.html

今回は最低限必要な「/boot」「root」「swap」だけ作ります。
/boot:512MB, swap:1024MB, root:残り

パーティション作成画面で [RAID] というボタンを押すと [RAID Options] という画面が出てきます。この画面で [Create a software RAID partition] を選択してOKボタンを押します。
(まだRAIDパーティションがないのでそれしか選択できないはず

part

次の画面で、パーティションを作成するHDD以外のチェックボックスを外します(デフォルトで全部入ってたけど一つづつしか作れません。。。
容量は「/boot」用の512MB、「swap」用の1024MB、残り「root」用と作っていきます。
※残り全部と指定する場合は[Additional Size Options] のところで [Fill to maximum allowable size] を選択すればおk(Size(MB)に入力された値は無視されます。

HDD1とHDD2は、[sda]と[sdb]になってるみたいなのでそれぞれパーティションを作っていきます。

boot
boot用のパーティション(sda側)を作る例

パーティションを作り終わると[sda]はこんな感じになります。
sda

あとは同じように[sdb]も作っていきます。

sdb

次に、作成したパーティションでRAIDを組んでいきます。
[RAID] ボタンををして [RAID Options] を開きます。
途中から選択できるようになってたと思いますが、ここで [Create a RAID device [default=/dev/mdX].] というのを選択

raid

次に出てくる [Make RAID Device] で「マウントポイント」、「ファイルシステムタイプ」、「RAIDデバイス名」、「RAIDレベル」とRAIDメンバーを選択します。
「マウントポイント」と「ファイルシステムタイプ」は通常のカスタムパーティションを作成すると時と一緒になります。

cus
boot用の領域を作ってる例(sda2とsdb2がRAIDメンバー)

作成が終わると下側の欄の [RAID Devices] はこんな感じになります。

dl

1.4 GRUBのブートローダー作成
デフォルトのまま進んでしまうと [/dev/mdX] (/bootの場所)にGRUBのブートローダーがインストールされます。(CentOS6だとMBRの領域になってました
このまま進むとMBRを読み込んだ際に何もブートしないことになってしまうので、HDD1のMBR領域にGRUBのブートローダーを入れます。(BIOSで最初にブートするようにしたHDDの方

GRUBのブートファイルローダーインストール画面で [Configure advanced boot loader options] をチェックして次へ

grub

次の画面で、ブートローダーを入れる場所を聞かれるので、
[/dev/sda Master Boot Record(MBR] を選択します。
※サブ側(CentOS6)のインストールではブートローダーを [/boot] の領域に入れる

grubsel

あとは通常通りインストールを進めていきます。

で、無事に起動しましたと。。。
一応RAIDができてることを確認しときます。

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
      521984 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
      1052160 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
      6811456 blocks [2/2] [UU]

1.5 もう一台のHDDのMBR領域にGRUBブートローダーインストール
パーティションはRAID 1でコピーされていてもMBRの領域は冗長化されてないので、個別にインストールしておきます。(でないと、HDD1が壊れた時に起動できなくなるから

[root@localhost ~]# cat /boot/grub/device.map   ←GRUB上のデバイス名を確認
# this device map was generated by anaconda
(hd0)     /dev/sda
(hd1)     /dev/sdb
[root@localhost ~]# fdisk -l /dev/sdb    ←ブートパーティション確認

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          65      522081   fd  Linux raid autodetect
/dev/sdb2              66         196     1052257+  fd  Linux raid autodetect
/dev/sdb3             197        1044     6811560   fd  Linux raid autodetect
[root@localhost ~]# grub    ←GRUBのCLIに入る 
Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> root (hd1,0)     ←ブートパーティション設定(sdb1ならhd1,0の例
root (hd1,0)
 Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd1)     ←MBR領域にブートローダーをインストール(パーティションなら(hd1,0)等
setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd1)"...  15 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> quit       ←GRUBのCLIから抜ける
quit

1.6 デュアルブート用にGRUBの設定ファイル変更
テキストエディタで [/boot/grub/menu.lst] を編集
下の方にこんな感じで追加してください。

title CentOS 6
root (hd2,1)    ←CentOS 6側のブートローダー
chainloader +1   ←チェーンローダー設定(ブートローダーを読みだす

※オプション参考サイト:http://www.ibm.com/developerworks/jp/linux/library/l-lpic1-102-2/

2.CentOS 6.7をインストール
画面とかは違いますが、基本的にはCentOS 5.11の時と同じような流れになります。
違うのはGRUBのブートローダーを置くところだけなので省略します。

一応、参考までにパーティションはこんな感じになってます。

part6


2.1 GRUBブートローダー
GRUBのブートローダーインストール画面では、CentOS 5の時とは違い、デフォルトでは [/dev/sda]のMBRにインストールと選択されてます。(CentOS 5のところで入れたブートローダーに上書き。。。
なので、[Change device] を押して [RAID Device - /dev/mdX] にインストールするように選択

sellout 

あとは通常通り進んでいけばおk

3.終わり
CentOS 6.7のインストール後の起動ではCentOS 5.11のGRUBが読み込まれますが、なんかしらキーを押してブート先を選択します。
「1.6」のところで追加した [title] のところが表示されているはずなので、そっちがわを選択してエンター
そうすると、CentOS 6.7側のブートローダーが読み込まれてCentOS 6.7が起動できます。

fastboot


この状態だと、CentOS 5.11側のHDDが両方共逝ったらどうするんだろう。。。ってかんじですし、カーネル等のアップデートでブートリストが増えていくのでちょっと微妙なかんじではあります┐(´д`)┌
もう一台HDDか、USBメモリー辺り追加してそこにGRUBのブートローダー入れて各OSのGRUBを読む方が良さそう

まぁ、GRUBの勉強ができたのでとりあえずはここまででいいかなw
そのうちGRUB2の方でもやってみよ。ほとんどGRUB2になってきてるし。。。(ヽ´ω`)

質問や、他に良さそうな案がありましたらコメントお願いします。