2002/01/29 更新
2001/02/25 作成

MBMユーザーズガイド
このページの情報は古いです。

Chan さん作のフリーウェア、MBM : MultiBootManager の紹介をするページです。

注意

MBM は、その性質上大変危険なツールです。十分な知識がない場合は使用しないで下さい。
MBMを使用した結果について筆者は一切責任を負いません。また、このページの内容に関していかなる保証もしません。

特徴

MBM は、MBR 及び ハードディスクの先頭63セクタ(実際には20セクタくらいらしい)のみを使って動作する、コンパクトなブートマネージャで、しかもフリーソフトとして提供されています。 といった基本的な機能の他、 などマニアックな使い方の出来る機能を豊富にそろえています。

※ブートマネージャとは、ハードディスクにインストールされた複数のOSのうちから一つを選んで起動するためのツールのことです。

機能紹介

インストール前に

MBM をインストールすると、当然 MBR(パーティションテーブルと署名を除く)が上書きされますが、OSによって、或いは 設定によっては、MBRの上書きが致命的な場合があります。インストールしようとしている環境において、MBRの上書きが致命的か否かを判断するのは人間の仕事です。もし判断できないのならインストールは断念せざるを得ません。
例を挙げると、Linux でローダに lilo を使っており、lilo.conf で boot=/dev/hda としている場合がこれに当たります。

また、MBM がうまく機能するためにも、MBR ではなく PBR にローダを置くように各OS環境を構成しておかなければならない事を意識する必要があります。それは、MBM は 基本的に、選択されたらパーティションの PBR に処理を移すことのみによって起動するOSを選択するので、それぞれのOSに一対一で対応する PBR が存在していなければ、各OSを起動し分けることができないからです。
複数のOSで同じ PBR を共有している例としては、Windows98 がインストールされている所に、Windows2000 をインストールした環境が挙げられます。(対処方は
ケーススタディー 2)を参照)

ケーススタディー

すでにある環境に MBM をインストールする場合にどの様な操作が必要になるかということについて具体例を挙げて説明します。

1) liloの再構成

Linux 等の PC-UNIX には、カーネルを読み込むローダーにも多種多様なものがありますが、ここでは、Linux 及び lilo を例として取りあげます。

/etc/lilo.conf の設定で、boot=/dev/hda や、boot=/dev/sda のようにしている場合、lilo は、MBR にインストールされています。このまま MBM をインストールすると、lilo が機能しなくなるので、Linux が起動できなくなってしまいます。MBMをインストールする前に lilo を別の場所にインストールし直す必要があります。

いきなり /etc/lilo.conf を書き換えて試すというのは危険が大きいので、まずフロッピーにliloをインストールして、非常時に備えます。

  1. フォーマット済みのフロッピーを1枚用意する。
  2. #mke2fs /dev/fd0 でファイルシステムを作成する。
  3. #mount /dev/fd0 /fd としてマウント。/fd がない場合は、mkdir /fd としておく。
  4. #cp /boot/boot.b /fd
  5. #cp /boot/bzImage /fd
    /etc/lilo.conf 見て現在使っているカーネルをコピーすること。
  6. /fd/lilo.conf というファイルに以下の内容を書く。
    boot = /dev/fd0
    compact
    delay = 10
    vga = normal
    install = /fd/boot.b
    map = /fd/map
    
    image = /fd/bzImage
      root = /dev/hda1
      label = Linux
      read-only
    
    image のカーネルのファイル名は、上でコピーしたものを指定すること。root の設定は、/etc/lilo.conf を見て正しい値にすること。
  7. #lilo -C /fd/lilo.conf
これで、ブート用のフロッピーが出来ましたので、一度フロッピーで起動することを確認します。このブートフロッピーはrootなどの設定が同じで使っているハードウェアの構成が合えば他のシステムでも使えないことはないのですが、それを作ったシステム専用と考えるべきです。

