os/Window

USB 드라이브에 윈도우즈 XP 설치 및 부팅하기

C/H 2008. 3. 19. 00:06
USB 드라이브에 윈도우즈 XP 설치 및 부팅하기

- 마지막 갱신일 : 2006년 11월 6일 12:23:26

- 원문 작성자 : Emanuel Schleussinger

- 원문 URL : "Installing and booting Windows XP from USB drive -- Guide"

            ( http://www.ngine.de/index.jsp?pageid=4176 )


- 한글요약문 URL :  http://www.kernelx.pe.kr/WINUSB/

- 한글요약문 작성일 : 2006년 12월 19일 20:16


####################################################################

본 가이드는 emanuel 의 원문을 바탕으로 윈도우즈를 USB하드디스크에 설치, 부팅, 운영 한 다음 작성되었습니다. 원문과 주요내용은 다르지 않으며, 이해를 돕기 위해서 재편집 과정에서 불필요한 내용은 삭제되었고, 경험적인 부분을 조금 덧붙였습니다. 아무쪼록 USB 하드디스크/스틱에 윈도우즈 XP SP1을 설치하는데 보탬이 되셨으면 합니다.


~ kernelx.pe.kr

####################################################################



무엇에 관한 문서인가?

--

Q: USB 저장장치가 실제 저장장치를 의미하는가?

아니다. USB-기반 mass 저장장치들은 일반적인 시스템들에서 주-하드디스크 저장장치의 역할을 할 수 없다


마이크로소프트 뉴스그룹의 글 ( 약간 내용 보충됨 ):


기본적으로 윈도우즈는 USB 장치로 부팅할 수 없다. 당신의 컴퓨터가 이런 장치들에서 부팅하도록 지원하고 있다면, 당신은 USB 장치에 부트로더를 불러들인 후, 그 USB 하드디스크에서 Windows XP 를 시작할 수 있다.


간 단히 말해서 수정된 버전의 Windows XP 설치이미지를 사용해서, USB 장치 드라이버를 설치과정 초기에 불러들이도록 한다면 BSOD(블루 스크린; 오류)없이 윈도우즈 설치가 가능하다는 것이다. 따라서 이 문서는 윈도우즈 XP 시디의 수정된 버전을 만드는 방법을 알려주는 쉬운 가이드가 될 것이다.

--




알아두어야 할 사항 ( 경험적 내용 )

[1] USB 장치에 윈도우즈 XP SP1 은 설치가 성공적으로 완료된다. 그러나 SP2 로는 이 문서에서 언급한 방법으로는 설치가 되지 않는 것을 확인했다.


[2] 수정된 버전의 윈도우즈 XP 설치시디로 설치과정을 진행하다보면, 오류가 발생하는데, 계속 진행하도록 프로그램을 유도하면 된다. 이 오류가 나는 이유는 기본시디에서의 체크섬   값이 조금 변경되기 때문에 검열되지 않은 CD 라는 것을 알리기 위해서이다.


[3] USB 장치에 설치한 윈도우즈 XP 는 가상메모리 관리에 이용되는 페이지파일(c:\pagefile.sys 또는 c:\windows\system32\temppf.sys) 들을 생성하거나 지정할 수가 없다. 다시 말해 페이징기능을 사용할 수가 없게 되어, 물리적인 RAM 의 실 메모리를 사용하게 되는데, 256MB 메모리를 사용한다면, (웹브라우저 2-3개 + MSN 메신저 + 프루나) 이 정도 수준의 프로그램을 동작가능하나, 더 많은 프로그램을 동시에 실행시켜서 작업할 때는 프로그램에서 메모리부족으로 인한 오류와 종료가 발생하게 된다. 따라서 대용량 메모리 (512MB 또는 1GB 이상) 을 사용한다면 더할 나위 없이 좋겠다. 아직 이 문제를 해결한 글은 구글서핑을 통해서도 발견할 수 없었다. 부득이하게 USB하드디스크에 윈도우즈를 설치해야한다면, 대용량 RAM 을 하나 더 추가하길 바란다. 요즘 나오는 PC 들에는 1GB 이상의 RAM 을 탑재된다고 하니, 이 문서는 현재 유용할 것이다.



USB-호환 윈도우즈 시디 만들기


준비물 :

 - 원본 윈도우즈 XP 설치시디 ( SP1 )

 - WinISO 프로그램 (등록된 영문버전)

 - 마이크로소프트 CAB SDK 유틸리티

   ( 구글에서 "cab sdk" 검색하시면 다운로드 받으실 수 있습니다 )

 - ISO 이미지를 굽을 시디레코딩 툴

   ( 구글에서 "burnatonce" 검색하시면 무료레코딩 도구를 구할 수 있습니다 )


USB 하드디스크 호환 시디 만들기 과정 요약

우 리는 처음으로 원본 윈도우즈 XP 설치시디의 파일들을 ISO 이미지 파일로 덤프를 뜰 것입니다. 그리고 그 이미지 파일 내에 있는 몇 개의 수정이 필요한 파일들을 압축해지(extract) 하여 수정한 다음, 다시 수정된 파일들을 ISO 이미지에 압축해서 수정된 버전의 CD 이미지를 만듭니다. 그리고 이것을 CD-RW 로 굽을 것입니다. 그렇게 되면 별 다른 과정 없이 윈도우즈를 USB 드라이브에 설치할 수 있습니다.




1) 당신의 컴퓨터가 USB 부팅을 지원하는가?


