• 締切済み

Ubuntu 8.04 amd64 でのデュアルブートについて

Ubuntu 8.04 amd64 と Windows XP とのデュアルブートについて質問させてください。 NTLDR から GRUB を起動し、ubuntu を起動したいのですが、GRUB が起動したところで "GRUB _" という表示で止まってしまいます。 (/dev/sda MBR にもインストールしてみましたが、Error 17 で停止しました) Windows XP がインストールされている PC に ubuntu をインストールしました。 今回 ubuntu 用に HDD を新たに用意し、その HDD にインストールしました。  $fdisk -l で確認すると次の様になっています。 デバイス Boot Start End Blocks Id System /dev/sda1 * 1 14945 120045681 7 HPFS/NTFS /dev/sdb1 * 1 18212 146287858+ 83 Linux /dev/sdb2 18213 19457 10000462+ 82 Linux swap / Solaris sda1 に Windows XP, sdb1 に ubuntu を入れました。 GRUB はインストール時の Advanced? で sdb1 にインストールするように指定し、 インストール後に下記を実行し、ubuntu.pbr を c:/ にコピーしました。 #sudo dd if=/dev/sdb1 of=ubuntu.pbr bs=512 count=1 c:/boot.ini を開き、下記一行を追加しました。 c:/ubuntu.pbr="ubuntu 8.04" この状態で再起動を行うと、NTLDR で OS の選択ができるようになりました。 ただ、ubuntu を選択しても "GRUB _" で止まってしまいます。 私なりに色々調べ、/boot/grub/menu.lst, /etc/fstab の設定が 間違っていると思っているのですが、それが分かりません。 /boot/grub/menu.lst(抜粋) title Ubuntu 8.04, kernel 2.6.24-16-generic root (hd1,0) kernel /boot/vmlinuz-2.6.24-16-generic root=UUID=f45dc388-eb3f-4ab7-ada0-26b0aaafa63c ro quiet initrd /boot/initrd.img-2.6.24-16-generic quiet UUID 指定を /dev/sdb1 とかにしてみても変わりませんでした。 /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # /dev/sdb1 UUID=f45dc388-eb3f-4ab7-ada0-26b0aaafa63c / ext3 relatime,errors=remount-ro 0 1 # /dev/sdb2 UUID=27ba0857-3dbe-47ff-b7ab-d78e0b211ced none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 LiveCD を起動し言語を指定した後に F6 でオプションが指定できるのですが、 boot=casper というのを root=/dev/sdb1 に指定することで HDD を起動することができています。 長くなってしまいましたが、よろしくお願いします。

みんなの回答

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.2

もう少し正確に書くと、 Windows XP側から、Linuxを起動させるためには、 いろんな障害があります。 MBRという言葉と、MBMという言葉の意味、パーティションノ頭に付く ブートセクタ、これらのことを深く理解し、 関連性を勉強しておくことです。 また、ブートセクタのことを書くと、HDD毎にMBRはありますが、 ブートセクタは、パーティション毎にあります。 そこで質問文の > インストール後に下記を実行し、ubuntu.pbr を c:/ に > コピーしました。 > #sudo dd if=/dev/sdb1 of=ubuntu.pbr bs=512 count=1 は、完全にブートセクタを壊しています。 MBRの場合は、/dev/sdb1 ではなくて、/dev/sdbです。 このあたりも厳密に理解していないとまずいです。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.1

ブートストラップローダをWindowsXP側に設定する 意図が分からないのですか。 grubのブートストラップローダの動きの方が、柔軟性があり、 どちらかというと、Windowsよりも高度だと思っているのですが。 まず基本となるのは、MBRは、システムで一つであり、 そこからリンクしたもので動くと思います。 しかも、マスターとスレーブがあれば、必ずマスター側の MBRを読み込むことになっていると思うのですが。 よって、スレーブ側に、MBRを書き込んだとしても何の 意味もないのではないかと。 boot.iniには、 > c:/boot.ini を開き、下記一行を追加しました。 > c:/ubuntu.pbr="ubuntu 8.04" この一行だけでは、ubuntuの標識だけで、中身がないため、 だめだと思われます。 かといって、下記のようにフル指定やってみたとしても、 Windows側のブートストラップ動作が分からないので、 正しく起動するとは思えないです。 title Ubuntu 8.04, kernel 2.6.24-16-generic root (hd1,0) kernel /boot/vmlinuz-2.6.24-16-generic root=UUID=f45dc388-eb3f-4ab7-ada0-26b0aaafa63c ro quiet initrd /boot/initrd.img-2.6.24-16-generic quiet 柔軟性のある、grubを利用しないのかは それなりの理由があるとは思います。 しかし、/bootパーティションだけを、マスター側に持たせておけば、 Linuxを使わない場合は、スレーブ/dev/sdbの電源は切って置けるし、 Windows XpのMBRのことが気になるようなら、 ddコマンドでフロッピーやHDDにセーブしておけばよいと思いますけど。

関連するQ&A