Tips: MBM(ChaNさんの高機能・マルチブート用ブートローダ)をもっと便利に使う情報とツール

Last-modified: 2010-03-05 (金) 02:13:42
初出 2008-02-11
最終更新 2010-03-05
Windows(※)やSolaris等、インストール時に問答無用でMBRのブートローダを上書きしてしまう”お行儀の悪い”OSがあります。その為、
PCのマルチブート環境のOSを入れ替えた際に、前にインストールしたOSが起動しなくなって、MBRのブートローダをインストールし直す必要がよく生じます。
そんな時、2段階ブートに統一してあれば、どなたのPCであっても、そのPCのHDDのMBRにMBMを上書きインストールさえすれば、マルチブート環境が復旧します(補足)。なぜなら、MBMはあらゆるOS(Windows,FreeBSD,Solaris...)の標準のブートローダ(チェーンローダ)の上位互換となる高機能なブートローダだからです。MBMをいつでも簡単にインストール出来るように準備しておくと、とても便利です。
本ページではUSBメモリを使ったMBMのインストール等、「MBMをいつでも簡単にインストール出来るようにする」方法を紹介します。
※マルチブート環境以外では例外もあります。

先に書いておきますが、Linuxを含むマルチブート環境でMBMを使用する場合はこのページの知識が事実上必須です。Linuxを含まないマルチブート環境の場合はほぼどんな環境でもそのままMBMをインストールして便利と思うことはあれど逆に困ることはまずないでしょう。でもMBMの導入が最も望まれるのはLinuxを含むマルチブート環境です。
※grub2, grub(grub-legacy)のPBRへのセットアップ法はこのページに掲載しています。

 

前書きの後半

2008-10-29にMBM0.39がリリースされました。MBMとして6年ぶりの更新です。アップデート内容はMBM0.384の内容取り込みに加えて、インストーラに任意のディスクにインストールできる機能(でも使い勝手が悪い)の追加、そして待望のGPL化です。ブートマネージャ(ブートローダ)自体の機能はMBM0.384とほぼ同じだと思われます。

 

MBMが頻繁には更新されないことで「MBMは時代遅れ、過去のソフトウェア」だと誤解している人が多いと思います。

 

MBMが時代遅れなどということは、決してありません。
MBMはBIOSの命令を呼び出して動作するソフトウェアです。SATAブート、USBブート等はBIOSの機能で実現するものなので、それを利用するだけのMBMは更新する必要がなかったに過ぎないのです。くどくなりますが、BIOSを持つPCのブートローダは必ずBIOSファンクションを利用するので、ブートローダがSATA対応、USB対応する必要はありません。当該PCのBIOSが当該のSATAディスク、USBディスク・USBメモリ等のブートに対応していれば、必ずそのデバイスからのブートにMBMが使用できます。

 

MBMはSATAインターフェースが主流となり、USBブートが使われる現在でも、最も高機能で最も使い勝手の優れたマルチブート用ブートローダと言っても言い過ぎではないでしょう。

 

Linuxの世界ではgrubが標準のブートローダとして使われるようになって以降、その前の標準ブートローダであったliloと比べて大幅に使い勝手が向上したこともあり、「grubこそがブートローダの本命」だと盲信する傾向が強いように思われます。しかしマルチブートをおこなう場合にgrubだけに頼ると、様々なgrubの短所に直面することになります。grubはマルチブート用ブートローダとしてはお世辞にも最良とは言えません。

 

マルチブートするのであれば、MBRにはマルチブートに適したブートローダ、PBR(各パーティション先頭のブートセクタ)に各OSのブートローダをインストールする2段階ブート方式に統一すべきでしょう。

 

しかし、
(2段階ブートに統一した状態での)マルチブートに適していて、
拡張領域にインストールされたLinuxがブート可能で、
GPLな
ブートローダは今のところないようなので、GPLではありませんがフリーソフトなMBMを私は長い間使っています。2008-10-29にMBMはGPL化されました。(MBM0.39以降)

 

