以前、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)をデュアルブートする方法:
- Windows Vista/7を新規インストールします。
パーティションはNTFS、Ubuntu用の空き、共有用のFAT32の3つとしました(FAT32のパーティションは結局ほとんど使っていませんが)。
Ubuntuを残して、Windowsを上書きしてクリーンインストールすることも問題なくできると思います。 - 次にUbuntuを真ん中の空きパーティションにインストールします。
- CDからインストールする際、最初のメニューで「インストール」を選ぶのではなく、「インストールせずにUbuntuを使用する」を選ぶのが良いです。Ubuntuを起動した後インストールできますし、他のツールを起動しながら並行してインストールできるからです。
- インストールウィザードを起動します。
- パーティション指定で、「空き領域を最大限利用する」を選択します。これで真ん中のパーティションが選ばれるはずです。
Ubuntuが既にインストールされている場合は、事前にGPartedツール(Administratorメニュー)かWindowsからボリュームを削除しておきます。GPartedでの削除は、SwapパーティションのSwapを解除、Swapボリュームを削除、Ubuntuのパーティションを削除、操作を確定、の手順になります。 - インストールウィザードの最後の画面で「拡張」ボタンを押して、ブートローダのインストール先を「sda5」(正確なパーティション名は、インストールウィザードの最後の画面の表示を見るか、GPartedツールを横で起動して確認出来ます)とします。この操作を忘れないでください。
- Ubuntuのインストールが終わったら、リブートしてWindowsを起動します。
- Windows上にgrub4dosをダウンロードし、grldrとgrldr.mbrをCドライブの直下にコピーします。
- チェインロードのためのメニューを作成します【今回追加した手順】。
以下の内容でmenu.lstを作成します(2行目のhd0,5の数字をUbuntuのパーティションに合わせます)。title Linux
root (hd0,5)
kernel /boot/grub/core.img - Vista/7 のブートメニューに次のコマンドでUbuntuを追加(管理者モードのDOS窓で)します。追加後、引数なしのbcdeditで「リアルモードブートセクター」のところに表示されることを確認します。
bcdedit /create /d "Ubuntu 9.10" /application bootsector
XPの場合は、boot.iniに下記を追加します。
bcdedit /set {xxxx} device partition=C:
bcdedit /set {xxxx} path \grldr.mbr
bcdedit /displayorder {xxxx} /addlastC:\grldr="Linux"
- リブートして確認。
Ubuntuを起動するときは、ブートメニューでLinuxを選んだ後、再度Ubuntuを選びます。
[2010-01-16] パーティションエディタGPartedのtypoを修正
[2010-08-10] Ubuntu 10.04ではこの手順ではうまくいかないため、記事を更新し、作成しました。Ubuntu 10.04のインストーラはブートローダーの設定先に既存のフォーマット済みのパーティションからしか指定できなくなったようです。
大変参考になりました.ありがとうございます.
ReplyDelete私が迷ったところを書き留めておきます.
4.
○ menu.lst もCドライブ直下におく.
○ 私は「sda5」に「/」をインストールした.このとき、sda4は「拡張パーテシション」が勝手に作られた.この場合は ”root (hd0,4)" だった。GPartedでよく確認したほうがよいでしょう。
5.
○{xxxx}は ”bcdedit /create” で返ってきたidを書くということなのですね.
○9.04は9.10のtypoでしょうね.
はじめまして。
ReplyDeleteUbuntu 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"
を追加するということですね?
wingsさんへ、
ReplyDeleteその通りです。ただし、私自身は試していませんので、結果教えてください。もし失敗したとしても、Windows XPのパーティションを壊していなければ、XPは立ち上がるはずです。
taka8aruさん返信ありがとうございます。
ReplyDeleteそうすると C:\直下には"grldr" と作成したmenu.lst"を配置し、"grldr.mbr" は必要なしということで理解して宜しいでしょうか?
質問ばかりで申し訳ありません。
結果は報告させて頂きます。
因みにEasyBCDのベータ版も少し気になっています。
wingsさん、こまめにチェックしていただいてありがとうございます。
ReplyDeleteここでのVista/7とXPの違いは、BCDかboot.iniの違いだけで他は同じです。
コピーするのはgrldとgrldr.mbrの両方が必要だと思います。brldr.mbrはLiunx側のgrubのためのマスターブートローダーのイメージなので必要なはずです。
また、EasyBCDはVista/7がない環境では使わないと思います。
くれぐれもXPのパーティションとブートローダーを壊さないようにしてくださいね。
taka8aruさん了解しました。
ReplyDeleteEasyBCDの使い道はそういうことだったんですか。
アドバイス本当にありがとうございました。
taka8aruさん、こんばんは
ReplyDeletewingsです。
質問ばかりで大変恐縮なのですが、
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
質問ばかりで本当に申し訳ありません。
時間が許す時で構いませんので
アドバイス頂ければ幸です。
wingsさん、
ReplyDeleteinitrdの行はRAMディスクの設定なので、HDDにUbuntuをインストールする場合には不要だともいます。
そういえば、そろそろ10.04の季節ですね。
taka8aruさん、レスありがとうございます。
ReplyDelete了解です。RAMディスクの設定なのですね。
因みにmenu.lstはwindows標準のメモ帳で
作成して問題ありませんか?
>そういえば、そろそろ10.04の季節ですね。
そうですね、期待してます。
閉じる等のボタンが左にあるのは
違和感を感じますが慣れれば問題ないと思います。
kernel /boot/grub/core.img
ReplyDeleteでgrub2を起動する場合、
initrd ・・・
の行は不要だと思います。
というか、むしろ、付けない方が良いでしょう。
kernel (Ubuntuのカーネル)
の場合、たとえ、内蔵HDDにUbuntuをインストールした場合でも、
initrd (Ubuntuのinitramfs)
が通常の場合には必要だと思います。
要は、
grub2を起動するためのエントリであるのか、
Ubuntuを起動させるためのエントリであるのか
の違いです。
内蔵HDDにインストールしたかどうかが問題なのでは無いと思います。