2010-08-10

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

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

以前、WindowsとUbuntu 9.04をWindowsのブートローダでデュアルブートする方法(初出)と、WindowsのブートローダーでLinuxとデュアルブートする方法 - Ubuntu 9.10, Grub 2の場合(Grub 2対応)を書きましたが、またしてもUbuntu 10.04 ではそのままの方法ではうまくできませんでした(いまさらながらで、すみません)。
Ubuntu 10.04では、インストールウィザードの一番最後にブートローダーのインストール先を指定するところで、すでに存在するパーティションからしか選択できなくなったためです。
そのため、Ubuntuのブートローダーのための小さなパーティションをあらかじめ作っておくようにしました。
以前の手順に今回の手順を追加して再録します。
Windows 7/Vista/XPのブートローダで、Ubuntu Linuxをデュアルブートする方法:
  1. Windowsを新規インストールします。
    パーティションはNTFS、Ubuntu用の空き、WindowsとUbuntuのデータ共有用のFAT32、の3つを作っておきます(FAT32のパーティションは結局ほとんど使うことはないかもしれません)。
    なお、パーティションを1つだけ作成して、後からパーティションを分けることも最近では可能ですが、間違いを少なくするために最初から分けておきます。
  2. 次にUbuntuを真ん中のパーティションにインストールします。
    1. CDからインストールする際、最初のメニューで「インストール」を選ぶのではなく、「インストールせずにUbuntuを使用する」を選びます。
    2. Gpartedツール(Administratorメニュー)で、真ん中の空きパーティションにUbuntuのブートローダ用の小さなパーティションを作成します。フォーマットはext4、サイズは最小限の512MB程度(100MB程度でよいですがGUIではこれ以上小さく指定できませんでした)。
      Gpartdで変更を適用します。そして、作成したパーティション名を覚えておきます(私の場合はsda6になりました、古いパーティションを何度も使っていると大きな数字になるようです)。
      (Ubuntuが既にインストールされている場合は、この段階でSwapも含めパーティションをきれいに削除してから作業します)
    3. インストールウィザードを起動します。
    4. Ubuntuのインストール先のパーティションの指定で、「空き領域を最大限利用する」を選択します。これで真ん中の空きパーティションが選ばれるはずです。
    5. インストールウィザードの最後の画面で、「拡張」ボタンを押して、ブートローダのインストール先を「sda6」(先ほど作成した小さなパーティションの名前を選ぶ)とします。
      この操作を忘れないでください。忘れるとWindowsのブートローダーが上書きされてしまいます。
    6. Ubuntuのインストールが終わったら、リブートしてWindowsを起動します。
      ブートメニューを設定していないので、この段階では、まだUbuntuは見えません。
  3. Windows上にgrub4dosをダウンロードし、grldrとgrldr.mbrの2つのファイルをC:\ (Cドライブ直下)にコピーします。
  4. チェインロードのためにメニューを作成します。
    以下の内容で C:\ にmenu.lstを作成します(2行目のhd0,6の数字をUbuntuのパーティションに合わせます。sda6は、ここではhd0,6になります ブートローダ用のパーティションの後ろにUbuntu本体のパーティションが作成され、そこに /boot/grub が格納されているはずです。ブートローダ用のパーティションがsda6の場合、/boot/grub のパーティションは sda7 となり、指定するのは hd0,6 となります。2番目の数字はパーティション番号マイナス1の数字です)。
    バックアップのために、grub4dosとmenu.lstはデータ共有パーティション(Dドライブ)にコピーしておくとよいです。
    title    Linux
    root (hd0,6)
    kernel /boot/grub/core.img
  5. WindowsのブートメニューにUbuntuを追加します。
    Windows 7/Vistaの場合、管理者モードのDOS窓を開き、次のコマンドを実行します。2行目以降の{xxxx}は、1行目の実行結果で表示されるidを指定します。
    追加後、引数なしのbcdeditで「リアルモードブートセクター」のところに表示されることを確認します。
    bcdedit /create /d "Linux" /application bootsector
    bcdedit /set {xxxx} device partition=C:
    bcdedit /set {xxxx} path \grldr.mbr
    bcdedit /displayorder {xxxx} /addlast
    Windows XPの場合は、テキストエディタでC:\ にあるboot.iniに下記を追加します(システムファイル、隠しファイルになっている場合は解除してから)。
    C:\grldr="Linux"
  6. リブートして確認。
    WindowsのブートメニューにLinuxの項目が追加されているはずです。
    Ubuntuを起動するときは、WindowsのブートメニューでLinuxを選んだ後、次に表示されるUbuntuのブートローダーで一番上を選びます。
Linuxに比べてWindowsのブートローダの方が融通が利かないので、私は、安全のためにWindows主体のブート方法をとっています。
こうすることで、Windowsを再インストールしたり、バージョン変更(XP=>7、7=>XPなど)で上書きする場合、Linuxを入れ替える場合にも、ブートローダの上書き順の制約を気にせず安心して作業できます。

[2011-05-03] パーティション番号の理解が間違っていたので訂正しました。Ubutu 11.04用の記事への参照を追加しました。