MBM は、MBR 及び ハードディスクの先頭63セクタ(実際には20セクタくらいらしい)のみを使って動作する、コンパクトなブートマネージャで、しかもフリーソフトとして提供されています。といった基本的な機能の他、
- デフォルト起動項目の設定
- タイムアウト時間の設定
- メニュー項目名の設定
などマニアックな使い方の出来る機能を豊富にそろえています。
- 基本パーティションの作成/削除
- 外部メニューによるグラフィカルなインターフェース
- メニューでフロッピーからのブートが選択可能
- INT 19h によるブートデバイス検索の継続
- APM BIOS コールによる電源断
- MBM自身のフロッピーからの起動
※ブートマネージャとは、ハードディスクにインストールされた複数のOSのうちから一つを選んで起動するためのツールのことです。
※分かっている人には便利な機能なのですが、分かっていない人にとって一番危険な機能がこれです。MBMは、パーティションテーブルを編集するだけで、パーティションの内容には触れません。従ってファイルシステムの大きさとパーティションの大きさが食い違うように変更することが可能です。その様な変更をした場合、矛盾を解決するのは人間の仕事です。放置したまま使い続けるとファイルシステムのクラッシュ等の事故に繋がります。十分注意してください。
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をインストールして、非常時に備えます。
これで、ブート用のフロッピーが出来ましたので、一度フロッピーで起動することを確認します。このブートフロッピーはrootなどの設定が同じで使っているハードウェアの構成が合えば他のシステムでも使えないことはないのですが、それを作ったシステム専用と考えるべきです。
- フォーマット済みのフロッピーを1枚用意する。
- #mke2fs /dev/fd0 でファイルシステムを作成する。
- #mount /dev/fd0 /fd としてマウント。/fd がない場合は、mkdir /fd としておく。
- #cp /boot/boot.b /fd
- #cp /boot/bzImage /fd
/etc/lilo.conf 見て現在使っているカーネルをコピーすること。- /fd/lilo.conf というファイルに以下の内容を書く。
image のカーネルのファイル名は、上でコピーしたものを指定すること。root の設定は、/etc/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- #lilo -C /fd/lilo.conf
さて、今度は /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 nativeboot=/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を組み合わせて機能させることが出来るかを説明するものです。この様にインストールすれば良いと奨しているわけではありません。ブートストラップは、
という様になっています。bootsect.dos というのは、Windows2000 をインストールする前の Partition1 の PBR で、Windows2000 のインストーラによって退避されたものです。
- BIOS が MBR をロード。
- MBR が、Partition1 の PBR ロード。
- PBR が、NTLDR をロード。
- NTLDR がメニューを表示。
- ユーザの選択に従って
- Windows98 が選ばれたら、Partition1 の bootsect.dos をロード。
- Windows2000 が選ばれたら、Partition2 から 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 をインストール後のブートストラップは、
の様になります。
- BIOS が MBR の MBMをロード。
- MBM が、がメニューを表示
- ユーザの選択に従って
- Partition1 が選ばれたら、Partition1 の PBR をロード。
- Partition2 が選ばれたら、Partition2 の PBR をロード。
- PBR が、NTLDR をロード。
- それぞれのパーティションの boot.ini に従って、
- Partition1 の bootsect.dos をロード。
- Partition2 から Windows2000 をロード。
同様の方法で、フロッピーにNTLDRをインストールすることも出来ます。
資料:
MBM には、DOS 上で動作する版とフロッピーディスクイメージで配布されている版があります。ディスクイメージ版はDOSを必要としませんし、イメージをフロッピーに書き出すことができればどんなOSでも使えるという利点があります。しかしファイルシステムがないので外部メニューのインストールには使えません。外部メニューのインストールにはDOS版(およびDOS)が必要です。で再起動すれば動くはずです。
- DOS版
DOSを起動して、mbm.com installとするだけです。
Windows95/98 のDOSモードでもいいかと思いますが試してはいません。
- フロッピーディスクイメージ版
Linux や FreeBSD 、あるいは、WindowsNT/2000 上の cygwin で、dd if=mbm033c.144 of=/dev/fd0等としてイメージをフロッピーに書き込みます。
※cygwin では、あらかじめ mount \\.\A: /dev/fd0 としておく必要があります。
このディスクを起動して 表示されるメニューで 3. Install boot manager into drive #0 を選べばOKです。
外部メニューの保存のために1シリンダ必要なので、最初にパーティションを分割するときに計画しておく必要があります。最初のパーティションをシリンダ1から始めるか、最後のパーティションを1シリンダ分小さくしておきます。残した1シリンダをパーティションにする必要はありません。覚えやすいので 前者がお勧めだと思いますが、各自判断して下さい。 PCでは最初のパーティションをシリンダ0から始めた場合、実際には、最初のトラック(先頭の63セクタ)はパーティションに含まれないという変則的な規則になっています。これを考慮すると、最初のパーティションをシリンダ1から始めるのが適当と思われます。外部メニューは指定されたシリンダの後ろから記録されるので、シリンダ0を指定してもMBRが上書きされる心配はありません。LBAの普及によってセクタ数とヘッド数は固定と考えられるようになっているので、シリンダ0の変則的な規則を避ける事にはパーティションの中身を丸ごとコピーするような操作が行いやすくなるという利点があります。
とりあえず、作ってみたグラフィカルメニューを配布しています。(MBM 0.34b以降対応)
元の画像の作者はさきさか藍梨 さんです。とあるつてでいただきました。
ダウンロード(207KBytes)左の画像はjpegの為実際とは異なります。
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/ |