さて、今度は /etc/lilo.conf を書き換えます。boot として指定出来るのは、ext2 フォーマットのパーティションか若しくは、拡張パーティションです。
例えば、次の様な環境では、

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/hda1   *        2        2       11    20160   83  Linux native
/dev/hda2           12       12      961  1915200    5  Extended
/dev/hda4          962      962     1023   124992   82  Linux swap
/dev/hda5           12       12      907  1806304+  83  Linux native
/dev/hda6          908      908      961   108832+  83  Linux native
boot=/dev/hda1 または boot=/dev/hda2 と指定できます。MBM 0.34b 以降では、多少制限がありますが、論理パーティション /dev/hda5 や /dev/hda6 も指定可能です。 基本的に変更はbootの設定のみです。変更したら、lilo を実行して設定を反映します。
この時点で MBM をインストールすればいいのですが、心配な場合は、フロッピーイメージ版の MBM を使ってブートメニューが機能するか検証すると良いでしょう。

2) NTLDRの再構成

NTLDR は、Windows NT 及び 2000 が使用するローダーで、Windows NT/2000 をインストールすると必ずインストールされます。MBR は、通常のものをそのまま用いているので、再構成する前に MBM をインストールしても問題ありません。PBR には、NTLDR の本体をロード/実行する専用のコードが書き込まれます。Windows NT/2000 でパーティションやフロッピーをフォーマットすると自動的に NTLDR 用のブートレコードが書き込まれます。 例として取りあげるのは、Windos98 を 最初のパーティションにインストールし、次に2番目のパーティションに Windows2000 をインストールした環境です。すなわち、

Harddisk0:
  MBR : Normal ,  Active = Partition1
  Partition1:
    PBR : NTLDR-IPL
    FileSystem : FAT32
    OS : Windows98
    NTLDR : Installed
  Partition2:
    PBR : NTLDR-IPL
    FileSystem : NTFS
    OS : Windows2000
    NTLDR : Not Installed
という状態です。※Partition2 は、基本パーティションです。Windows2000のインストーラで、作成した場合には基本パーティションにならないことがあるようです(未確認)。フォーマットは、Windows2000のインストーラで行われていなければなりません。そうでない場合、PBR に NTLDR-IPL が入っていないので別に対応が必要です。
注意: この例は、もしこのようになっていればどのようにMBMを組み合わせて機能させることが出来るかを説明するものです。この様にインストールすれば良いと奨しているわけではありません。

ブートストラップは、

  1. BIOS が MBR をロード。
  2. MBR が、Partition1 の PBR ロード。
  3. PBR が、NTLDR をロード。
  4. NTLDR がメニューを表示。
  5. ユーザの選択に従って
    1. Windows98 が選ばれたら、Partition1 の bootsect.dos をロード。
    2. Windows2000 が選ばれたら、Partition2 から Windows2000 をロード。
という様になっています。bootsect.dos というのは、Windows2000 をインストールする前の Partition1 の PBR で、Windows2000 のインストーラによって退避されたものです。
ここで注目すべきは、Windows98 を起動する場合も、Windows2000 を起動する場合も 同じ Parttion1 の PBR を使っているという点です。このままでは MBM によってOSを選択することが出来ない、つまりNTLDRのメニューも操作しなければならないことになってしまうので、再構成が必要というわけです。

NTLDR はPartition1にある以下の4つのファイルで構成されています。

  • ntldr
  • bootfont.bin
  • NTDETECT.COM
  • boot.ini
いずれもシステム及び隠し属性が付いているので、通常は見えないようになっています。エクスプローラのメニューで、ツール -> フォルダオプション -> 表示 -> 詳細設定 の中の 「ファイルとフォルダの表示」で「すべてのファイルとフォルダを表示する」を選び、「保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックを外すことで見えるようになります。
コマンドプロンプトでは、各ファイルについて、
C:\>attrib -a -s -h -r ntldr
とすることで見えるようになります。

