複数のハードディスクがあってそれらの 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 が起動します。ふー、やれやれ。