2008-10-29にMBMはGPL化されました。(MBM0.39以降)MBMがGPLでなくて、その為にLinuxディストリビューションに標準で含まれていないことで、便利であっても使うことをあきらめている人も多いと思います。インストールのし易さも使い勝手の一部と言え、その点はMBMの大きな欠点と言えます。

 

EFI,GUID partition tableを使用したパソコンが大量販売される時期も近づいていると思われます。そういったパソコンにMBMは使用出来ません。しかしFDISKパーティションテーブルが今後も10年以上、盛んに使われ続けるのは間違いないでしょう。MBMが活躍できる期間はまだ相当長いと考えられます。MBMがGPLになったとしたら、その効果は相当大きなものだと思います。2008-10-29にMBMはGPL化されました。(MBM0.39以降)

 

私が最初にMBMを使用したのは1998年です。私は非常に多くのMBMのインストール方法を使っています。中には他の誰も使っていない私独自の方法もあると思います。MBMがGPLではない現時点でのとりあえずのMBM使用環境の改善策として本ページでいろいろと紹介します。2008-10-29にMBMはGPL化されました。(MBM0.39以降)GPL化されたといってもその効果が発揮されるのはこれからなので、まだまだ不便さは残っています。本ページの情報で使用環境の改善を図って下さい。

 

(2009-4-15追記)上で書いていますが、MBMを使用可能な(MBR方式の)旧来のパーティションテーブルで扱えるハードディスクの容量は最大2G2T(2009-8-12訂正)までです。2T超のハードディスクの容量をフルに使用したい場合はGPTを使用する必要があります。
しかし私はこの先もずーっと長く旧来のパーティションテーブルを使い続けるつもりでいます。もう何年も前からそう思っています。
なぜなら私は基本的に安全志向だからです。いろいろ新しい技術を追ったりもしますが、それはあくまで実験の域であって、重要なデータを保存するPCには障害が生じた際の復旧手段に恵まれている、枯れていて安全性の高い技術を用いることにしています。たとえばファイルシステムはext3※,raidはraid1を使用しています。たとえパフォーマンスが良くなくても、障害が起こりにくくて復旧手段に恵まれていることこそが私にとっては絶対です。
旧来のパーティションテーブルであればMBMや自作のツールが使い続けられるだけでなく、長期間に渡って発展してきた世界中の多くのツールが使用できます。
※余談になりますが、ext3は削除が非常に遅いですが、遅いが為に便利なこともあります。誤ってrm -rf *とかを実行してしまっても実際の削除が始まるまでのタイムラグが大きいので削除が始まるまでに気付いてキャンセルすることが可能だったりします。そのつもりでいるとほんとに可能です。(2010-3-5追記)でもいまどきのハードウェアだとほとんど意味がないですね。高速なファイルシステムを使う場合に最も有効な誤rm -rf *対策は大切なファイルをシンボリックリンクの先に置くことです。

 

(2009-12-23追記)GPT(GUID パーティションテーブル)を利用する場合はどうやってマルチブートをすればいいのか?との疑問に答えておきます。
これは明らかです。
EFIが、MBMが現行のFDISKパーティションテーブルを利用したシステムで果たしている(あるいは果たすことのできる)役割を果たすべきなのです。EFIがメニューを表示し、各パーティションのPBRを呼び出す機能を持つべきなのです。
そのようになれば、マイクロソフトWindowsが警告なしにMBRを上書きすることによって、初心者にとってマルチブートが難しいものとなっている現状より相当に使い勝手が改善され、多くのユーザにとってより望ましいものになるでしょう。
※つまりは2Tバイト超のハードディスクが一般化(普及)した時点でEFIも一般化しているべきというのが私の考えです。(もっと言うとEFIの方が先に普及すべき)
   ↑PCメーカーさん、お願いしますね。

