複数のハードディスクがあってそれらの OS を切替えてブートする方法として、 ハードディスクをリムーバブル(取り外し可能)にするとか、マザーボード の BIOS の設定で 2台目以降のディスクからブートするという方法もあります。 間違いがなく確実ではあるのですが、新たにハードウェアを購入する必要がある とか、操作が面倒といった欠点もあります。 ここでは、ソフトの設定のみでこれを実現する方法について説明します。
これまで説明したのとは別のパソコンに日本語版の Free Solaris 7 をインスト ールしました。ハードディスクは当初 1台だけで下記のように 2つの Linux が インストールされています。
1台目 (EIDE: Primary Master, 3.2GB) =============================================================== /dev/hda1 (基本パーティション。1.5GB) Caldera Open/Linux 2.3 /dev/hda2 (基本パーティション。1.5GB) Plamo Linux 1.4.4 /dev/hda3 (基本パーティション。0.1GB) Linux swapこれに2 台目のハードディスクを増設して下記のような構成にし、最大で 5つの OS を切替えてブート可能にするつもりです。
2台目 (EIDE: Secondary Master, 5.2GB) =============================================================== /dev/hdc1 (基本パーティション。1.6GB) (予備 Linux) /dev/hdc2 (基本パーティション。1.6GB) (予備 FreeBSD ?) /dev/hdc3 (基本パーティション。0.1GB) Linux swap /dev/hdc4 (基本パーティション。1.7GB) Solaris 7パーティションの切り方【失敗例】
例によって(?)まずは失敗例です。失敗から学ぶべき教訓もあるかと思い
恥を忍んで公開します(エライ)。
最初に Linux の fdisk で下記のようにしました。
Device Boot Start End 容量 Id System
===================================================================
/dev/hdc1 (基本) 1 207 (1.6GB) 83 Linux native
/dev/hdc2 (基本) 208 414 (1.6GB) 83 Linux native
/dev/hdc3 (基本) * 415 427 (0.1GB) 83 Linux native
/dev/hdc4 (基本) 428 636 (1.7GB) 82 Linux swap
(空き領域) 637 638 (16MB) -- ------------
hdc4 の Id は 82 (Linux swap)にしました。これはSolaris のパーティション
が Linux の swap 用と同じ ID だからです。
またディスクの終端には Solaris のブートマネージャ用(?)として空き領域を
少しだけ取ってあります。空き領域をディスクの先頭にも作ってみたのですが、それでもだめでした。
実はこれ以外にも色々なパーティションの切り方で試してみたのですが、こと ごとく失敗に終り、なす術がなく困り果ててしまいました。 (ここまで、読むだけならせいぜい1分間ですが、実際には休日の朝から晩まで 1日中パーティションを切ってはインストール、切ってはインストール・・と いうことを延々繰り返していたのです。結局その日はあきらめて寝ました)
数日後、気を取り直して Linux の fdisk で作った全てのパーティションを削除 し Solaris の fdisk でパーティションを作成してみたらどうだろう?と思い、 試してみました。
パーティション サイズ 開始シリンダ
===================================================
1 PRI DOS 1600 1 (基本)
2 PRI DOS 1600 205 (基本)
3 PRI DOS 100 409 (基本)
4 Solaris 1660 422 (基本)
容量: 4973M
割り当て: 4965M
空き: 7M
丸め誤差: 1M
これはうまくいき、インストールは無事終了しました。これを Linux の fdisk で
見ると次のようになっています。
Device Boot Start End 容量 Id System
===================================================================
/dev/hdc1 (基本) 2 205 (1.6GB) 6 DOS 16-bit >=32M
/dev/hdc2 (基本) 206 409 (1.6GB) 6 DOS 16-bit >=32M
/dev/hdc3 (基本) * 410 422 (0.1GB) 6 DOS 16-bit >=32M
/dev/hdc4 (基本) 423 634 (1.7GB) 82 Linux swap
なお、インストール時にインストール先として 2台目のディスクを指定したの
で「デフォルトのブートデバイス(c1d0)ではないものを選択した」ということ
に関連した警告(warning)が 3〜4箇所の場面で表示されます。
これはエラーではなく単に警告です。「んなこたぁ、百も承知でやってんだ」
などとブツブツひとり言を言いながら無視しました。
さてインストールはやっとの思いで出来たものの、果してブートできるのか? ということが次なる課題です。
インストールの途中で「自動ブート」を選択するとインストール終了後、自動 的にマシンがリブートします。立ち上がった OS は残念ながら Solaris では なく Linux でした。しかしこれは予測通りの結果なので落胆することはあり ません。インストーラがデフォルトのブートデバイス(c1d0)、つまり Linux で いうところの /dev/hda にある MBR(Master Boot Record) に書き込みをしてい ないのだから当然なのです。(この辺がよく理解できない方は、JF の LILO や ハードディスクのパーティションに関するドキュメントをご覧ください)
2 台目のハードディスクを増設する前に、/dev/hda1 の Caldera Open/Linux と、/dev/hda2 の Plamo Linux を LILO で選択してブートできるようになって いたのですが、そのメニューに Solaris を加えてやればよいのです。 私は2 つのLinux の切替えを /dev/hda2 の Plamo Linux の /etc/lilo.conf で設定しているので、これを次のようにします。(最後の 3 行を追加)
boot = /dev/hda
message = /boot/boot_message.txt
prompt
timeout = 1200
vga = normal
# Plamo Linux 1.4.4
image = /vmlinuz
root = /dev/hda2
label = pl144
read-only
# Caldera OpenLinux 2.3
other = /dev/hda1
label = caldera
# Solaris 7 Japanese Edition
other = /dev/hdc4
label = sol7
またブート時に表示する LILO メニューは /boot/boot_message.txt で、これは
以下のようになっています。(最後の 1 行を追加)
Welcome to the LILO Boot Loader! Please enter the name of the partition you would like to boot at the prompt below. The choices are: pl144 - Plamo Linux 1.4.4 (/dev/hda2) caldera - Caldera OpenLinux 2.3 (/dev/hda1) sol7 - Solaris 7 [Japanese] (/dev/hdc4)上記 2つのファイルを変更したら、それを MBR に書き込むために以下のコマンド を root 権限で実行します。
# /sbin/lilo
これで全て完了! マシンをリブートします。最初に上記のように編集した LILO のブートメニューが表示されます。sol7 と入力すると、今度は以下のような Solaris のブートマネージャのメニューが表示されます。
Part# Status Type Start Length
===============================================
1 BIGDOS 16065 3277260
2 BIGDOS 3293325 3277260
3 BIGDOS 6570585 208845
4 Active SOLARIS 6779430 3405780
ここで Solaris の 4 を選ぶと日本語 Solaris 7 が起動します。ふー、やれやれ。