대 게 바이오스(CMOS BIOS 라 불리기도 함) 부팅 메뉴에서 하드디스크를 인식하는 부분에 보면, USB 하드가 인식되는지 확인 할 수 있습니다. 만약 지원되지 않는 바이오스를 사용 중이라면 바이오스를 업데이트해보시길 바랍니다. 무슨 말인지 잘 모르겠으면, 그냥 부팅을 시도해보면 어떤 일이 일어나는지 확인 할 수 있을 것입니다 ;-)


2) 당신의 USB-드라이브의 부팅 가능성은?


먼 저 USB 드라이브를 컴퓨터에 연결하세요. 주의하실 점은 USB 허브를 사용하지 말고 직접적으로 연결해야 합니다. 그리고 컴퓨터를 리부팅하세요, 사용하지 않을 내장하드를 컴퓨터에서 분리하세요. 그리고 수정된 버전의 원본 윈도우즈 XP 시디를 시디롬에 넣으세요. 설치를 시작하면, 파티션을 나누는 부분에서 하드디스크가 제대로 인식되는 것을 확인 할 수 있을 것입니다. 만약 여기서 하드디스크가 제대로 인식이 되지 않으면 윈도우즈가 하드디스크/파티션를 찾을 수 없습니다. 와 같은 오류 메시지가 보일 것입니다.


  이것은 그다지 큰 문제가 아닙니다. 이것을 해결하려면 다른 컴퓨터에서 정상적으로 윈도우즈 XP 부팅 후에, 이 USB하드를 연결하고 NTFS 로 포맷하신 후 다시 설치를 시도하시기 바랍니다. 이런 과정을 거쳐 하드디스크가 정상적으로 인식되고 파티션이 잡힌다면 설치를 할 수가 있습니다.


3) 원본 윈도우즈 설치시디를 ISO 파일로 만듭니다.

이 것은 너무 간단한 작업입니다. 단지 WinISO 프로그램 정식버전을 실행시키고, 상단 메뉴 "Action -> Make ISO" 를 실행하면 창이 하나 나오는데, 여기서 윈도우즈 XP 원본시디를 CD 이미지로 저장할 수 있습니다.


4) 수정작업이 필요한 몇 개의 파일의 압축을 해지 합니다.


