프로그램

2011.02.04 02:17

Asus p8p67( UEFI) 보드- GPT 디스크에 Win7 설치

http://powerwindows.co.kr/53088댓글 4조회 수 56278추천 수 2

EFI 보드에서는 GPT 디스크에 Windows 7 을 설치 할 수 있습니다. 다음은 참고 링크입니다.

-- EFI 기반 컴퓨터에 Windows 설치

-- UEFI 기반 디스크 파티션 권장 구성

-- UEFI 기반 컴퓨터에 Windows 이미지 적용

제가 요약해 보자면 두가지 방법을 사용할 수 있습니다.

1. EFI 시스템에서 부팅 가능한 DVD를 만들어서 부팅 후 설치하는 방법.

BIOS 시스템에서 부팅가능한 이미지를 만들 때는 oscdimg.exe 의 부팅섹터 파일 옵션( -b)에 etfsboot.com 파일을 사용합니다. 예를 들면,

oscdimg.exe -betfsboot.com -lMywin7 -u1 -udfver102 -o test win7.iso

-- test 폴더를 win7.iso 이미지로 만듭니다. 부팅섹터 파일은 etfsboot.com 이고 레이블은 Mywin7 입니다. ( Oscdimg 명령줄 옵션 )

EFI 시스템에서 부팅가능한 이미지를 만드는 옵션은 조금 다름니다. 부팅섹터 파일을 efisys.bin 파일로 사용합니다.

oscdimg.exe -befisys.bin -lMywin7 -pEF -u1 -udfver102 -o test win7.iso

-- -p 옵션은 El Torito( 부팅가능한 CD를 만드는 표준 규격)에 정의된 플랫폼 ID 를 지정합니다. 기본값은 x86 플랫폼을 나타내는 0x00입니다. EFI 플랫폼은 EF 로 지정하는 것 같습니다.

이와 같이 iso 파일을 만든 후 DVD로 구워서 BIOS에서 'UEFI CD-DVD 장치' 를 선택하여 부팅합니다.( 'UEFI CD-DVD 장치' 메뉴와 함께 일반 'CD-DVD 장치' 메뉴도 같이 있습니다.)

2. EFI 셸에서 부팅후 설치.

1번에서 사용한 'UEFI CD-DVD 장치' 로 부팅할 수 있는 메뉴가 없으면,

EFI 셸 또는 펌웨어의 파일에서 부팅 메뉴를 사용하여 설치 디스크에서 Windows EFI 부팅 로더를 시작합니다.

EFI 셸에서 Windows 설치 미디어가 있는 장치를 선택한 다음 EFI 부팅 응용 프로그램을 시작합니다. DVD 장치가 fs0이라고 가정하고 x64 기반 컴퓨터에 대해 다음 명령을 사용합니다.

Shell> Fs0:
fs0:> \EFI\BOOT\BOOTX64.EFI

BOOTX64.EFI 파일은 WAIK 를 설치하면 C:\Program Files\Windows AIK\Tools\PETools\amd64\efi\boot 폴더안에 있습니다. 복사해서 DVD의 EFI\BOOT 폴더에 넣어 둡니다.

이상이 제가 대충 요약해본 내용입니다. 하지만 Asus p8p67 보드에는 위와 같은 방법이 적용되지 않습니다.

'UEFI CD-DVD 장치' 로 부팅할 수 있는 메뉴가 있지만 Windows 7 설치 DVD를 위와 같은 방법으로 만들었더라도 부팅시에는 인식이 안됩니다.

EFI 셸 메뉴도 없습니다.

파일에서 부팅 메뉴는 있습니다. ( Launch EFI SHell from filesystem device)

1.jpg

다음은 제가 편법으로 적용해 본 방법입니다.

