윈 도 우 vhdx 부팅메뉴 등록 이걸로 할 수는 없을까요?
2016.03.22 03:38
이거는 스누피님이 만드신 vhd 등록하기 배치파일인데요
uefi 환경에서도 작동하게 수정한건데요.
이걸 자식 vhd를 등록할 때 쓰면 전혀 문제가 없는데
자식 vhdx를 등록할 때 쓰면 블루스크린이 뜨네요.
부팅메뉴 등록을 bcdboot 이걸로 해도 되지만 저 배치파일이 더 깔끔하고 편해서요.
아래는 배치파일 내용인데 여기서 뭐 부모 부분을 건드리는 게 뭐 있는건가요??
이 배치파일로 vhdx를 등록하려고 하는 이유가 제일 편해서 그렇습니다.
근데 스누피님이 윈7 시절에 만든거고 vhd용이라 그런지 vhdx에선 어렵네요 ㅠㅠ
----------------------------------
@echo off
pushd %~dp0
bcdedit > nul
if errorlevel 1 goto _admin
:_input
cls
echo.
echo.
echo.
echo 등록할 VHD 파일의 경로를 입력해주세요.
echo.
echo 단 경로에 띄어쓰기가 포함된 경우
echo.
echo 큰 따옴표는 생략해주시기 바랍니다.
echo.
echo.
echo 좋은 예 : D:\vhd files\win7.vhd
echo.
echo 나쁜 예 : "D:\vhd files\win7.vhd"
echo.
echo.
echo.
set /p src=경로를 입력해주세요 :
cls
echo.
echo.
echo.
echo 등록할 VHD 파일의 부팅 메뉴 이름을 지어주세요.
echo.
echo.
echo.
set /p name=이름을 입력해주세요 :
:_confirm
cls
echo.
echo.
echo.
echo 등록할 VHD 파일의 경로 : %src%
echo.
echo 등록할 VHD 파일의 메뉴 : %name%
echo.
echo.
echo.
set /p right=위 내용이 맞으면 Y를, 틀리면 N을 입력해주세요 :
if /i "%right%" == "y" goto _next
if /i "%right%" == "n" goto _input
goto _confirm
:_next
for /f "tokens=1 delims=\" %%a in ('echo %src%') do set path1=%%a
for /f "tokens=2 delims=:" %%b in ('echo %src%') do set path2=%%b
set file=[%path1%]%path2%
bcdedit /create /application OSLOADER /d "%name%" > guid.txt
for /f "tokens=1 usebackq" %%c in (guid.txt) do (
bcdedit /set %%c device vhd="%file%"
if errorlevel 1 goto _eng
bcdedit /set %%c osdevice vhd="%file%"
bcdedit /set %%c path \Windows\System32\Winload.efi
bcdedit /set %%c locale ko-KR
bcdedit /set %%c inherit {bootloadersettings}
bcdedit /set %%c systemroot \Windows
bcdedit /set %%c nx OptIn
bcdedit /set %%c detecthal Yes
bcdedit /displayorder %%c /addlast
bcdedit /timeout 5
del guid.txt
goto _success
)
:_eng
for /f "tokens=3 usebackq" %%d in (guid.txt) do (
bcdedit /set %%d device vhd="%file%"
bcdedit /set %%d osdevice vhd="%file%"
bcdedit /set %%d path \Windows\System32\Winload.efi
bcdedit /set %%d locale ko-KR
bcdedit /set %%d inherit {bootloadersettings}
bcdedit /set %%d systemroot \Windows
bcdedit /set %%d nx OptIn
bcdedit /set %%d detecthal Yes
bcdedit /displayorder %%d /addlast
bcdedit /timeout 5
del guid.txt
)
:_success
cls
echo.
echo.
echo.
echo 작업이 완료되었습니다. 이제 재부팅 해보시면
echo.
echo "%name%" 메뉴가 나타날 것입니다.
echo.
echo.
echo.
pause
exit
:_admin
cls
echo.
echo.
echo.
echo 우클릭 해서 관리자 권한으로 실행해주세요.
echo.
echo.
echo.
pause
exit
댓글 [5]
-
suk 2016.03.22 08:05
-
ANT-MAN 2016.03.22 11:03
신기하게 bcdboot V:\Windows ~~~ 이런걸로 부팅 메뉴 등록은 되는데 저걸로 하면 블루스크린이 확 뜨내요. 작업은 윈10 DVD로 부팅한 상태에서 작업했습니다. Shift+F10 눌러서 명령 프롬프트 띄우고요.
-
suk 2016.03.22 11:17
bcdboot가 어떤 경우에나 부팅 파일 만드는데는 좋습니다
윈도 버전에 맞게 자동으로 bcd를 수정해주고요. 부팅파일이 아예 없는 경우도 새로 만들어주고 편합니다
bcdboot 후에 일부 항목만 수정하는 방식으로도 할 수 있습니다.
cmd 상태에서도 bootice 작동하더군요. bootice는 이런 점이 또 좋군요.
-
ANT-MAN 2016.03.22 11:33
근데 혹시 bcdboot로 자식 등록할 때 저는 아래처럼 하긴 하는데 뭔가 깔끔하진 못한 것 같은데요. 그리고 이걸 자식 2개 등록할 땐 어떻게 하는게 좋을까요?? 그리고어떻게 이 방법으로 자식 1, 2번 둘다 부팅메뉴에 등록 했었는데 자식 1번에는 윈도우 로고만 있고, 자식 2번에는 부모처럼 VHD라고 표시가 되어있던데 무슨 차이일지... 윈8 스타일의 부팅메뉴 화면에서 말입니다.
diskpart
sel vdisk file="C:\VHD\child1.vhdx"
attach vdisk
select partition=1
assign letter=V
exit
bcdboot V:\windows /s s: /f uefi /L ko-kr <-- V: child1.vhdx 파일이 탑재된 드라이브 이름, S: EFI 파티션EFI 파티션에 드라이브 문자 S 할당해 줘야 하니까 아래처럼 미리 해주고 위의 작업을 해주고 있습니다.
diskpart
lis vol
sel vol 3
assign letter=S -
suk 2016.03.22 11:50
아...uefi모드라고 gpt 디스크로 vhdx를 만드셨겠죠?
저는 uefi모드 사용하면서도 vhd든지 vhdx든지 mbr 디스크로 만들었습니다.
gpt 디스크로 하면 만드는 순간에 msr 파티션이 앞에 만들어지기 때문에..
이거 조심하셔야 될 겁니다. 첫번째 파티션이 당연히 윈도 파티션이라고 생각하기 쉬웠는데요
gpt 디스크는 msr 파티션일 수 있습니다. 꼭 그런 것은 아닙니다만, 그래서 확인이 필요합니다
그리고 dvd도 uefi모드로 부팅하셨다면...굳이 /s s: 과 /f uefi는 하지 않으셔도 됩니다.
기본값으로 시스템이 부팅한 상태로 지정됩니다. 이런 거는 자동화 되어서 편리합니다. 윈도상에서도 마찬가지입니다
현재 시스템과 관련이 없는 PE로 부팅하신 경우에는 위처럼 일일이 지정하셔야 됩니다
bcdedit 입력해보셔서 시스템 bcd가 표시되면 위처럼 옵션 2가지는 생략해도 됩니다
* bcdboot 만으로는 부팅파일은 잘 만들지만 세세하게는 깔끔하지 못 하거나 중복되는 부분...
그래서 bootice로 bcd 수정하는 이야기를 위의 댓글에 썼습니다
이런 파일은 bcd만 건드리기 때문에 자식vhdx도 블루스크린 안 뜹니다
아마도 부모vhdx를 마운트라도 하신 것 같습니다.
부팅만 아니라 마운트만 해도 vhdx 파일이 변경되지요.
그러면 자식vhdx 부팅하면 블루스크린... 엄청난 감수성이네요