私は次の設定をしています:
/dev/sdb
/dev/sda
Ubuntu11.10からgrub2を使用してWindows7パーティションを起動しようとしています。
私のWindowsの「システム予約済み」は/dev/sda3
。
[〜#〜] grub [〜#〜] Windowsエントリは(標準)です:
menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set=root 644C5AC04C5A8CA4
chainloader +1
}
別れ 出力:
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 296MB 296MB primary ext2
2 296MB 423GB 423GB extended
5 296MB 20.3GB 20.0GB logical ext4
6 20.3GB 363GB 342GB logical ext4
7 363GB 423GB 60.1GB logical ntfs
3 423GB 423GB 105MB primary ntfs boot
4 423GB 500GB 77.2GB primary ntfs
Disk /dev/sdb: 1500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 20.0MB 20.0MB fat16 boot
2 20.0MB 50.9GB 50.9GB ext4
4 50.9GB 1103GB 1052GB btrfs
5 1103GB 1156GB 52.7GB ext4
6 1156GB 1233GB 77.2GB ntfs
7 1233GB 1233GB 105MB ntfs
3 1496GB 1500GB 4271MB linux-swap(v1)
Grub2からWindowsを起動しようとすると、次のメッセージが表示されます。
エラー:無効なEFIファイルパス
オペレーティングシステムのブートローダープログラムなど、ブート前のアプリケーションがマシンのファームウェアに緊密に結合されていることは明白です。通常のアプリケーションプログラムが、サービスを使用するオペレーティングシステムに関連付けられているのと同じです。 EFIブートローダープログラムは、そのマシンがEFIファームウェアサービスを提供しない限り、そのマシンで実行することはできません。古いPC/ATスタイルbootstrapローダープログラムは、そのマシンが古いPC/ATファームウェアサービスを提供しない限り実行できません。
GRUBのchainloader
動詞はこれを具体化しています。文書化されていませんが、GRUBのホスト方法、つまりどのマシンかによって異なります。ファームウェアGRUBは(実行される予定です)で実行されています。古いPC/ATシステムでホストされているGRUBのバージョンでは、ディスクブロックが与えられると予想されます。セットまたはファイル、および古いPC/AT VBR bootstrapプログラムの方法で与えられたもの(の最初のセクター)をロードして実行します。GRUBのEFIホストバージョンでは、ファイル名が与えられることを期待し、通常のEFIアプリケーションとしてファイルをロードして実行します。
EFIでホストされているバージョンのGRUBがあります。合格しました+1
からchainloader
をファイル名として使用しますが、これは単に起動前のEFIアプリケーションイメージファイルへの有効なパスではありません。 GRUBは、構文的に指定したため、イメージファイルのEFIデバイスパスを構築できませんでしたパスが正しくないため、エラーメッセージが表示されます。
EFIでホストされるGRUB)でchainloader
を正しく使用すると、ファイルに名前が付けられます。MicrosoftWindowsNT 6.1の場合、これはBCDと共存するMicrosoftのBootManagerのEFIバージョンになります。 EFIシステムパーティションに保存します。
チェーンロード(hd1、gpt1)/EFI/Microsoft/Boot/bootmgfw.efi
もちろん、このマシンにWindows NT 6.1をインストールしなかった(ただし、他のマシンにハードディスクを転送した)か、EFIブートストラップ可能なバージョンをインストールしなかったため、これは機能しません。 、どういうわけか、Windows NT 6.1に、EFIマシンで非EFIバージョンのインストールユーティリティを実行するように説得しました。どうすればわかりますか? MicrosoftはEFIマシン上のEFIパーティション化されていないハードディスクにインストールすることを許可しなかったでしょう あなたが行ったように、そしてあなたは両方とも適切なEFIシステムパーティション(2番目のハードディスクのFATパーティション)および その貧乏人の同等物 そうでなければ前者のみが必要だった場合。
そのため、Windows NT6.1はMicrosoftのBootManagerのEFIホストバージョンとともにインストールされておらず、BCDストアが間違った場所にあり、他にもいくつかの問題があります。WindowsNTが1つのハードウェア/ファームウェアの組み合わせを想定していることとそのための適切なドライバと設定で構成され、後で別のハードウェア/ファームウェアの組み合わせで突然ブートストラップされました。