MS 에서 제공하는 'EFI 부팅 응용프로그램'은 Bootx64.efi 파일입니다. p8p67보드에서 EFI 셸 메뉴를 제공한다면 이 파일을 선택하여 부팅하면 되겠지만 그런 메뉴가 없습니다. 또한 p8p67보드는 '파일에서 부팅' 메뉴에서 인식하는 파일은 Shellx64.efi 파일입니다. 그래서 Bootx64.efi 파일을 Shellx64.efi 로 이름을 변경한 뒤 시스템 파티션에 놓아두면 '파일에서 부팅' 메뉴에서 부팅했을 때 이 파일을 인식하게 됩니다. 이 Bootx64.efi 파일의 역할은 BIOS 시스템에 비교하여 말하면 Bootmgr 의 역할을 하는 것 같습니다. 설치 DVD 안의 Bootmgr 은 \boot\bcd 를 읽어서 부팅을 제어하지만 Bootx64.efi 파일은 \efi\microsoft\boot\bcd 를 사용합니다. x64 설치 DVD 안을 살펴보면 Bootmgr 과 Bootmgr.efi 파일이 있는데 Bootmgr.efi 파일이 Bootx64.efi 파일과 같은 역할을 할 것으로 생각되지만 테스트해 보지는 않았습니다.( EFI 시스템에서는 x86 설치 프로그램은 부팅이 되지 않습니다.)

p8p67 보드는 BIOS/EFI 두가지 모드를 지원합니다. BIOS 모드에서는 x86 설치프로그램으로도 부팅할 수 있으며 MBR 파티션에 운영체제를 설치할 수 있습니다. ( GPT 파티션에는 설치할 수 없습니다.)

EFI 모드에서는 x64 설치 프로그램으로만 부팅할 수 있으며 GPT 파티션에 운영체제를 설치할 수 있습니다. ( MBR 파티션에는 설치할 수가 없습니다.)

GPT 파티션에 OS를 설치하기 위해서 일단 BIOS 모드에서 x64 설치 DVD를 이용하여 부팅합니다. 부팅선택 메뉴에서 'UEFI CD-DVD 장치' 가 아닌 'CD-DVD' 장치로 부팅합니다. ( 부팅섹터 파일을 etfsboot.com 을 사용한 일반적인 DVD)

설치 DVD 루트에 Bootx64.efi 파일을 Shellx64.efi 로 이름을 변경한 뒤 미리 넣어 둡니다.

PE 부팅 완료후 명령창에서 다음 명령을 입력합니다. ( 명령창을 사용하는 방법은 키보드 Shift+F10 을 동시에 입력합니다.) -- DiskPart 명령줄 옵션

dispart

select disk 0

clean -- 첫번째 디스크의 모든 자료가 날라갑니다. 주의하세요.

convert gpt

create partition efi size=40960 -- efi 파티션은 시스템 파티션입니다. 100MB 를 만들 것으로 권장되지만 이 방법에서는 DVD안의 모든 내용물을 복사해 넣을 것이므로 4GB 를 사용했습니다.

format quick fs=fat32 label="SYSTEM"

assign letter="S"

create partition msr size=128 -- MSR(Microsoft Reserved) 파티션은 모든 GPT디스크 마다 만들도록 권장하고 있습니다. 윈도우즈 상에서 GPT 디스크를 만들면 저절로 만들어지게 됩니다.

create partiton primary -- 나머지 부분을 통째로 하나의 파티션을 만듭니다. 파티션을 나눠서 사용하려면 size= 값을 적어 줍니다.

foramt quick fs=ntfs label="Windows 7"

assign

list volume

-- volume 의 드라이브 문자를 확인하기 위한 명령입니다. 위에서 시스템 파티션은 S: 를 할당했습니다. 나머지 DVD 가 들어있는 드라이브를 확인하여 DVD 안의 내용물을 시스템 파티션에 복사하기 위해서 입니다.

xcopy F:\*.* S:\ /cheryki

