grub2에서 Windows 7 iso 부팅


12

Windows 7을 설치하려고하는데 BIOS 메뉴가 나타나지 않기 때문에 그렇게하고 싶습니다. 시작시 grub2 메뉴로 건너 뛰지 만 다른 이야기입니다 ... grub2에서 Windows 7 설치 iso를 직접 부팅하는 방법이 있습니까?


1
"내 BIOS 메뉴가 나타나지 않습니다"그러나 BIOS에 들어 가려고 했습니까?
Mitch

HDD를 포맷하면 어떻게 되나요? 그러면 Windows가 부팅됩니까? :)

답변:


7

grub4dos를 사용하여 Windows XP 부팅

grub 레거시 또는 grub2로 실제 ISO 부팅이 작동하지 않지만 이전 Windows 버전 (예 : XP)에서는 i386 폴더를 ISO에서 USB 스틱으로 압축 해제 한 다음 grub4dos 를 사용 하여 부트 로더를 호출 할 수 있습니다.

title windows installer via setupldr.bin
find --set-root /i386/setupldr.bin
chainloader /i386/setupldr.bin

또는

title windows installer via /bootsect.bin
find --set-root /i386/setupldr.bin
chainloader /bootsect.bin

최신 Windows 버전이나 최신 하드웨어에서는 작동하지 않지만 옵션도 있습니다.

grub2로 Windows 7 부팅

grub2를 사용하면 Windows 7에서 다음과 같이 작동합니다 .

menuentry "Windows 7 (bootmgr)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    ### A: either use this line or the next one, but not both
    set root='(hd0,msdos1)' 
    ### B: 
    ### search --no-floppy --fs-uuid --set=root ____INSERT_PARTITION_UUID_HERE___
    ntldr ($root)/bootmgr
}

옵션 A 는 부팅 가능한 USB 스틱 / HDD가 첫 번째 장치이며 msdos 스타일 파티션 테이블을 가지고 있다고 가정합니다. 구성에 맞게 조정하십시오. 부팅 장치에 GPT 파티션 테이블이있는 경우 사용해야 할 가능성이 높습니다 (hd0,gpt1)(일반적으로 GPT는 설정하기가 더 까다 롭습니다).

옵션 B 는 드라이브의 고유 한 UUID를 사용합니다.이 UUID는 Linux에서 sudo blkid또는 OSX에서 (예 : diskutil info disk0s1디스크 유틸리티> 정보) 볼 수 있습니다.

최종 항목은 다음과 같습니다.

menuentry "Windows 7 installer" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    search --no-floppy --fs-uuid --set=root 0E239BC6-F960-3107-89CF-1C97F78BB46B
    ntldr /bootmgr
}

좋은. 대신 --set = root --fs-uuid UUIDHERE (변경된 순서)를 사용했습니다 (필요한지 여부를 말할 수 없음). 감사합니다
월 규 Peblik

@JanKyuPeblik ISO에서 부팅 할 수 있습니까?
Anwar

그건 내 기억이야 나는 다른 것들에 관심이 없었을 것입니다.
Jan Kyu Peblik

5

예, 다음과 같이 작동한다고 생각합니다.


menuentry "Boot Windoze" {
  search -f "--set-root /Winblows.iso"
  drivemap "/Winblows.iso" '(hd32)'
  drivemap '--hook' ''
  set root='(hd32)'
  chainloader +1
}

그러나 Windows는 그 사실을 알게 될 것입니다.

RAM이 4GB 이상이면 memdisk에 전체 DVD iso를로드 하고 부팅 할 수 있습니다 . 그렇게하려면 SysLinux를 다운로드 하고 memdisk파일을 boot디렉토리 로 추출하십시오 . 그런 다음 Grub2에 다음과 같은 코드를 추가해야합니다.


menuentry "Boot Windoze" {
  search -f "--set-root /Winblows.iso"
  insmod memdisk
  linux16 /boot/memdisk iso
  initrd16 /Winblows.iso
}

그러나 3GB 이상의 데이터를 RAM에 넣는 것은 (생각 론적 관점에서) 명백한 잘못이므로 코드를 테스트조차하지 않을 것입니다. 아니요, 정말로 원하는 것을 원했지만 결국 Windows 7 USB / DVD 다운로드 도구를 사용 하여 USB의 파티션에 Windows 설치를 설치 하고 체인로드했습니다. 내가 볼 수있는 다른 방법이없는 것 같습니다.


첫 번째 코드는 창을 부팅하지만 창이 iso의 마운트 위치를 알지 못해 언젠가는 실패합니다
totti

두 번째 코드는 Ubuntu iso에서 작동하지 않기 때문에 작동하지 않을 수 있습니다.
totti

OP는 Windows 7을 구체적으로 언급하고 있습니다. 테스트 할 수 있습니까?
Warpspace

Windows를 좋아하지 않을 수도 있지만 "Winblows"및 "Windoze"를 여기에 게시하는 것은 다소 전문가가 아닙니다. -1.
0xC0000022L

1
나는 전문적인 부트 스트랩 프로그래머가 아니기 때문에 "비전문가"와 함께 살 수 있습니다. 나는 당신이 "무례한"것을 의미했다고 생각합니다. 예, 그 의견은 6 년 전이었습니다. 그 이후로 많은 부분이 바뀌 었으며 (Windows도
마찬가지

5

기술적으로는 Windows .iso파일 에서 설치할 수 없습니다. .isogrub을 사용하여 부팅 할 수 있지만 그 이후에는 Windows가 마운트 된 위치와의 연결이 끊어 지거나 불가능합니다. 따라서 grub& Windows는 마운트 및 부팅을 인식해야합니다. 현재 Windows는 지원하지 않습니다.

따라서 .iso파티션 루트의 내용을 추출 / 복사 한 다음을 사용하여 체인로드해야합니다 grub.


2
지식을 공유하는 것이 좋지만 기술적 인 방식으로 질문에 직접 대답 할 수 있습니다. 즉, 현재 텍스트를 고지 사항으로 다시 사용하지만 ".iso에서 부팅 할 수 있음"을 메뉴 항목으로 확장 할 수 있습니다. 그렇게하면 요청 된 것을 달성하기 위해 상상했던 방법을 정확하게 만들 수 있지만 가정 된 목적으로 작동하지는 않습니다. 이것은 또한 고려한 솔루션의 수를 명확하게합니다.
n611x007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.