web-dev-qa-db-ja.com

ntldr.modがGRUB2にない

EFIマザーボードでDebian Wheezyを使用していて、Windows 7インストーラーのbootmgrをロードするには、GRUB2にntldrモジュールが必要です。 MBRフォーマットのディスク。 GRUBをgrub-installを使用してインストールすると、ntldr.modがGRUB modulesフォルダに追加されず、insmodできません。

  1. どうして? GRUBインストールなしのパッケージ(apt-get download ...)のみをダウンロードすると、そこにモジュールが見つかります。ダウンロードしたパッケージの.modファイルを、インストールしたGRUBのモジュールに追加するとGRUB=コマンドラインから "insmod ntldr"を実行すると、誤った "ELFマジック"(?).
  2. どうやってそれを強制的に行うのですか?
  3. ディスク全体をMBRにフォーマットしたくないので、「GPTモード」でWindowsインストーラーを起動する別の方法はありますか?.
7
alexey

私は、Windowsの正しいブートローダーが、インストールイメージに含まれる大きな圧縮ファイルのどこかに隠されていることを理解しました。解凍して正しいブートディレクトリに置き、通常どおりGRUB2チェーンローダーでロードできます。正しいローダーがあるにもかかわらず、Microsoftがそれをどこか深いところに隠し、奇妙なローダーをデフォルトのブートディレクトリに配置する理由がわかりません。それは私にとってはうまくいきました(ただし、解凍するのはかなり苦痛だったので、私が見つけた説明ページにあるファイルをダウンロードしました)。残念ながら、詳細は覚えていません。ウェブ上のどこかにマニュアルを見つけましたが、一般的な考え方は説明されています。

0
alexey

BIOSブートマシン用のgrub-pcパッケージをダウンロードしたため、モジュールはefiバージョンのgrubに読み込まれません。このモジュールはBIOSに依存しているため、EFIバージョンのgrubには存在しません。

USBスティックからWindowsインストーラーを起動する場合は、GRUBを使用してはいけません。ファームウェアに、HDDではなくそのドライブを起動するように指示します。

3
psusi

モード(_Legacy BIOS_またはUEFI)は、USBスティックおよびBIOS設定にインストールされているブートローダーによって決定されます。

Windows 7インストールメディアは、(_Legacy BIOS_とUEFI)の両方をサポートする必要があります。後者の場合は、設定によって異なります。しかし、UEFI-HDDから起動でき、Win7-USB-Stickが_Legacy BIOS_モードで起動するため、「両方」に設定する必要があります。つまり、BIOSがUEFIをサポートし、代替として_Legacy BIOS_モードで起動します。

この問題を解決するには、UEFIサポートのあるWin7-Imageを使用してインストールすることをお勧めします(ない場合でもわかりません)。また、BIOSを明示的にUEFIモードに設定する必要があります(結合モードなし)。 )。

しかし、これが機能しない場合、そしてあなたの質問に答えるために:これは機能するはずです:

Win7-ImageをHDDまたは_USB-Drive_に配置し、適切なモジュールを選択します(コメントに従ってください)。

_menuentry "Windows 7" --class windows --class os {
    # Insert modules needed in order to access the iso-file
    # choose the right module for the partition-table-scheme the image lies on
    insmod part_gpt
    insmod part_msdos

    # choose the right module for the filesystem the image lies on
    insmod ntfs
    insmod fat
    insmod ext2

    # Insert module needed in order to find partition
    insmod search_fs_uuid


    # Set UUID of partition with the iso-image
    # and let grub2 find the partition
    # (save it's identifier to the variable $root)
    set uuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    search --no-floppy --set=root --fs-uuid $uuid

    # Mount the iso image by addressing it with (partition)/path
    set iso=/images/Win7_English_x64.iso
    loopback loop ($root)$iso


    # boot (chain-load) the windows7-image using the bootmgfw.efi file located
    # on the Win7-ISO-Image
    chainloader (loop)/efi/Microsoft/boot/bootmgfw.efi
}
_

画像をusb-stickに直接ダンプする場合は、isoをマウントするために必要な_set iso=_-とloopback loop ($root)$iso- partsを除外する必要があります。あなたのチェーンローダーはchainloader ($root)/efi/Microsoft/boot/bootmgfw.efiです

1
Arch Linux Tux

レガシーモードで起動する必要があります、それだけです。 UEFI設定を入力して正しいブートデバイスを選択します。ubuntu-entryは選択しないでください。EFIモードの場合は、代わりにHDDからブートします。次に、grubが開き、ubuntuを選択してから、sudo update-grubを再度実行します。ドライブにubuntu用の古いブートローダーがあり、efiモードで起動しますが、grubもMBRにあります。

1
Maum Saja

Alexey、この問題はgrub2で頻繁に見られます。 ubuntuフォーラムを閲覧しているときにこの問題に遭遇しました。解決済みのマークが付けられています。そこを見てください: http://ubuntuforums.org/showthread.php?t=1343362 。うまくいけば、これはあなたを助けるでしょう。

0
The Dark Knight