-- DVD의 모든 내용물을 시스템 파티션에 복사했습니다. F: 는 DVD가 들어있는 드라이브 문자입니다. 중요한 것은 시스템 파티션 루트에 Shellx64.efi 파일을 복사한다는 것입니다. 기타 다른 파일들을 같이 복사하는 이유는 \efi\microsoft\boot\bcd 를 살펴보면 'Windows 부팅로더' 의 device 값이 ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f} 로 되어 있기 때문입니다. 즉 ramdisk 에 풀어줄 이미지를 boot 드라이브의 \sources\boot.wim 파일을 사용하기 때문입니다.

기본작업은 끝났습니다. 현재 상태는 BIOS 모드로 부팅되어 있기 때문에 GPT 디스크에 OS를 설치할 수 없습니다.

설치 프로그램을 끝내고 다시 부팅합니다. 재부팅 후 BIOS 설정 메뉴로 진입하여 위 스샷에 나온 '파일에서 부팅' ( Launch EFI SHell from filesystem device) 메뉴를 클릭하여 부팅하면 Shellx64.efi 파일을 읽어서 EFI 모드로 설치프로그램을 시작하게 됩니다.

설치가 끝나고도 BCD 에는 'Windows 7 Setup' 메뉴가 남아 있어 멀티 부팅 상태가 됩니다. 'Windows 7 Setup' 메뉴로 부팅하면 설치프로그램을 시작하기는 하지만 계속 진행하다 보면 오류메세지가 나옵니다. 이유는 부팅관리자가 \sources\boot.wim 파일을 램으로 로드하여 설치프로그램을 시작하는 데는 문제가 없지만, 이후의 과정은 설치프로그램인 setup.exe의 역할인데 시스템 파티션은 숨김 속성으로 드라이브 문자가 할당되지 않기 때문에 설치프로그램이 install.wim 파일을 읽지 못하기 때문입니다. 해결법은 DiskPart.exe 로 드라이브 문자를 할당해 줍니다.

list volume

select volume 4 -- 숨김속성과 label 이 위에서 할당했던 'SYSTEM' 으로된 볼륨을 선택합니다.

assign -- 드라이브 문자를 할당했습니다. 설치를 정상적으로 진행할 수 있습니다. 참고로 저는 이 과정을 자동화 하기 위해 H.cmd 파일과 Winpeshl.ini 파일을 만들어 boot.wim 2번 파일을 마운트하여 system32 폴더에 넣어둔 후 사용합니다.

<H.cmd 의 내용>

@echo off
pushd %~dp0
echo list vol > part.txt
diskpart /s part.txt > list.txt
for /f "skip=1 tokens=2" %%i in ('find "SYSTEM" list.txt') do (set _num=%%i)
del part.txt
del list.txt
echo sel vol %_num% > disk.txt
echo assign>> disk.txt
diskpart /s disk.txt
del disk.txt
exit

<Winpeshl.ini 의 내용>

[LaunchApps]

H.cmd

X:\Setup.exe

이렇게 해서 설치 프로그램을 멀티부팅으로 이용하여 사용하면 편하긴 한데 시스템 파티션이 지저분해서 뭔가 찝찝하기는 합니다. 윈도우즈 상에서 DiskPart.exe 를 이용하여 드라이브 문자를 할당하고 필요없는 파일은 지웁니다. 다음은 꼭 필요한 파일 입니다.

Shellx64.efi

efi 폴더 -- 부팅파일이 모여 있는 곳입니다. 설치가 끝나고 어떤 파일이 추가되어 있는 지 확인해 보세요.

sources 폴더 -- sources 폴더 안의 boot.wim ,install.wim, setup.exe 파일 세가지만 있으면 됩니다.

boot 폴더 -- boot 폴더 안의 boot.sdi 파일만 필요합니다. boot 폴더를 삭제하려면 boot.sdi 파일을 옮긴 후 bcd를 추가로 수정해야 됩니다.

위와 같은 어려운 방법 말고 DVD로 부팅하여 설치할 수 있는 방법을 찾으면 추가로 글 올리겠습니다.

+ Recent posts