MBMのインストール方法いろいろ

  • 1. 内蔵フロッピーもしくはUSBフロッピーを使って(MS-,DR-,Free-)DOSをブートしてmbm.comを実行してインストール
  • 2. 内蔵フロッピーもしくはUSBフロッピーを使ってMBM純正のフロッピーイメージをブートしてインストール

 というのは純正のインストール手段です。

 
  • 3. El Torito形式でCDからDOSのフロッピーイメージをブートしてmbm.comを実行してインストール
  • 4. El Torito形式でCDからMBM純正のフロッピーイメージをブートしてインストール
  • 5. isolinux(+memdisk)でCDからDOSのフロッピーイメージをブートしてmbm.comを実行してインストール
  • 6. isolinux(+memdisk)でCDからMBM純正のフロッピーイメージをブートしてインストール

 も”ほぼ”純正のインストール手段だと思います。

 

 私の場合は他に、

  • 7. Linux上でインストール
  • 8. ネットワークブート(PXEブート)でDOSのフロッピーイメージをブートしてmbm.comを実行してインストール
  • 9. ネットワークブート(PXEブート)でMBM純正のフロッピーイメージ用DOSをブートしてインストール
  • 10. ネットワークブート(PXEブート)でnfsrootでハードウェア自動構成機能を持ったLinuxをブートして、そのLinux上でインストール
  • 11. USBメモリから小さなLinuxをブートして、Linux上でインストール

 といった独自のMBMインストール手段を使用しています。

 

以下に11の実際を紹介しています。

 


MBMはハードディスクやUSBメモリやSDカードの先頭部分(MBRとそれに続く空き領域)にインストールされます。既に何らかのLinuxを"普通"に(デフォルトの1段階ブート方式で)インストールしてある場合は、MBMのインストール前にそのLinuxのブート方式を2段階ブート方式に変更しておく必要があります。しかし以下に記すようにLinux上でMBMをインストールする場合にはその作業はMBMのインストールと"ほぼ一緒"におこなうことができます。むしろその方法がお薦めです。具体的には以下の要領です。

  1. ここに示す簡単な手順でLinuxを1段階ブート方式から2段階ブート方式に変更する ※
    (同様なLinux環境が複数ある場合はそれぞれでおこなう)
  2. ↓以下からダウンロードできるmbm-○○-for-Linux-install-packを使ってMBMをLinux上でインストールする

MBMをLinux上でインストール可能にするパッケージ

(2009-11-2)1年ぶりの更新です。更新内容はdash等の軽量シェルへの対応等です。
ダウンロード filembm-0.380-for-Linux-install-pack.tar.gz MBM 0.38をインストールできます
ダウンロード filembm-0.384-for-Linux-install-pack.tar.gz MBM 0.384をインストールできます
ダウンロード filembm-0.390-for-Linux-install-pack.tar.gz MBM 0.39(GPL化バージョン)をインストールできます

 

このパッケージ内にはMBMを純正の手段で一旦インストールした環境から抽出したMBMのバイナリーデータを含んでいます。この配布の仕方についてはMBM作者のChanさんに許可を頂いています。(2008-2-8)

 

このパッケージは、Linux上で動作するシェルスクリプトで作られた独自インストーラで、MBMのバイナリーデータを指定ハードディスクに書き込むという仕組みです。

 

Linux上で解凍して、出来たディレクトリの中に入り、

# ./install-mbm-no-install /dev/sda

とかで、MBMを指定ハードディスクの先頭にインストールできます。

 
# ./install.sh

で、/usr/local/sbin/に、install-mbmコマンドをインストールできます。

# /usr/local/sbin/install-mbm /dev/sda

とかで、同じくMBMを指定ハードディスクの先頭にインストールできます。