시 디가 ISO 이미지를 만드는 것에 성공했으면, 프로그램을 종료했다가 다시 WinISO 를 실행한 후 만들어진 ISO 파일을 "File -> Open" 으로 불러들이십시오. 그러면 ISO 이미지 내에 포함된 여러 가지 폴더와 파일들이 보이는데, 여기서 I386 폴더를 클릭하십시오. 그리고 아래 5개의 파일을 직접 귀찮으시더라도 선택하신 다음 상단 메뉴 “Action -> Extract" 을 통해서 선택된 파일들을 적절한 외부폴더(예를 들면 ”c:\winusb\") 에 저장하십시오.


TXTSETUP.SIF

DOSNET.INF

USB.IN_

USBPORT.IN_

USBSTOR.IN_


5) IN_ 파일들 언패킹(Unpacking)

MS Cab SDK (명령라인 유틸리티) 를 이용하면 .IN_ 으로 된 파일들의 언패킹할수 있습니다. 언패킹된 파일들은 .inf 확장자를 가지게 됩니다. 언패킹 하는 방법은 간단합니다. cabarc 를 먼저 설치하신 후 아래 명령들을 실행하십시오.

(c:\winusb\cabarc\cabarc.exe 에 설치되었다고 가정)


C:\winusb> cabarc\cabarc.exe x USB.IN_

C:\winusb> cabarc\cabarc.exe x USBPORT.IN_

C:\winusb> cabarc\cabarc.exe x USBSTOR.IN_



언패킹되어서 .inf 확장자를 가진 파일이 만들어지면, .IN_ 확장자를 가진 파일들을 삭제하십시오.


6) .inf 파일들 수정하기


이것이 USB-지원 윈도우즈 설치시디를 만드는 주요 작업입니다. 메모장과 같은 텍스트에디터에서 파일들을 수정하시면 되는데, 간단히 중간 중간 설명하겠습니다.


6-A) TXTSETUP.SIF


이 파일은 윈도우즈 XP CD 인스톨러의 초기과정에서 불러들여집니다. 이 파일에서, USB 장치들이 시스템 설치과정 중에 동작할 수 있도록 바꿀 것입니다 -- 기본설정은 USB장치가 입력장치에 포함되어 있기 때문입니다 -- 이 설정파일을 변경하여 mass 저장장치 드라이버를 지원하도록 포함시킬 것입니다.


처음으로 아래 [InputDevicesSupport.Load]에서 진하게 표시된 부분을 추가하시고, 제거표시가 된 것을 지우십시오.


[BootBusExtenders.Load]

pci = pci.sys

acpi = acpi.sys

isapnp = isapnp.sys

acpiec = acpiec.sys

ohci1394 = ohci1394.sys

usbehci = usbehci.sys

usbohci = usbohci.sys

usbuhci = usbuhci.sys

usbhub = usbhub.sys

usbstor = usbstor.sys



[InputDevicesSupport.Load]

usbehci = usbehci.sys

usbohci = usbohci.sys

usbuhci = usbuhci.sys

usbhub = usbhub.sys

usbccgp = usbccgp.sys

hidusb = hidusb.sys

serial = serial.sys

serenum = serenum.sys

usbstor = usbstor.sys


이제 InputDevicesSupport 목록에 있던 USB장치 드라이버 파일들이, BootBusExtenders으로 옮겨졌습니다.



[BootBusExtenders]

pci = "PCI-Bustreiber",files.pci,pci

acpi = "ACPI Plug & Play-Bustreiber",files.acpi,acpi

isapnp = "ISA Plug & Play-Bustreiber",files.isapnp,isapnp

acpiec = "Integrierter ACPI-Controllertreiber",files.none,acpiec

ohci1394 = "IEEE-1394-Bus-OHCI-konformer Anschlusstreiber",files.ohci1394,ohci1394

usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci

usbohci = "Open Hostcontroller",files.usbohci,usbohci

usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci

usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub

usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor



[InputDevicesSupport]

usbehci = "Erweiterter Hostcontroller",files.usbehci,usbehci

usbohci = "Open Hostcontroller",files.usbohci,usbohci

usbuhci = "Universeller Hostcontroller",files.usbuhci,usbuhci

