
Ubuntu日本語フォーラム

ログインしていません。
Vista、Ubuntu、XPのマルチブートにしようと、
VistaとUbuntuが入ったパソコンへXPをインストールしました。
結果、XPしか立ち上げることの出来ない状態になったので
http://collab.mynu.jp/wiki/pages/viewpage.action?pageId=7275329
を参考にしてGRUBを復旧しました。
しかし、update-grubを行っても、Vistaしか見つからず、XPが認識されません。
必要となりそうな情報は以下の通りです。
XPを入れるパーティションはVistaから、
EASEUS Partition Manager というソフトを利用して作りました。
$ sudo fdisk -l
ディスク /dev/sda: 160.0 GB, 160041885696 バイト
ヘッド 255, セクタ 63, シリンダ 19457
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x54b13640
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 1 936 7512064 27 不明
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 * 936 13765 103054274+ 7 HPFS/NTFS
/dev/sda3 13766 16375 20964825 7 HPFS/NTFS
/dev/sda4 16376 19458 24754177 f W95 拡張領域 (LBA)
/dev/sda5 16376 19324 23683072 83 Linux
/dev/sda6 19324 19458 1070080 82 Linux スワップ / Solaris
grub.cfg内の30_os-proberの結果内容
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set aa94e13294e10225
chainloader +1
}
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)" {
insmod ntfs
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 70bce43dbce3fc0a
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
GRUB2の40_customに次の様に記述してみました。
menuentry "Windows XP" {
insmod ntfs
set root='(hd0,3)'
search --no-floppy --fs-uuid --set 2834ACDB34ACACEE
drivemap -s (hd0) ${root}
chainloader +1
}
『--set 2834ACDB34ACACEE』は"場所"の"ファイルシステム"を開いた際のタイトルを使用しています。
これで再起動すると、
電源ON→GRUB、XP選択 では
『NTLDR is missing 』と表示されます。
一体なにがどうなっているのでしょうか。
起動後のGRUB画面でXP、VISTA、Ubuntuの3OSを選択して無事起動できるようにするにはどうしたら良いのでしょうか。
オフライン
書き足しておきますとパソコンはソニーのVAIOで
menuentry "Windows Vista (loader) (on /dev/sda1)" はリカバリ用の領域
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)" はVista本体です。
オフライン
ごめんなさい、事態は少し異なるようです。
Vistaの起動を試しておらず、ただ今試したところ、
menuentry "Windows Vista (loader) (on /dev/sda1)"
は、リカバリ用の領域でVAIOリカバリセンターが立ち上がります。
しかし
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)"
は、Vista本体だったはずなのですが、いま起動してみたらXPでした。
XPインストール前、
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)" という
menuentryの名称を変えるため40_customを編集してあり、
ここにVistaを起動するためのメニューがあるのですが、
内容はXPインストール後にできた
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)"
と同一で、起動時にそのメニューを選んでもVistaではなくXPが起動するようになっています。
ファイルシステムから見るにVistaをXPで上書きしたということではないようです。
オフライン
ん?
後は/dev/sda3 しか残ってないよ。
確認はされまいたか?
Ubuntuの「場所」からもパーティション内のファイルにアクセスできるので存在の有無等をビジュアルで確認できますよ。
オフライン
WindowsOSはMBR→PBRと二段階の起動ステップを踏む様ですね。
XPインストール後、MBRにGRUBを上書きして、
各OSのパーティションにはアクセスできるようになった。
というのが私の調節出来た段階だった様です。
そして分かったことは、
Vistaが入っているパーティション(cドライブ)に
XPのPBRが書き込まれていたということです
。
したがって、
XPのパーティションにGRUBから直接行くと、
XPの起動に必要な二段回目のPBRの読み込みが出来ず、
「NTLDR is missing」と表示されてしまう。
そしてVista(=cドライブ)だったメニューを読み込むと、
cにあるXPのPBRが読み込まれ、XPのパーティションへ行ける。
と同時に、つまりVistaにはアクセスできない、と。
(UbuntuはPBRを必要としないのでそのまま使える)
なので、
XPのパーティションにXPのPBRを書き込もうと、
XPからCドライブにアクセス、
フォルダオプション⇒表示⇒
詳細設定:保護されたオペレーティングシステムファイルを表示しない
のチェックを外し、
「ntldr」
「boot.ini」
「NTDETECT.COM」
の三つのファイルをXPのパーティション
(当方の場合 ローカル ディスク (I:) )へコピーしました。
そうしたところ、
40_customで次の様に作成したメニューからXPが起動できるようになりました。
menuentry "Windows XP" {
insmod ntfs
set root='(hd0,3)'
search --no-floppy --fs-uuid --set 2834ACDB34ACACEE
drivemap -s (hd0) ${root}
chainloader +1
}
また、Ubuntuから sudo grub-update を行うと
Found Microsoft Windows XP Professional on /dev/sda3
と、XPを認識してくれるようになりました。
次の課題はCにVistaのPBRを修復することです。
インストールディスクの『コンピュータを修復する』で修復する方法がある様ですが、
メーカー製(VAIO)のためOSインストールディスクはありません。
どこかから手に入れる必要がありますが、
どうやらVista以降のWindowsOSなら同じ起動システムのため
WindowsServer2008体験版等からでも修復できるようですね。
体験版をダウンロード・CD作成してやってみます。
オフライン