簡単な仕様の説明

  • 純正インストーラと異なり、2番目以降のハードディスク(USBメモリも含む)にもインストールすることができます。2008-10-29リリースの"純正"MBM0.39では2番目以降のハードディスク(USBメモリも含む)にもインストールすることができるようになりました。でも純正インストーラは対象ディスクの情報を表示する機能がない為、実用的ではありません。
  • 純正インストーラと同じく、ハードディスクにMBMを書き込むスペースがあるかのチェックをおこなっています。(参考)
  • 純正インストーラと同じく、再インストールをおこなっても、[F2]キーを押して入力した文字列は消去されません。
  • 純正インストーラと異なり、空き領域の最後尾側にインストールする機能はありません。
  • 純正インストーラと同じく、再インストールをおこなうと、デフォルト起動領域の記憶や表示設定等は初期化されます。
  • 第一パーティションのIDが0xEE(これは通常、GPTを使用している目印です)のハードディスクにはインストールしません。

USBメモリ・ブートのMBMインストーラを作成する(当サイト独自版、お薦め)

(2009-01-18)下の項で作成できるものの上位互換となるものを新たにリリースしました。
Minimum Ubuntu (ミニマムUbuntu:レスキュー機能を持ち、限界までサイズを絞ったUbuntu Linuxの派生)
↓こちらは簡素すぎておもちゃみたいなものなので、↑こちらの方をよりお薦めします。使用にあたっての難易度は両者の間でそれほど違いはありません。もちろん先に↓こちらを使用して機能的な不満を感じたら↑こちらを使うという考え方もありでしょう。


 

これが最も欲しくなるのは、マルチブート環境に後からWindowsをインストールした際にWindowsのインストーラにMBRのブートローダを勝手に上書きされてWindowsしか起動しなくなった時などです。2段階ブートを採用して再インストールや構成変更が自由な最強のマルチプルブート環境を構築している人は、これを揃えればもう完璧です。気軽にどんどんマルチブートの構成変更がおこなえるようになります。パーテョションテーブルの編集もおこなえるのでインストール前にも役立ちます。

 

2008-10-29リリースのMBM0.39より純正インストーラに任意のディスクにインストールする機能が追加されましたが、対象ディスクのパーティション情報を表示する機能がないので非常に使い難い状態です。緊急の場合には使えるかな?といった程度です。従って本項はまだまだ有用です。2008-12-9に追加された機能でさらに純正(フロッピーイメージを使ってUSBブートのインストーラを作成する)よりもこちら(当項)の方式を選ぶ理由が増えました。

 

現在のMBMの純正インストーラは1番目のディスクにしかMBMをインストールできません。この為殆どの環境では、たとえMBMの純正インストーラをsyslinux+memdisk等の手段を利用してUSBブートさせても目的のディスクにMBMをインストールすることが出来ないということになります。
でも、上の「MBMをLinux上でインストール可能にするパッケージ 」を利用すれば、独自インストーラを使用するので、2番目以降のディスクやUSBメモリにもMBMをインストール可能です。
ということは、これを利用すれば"実際に役立つ"USBメモリ・ブートのMBMインストーラが作成出来るということです。2008-10-29リリースの"純正"MBM0.39では2番目以降のハードディスク(USBメモリも含む)にもインストールすることができるようになりました。しかし上記のように現時点では実用的でない為、依然としてこの項の手法を用いるべきでしょう。


手元の古くて容量が少なすぎて使わなくなったUSBメモリなんかに

# dd if=usb-mbminstall.img of=/dev/sdb

みたいな簡単な作業で書き込めるディスクイメージファイルを作成しましょう。サイズは14Mバイトです。
※書き込む構文を見ればわかると思いますが、このディスクイメージファイルはパーティションテーブルを使用しない方式なので、書き込むとUSBメモリに以前に書き込まれていた内容は消去されます。
これを一度作れば、USBブートが可能で、FDISKパーティションを使用したPCであれば、どれに対しても使用できます。
chanさん純正でこのようなものが欲しいです。

 

