デュアルブート、マルチブート全般に関するFAQ。

全般

既存の Windows パーティションを保持したまま Linux などをインストールできる。デュアルブートについては詳しいページがあるのでそこを参考に。

Windows マシンに Linux を入れた後、そのマシンで Windows も使いたい

インストールの仕方によっては、Linux 専用マシンにすること (シングルブート) もできるし、起動時に Linux と Windows などのどれかを選べるように (デュアルブート、マルチブート) もできる。

ただし、デュアルブートを行うためにはシングルブートよりいくつか手間がかかるし、インストールを失敗すると何も起動できなくなったり、もしかしたら既存のデータが消えるかもしれない。なので実際のところはシングルブートにしといた方が何かと簡単。

デュアルブートにしたいなら、消えると困るデータをバックアップするとか事前に万全の対策をした上でやってみよう。

Windows と Linux をインストールする場合、どっちを先に入れた方が良いの?

Windows 95, 98, 2000 あたりは、既存のWindows以外のOSの存在をうまく考慮してくれない。こういう OS ならまず Windows の方を先にインストールした上で Linux を入れてみる。

Windows XP でもあとで Linux をインストールした方がブートローダに GRUB を使えるので楽に設定できる。

複数の Linux を同時にインストールしたい

ブートローダーに GRUB を使う場合

  1. 最初の Linux を入れるときはブートローダを MBR に入れる
  2. 2つ目以降の Linux はハードディスクの空き領域に追加で入れていく

という風にして入れていく。複数の Linux ディストリビューションをブートさせる方法 以下に比較的分かりやすい方法があるよ。

MBR って何?

マルチブート関連の話題によく出てくる MBR とは何か?リンク先参照。

ブートローダには何を使うべき? (GRUB)

現在の一般的なおすすめは GRUB (GRand Unified Bootloader)。高機能で便利だし使い易い(ただし一部慣れが必要)。多くのディストリビューションを入れるときに標準で付いてくる。

LILO (LInux LOader) は時代遅れで、設定を失敗したときの復帰が悲惨なのでおすすめしない。

参考リンク

Windows NT, 2000, XP とのデュアルブートなら、NT OS Loader で Linux をブートさせるなんて事もできるよ。

MBR に入れた GRUB を消すには?

「消す」ことはできないので必ず「上書き」する。

それぞれの OS 上で以下のようにすれば上書き可能。最後にどのパーティションがアクティブかも確認しておくこと。

Windows Vista

Windows 回復環境で bootrec /FixMbr

Windows NT, 2000, XP

回復コンソール上で fixmbr

Linux (GRUB)

Linux (汎用)

ms-sys -m /dev/hda


OSのインストール順・再インストールが自由なマルチブートの方法

MBMで簡単マルチブート環境

マルチブート総合スレ 2つ目 で紹介された MBM(Multiple Boot Manager) を使ったマルチブートの方法を紹介します。

MBMは、ハードディスクのパーティションとして使用されない場所(MBRとそのすぐ後ろ)にインストールされる形式のフリーのマルチブートローダです。

OSが使用するパーティション領域を使用しない為、マルチブート環境を構成するOS(LinuxとかWindowsなど)を再インストールする可能性がある人には最適なブートローダです。

