윈 도 우 USB에서 win7 사용하기
2010.10.31 01:06
스누피님의 'USB에 win7 설치하기'나
우금티님의 snapshot.exe 혹은 Hyper-V에 설치한 이미지를 이용하는 방법이 있지만
약간 다르게 USB에서 win7 사용하는 방법에 관한 글이 있어서 소개합니다.
원문링크: https://www.boot-land.net/forums/index.php?s=bb22e75502f16ddc5909e181bf273a8a&showtopic=9196
위 글에는 USB 디스크를 직접 사용하는 방법과 VHD를 이용하는 방법 두 가지를 설명하는 데 원리는 같습니다.
이 글에서는 제가 테스트해 본 VHD를 이용한 방법에 관해서만 소개합니다.
1. 하드디스크에 VHD를 만들어 win7을 설치합니다.( 기존에 VHD를 만들어 사용하신다면 그대로 사용하셔도 됩니다.)
2. VHD에 설치한 win7에서 usbbootfix.bat 를 실행한 후
다른 운영체제나 PE로 부팅하여 VHD를 USB에 복사합니다.
3. USB의 파티션에 활성( Active)을 걸어 줍니다.
4. USB안의 VHD를 연결( attach)해서 다음 명령으로 USB에 부팅파일을 만들어 줍니다.
bcdboot.exe k:\windows /l ko-kr /s j:
-? k: 는 VHD 드라이브 문자이고 j: 는 USB의 드라이브 문자입니다.
끝입니다. USB로 부팅하여 테스트 합니다.
<usbbootfix.bat 의 내용>
----------------------------------------------------------------------------------------------------------------
@echo off
if "%1"=="fix" goto :fix
rem -- install task
copy /y "%~f0" "%SystemRoot%\system32\usbbootfix.bat"
SCHTASKS /Create /RU SYSTEM /SC ONEVENT /MO "*[System[Provider[@Name='Microsoft-Windows-UserPnp'] and EventID=20003]]" /EC System /TN USBBootFix /TR "'%SystemRoot%\system32\usbbootfix.bat' fix" /F
rem -- apply other settings
reg add HKLM\SYSTEM\CurrentControlSet\services\pciide /v Start /t REG_DWORD /d 0x0 /f
reg add HKLM\SYSTEM\CurrentControlSet\services\msahci /v Start /t REG_DWORD /d 0x0 /f
reg add HKLM\SYSTEM\CurrentControlSet\services\intelide /v Start /t REG_DWORD /d 0x0 /f
reg add HKLM\SYSTEM\CurrentControlSet\services\viaide /v Start /t REG_DWORD /d 0x0 /f
rem -- run :fix once after install
:fix
call :fixservice usbehci "Boot Bus Extender"
call :fixservice usbohci "Boot Bus Extender"
call :fixservice usbuhci "Boot Bus Extender"
call :fixservice usbhub "System Bus Extender"
call :fixservice usbstor "SCSI miniport"
goto :eof
:fixservice
setlocal
set Start=
set Group=
for /f "skip=2 tokens=1,2,*" %%I in ('reg query HKLM\SYSTEM\CurrentControlSet\services\%~1') do (
if "%%I"=="Start" set Start=%%K
if "%%I"=="Group" set Group=%%K
)
if not "%Start%"=="0x0" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Start /t REG_DWORD /d 0x0 /f
if not "%Group%"=="%~2" reg add HKLM\SYSTEM\CurrentControlSet\services\%~1 /v Group /t REG_SZ /d "%~2" /f
endlocal
goto :eof
----------------------------------------------------------------------------------------------------------------
주요 내용은
레지스트리에 등록된 하드 디스크 컨트롤러에 관한 서비스 값 중에서 'Start' 값을 0 으로 변경하고
USB에 관련된 서비스 값 중에서 'Start'와 'Group' 값을 0과 'Boot....'으로 변경한 뒤
EventID=20003( 서비스 설치) 가 생기면 위 배치 파일중 USB에 관련된 명령을 실행하게끔
작업 스케줄러에 등록하는 내용입니다.
드라이버를 설치하게 되면
HKLM\SYSTEM\CurrentControlSet\services와 기타 경로에 드라이버 정보를 등록하게 되는데
윈도우가 부팅하면서 이 곳의 레지스트리를 읽어서 드라이버를 로드하는 것 같습니다.
'Start' 값데이타가 0 인 드라이버는 부팅에 필요한 드라이버라는 뜻입니다.
USB 디스크 드라이버의 'Start' 기본값은 3 입니다.
'Group' 값 또한 구체적으로 로딩순서를 정하는 값인데
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder 에 로딩순서대로
나열한 'Group' 값이 있습니다.
5. USB에 설치된 win7을 다른 컴퓨터에서 사용하려면 사용할 컴퓨터의 하드 디스크 컨트롤러 드라이버의
'Start' 값을 0 으로 변경한 뒤에 사용합니다.
어떤 드라이버인지 확실히 모를 경우 StorageBootStart.bat 를 실행한 뒤 종료한 다음 사용합니다.
StorageBootStart.bat 는 win7 에 미리 설치된 모든 하드 디스크 컨트롤러 드라이버의 'Start' 값을 0으로 변경시킵니다.
귀한 정보와 좋은 강좌,,,
고맙습니다.