完成品をアップしたいところですが、このサイトは500kバイトまでのファイルしかアップロードできないので、作成するためのファイルセットを掲載します。とても簡単なものです。

ダウンロード filecreate-usb-mbminstall-disk-for-ubuntu-kit.tar.gz (2009-11-2更新) (2009-01-18追記)もっと機能が豊富でレスキュー全般に使用できるMinimum Ubuntuもあります。
(2009-11-2)Ubuntu 9.10に対応しました。
(2008-12-9)ブートしたUSBメモリを/mntにマウントする処理を追加しました。読み書きできますのでUSBメモリの中に

# fdisk -l /dev/sdb > mnt/fdisk-suzuki-20081209.txt

で、パーテョション・テーブルの情報を保存したり、あるいは編集したり、

# dd count=1 if=/dev/sdb of=mnt/mbr-suzuki-20081209.img

で、MBRのバックアップを取得したりして、
mbm_1_s.png
↑このように、MBMのインストーラではありますが、MBMのインストール以外の様々な追加作業をおこなうことが出来ます。
代表的なできることを挙げると、

  • MBMをインストールする。
  • パーティションテーブルを編集する(パーティションを作成する)。
  • パーティションテーブル情報を見る。
  • パーティションテーブル情報を保存する。(Ubuntu 8.04以降で作成した場合のみ)
  • MBRをバックアップする・レストアする。(Ubuntu 8.04以降で作成した場合のみ)
  • NTシグニチャをバックアップする・レストアする。(Ubuntu 8.04以降で作成した場合のみ)

FATなので、保存したファイル等はもちろんWindowsからも普通に読み書きできます。
ただしこの機能はUbuntu 8.04以降のみの対応です。

 

今、最も人気のあるUbuntu Linux上で作成するためのセットです。
「mbm-0.390-for-Linux-install-pack」を中に含んでいます。
(2008-4-18)ページ最下部に記述のあるwikiwiki.jpサーバの問題は既に解消されています。
(2009-4-27現在)Ubuntu 9.04,8.10,8.04,7.10に対応しています。この最新版ではこのキットの上位バージョンとも言えるMinimum Ubuntuから便利な機能を取り込んだので今後のUbuntuのアップデートにもそのままで対応できるのではないかと思います。一つ注意点ですが、私がテストしたところではUbuntu 8.10付属のsyslinuxはうまく動作しない場合が多いです。皆さんの環境でもいきなりBoot errorメッセージが表示された場合はsyslinuxを古いバージョンか新しいバージョンに手動で入れ替えてみて下さい。

 

Ubuntu インストールCD上では使用できません。
使用する為にはpatch, dosfstools, syslinuxパッケージが必要です。この中で最近のUbuntuで標準でインストールされないのはpatchだけだと思うので最新版ではpatchパッケージを自動でインストールするようにしました。

 

Ubuntu上で、解凍してできたディレクトリの中に入り、

$ sudo  ./create-usb-mbminstall-disk-for-ubuntu.sh

で、しばらくすると、同じ場所に「usb-mbminstall.img」が出来上がります(エラーがなければ)。
一旦作成しておけば、Windows上でもDD for Windowsなんかを使って、好きなときにUSBメモリに書き込みが出来ますよね。

 

インストーラの使い方:画面を見れば殆どの人には一目瞭然だと思います。もっと使いやすくもできるでしょうが、使用頻度を考えるとこんなもの(install-packをそのまま置いただけ)でもいいんじゃないかと思っています。[TAB]キーによる補完や[↑]キーによる履歴機能を活用して下さい。つまりは↓こんな風にキータイプして下さい。
# 「[/][m][TAB][i][TAB][-][TAB] 自動でリストされたdisksの一つ

