[GRUB4DOS] GRUB4DOS를 통해 윈도우 7/8 ISO로 설치하기

Multibooting/GRUB4DOS

이번 포스팅에서는 GRUB4DOS에서 윈도우 설치 ISO로 윈도우를 설치하는 방법을 알아보겠습니다. 많은 분들이 윈도우 7/8 이나 윈도우 7 32/64비트를 하나의 USB에 통합하는 방법을 질문하셨는데요, NTBOOT를 이용하는 방법을 알아보던 중 이 방법을 알게 되어 이렇게 포스팅하게 되었습니다.

댓글로 질문주신 분들께는 NTBOOT를 사용하면 된다고 답변드렸지만, NTBOOT가 이 방법보다 좀 복잡하고, 정상적으로 설치가 안되는 경우도 있기 때문에, 이번 포스팅에서는 이 방법을 설명하도록 하겠습니다.


GRUB4DOS로 윈도우 7/8 ISO로 설치하기



기본적으로 윈도우 7/8 ISO를 로드하는 것은 '[만능 USB를 만들어 보자!] 9편 - GRUB4DOS로 ISO 부팅하기' 에서 설명한 방법으로 가능합니다. 하지만 MAP 명령어 만을 사용해서 윈도우 7/8 설치 ISO를 부팅하면 드라이버가 없다는 오류를 출력하며 설치를 진행할 수 없게 되는데요, 이 방법은 추가 드라이버를 로드해 윈도우가 정상적으로 설치 ISO를 인식하게 해줍니다.



이번 포스팅에서 사용될 수정된 FiraDisk 파일입니다. 위의 다운로드 버튼을 클릭해 다운로드 해주세요.

(출처 : http://www.rmprepusb.com/documents/rmprepusb-beta-versions)



다운로드하신 파일의 압축을 푸신 뒤, FiraDisk 폴더와 AutoUnattend.xml 파일을 USB로 복사해 주세요. 사용하실 ISO 파일도 USB로 복사해 주시면 됩니다. (저는 루트경로에서 작업하겠습니다 ^^)



title Install Windows 7/8 from ISO
dd if=()/firadisk/au.xml of=()/AutoUnattend.xml
dd if=()/firadisk/spaces.txt of=()/firadisk/ISONAME.CMD
write ()/firadisk/ISONAME.CMD SET MYISO=\\WIN7.iso\r\n
map --mem (md)0x800+4 (99)
map /WIN7.iso (0xff)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/WIN7.iso;\n\0
chainloader (0xff)


이제 이렇게 메뉴를 작성해 주시면 되는데요, WIN7.iso는 로드될 ISO 파일의 경로로 바꾸어주세요. 

이 때, 폴더 안에 ISO 파일이 있는 경우 'write ()/firadisk/ISONAME.CMD SET MYISO=\\ISO\\WIN7.iso\r\n' 와 같이 WRITE ()/firedisk/ISONAME.CMD 뒤에는 윈도우 파일 경로를 적는 방식으로 적어주시되 \를 중복해서 적어주셔야 합니다.



작성된 메뉴로 부팅하시면 윈도우 설치 ISO가 로드되고, 이런 창이 열립니다. 복구 도구를 실행시킬지 묻는데요, 'Y'를 입력하시면 복구도구가, 'N'를 입력하시면 윈도우 설치가 시작됩니다. 여기부터는 일반 윈도우의 설치 과정과 동일합니다 ^^


GRUB4DOS로 윈도우 설치 ISO 통합하기



위의 메뉴에서 ISO 파일 명만 바꾸어 주시면 여러 개의 윈도우 설치 ISO들을 로드할 수 있습니다.



title Install Windows 7 SP1 32bit from ISO
dd if=()/firadisk/au.xml of=()/AutoUnattend.xml
dd if=()/firadisk/spaces.txt of=()/firadisk/ISONAME.CMD
write ()/firadisk/ISONAME.CMD SET MYISO=\\W732.iso\r\n
map --mem (md)0x800+4 (99)
map /W732.iso (0xff)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/W732.iso;\n\0
chainloader (0xff)

title Install Windows 7 SP1 64bit from ISO
dd if=()/firadisk/au.xml of=()/AutoUnattend.xml
dd if=()/firadisk/spaces.txt of=()/firadisk/ISONAME.CMD
write ()/firadisk/ISONAME.CMD SET MYISO=\\W764.iso\r\n
map --mem (md)0x800+4 (99)
map /W764.iso (0xff)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/W764.iso;\n\0
chainloader (0xff)

title Install Windows 8 from ISO
dd if=()/firadisk/au.xml of=()/AutoUnattend.xml
dd if=()/firadisk/spaces.txt of=()/firadisk/ISONAME.CMD
write ()/firadisk/ISONAME.CMD SET MYISO=\\WIN8.iso\r\n
map --mem (md)0x800+4 (99)
map /WIN8.iso (0xff)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/WIN8.iso;\n\0
chainloader (0xff)


따라서 이런 식으로 메뉴를 작성해주시고, ISO 파일들을 넣어주시면 윈도우 7 32/64 비트, 윈도우 8 등을 하나의 USB로 설치할 수 있도록 구성할 수 있습니다. 

물론 INSTALL.WIM을 통합하는 방법이 속도도 빠르고, 공간도 절약할 수 있기 때문에 이 방법보다 효율적이지만, 통합하기가 쉽지 않고 관리도 복잡해지기 때문에 용량이 큰 USB를 사용하신다면 이 방법을 사용하시는 것을 추천합니다.


작동 원리


이 방법은 윈도우 설치 PE (BOOT.WIM) 에서 윈도우의 설치 과정을 수행하는 Setup.exe이 AutoUnattend.xml의 내용을 먼저 수행한다는 것을 이용한 방법입니다. 부팅 후 윈도우 설치 메뉴를 선택했을 때 수행되는 대략적인 작업은 다음과 같습니다.


1. DD 명령어가 AutoUnattend.xml과 ISONAME.cmd를 기록

2. MAP 명령어가 윈도우 설치 ISO를 가상 드라이브에 마운트

3. 마운트 된 가상 드라이브로 부팅. 윈도우 설치 PE (BOOT.WIM) 로드 및 부팅

4. Setup.exe가 AutoUnattend.xml에 기록된 내용 수행. LOADISO.cmd 실행

5. LOADISO.cmd가 FiraDisk 드라이버를 통해 GRUB4DOS의 가상 드라이브를 재마운트

6. 윈도우 설치 수행


따라서 이 방법을 통해 윈도우 7/8을 ISO 부팅으로 설치하려면 AutoUnattend.xml의 로드가 Setup.exe의 실행 전 선행되어야 하는데요, 윈도우의 Setup.exe는 이동식 드라이브에 존재하는 AutoUnattend.xml을 자동으로 불러오게 됩니다.

윈도우의 Setup.exe가 이동식 드라이브의 AutoUnattend.xml만 로드하기 때문에 이 방법은 외장하드에서는 사용할 수 없습니다.