usbhub = "Standard-USB-Hubtreiber",files.usbhub,usbhub

hidusb = "HID-Parser",files.hidusb,hidusb

serial = "Treiber f�r seriellen Anschluss",files.none,serial

serenum = "Enumerator f�r seriellen Anschluss",files.none,serenum

usbstor = "USB-Speicherklassentreiber",files.usbstor,usbstor

usbccgp = "USB Generic Parent Driver",files.usbccgp,usbccgp

다 음으로 레지스터리에 몇 가지 키를 써야 합니다. TXTSETUP.SIF 는 설치할 때 포함시킬 파일들을 레지스터리에 지정할 수 있도록 허용합니다. 아래 [HiveInfs.Fresh] 부분에 USBBOOT.INF 를 추가해주십시오.


[HiveInfs.Fresh]

AddReg = hivedef.inf,AddReg

AddReg = hivesys.inf,AddReg

AddReg = hivesft.inf,AddReg

AddReg = hivecls.inf,AddReg

AddReg = hiveusd.inf,AddReg

AddReg = dmreg.inf,DM.AddReg

AddReg = usbboot.inf,usbservices


그리고 [SourceDisksFiles] 를 찾은 다음 아래처럼 usbboot.inf 한 줄을 추가해 주십시오.


[SourceDisksFiles]

usbboot.inf = 1,,,,,,_x,3,,3

bootvid.dll = 1,,,,,,3_,2,0,0,,1,2

kdcom.dll = 1,,,,,,3_,2,0,0,,1,2


마지막으로 TXTSETUP.SIF 저장하고 메모장을 닫습니다. 이것으로 이 파일은 손볼게 없습니다.


6-B) DOSNET.INF


두 번째로 수정할 파일은 DOSNET.INF입니다. 이 파일에서는 한 줄만 추가해주면 되는데, [Files] 항목을 찾을 때, “d1,_default.pif" 라는 키워드로 찾으면 좀 더 쉽게 아래 부분을 찾으실 수 있습니다.


[Files]

d1,usbboot.inf

d1,_default.pif

d1,12520437.cpx

d1,12520850.cpx


....


6-C) usb.inf


아래 두꺼운 글자로 표시된 것들을 수정해 주십시오.



[StandardHub.AddService]

DisplayName = %StandardHub.SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 0 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%\usbhub.sys

LoadOrderGroup = Boot Bus Extender


[CommonClassParent.AddService]

DisplayName = %GenericParent.SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 0 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%\usbccgp.sys

LoadOrderGroup = Boot Bus Extender



6-D) usbport.inf


[EHCI.AddService]

DisplayName = %EHCIMP.SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 0 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%\usbehci.sys

LoadOrderGroup = Boot Bus Extender



[OHCI.AddService]

DisplayName = %OHCIMP.SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 0 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%\usbohci.sys

LoadOrderGroup = Boot Bus Extender



[UHCI.AddService]

DisplayName = %UHCIMP.SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 0 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%\usbuhci.sys

LoadOrderGroup = Boot Bus Extender



[ROOTHUB.AddService]

DisplayName = %ROOTHUB.SvcDesc%

ServiceType = 1 ; SERVICE_KERNEL_DRIVER

StartType = 0 ; SERVICE_DEMAND_START

ErrorControl = 1 ; SERVICE_ERROR_NORMAL

ServiceBinary = %12%\usbhub.sys

LoadOrderGroup = Boot Bus Extender


6-E) usbstor.inf


이것으로 마지막으로 수정할 파일입니다. 역시 두껍게 표시된 글자만 수정해주십시오.

// Tag = 3 는 추가하십시오.


[USBSTOR.AddService]

DisplayName = %USBSTOR.SvcDesc%

ServiceType = 1

StartType = 0

Tag = 3

ErrorControl = 1

ServiceBinary = %12%\USBSTOR.SYS

LoadOrderGroup = Boot Bus Extender



6-F) 새 파일 : USBBOOT.INF


