2009-05-06

WindowsのブートローダーでLinuxとデュアルブートの方法

[2011-05-03] Ubuntu 11.04用の手順を作成しました。

Windows Vista SP2 RTM、Windows 7 RC、Ubuntu 9.04と新バージョンのリリースが忙しい4月でしたが、そんなにたくさん試せるマシンが手元にある訳がありません。
そこで、デュアルブート(Dual Boot)、トリプルブートをしたくなるのですが、Windows同士、Linux同士なら比較的楽でも、WindowsとLinuxの間では、ちょっと苦労します(しました)。
Windowsのほうが融通が利かないので、Windowsのブートローダーを使ったLinuxとのデュアルブートにしておいたほうが、後々安全そうです。
今回はかなり試行錯誤ののち、テスト用のマシンに下記のようにインストールしました。
  1. Windows 7を新規インストール(VistaやXPでもよい)。
    パーティションはNTFS(40GB)、空き(Ubuntu用20GB)、FAT32(データ用20GB)の3つを作成(FAT32のパーティションは必須ではなく、結局あまり使っていません)。
    なお、Windows 7は、フォーマットしていないパーティションもRAWディスクとしてドライブレターが付与されます。
  2. 次にUbuntuを真ん中の空きパーティションにインストール(ここでは9.04での動きを元に説明しています)。
    このとき、次の点に注意しました。
    1. パーティションの指定で、「独立したOSとしてインストール(Windowsは消さない)」をそのまま選ぶと、MBRがLinuxのブートローダ(Grub)で上書きされる(それでもデュアルブートにはしてくれるけれども、後々苦労しそうなので避ける)ので、「空き領域を最大限利用する」を選択。
    2. このときUbuntuのパーティションサイズがなぜか2.5GBの小さなものになり、先頭のWindowsのパーティションが35GB程度に拡張されるようになってしまうので、スライダーでWindowsのパーティションサイズを40GBに戻し、Ubuntuのパーティションを20GB確保する操作が必要でした。
    3. インストールウィザード最後の画面の「拡張」ボタンで、ブートローダのインストール先をsda5(今回Windows、Windowsのブート用の100MB、データの3つのパーティションがすでに存在するするので(それ+2))とします。
      これを忘れるとWindowsのブートローダが上書きされます。
      また、パーティション名は、パーティションエディタを横で起動して確認すると分かりやすいです。
    4. Ubuntuのインストールが終わったら、リブートしてWindowsで起動。
  3. WindowsのブートローダーからLinuxを起動するためのツールとして、grub4dosをダウンロードし、grldrとgrldr.mbrをC:\にコピー。
  4. Windows 7(Vistaでも同じ)のブートメニューに次のコマンドでUbuntuを追加(管理者モードのDOS窓で)。
    bcdedit /create /d "Ubuntu 9.04" /application bootsector
    bcdedit /set {xxxx} device partition=C:
    bcdedit /set {xxxx} path \grldr.mbr
    bcdedit /displayorder {xxxx} /addlast
      (XPの場合は、下記シノバーさんの記事の手順でブートメニューに追加します。)
  5. 引数なしのbcdeditで確認(「リアルモードブートセクター」のところに表示されること)。
  6. リブートして確認。
私も初めは、Ubuntuのインストーラでデュアルブート(GrubのメニューでWindowsを起動)を設定したほうが楽だと思って進めていたのですが、Ubuntuを再インストールしたくて、パーティションを間違った手順で削除してしまうと、WindowsのMBRを二度と復元できなくなった(Windowsの回復コンソールがどうやっても検出してくれない、bootsect f: /fixmbrがエラーする)ので、Windowsに優しい方法の方が良いと考えるようになりました。
また、Windowsでのデュアルブートの方法は、ケーズメモさんの「Windows VistaとUbuntu 7.10をデュアルブート」を参考に進めていたのですが、LinuxのMBRの抜き出しがうまくいかなかったことと、XPがない状態(ntldrがない状態)でやりたかったので、最終的には、grub4dosにたどり着きました(シノバーさんの「お家で使うLinux - WindowsからLinuxを起動する」が参考になりました)。
具体的なbcdeditの設定は、grub4dosのオンラインマニュアル「Load via bootmgr (Windows Vista/2008/7)」が決定打でした。

[2009-05-15] Windows 7専用の手順のような書き方だったので、VistaやXPに関するカッコ書きを追加しました。
[2010-01-11] Ubuntu 9.10の場合の手順を新しいエントリに書きました。Ubuntu 9.10はGrub 2になっているので、このままの手順ではブートできません。

4 comments:

  1. EasyBCDを使うと、Grubを意識したVista/7のブートエントリを作成できそうです(放蕩無頼さんの記事)。
    Grubのテク(Nobusanさんの記事)と組み合わせるとEasyBCD+Grubのほうがシンプルかもしれませんね。

    ReplyDelete
  2. こんにちわ。
    ありがとうございます。とても参考に(というかこのまま実行しました)なりました。
    工人舎SCにWin7とのデュアルブート環境を作成で当初EasyBCDを使用してみましたが、結局うまくいかず、こちらの方法にてようやく成功しました。
    ありがとうございました。

    ReplyDelete
  3. とても参考になりました。以前、EasyBCDを利用しても問題なくブートできていた構成が、ディスク交換によるバックアップリスト後に初回起動のみブートできてその後何をやってもブートできなくなりました。EasyBCDや手動による512byteを抜き出してのブートなどいろいろ試しましたが、どうしてもBoot manager -> Grubへ行かなくなってしまいました。Live CDのパラメーター変更からのブートしかできなくなってUbuntaを諦めようと思っていましたが、この方法で起動することができました。素晴らしいですね。

    ReplyDelete
  4. Ubuntu 9.10ではこの方法だけではうまくいきません。最初、ext4のせいかと思いパーティションをカスタマイズしてext3にしてもダメ。結局Grub 2ではチェーンロードが必要という結論に達しました。 http://taka8aru.blogspot.com/2010/01/windowslinux-ubuntu-109-grub-2.html

    ReplyDelete