見えるようになったら、これらを Partition1 から Partition2 に、すなわち C:\ から D:\ にコピーします。PBR には NTLDR用のブートコード があることは既に述べた通りなので、これらのファイルをコピーしただけで、Partition2 にも NTLDR がインストールされたことになります。(この時点で 再起動し MBM のメニューから Partition2 を選択すれば、Windows2000 が起動するようになっています。)

コピーしたら、boot.ini を見てみましょう。以下の様になっているはずです。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
C:\="Microsoft Windows" 

ここからが肝心なのですが、
Partition1 の boot.ini を以下の様に、
[boot loader]
timeout=0
default=C:\
[operating systems]
C:\="Microsoft Windows" 
また、Partition2 の boot.ini を以下の様に書き換えます。
[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professional" /fastdetect

これで、Partition1 と Partition2 それぞれの PBR を選択することで、Windows98 , Windows2000 が起動されるようになります。

システム属性/隠し属性を外したままでも起動には支障ありませんが、誤操作によってこれらのファイルを消してしまうことがないよう操作が終わったら戻しておいた方が良いでしょう。元に戻すには、

C:\>attrib +a +s +h +r ntldr
などとします。

MBM をインストール後のブートストラップは、

  1. BIOS が MBR の MBMをロード。
  2. MBM が、がメニューを表示
  3. ユーザの選択に従って
    1. Partition1 が選ばれたら、Partition1 の PBR をロード。
    2. Partition2 が選ばれたら、Partition2 の PBR をロード。
  4. PBR が、NTLDR をロード。
  5. それぞれのパーティションの boot.ini に従って、
    1. Partition1 の bootsect.dos をロード。
    2. Partition2 から Windows2000 をロード。
の様になります。

同様の方法で、フロッピーにNTLDRをインストールすることも出来ます。

資料:

インストール

MBM には、DOS 上で動作する版とフロッピーディスクイメージで配布されている版があります。ディスクイメージ版はDOSを必要としませんし、イメージをフロッピーに書き出すことができればどんなOSでも使えるという利点があります。しかしファイルシステムがないので外部メニューのインストールには使えません。外部メニューのインストールにはDOS版(およびDOS)が必要です。 で再起動すれば動くはずです。

グラフィカルメニュー

sample とりあえず、作ってみたグラフィカルメニューを配布しています。(MBM 0.34b以降対応)

元の画像の作者はさきさか藍梨 さんです。とあるつてでいただきました。

ダウンロード(207KBytes)

左の画像はjpegの為実際とは異なります。

外部メニューの保存のために1シリンダ必要なので、最初にパーティションを分割するときに計画しておく必要があります。最初のパーティションをシリンダ1から始めるか、最後のパーティションを1シリンダ分小さくしておきます。残した1シリンダをパーティションにする必要はありません。覚えやすいので 前者がお勧めだと思いますが、各自判断して下さい。 PCでは最初のパーティションをシリンダ0から始めた場合、実際には、最初のトラック(先頭の63セクタ)はパーティションに含まれないという変則的な規則になっています。これを考慮すると、最初のパーティションをシリンダ1から始めるのが適当と思われます。外部メニューは指定されたシリンダの後ろから記録されるので、シリンダ0を指定してもMBRが上書きされる心配はありません。LBAの普及によってセクタ数とヘッド数は固定と考えられるようになっているので、シリンダ0の変則的な規則を避ける事にはパーティションの中身を丸ごとコピーするような操作が行いやすくなるという利点があります。

mbm.com と colorful.mbm を用意したら、

>mbm.com setmenu
Extend menu file (*.mbm) = colorful.mbm
Cylinder# to install(0-???) = 0  ※ここを間違えると危険
外部メニュー用に残したシリンダを正しく指定するようくれぐれも注意してください。


用語集

リンク


へにゃ
 Applauseこと 寺川 愛印(Ein Terakawa)
 E-mail:applause@elfmimi.jp
http://applause.elfmimi.jp/