(2009-4-27)よりわかりやすく、install-mbmは / に置きました。パスも通っています。
(2008-12-9)パスの通った場所にinstall-mbmコマンドを置きました。
(2008-12-9)接続されている全ディスクのリストを表示するのではなく、ブートしたUSBメモリ自身は除外し、"インストール候補"となるディスクのみをリストするように変更しました。
(2008-12-12)非常に遅ればせながらボリューム ラベル「MBM Install」を付けました。

USBメモリ・ブートのMBMインストーラを作成する(純正インストーラを活用した版(推奨しない))

2008-10-29リリースのMBM0.39より純正インストーラに任意のディスクにインストールする機能が追加されましたのでUSBブートで使用する際の親和性が高くなりました。単純に純正インストーラをUSBブートさせてやるだけでMBMをインストールできるようになりました。しかし対象ディスクのパーティション情報を表示する機能がない為、使い難い状態です。
従って推奨はしませんが、一応その作り方の一端を示しておきます。
純正インストーラをUSBブートさせる方法としてはいろいろありますが、MBMと同じくGPLなsyslinuxを使う方法を記します。
使い勝手が悪くて追随して欲しくないので要点だけを書きます。
syslinux.cfgにこのように記述します。

default memdisk
append initrd=MBM.144

この項の方法では、USBメモリをパーティションテーブルを設けない方式で使用した場合、純正インストーラ付属の区画テーブルエディタを使用すると高確率でハングアップします。

 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)

  • 内容としてはとても同感でき、なおかつものすごく興味があるのですが、ubuntu7.10のtarで解凍できません。何か心当たりはあるでしょうか? -- [[moyashi]] 2008-02-28 (木) 04:31:48
  • 解凍できないファイルはtar.gz.gz形式になってしまっています。wikiwiki.jpサーバの設定が完全ではなく、ブラウザの種類によっては圧縮ファイルの場合でも再度圧縮して送信してくる仕様になっている為だと思います。Ubuntu上での対処策は
    1.gzip -d hoge.tar.gz; mv hoge.tar hoge.tar.gz
    2.mv hoge.tar.gz hoge.tar.gz.gz; gzip -d hoge.tar.gz.gz
    3.general.useragentをIEのそれに書き換える。
    4.User Agent Switcherを導入し、useragentをIE系の状態にした上でダウンロードをおこなう。
    よろしくお願いします。
    wikiwiki.jpには設定変更の要望を出しておきます。 -- disklessfun? 2008-03-01 (土) 03:36:23
  • お返事が遅くなりました。ありがとうございます!とても有用な情報をありがとうございます。 -- moyashi? 2008-03-04 (火) 05:05:53
  • MBMのCDイメージをmkisofsで作成する方法もありまよ。(mkisofs -R -J -b mbm038.144 -o mbm.img .) -- 2008-11-21 (金) 22:05:25
  • ↑ これMBMのインストール方法いろいろ (4)の方法でした… -- 2008-11-21 (金) 22:07:15
  • はじめまして。当方、ubuntuを用意できなかったので、memdiskを利用してみたのですが、ご指摘のように、メニュー項目を選択後にハングしてしまいます。「パーティションテーブルを設けない方法」で行っていると思われますが、「設ける方法」というのがあるのでしょうか? -- 2009-01-31 (土) 01:16:08
  • もちろんあります。複数のパーティションを設ける場合には必ずパーティションテーブルが必要です。ハードディスクの場合は1パーティションしか必要としなくても必ずパーティションテーブルを使用するのがかなり以前から常識になっています。たとえUSBメモリを単一パーティションで使用する場合でもパーティションテーブルは使用することが望ましいと思います。
    これ以降の説明はLinux上ならやり易いのですがWindows上における説明はちょっと面倒なので、ご自身で「fdisk」等のキーワードでググってみて下さい。 -- 2009-02-04 (水) 02:27:22
  • 役に立ちそうなので使ってみます。 -- hiroppy? 2009-06-24 (水) 22:04:23