MBMをマルチブートローダとして用いた場合のメリットは主に以下の三点です。

  1. 各 OS のブート環境が独立するため、他のマルチブートの方法ではよくある、OS をインストールする順番の制限がありません。 (但し、マルチブート用のパーティション分割は Windows のインストーラではおこなえないので、必然的に Linux 等のパーティション分割が比較的自由におこなえる OS を先にインストールするべきでしょう)
    また、同じ理由でマルチブート環境を構成するどのOSも自由に再インストールをおこなうことができます。
    #br
  2. grub でマルチブートする際に必要な設定ファイルの編集が必要なく、必然的に、OS の再インストール時にも設定内容をメモする必要も再設定の必要もありません。
    当然、設定メモをなくしてしまう心配もなく、間違った設定をして悩む可能性もありません。
    (MBM画面で起動したいパーティションを選んでEnterを押すだけで設定ファイルなしにちゃんとマルチブートができます。
    #br
  3. おまけの特典として、ここで紹介する方法を用いると、Windows を複数インストールした場合でも、インストールした Windows のシステムドライブが全て C: ドライブとなるので、インストールした後の Windows のコピーや移動が可能となります。
    複数の環境を一台のマシンで頻繁に使い分けなくてはならないWindowsの開発者等にとっては非常に便利でしょう。
    (例えば第一基本パーティションにインストールされているWindowsOSを第三基本パーティションにコピーして、且つ、OS内部の環境を殆ど変えずに起動させることができます。

※MBMのインストールには通常、ブート可能なフロッピーディスクドライブ(USB接続も可)を用います。ブート可能なCDドライブからインストールすることも可能ですが、自身でインストールCDを作成する必要があります(CD-R、RWドライブが必要)。ここではブート可能なフロッピードライブを持っていることを前提として説明を進めます。

以下に具体的な方法を記述します。

(1)MBRにマルチブート用ブートローダーMBMをインストールする。

  1. MBMサイトからダウンロードしたzipファイルを解凍するとmbm.comが含まれています。このファイルをMS-DOS起動ディスク(Windowsで作成したもので可)やDR-DOS起動ディスクの中に入れておきます。
  2. DOS起動ディスクで起動し、
    A:?>MBM INSTALL
    

と打った後Enterを押します。確認のyを打つとインストール完了です。

※DOSの起動ディスクを必要としないインストール方法もあります。zipファイルの中にMBM038.144というファイルがあります。これをWindows上ではrawrite.exe、UNIX系OS上ではddを用いてフロッピーに書き入ればインストールフロッピーが出来上がります。

この作業以前にハードディスクにWindowsがいくつインストールされていようと気にする必要はありません。MBMインストール後もそれらは問題なく起動できます。ただし、Linuxのブートローダとして用いられているgrubやliloがMBRにインストールされていた場合は問題です。MBMをインストールするということはそれらを上書きして消してしまうということだからです。その場合はMBMインストール前に”ブートローダ”をLinuxがインストールされている領域の先頭(PBRという)にインストールし直しておく必要があります。

(2)各OSのインストール

基本的には順番は何でもかまいません。
好きな順番でインストールして下さい。
(今ここで説明している方法は、OSを好きな順番でインストールしたりOSの入れ直しが自由に出来る方法です。)
ただし前述のように、Windowsのインストール時にマルチブートに対応するようなハードディスクのパーティション分割は出来ませんから、普通は先ずLinuxをインストールすることになるでしょう。
既にWindowsがハードディスク全てを使っている場合は、Partition Magicとかpartedとかを用いてハードディスクに空きを作って下さい。
また例えばWindowsのC:が10GバイトでD:が50Gバイトとかの場合は50Gの領域を開放すれば、マルチブートに利用できる領域が充分確保できます。この場合は上記のparted等での作業は不要です。

Linuxのインストール

マルチブートが可能なパーティション分割をおこなわなくてはなりません。インストーラの自動にまかせずにfdiskを使わなくてはならない筈です。
Windowsのシステムドライブは基本パーティションである必要があります。 Linuxは/bootとか/とかswapも含めて全ての使用パーティションが拡張パーティションの中の論理パーティションで大丈夫です。したがって、基本パーティションを3つ確保し、拡張パーティションを一つ確保、そして拡張パーティションの中にLinux用の領域やWindowsのデータ領域を確保する形が、WindowsOS複数+Linuxでマルチブートする際の典型です。 インストールの際の注意点はブートローダの設定です。
ブートローダはどのディストリでもデフォルトではMBRにインストールされますが、ここではそれを選んではいけません。
ディストリビューションによって詳細は異なりますが、大概、”高度なオプション”なるものを選べば、ブートローダをMBR以外に設定できます。
ブートローダのインストール先としてLinuxの領域の先頭(PBRという)を選んで下さい。ブートローダがgrubでもliloでも同じです。
この注意を守ってのLinuxのインストール後に再起動すれば、Linuxが正常に起動できることが確認できる筈です。

Windowsのインストール

既にWindowsOSが一つはインストールされているかもしれませんが、ここでは最初のWindows、後から追加するWindowsもインストールのやり方は全く同じで注意点も全く同じです。
Windowsインストール前 に下記の作業をおこなって下さい。
(既にWindowsインストール用基本領域は確保されているとして)

  1. WindowsのインストールCDでブートする前にHDDからパソコンを起動します。
  2. MBM画面で今からインストールしたい領域を選んでEnterを押します。

(Invalid system diskとエラーが出力されますが、それでいいんです。)

※上記作業で今からインストールしたい領域がアクティブになります。
アクティブな基本領域はWindowsやWindowsのインストーラにC:ドライブと認識されます。(たとえ3番目とか4番目の基本領域であっても)

上記作業後、マシンをリセットしてWindowsのインストールを開始して下さい。

Windows95系OS、WindowsXP、2003のインストーラはMBRのMBMを上書きして独自の非常に機能が貧弱な(マルチブートができない)ブートローダをインストールします。既に説明したDOS起動ディスクを用いて 再びMBMをインストールして下さい。 MBMは WindowsがMBRにインストールするブートローダの上位互換 だと見なして頂いて結構です。 Windowsのブートローダを上書きしてのMBMインストールはいかなる場合でもおこなってOK だと思ってください。

FreeBSDのインストール

インストール時にブートローダをどこに入れるのか問われた際にNoneを選んで下さい。
Noneというのは実は”MBRを上書きしない”という意味でブートローダをインストールしないという意味ではありません。
Noneを選んでもFreeBSDスライスのPBRにちゃんとブートローダがインストールされるので心配ありません。


またNoneを選ばすにMBRにFreeBSDのブートローダをインストールしてしまっても慌てることはありません。もちろん今まで触れてきたようにMBMを再インストールすれば良いのです。

以上がOSのインストール順が自由で各OSの再インストールも自由なマルチブートの方法の説明です。MBM以外にも同様な仕様のマルチブートローダはありますが、国産で実績のあるMBMを用いた方法を紹介しました。

(付録1)WindowsOS環境のコピー

(この記事はマルチブートの方法の付属品という扱いなので、一応ここに記述しておきます。誰か適切な場所を知っている人が、そこに移動して下さい。そしてここには移動先へのリンクを書いて下さい。)

この記事では通常は難しいWindowsNT系OSのコピーを説明します。
(コピー先パーティションは既に確保していることを前提とします。)

(1)Windows環境のコピー。

WindowsNT系OS(WindowsNT、Windows2000、WindowsXP、Windows2003)は稼働中のコピーがおこなえませんが、別のパーティションにWindows2000、WindowsXP、Windows2003がインストールされていれば、そのOSを起動して当該OSのコピーをおこなうことができます。 その際、必要であれば適宜コピー先のフォーマットもおこなって下さい。

まだ一つしかWindowsNT系OSが入っていない場合は、コピー作業をおこなうためのOSとして、Windows2000、WindowsXP、Windows2003の何れかを新たにインストールするか、DriveImage、DriveCopy、Norton Ghost等のツールを使ってWindowsのコピーをおこなって下さい。

※Windows系OSの場合、ブートするパーティションの先頭(PBR)にそのパーティションの位置情報等が書き込まれていないとブート出来ません。それらの情報はFAT,FAT32の場合にはsysコマンドで正しく書き込むことが出来ますが、NTFSパーティションの場合には、OS上でフォーマットするか、回復コンソールやセットアップディスクのFIXBOOTコマンドを使うか、DriveImageやPartitionMagicの商用ツールを使わないと、正しく書き込むことは出来ません。基本的にはコピーするOSと同種のOS上でフォーマットすることが望ましいと考えてください。

(2)コピー後に必要な作業

  1. boot.iniを編集します。
    例えばpartition(1)となっている箇所をpartition(3)と変更します。コピー先のパーティションがそのハードディスクの何番目の基本パーティションかを記入します。

  2. MBRのNTシグニチャをクリアします。
    ※NTシグニチャとはNT系OSがMBRの一部に独自に書き込む数字(署名)です。NTシグニチャのクリアをおこなわないとコピーしたWindowsNT系OSでログインすることができません。
    #br

これはマシンによって方法が違います。
大概のマシンではDOS起動ディスクで起動し、FDISK /MBRを実行し、続いてMBMの再インストールをおこなえばOKです。 ただし、最近のマシンのBIOSはFDISK /MBRを受け付けないものが多くあります。
なお、fixmbrでは駄目です その場合でも、 Linux上でNTシグニチャのクリア (後述)をおこなうことができます。

上記で紹介しているMBMのR0.384にもNTシグニチャをクリアする機能が付きました

以上の作業後、コピーしたWindowsが起動し、ちゃんとログインもおこなうことができます。

(付録2)FDISK /MBRがおこなえないマシンでNTシグニチャのクリアをおこなう方法

いろいろ方法はありますが、ここでは Linuxらしい方法を説明します。 HDDはプライマリマスターに接続されているとします。

まずMBRのバックアップ

# dd if=/dev/hda of=mbr.img bs=512 count=1

いよいよ作業

# dd if=/dev/zero of=/dev/hda bs=1 seek=437 count=9

これでNTシグニチャのクリアが出来ました。

次にWindowsNT系のOSを起動した際に新たなNTシグニチャが設定されます。

ただし、上記の作業方法ではミスタイプすると大変なので、安全を期するのであれば、

# dd if=/dev/hda of=mbr.img bs=512 count=1
# dd if=/dev/hda of=mbr437.img bs=1 count=437
# dd if=/dev/zero of=zero9.img bs=1 count=9
# cat mbr437.img zero9.img > mbr446.img

ここでバイナリエディタやhexdumpを使って、mbr.imgとmbr446.imgの内容の違いを確認します。先頭から437バイトまでは共通でmbr446.imgは最後の9バイトが0で埋められていることを確認します。 確認後に

# dd if=mbr446.img of=/dev/hda を実行

この方法でもNTシグニチャのクリアがおこなえます。

手っ取り早い方法

# ms-sys -z /dev/hda

パーティションテーブルとマジックナンバー以外の部分に0x00を書き込みます 残念ながらKnoppixには収録されていないようです


複数の Linux ディストリビューションをブートさせる方法 [Grub 活用編]

複数の Linux をマルチブートするメリット

実際には次のような活用目的(一例)があるかと思われます。

  1. 一方の Linux ディストリビューションでは利用できるパッケージに制限があるが、もう一方の Linux ディストリビューションでは専用のパッケージが配布されているとき。
  2. 複数のディストリビューションの使い勝手を同時に試したいとき。
  3. あるディストリビューションから別のディストリビューションへと移行したいとき。
  4. 複数のファイルシステムを切替えて運用したいとき。
  5. 複数のディストリビューションを導入したいが、予算上の理由などにより何台もコンピュータを用意する余裕がないとき。

等々、使っている環境によってはメリットがあります。 最近は大容量のハードディスクが安価で入手できるようになったという事情も手伝っています。

ただし、物理的には1つのハードディスクを共用しているだけですから、日頃から定期的にデータのバックアップを取って、ハードディスクの破損等予期せぬ事態に備えることが大切です。

ここでは、CentOS と Debian の2つをインストールする場合です。

最初のディストリビューションをインストールする

ハードディスク
デバイス マウントポイント タイプ サイズ
hda1 / ext3 10 GB
hda2 スワップ (swap) swap 1 GB
(空き) (自由領域) 19 GB
  • 後から追加するディストリビューション用に「空き領域」を残しておくことがポイントです。

(上の例では、全ハードディスクの容量が 30 GB としています。)

  1. CentOS と Debian の2つは、どちらから先にインストールしても一向に差し支えありません。この説明では、まず CentOS のインストールから始めます。

CentOS では、インストーラー付属のパーティション作成ツール Disc Druid *1 *2 を使って手動で設定します。

  1. サイズを任意に指定し、hda1 hda2 を新規作成のうえインストールを開始します。
  2. ブートローダー grub のインストール先は、マスターブートレコード (MBR) を選びます。
  3. その後、2つ目のディストリビューション Debian は、空いている自由領域を編集してそこへインストールします。

2つ目のディストリビューションをインストールする

  1. 最初のディストリビューションがインストールできたら、2つ目のディストリビューションをハードディスクに追加します。
    ハードディスク
    デバイス マウントポイント タイプ サイズ
    hda1 ext3 10 GB
    hda3 / ext3 10 GB
    hda5 スワップ (swap) swap 1 GB
    (空き) (自由領域) 9 GB
  • パーティションを編集することで、設定ツール Disk Druid がデバイス名を自動的に変更することがあるので、十分注意が要ります。例では、スワップ領域が hda2 から hda5 へと変更されています。
  • 例は、空いている自由領域を編集して hda3 を作成しています。

自由領域をあえて 9 GB 残しています。このため、3つ目のディストリビューションがインストールできるだけの空き容量は確保されています。

2つ目のディストリビューションのブートローダー先は、パーティション (hda3) の先頭または マスターブートレコード (MBR) のうちのどちらかを選びます( ※ パーティション (hda3) の先頭を選択したときは、インストール後に必ず次の Chainloader の設定を行ってください)。

MBR へのインストールを選択した時は、ブート時の情報が上書きされ、OS のメニュー画面には Debian が自動的に追加されます。よって、Chainloader の設定作業は不要です。

Chainloader の設定について

コンピューターが正常に起動すれば、1つ目のディストリビューションが起動するので、/boot/grub/grub.conf をエディタで開いて設定します。 実際には、次の記述(CentOS の例)になっていることでしょう。

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,4)
#          kernel /boot/vmlinuz-version ro root=/dev/hda5
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
title CentOS-3 (2.4.21-27.0.1.EL)
	root (hd0,0)
	kernel /boot/vmlinuz-2.4.21-27.0.1.EL ro root=LABEL=/1
	initrd /boot/initrd-2.4.21-27.0.1.EL.img

この /boot/grub/grub.conf の最後に、エディタで次のような記述を追加します。

title Debian
	rootnoverify (hd0,2)
	chainloader +1

(※ (hd0,*) の * 部分には、パーティションの番号を入れます。
ただし、このパーティションの番号は 0 から数えた数字です。)

インストール後 ハードディスクの構成を再確認する

全てのインストールが完了したら、Linux を立ち上げてハードディスクの構成を確認してみましょう。 ターミナル(端末)より # fdisk -l を実行してください。次のように表示されることでしょう。

# fdisk -l

Disk /dev/hda: 30.7 GB, 30750031872 bytes
255 heads, 63 sectors/track, 3738 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1216     9767488+  83  Linux
/dev/hda2            3647        3738      738990    5  Extended
/dev/hda3            1217        2450     9912105   83  Linux
/dev/hda5            3647        3738      738958+  82  Linux swap / Solaris
  • 一覧に表示されているように、数字は必ず整数倍になるわけではありません。

[応用編] Windows + Linux + Linux …というマルチブートを構成する

上記の例で説明している Chainloader を用いたマルチブートでは、 /boot パーティションを共有する必要がなくなります。そのため、ここでは詳しく触れませんが、ユーザーはインストール後予想される運用上の様々な問題から開放されます。

この手法を応用すれば、複数の Linux へさらに Windows も追加したマルチブートを比較的容易に構成することができます。この場合特に注意すべき点は、Windows をインストールする順番です。

  • 最初に Windows をインストールします。後からインストールする Linux のため、ディスクには十分な空き容量を残しておきます。
  • 2番目には、普段メインに利用することになる Linux ディストリビューションをインストールした方が良いでしょう。これは、起動時に表示される bootloader のメニュー画面の最初に登録されるようにするためです。
  • /boot/grub/grub.conf には次の記述が自動的に追加されます。
    title Windows
    	rootnoverify (hd0,0)
    	chainloader +1
    
    (※ (hd0,*) の * 部分には、パーティションの番号を入れます。
    ただし、このパーティションの番号は 0 から数えた数字です。)