이 번에는 USBBOOT.INF 라는 새 파일을 수정했던 파일들과 같은 디렉터리에 생성한 후, 아래 내용을 모두 “복사&붙여넣기“ 하고 저장하십시오.


[usbservices]


HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","DisplayName",0x00000000,"USB Mass Storage Driver"

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ErrorControl",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Group",0x00000000,"System Reserved"

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ImagePath",0x00020000,"system32\DRIVERS\USBSTOR.SYS"

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Start",0x00010001,0

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Type",0x00010001,1


HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","DisplayName",0x00000000,"USB 2.0 Enhanced Host Controller Miniport Driver"

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ErrorControl",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Group",0x00000000,"System Reserved"

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ImagePath",0x00020000,"system32\DRIVERS\usbehci.sys"

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Start",0x00010001,0

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Type",0x00010001,1


HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","DisplayName",0x00000000,"USB2 Enabled Hub"

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ErrorControl",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Group",0x00000000,"System Reserved"

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ImagePath",0x00020000,"system32\DRIVERS\usbhub.sys"

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Start",0x00010001,0

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Type",0x00010001,1


HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","DisplayName",0x00000000,"Microsoft USB Universal Host Controller Miniport Driver"

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"System Reserved"

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"system32\DRIVERS\usbuhci.sys"

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00010001,1


HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","DisplayName",0x00000000,"Microsoft USB Open Host Controller Miniport Driver"

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ErrorControl",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Group",0x00000000,"System Reserved"

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ImagePath",0x00020000,"system32\DRIVERS\usbohci.sys"

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Start",0x00010001,0

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Type",0x00010001,1



7) INF 파일들을 IN_ 원래의 포맷으로 다시 패킹하기


도스 쉘로 다시 돌아와서 아래 명령을 입력해서 3가지 파일은 다시 패킹합니다:

C:\winusb> cabarc\cabarc.exe n USB.IN_ usb.inf

C:\winusb> cabarc\cabarc.exe n USBPORT.IN_ usbport.inf

C:\winusb> cabarc\cabarc.exe n USBSTOR.IN_ usbstor.inf


이제 위에서 패킹한 .IN_ 파일 3개가 있어야 합니다.

축하합니다. 모든 수정과정이 끝났습니다.


8) 윈도우즈 ISO 이미지에 수정된 파일들 추가하기


WinISO 프로그램에서 덤프해두었던 윈도우즈 CD 이미지를 열어서, I386 폴더를 봅니다. 여기서 수정했던 아래의 원본 파일들을 DEL 키를 눌러서 지워주십시오.


DOSNET.INF

TXTSETUP.SIF

USB.IN_

USBPORT.IN_

USBSTOR.IN_


그 다음으로 수정했던 5개의 파일과 USBBOOT.INF 라는 새로 생성했던 파일을 그 디렉터리에 "Add Files" 메뉴를 통해서 추가시켜주십시오:


USBBOOT.INF

DOSNET.INF

TXTSETUP.SIF

USB.IN_

USBPORT.IN_

USBSTOR.IN_



추가가 되었는지 확인하고, "File->Save" 하셔서, ISO 이미지를 저장 하면 모든 작업이 완료됩니다.


9) 위에서 만든 ISO 이미지를 시디로 굽기


수정한 ISO 이미지를 시디로 구워야 합니다. 시디레코딩 프로그램은 어떤 것을 사용하든지 상관없습니다. 간단한 무료 프로그램으로는 ‘Burnatonce' 가 있습니다.



10) 구운 시디로 윈도우즈 XP 설치하기

이제 시디를 굽으셨으면, 윈도우즈를 설치할 컴퓨터의 시디롬에 구운 시디를 넣고 부팅합니다. 시디롬으로 부팅하여 윈도우즈를 설치하는 과정과 똑같이 설치한다면, 아무 문제없이 설치가 됩니다.

have a lot of fun!


Emanuel Schleussinger
http://www.ngine.de
반응형