2010-01-11

WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 9.10, Grub 2の場合

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

以前、WindowsとUbuntu 9.04をWindowsのブートローダでデュアルブートする方法を書きましたが、Ubuntu 9.10ではそのままの方法ではうまくできませんでした。
Ubuntu 9.10はブートパーティションがext3からext4に、ブートローダがGrub 1 (Grub Legacy)からGrub 2に変わっています。
いろいろ試したところ、ext4はgrub4dosもサポートしているようなのですが、Grub 2をロードするには、いったんgrub4dosのgrub 1からGrub 2のブートイメージをロード(チェインロード)してやる必要があることが分かりました。
この操作は直接コマンドを入力しても可能ですが、今回はメニューに定義することで簡略化しました。
以前の手順に今回の手順を追加して再録します。
Windows Vista/7のブートローダで、Ubuntu 9.10 (Grub 2)をデュアルブートする方法:
  1. Windows Vista/7を新規インストールします。
    パーティションはNTFS、Ubuntu用の空き、共有用のFAT32の3つとしました(FAT32のパーティションは結局ほとんど使っていませんが)。
    Ubuntuを残して、Windowsを上書きしてクリーンインストールすることも問題なくできると思います。
  2. 次にUbuntuを真ん中の空きパーティションにインストールします。
    1. CDからインストールする際、最初のメニューで「インストール」を選ぶのではなく、「インストールせずにUbuntuを使用する」を選ぶのが良いです。Ubuntuを起動した後インストールできますし、他のツールを起動しながら並行してインストールできるからです。
    2. インストールウィザードを起動します。
    3. パーティション指定で、「空き領域を最大限利用する」を選択します。これで真ん中のパーティションが選ばれるはずです。
      Ubuntuが既にインストールされている場合は、事前にGPartedツール(Administratorメニュー)かWindowsからボリュームを削除しておきます。GPartedでの削除は、SwapパーティションのSwapを解除、Swapボリュームを削除、Ubuntuのパーティションを削除、操作を確定、の手順になります。
    4. インストールウィザードの最後の画面で「拡張」ボタンを押して、ブートローダのインストール先を「sda5」(正確なパーティション名は、インストールウィザードの最後の画面の表示を見るか、GPartedツールを横で起動して確認出来ます)とします。この操作を忘れないでください。
    5. Ubuntuのインストールが終わったら、リブートしてWindowsを起動します。
  3. Windows上にgrub4dosをダウンロードし、grldrとgrldr.mbrをCドライブの直下にコピーします。
  4. チェインロードのためのメニューを作成します【今回追加した手順】。
    以下の内容でmenu.lstを作成します(2行目のhd0,5の数字をUbuntuのパーティションに合わせます)。
    title    Linux
    root (hd0,5)
    kernel /boot/grub/core.img
  5. Vista/7 のブートメニューに次のコマンドでUbuntuを追加(管理者モードのDOS窓で)します。追加後、引数なしのbcdeditで「リアルモードブートセクター」のところに表示されることを確認します。
    bcdedit /create /d "Ubuntu 9.10" /application bootsector
    bcdedit /set {xxxx} device partition=C:
    bcdedit /set {xxxx} path \grldr.mbr
    bcdedit /displayorder {xxxx} /addlast
    XPの場合は、boot.iniに下記を追加します。
    C:\grldr="Linux"
  6. リブートして確認。
    Ubuntuを起動するときは、ブートメニューでLinuxを選んだ後、再度Ubuntuを選びます。
Linuxに比べてWindowsのブートローダの方が融通が利かないので、安全のためにWindows主体のブート方法をとっています。

[2010-01-16] パーティションエディタGPartedのtypoを修正
[2010-08-10] Ubuntu 10.04ではこの手順ではうまくいかないため、記事を更新し、作成しました。Ubuntu 10.04のインストーラはブートローダーの設定先に既存のフォーマット済みのパーティションからしか指定できなくなったようです。

