GRUB2에 ntldr.mod가 없습니다.

GRUB2에 ntldr.mod가 없습니다.

저는 EFI 마더보드에서 Debian Wheezy를 사용하고 있으며 Windows 7 설치 프로그램의 bootmgr을 로드하려면 GRUB2의 ntldr 모듈이 필요합니다. 그 이유는 Windows 7 설치 프로그램의 bootmgr이 자체적으로 부팅되는 방식 때문입니다(분명히 설치 프로그램이 있는 USB 플래시 드라이브의 부트 섹터를 사용하기 때문입니다). ) Windows는 MBR 형식의 디스크에만 설치됩니다. grub-install을 사용하여 GRUB를 설치하면 GRUB 모듈 폴더에 ntldr.mod가 추가되지 않고 삽입할 수 없습니다.

  1. 왜? GRUB 패키지를 설치하지 않고 다운로드하면(apt-get 다운로드...) 모듈을 찾을 수 있습니다. 다운로드한 패키지의 .mod 파일을 설치된 GRUB 모듈 폴더에 추가한 다음 GRUB 명령줄에서 "insmod ntldr"을 추가하면 잘못된 "ELF 매직"(?)이 발생합니다.
  2. 강제하는 방법은 무엇입니까?
  3. 전체 디스크를 MBR로 포맷하고 싶지 않기 때문에 "GPT 모드"에서 Windows 설치 프로그램을 시작하는 다른 방법이 있습니까?

답변1

시스템을 BIOS로 부팅하는 데 사용되는 grub-pc 패키지를 다운로드했으므로 이 모듈은 grub의 efi 버전에 로드되지 않습니다. 이 모듈은 BIOS에 따라 다르므로 EFI 버전의 grub에는 존재하지 않습니다.

USB 스틱에서 Windows 설치 프로그램을 부팅하려면 grub을 사용하여 아무 것도 수행해서는 안 됩니다. grub을 사용하여 하드 드라이브 대신 해당 드라이브에서 부팅하도록 펌웨어에 지시하면 됩니다.

답변2

모드( Legacy BIOS또는 UEFI)는 USB 스틱에 설치된 부트로더 및 BIOS 설정에 따라 결정됩니다.

Windows 7 설치 미디어는 ( Legacy BIOSUEFI)를 지원해야 합니다. 후자의 경우 설정에 따라 다릅니다. 그러나 UEFI-HDD 및 Win7-USB-Stick 부팅에서 Legacy BIOS모드로 부팅할 수 있으므로 "Both"로 설정해야 합니다. 이는 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 스틱에 직접 덤프하려면 iso 설치에 필요한 부품을 보관해야 합니다 set iso=. loopback loop ($root)$iso그렇다면 체인 로더는chainloader ($root)/efi/microsoft/boot/bootmgfw.efi

답변3

레거시 모드로 부팅하면 됩니다. UEFI 설정을 입력하고 올바른 부팅 장치를 선택하십시오. ubuntu 항목을 선택하지 마십시오. 이것은 EFI 모드용입니다. 대신 HDD로 부팅하면 grub이 열립니다. ubuntu를 선택하고 sudo update-grub을 다시 실행하십시오. 드라이브에 efi 모드로 부팅되는 오래된 우분투 부트로더가 있지만 grub도 MBR에 있습니다.

답변4

올바른 Windows 부트 로더가 설치 이미지의 큰 패키징 파일 어딘가에 숨겨져 있다는 것을 발견했습니다. 압축을 풀고 올바른 시작 디렉터리에 넣은 다음 평소처럼 GRUB2 체인로더를 사용하여 로드할 수 있습니다. 올바른 로더가 있음에도 불구하고 Microsoft가 이를 깊이 숨기고 기본 부팅 디렉터리에 이상한 로더를 넣는 이유를 이해할 수 없습니다. 그것은 나에게 효과적이었습니다(그러나 압축을 푸는 것이 상당히 고통스럽기 때문에 찾은 지침 페이지에 제공된 파일을 다운로드했습니다). 불행히도 자세한 내용은 기억나지 않습니다. 온라인 어딘가에서 매뉴얼을 찾았지만 일반적인 아이디어는 설명되어 있습니다.

관련 정보