이 글은 윈도우 7 F8 컴퓨터 복구 모드가 없는 경우 글에서 소개했던 reagentc.exe 파일로 문제가 해결되지 않는 분들을 위해 수동으로 복구 모드를 등록시켜주기 위해 작성했습니다. 제가 스크립트 짜봤는데 VMware에서 몇차례 테스트 결과 별 문제는 없었습니다. 이거 만들면서 알게된 점은 boot.sdi 파일이 윈도우 폴더에도 들어있다는 사실 ;; 전 지금껏 윈도우 7 DVD의 Boot 폴더에서 복사해왔는데 말이죠 ㅠㅠ boot.sdi 파일까지 첨부해서 올리려다 혹시나 싶어 파일 검색해보니 윈도우 폴더에 들어있더군요 ^^;;

 

다운로드

 

 

 

 

위 첨부파일을 받아서 우클릭 - 관리자 권한으로 실행 해주시면 됩니다.

 

아래는 스크립트 내용입니다. 고수님들 문제점이 발견되면 지적해주세요.

일반적으로 대부분 현재 OS의 identifier 가 {current} 이지만 가끔 {default} 인 경우도 있어서 이렇게 작성했습니다.

 

@echo off

 

:general
set REID={572bcd56-ffa7-11d9-aae0-0007e994107d}
set SD=%systemdrive%
md %SD%\Recovery
copy %windir%\system32\recovery\winre.wim %SD%\recovery\
if exist %windir%\system32\boot.sdi copy %windir%\system32\boot.sdi %SD%\recovery\
if not exist %windir%\system32\boot.sdi copy %windir%\syswow64\boot.sdi %SD%\recovery\
attrib %SD%\Recovery +h +s

 

:case1
set OSID=current
bcdedit /set {%OSID%} recoverysequence %REID%
if errorlevel 1 goto case2
bcdedit /set {%OSID%} recoveryenabled yes
goto continue

 

:case2
set OSID=default
bcdedit /set {%OSID%} recoverysequence %REID%
bcdedit /set {%OSID%} recoveryenabled yes
goto continue

 

:continue
bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=%SD%
bcdedit /set {ramdiskoptions} ramdisksdipath \Recovery\boot.sdi
bcdedit /create %REID% /d "Windows Recovery Environment" /application OSLOADER
bcdedit /set %REID% device ramdisk=[%SD%]\Recovery\winre.wim,{ramdiskoptions}
bcdedit /set %REID% osdevice ramdisk=[%SD%]\Recovery\winre.wim,{ramdiskoptions}
bcdedit /set %REID% path \windows\system32\winload.exe
bcdedit /set %REID% systemroot \windows
bcdedit /set %REID% detecthal yes
bcdedit /set %REID% nx optin
bcdedit /set %REID% winpe yes

 

:exit
exit

 

 

 

위 스크립트로 VMware에 32/64비트 둘다 msoobe.exe 강종으로 설치하고 테스트 해보니 잘 생성되었습니다.

 

 

 

 

아래 내용은 VHD + PE 멀티부팅 유저들만 참고하세요.

 

제 컴퓨터에서 수차례 테스트해본 결과 저처럼 VHD 부팅하시는 분들 중에 boot.sdi 파일의 경로가 새로 지정됨으로 인해 기존에 등록해두었던 PE로의 부팅이나 VHD 파일 교체하기 메뉴 등 {ramdiskoptions} 를 사용하는 PE 메뉴들로의 진입에 문제가 발생할 소지가 있음을 확인했습니다. 왜냐하면 VHD 부팅 유저들이 이 스크립트를 사용하면 boot.sdi 파일의 경로가 VHD 안에 있는 것으로 지정되는데 만약 VHD 파일을 기존 것으로 교체해버리면 boot.sdi 파일이 들어있지 않은 기존 VHD 파일에 당연히 boot.sdi 경로는 없을테니 {ramdiskoptions} 를 사용하는 다른 PE 부팅 메뉴들로는 부팅이 되지 않겠지요. 따라서 저처럼 Differencing VHD 기능을 사용하시는 분들은 이 스크립트로 F8 복구모드를 등록시키기 전에 먼저 부모 VHD 파일로 부팅한 다음 작업을 해주셔야 합니다. 아니면 위 스크립트에서 {ramdiskoptions} 생성하는 3줄을 빼버리셔도 됩니다.

 

bcdedit /create {ramdiskoptions}
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=%SD%
bcdedit /set {ramdiskoptions} ramdisksdipath \Recovery\boot.sdi

 

왜냐하면 어차피 boot.sdi 파일과 {ramdiskoptions} 에 대한 정보는 PE 부팅을 사용하시던 분들이라면 이미 BCD에 등록되어 있기 때문에 새로이 등록할 필요가 없고 바로 복구모드 항목을 생성해도 되기 때문입니다. 제가 스크립트 짤 때 bcdedit /create {ramdiskoptions} 에서 항목이 있다고 나오면 바로 boot.sdi 단계는 넘기고 아래쪽으로 내려가도록 만들까 생각도 해봤는데 그래도 혹시나 항목이 있음에도 불구하고 boot.sdi 파일의 경로가 잘못 지정되어 있는 상태이거나 아니면 {ramdiskoptions} 항목만 존재하고 boot.sdi 파일의 경로는 지정되어 있지 않은 경우도 만에 하나 있을 수 있으므로 함부로 그렇게 짤 수도 없었습니다. 또한 이 문제는 VHD 부팅 + 램디스크 PE 부팅 이라는 조합을 동시에 사용하는 저같은 극히 일부 유저들에만 국한되는 문제이고 더욱이 그 유저들 중에 F8 복구모드가 없는 경우는 더더욱 소수일 것이고 또한 설령 F8 복구모드가 없다고 해도 이 스크립트보단 reagentc.exe 파일로 간단히 해결될 가능성이 높고, 또한 PE로 부팅하는 분들은 어차피 F8 복구모드의 필요성을 별로 느끼지 못하실 것이라 생각하기 때문에 스크립트에 따로 {ramdiskoptions} 항목에 대한 체크는 넣지 않았습니다.

 

다시 말씀드리지만 이 추가 내용은 VHD + PE 부팅 유저들만 참고 하시면 됩니다. 99%(?)의 일반 유저들과는 전혀 관계없는 이야기 이니 스킵하시기 바랍니다.

 

그리고 이미 위 스크립트 실행으로 VHD 안에 boot.sdi 파일이 지정된 경우라 하더라도 boot.sdi 파일의 경로는 다시 지정해주시면 됩니다. 저같은 경우 현재 XP 파티션이자 시스템, 활성 파티션인 D 드라이브 boot 폴더 안에 이 파일을 넣어두었기 때문에

 

bcdedit /set {ramdiskoptions} ramdisksdidevice partition=D:
bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi

 

라고 입력을 하면 되겠지요.