10 comments:

  1. 大変参考になりました.ありがとうございます.
    私が迷ったところを書き留めておきます.

    4.
    ○ menu.lst もCドライブ直下におく.
    ○ 私は「sda5」に「/」をインストールした.このとき、sda4は「拡張パーテシション」が勝手に作られた.この場合は ”root (hd0,4)" だった。GPartedでよく確認したほうがよいでしょう。
    5.
    ○{xxxx}は ”bcdedit /create” で返ってきたidを書くということなのですね.
    ○9.04は9.10のtypoでしょうね.

    ReplyDelete
  2. はじめまして。

    Ubuntu 10.04がリリース後にWindows XPとのデュアルブートを予定してます。

    質問ですが、Windows XPの場合は"5."に記述している以下は省略して良いのですね?
    ----------------------------------------
    bcdedit /create /d "Ubuntu 9.10" /application bootsector
    bcdedit /set {xxxx} device partition=C:
    bcdedit /set {xxxx} path \grldr.mbr
    bcdedit /displayorder {xxxx} /addlast
    ----------------------------------------
    >>XPの場合は、boot.iniに下記を追加します。
    >>C:\grldr="Linux"
    を追加するということですね?

    ReplyDelete
  3. wingsさんへ、
    その通りです。ただし、私自身は試していませんので、結果教えてください。もし失敗したとしても、Windows XPのパーティションを壊していなければ、XPは立ち上がるはずです。

    ReplyDelete
  4. taka8aruさん返信ありがとうございます。

    そうすると C:\直下には"grldr" と作成したmenu.lst"を配置し、"grldr.mbr" は必要なしということで理解して宜しいでしょうか?

    質問ばかりで申し訳ありません。
    結果は報告させて頂きます。

    因みにEasyBCDのベータ版も少し気になっています。

    ReplyDelete
  5. wingsさん、こまめにチェックしていただいてありがとうございます。
    ここでのVista/7とXPの違いは、BCDかboot.iniの違いだけで他は同じです。
    コピーするのはgrldとgrldr.mbrの両方が必要だと思います。brldr.mbrはLiunx側のgrubのためのマスターブートローダーのイメージなので必要なはずです。
    また、EasyBCDはVista/7がない環境では使わないと思います。
    くれぐれもXPのパーティションとブートローダーを壊さないようにしてくださいね。

    ReplyDelete
  6. taka8aruさん了解しました。

    EasyBCDの使い道はそういうことだったんですか。
    アドバイス本当にありがとうございました。

    ReplyDelete
  7. taka8aruさん、こんばんは
    wingsです。

    質問ばかりで大変恐縮なのですが、
    Windows XP+Ubuntu 9.10 or 10.04+grub4dos
    のmenu.lstの作成でkarnelの行の下に

    "initrd initramfsのファイル名"

    は必要はありますでしょうか?
    ----------------------------------
    title Linux
    root (hd0,5)
    kernel /boot/grub/core.img
    initrd initramfsのファイル名 ⬅(この部分)
    ----------------------------------
    先日Ubuntu Japanese Teamのwiki内の
    "grub4dos を利用するための準備"というのが目に止まったもので、URLは以下です。
    https://wiki.ubuntulinux.jp/UbuntuTips/UsbInstall/BootUbuntuInUsbWithBiosWithoutSupportForUsb/Grub4dos

    質問ばかりで本当に申し訳ありません。
    時間が許す時で構いませんので
    アドバイス頂ければ幸です。

    ReplyDelete
  8. wingsさん、
    initrdの行はRAMディスクの設定なので、HDDにUbuntuをインストールする場合には不要だともいます。
    そういえば、そろそろ10.04の季節ですね。

    ReplyDelete
  9. taka8aruさん、レスありがとうございます。

    了解です。RAMディスクの設定なのですね。
    因みにmenu.lstはwindows標準のメモ帳で
    作成して問題ありませんか?

    >そういえば、そろそろ10.04の季節ですね。

    そうですね、期待してます。
    閉じる等のボタンが左にあるのは
    違和感を感じますが慣れれば問題ないと思います。

    ReplyDelete
  10. kernel /boot/grub/core.img
    でgrub2を起動する場合、
    initrd ・・・
    の行は不要だと思います。
    というか、むしろ、付けない方が良いでしょう。

    kernel (Ubuntuのカーネル)
    の場合、たとえ、内蔵HDDにUbuntuをインストールした場合でも、
    initrd (Ubuntuのinitramfs)
    が通常の場合には必要だと思います。

    要は、
    grub2を起動するためのエントリであるのか、
    Ubuntuを起動させるためのエントリであるのか
    の違いです。

    内蔵HDDにインストールしたかどうかが問題なのでは無いと思います。

    ReplyDelete