윈 도 우 [bat 추가] 윈도우가 설치된 VHD를 가상머신에 부팅하기
2024.05.21 11:23
질문에 올라와서 테스트하면서 bat 파일 만들었습니다
요약하면, 강좌나 질문에 링크하신 글 내용에 있지 않은 1가지를 추가합니다
실컴과 가상머신에서 VHD 역할이 다릅니다
실컴에서는 VHD [가상 디스크]이지만, 가상 속에서는 VHD가 실컴 디스크 역할입니다
그래서 실컴에서는 별도의 bcd를 만들지 않아도 됩니다만 [실컴 bcd에 멀티 부팅]
가상 머신에서는 VHD 내부에 bcd를 만들어주셔야 부팅이 가능합니다 [실컴에서 실컴디스크에 bcd를 만드는 것과 같습니다]
질문에 는 VHD 내부에 이미 bcd를 만들어신 상태라서 이 부분에 대한 설명이 누락된 듯 합니다
VHD 내부에 bcd를 만드는 방법입니다
1. 실컴에서 VHD를 탑재
2. bcdboot로 탑재된 VHD 내부에 부팅 파일을 만드시면 됩니다 = bcdboot V:\windows /s V: /f bios /l ko-kr
V:만 VHD가 탑재된 드라이브 문자로 수정하시면 됩니다. 둘다 똑같이 하셔야 됩니다
3. 예전에는 위에 2가지만 하면 됐었는데, 방금 VHDman으로 테스트해보니까 부팅이 되지 않네요
그래서 확인해보니까 MBR/PBR/활성 모두 되어 있습니다
1가지 의심되는건 실컴과 가상에서의 드라이브 문자가 다르다는 것입니다
그래서 가상 입장에서 범용적인 boot로 설정하여 vmware에서 VHD 성공했습니다. 제가 해봐도 좀 복잡하네요
그래서 좀 편하게 작업하려고 bat 파일을 만들었습니다
위 방법은 가상 머신에 bios [mbr] 부팅인데 uefi보다 간단합니다
UEFI로 부팅하시려면 VHD를 GPT 디스크로 만드셔야 하고, 별도의 EFI 파티션도 VHD에 만드셔야 됩니다. 더 복잡해서 생략합니다
다음은 bat 파일을 테스트한 스샷입니다
윈도우 iso의 install.wim만 설치한 VHD는 부팅되지 않습니다
bat 파일 실행하여 VHD 경로만 입력하면, 전부 자동으로 진행됩니다
VHD 부팅이 바로 됩니다..
---------------------------------------------------------------------------------------------------
댓글에 UEFI 관련 글이 있어서 UEFI와 MBR 자동으로 구분하여 실행되는 bat 파일 추가했습니다
이것은 bat 파일 테스트 하기 위하여, VHD를 만들고, 윈도우 iso 탑재된 상태에서 install.wim을 VHD에 설치하는 과정입니다
테스트를 편하기 하기 위하여, 관리자 권한 cmd 창에 전부 복사/붙여넣기 했습니다
사용하실 분들은 드라이브 문자는 수정하셔서 사용하셔야 됩니다
del /f/a/q V:\test.vhd
(echo cre vdi file="V:\test.vhd" maximum=38000 type=expandable
echo attach vdi
echo con gpt
echo cre par pri
echo format quick fs=ntfs label=Windows_VHD
echo ass letter=i
) | diskpart
DISM.exe /Apply-Image /ImageFile:"J:\sources\install.wim" /Index:3 /ApplyDir:i:\
start explorer
여기까지입니다. start explorer 은 install.wim 설치 완료를 알리기 위한 것입니다. 탐색기 창이 열립니다
다음은 bat 파일 테스트입니다
VHD를 UEFI모드로 부팅했습니다 [VHD를 GPT 디스크 만들었습니다]
VHD를 MBR디스크로 만들어서도 테스트 완료했습니다
윈도우가 설치된 VHD[x]를 가상머신으로 부팅 가능하게 만들기 [UEFI와MBR구분실행].bat
VHD가 MBR 디스크로 만들어진 경우는 가상머신을 bios 모드로 설정하셔야 부팅됩니다
VHD가 GPT 디스크로 만들어진 경우는 가상머신을 UEFI 모드로 설정하셔야 부팅됩니다
bat 파일은 VHD가 GPT 디스크인 경우는 UEFI 부팅 가능 / MBR 디스크는 BIOS 부팅 가능으로 만듭니다
댓글 [18]
-
타천사둘리 2024.05.21 11:49
-
타천사둘리 2024.05.21 14:40
이것 UEFI 모드는 어떻게 해야 되는지요?
Copilot 이 이런 답변을 했습니다.
이걸 어떻게 bat 파일로 구성해야 할까요? ㅠ.ㅠ
나Copilot
-
상발이 2024.05.21 15:24
S*K님께서 만드신 Batch 파일을 ChatGPT4o에게 UEFI 환경에서 동작하도록 수정해 달라고 했습니다. 제가 테스트 환경이 되어 있지 않아 테스트는 못해 보았습니다. 여건이 되신다면 테스트해 보시면 어떨까 합니다. (물론 오류가 발생할 수 있습니다만 현존하는 뛰어나다는 AI가 만든것이니...)
@prompt $s
@color 1f
@cd /d %~dp0
@title %~n0
@mode con cols=200 lines=1000
@setlocal enabledelayedexpansion
@reg query HKU\S-1-5-20 >nul 2>nul || echo.&& echo.&& echo. 관리자 권한으로 다시 실행될 겁니다&& echo.&& echo.&& pause&& PowerShell start -verb runas '%0'&& exit|| exit
:drv
@for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @fsutil fsinfo drivetype %%a: | findstr /i "루트 Root" >nul 2>nul && (set drv=%%a& goto :VHD)
@fsutil >nul 2>nul || @echo.&& echo.&& echo. fsutil 내장 명령이 작동하지 않아서 진행할 수 없습니다 && echo.&& pause&& exit|| exit
@echo.
@echo.==========================================================================================
@echo. 마운트할 드라이브 문자가 없습니다. 드라이브 문자를 1개 제거하고 누르세요
@echo.==========================================================================================
@echo.
@pause
@goto :drv
:VHD
@echo.
@echo.
@echo.==========================================================================================
@echo. VHD[x] 경로를 입력하세요. 예] "D:\VHD\Windows11.vhd"
@echo.==========================================================================================
@echo. VHD 파일에 "시프트+우클릭"으로 "경로로 복사" 클릭하시면 복사됩니다
@echo.==========================================================================================
@echo.
@set VHD=
@set /p VHD=입력하세요:
@for /f "tokens=*" %%a in (%VHD%) do set Name=%%~na
@if "%Name%" == "" cls& goto :VHD
(echo sel vdi file=%VHD%
echo attach vdi noerr
echo det disk) | diskpart | find /i "ID: {" && @echo.&& echo.&& echo. VHD가 GPT 형식이 아닙니다 && echo.&& pause&& exit|| exit
:attach
@set /a k+=1
>"!tmp!\disk.tmp" echo sel vdi file=%VHD%
>>"!tmp!\disk.tmp" echo sel par %k%
>>"!tmp!\disk.tmp" echo ass letter=%drv%
>>"!tmp!\disk.tmp" echo act
diskpart /s "!tmp!\disk.tmp" || @echo.&& echo.&& echo. diskpart 작업에 오류가 발생하여 진행할 수 없습니다 && echo.&& pause&& exit|| exit
@if /i not exist %drv%:\Windows\System32\ goto :remove
bcdboot %drv%:\windows /s %drv%: /f UEFI /L ko-kr || @echo.&& echo.&& echo. 부팅파일 만드는데 에러가 생겼습니다 && echo.&& pause
bcdedit /store %drv%:\EFI\Microsoft\Boot\bcd /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
bcdedit /store %drv%:\EFI\Microsoft\Boot\bcd /set {default} device partition=%drv%:
bcdedit /store %drv%:\EFI\Microsoft\Boot\bcd /set {default} osdevice partition=%drv%:
@echo.
@echo.==========================================================================================
@echo. VHD 를 해제합니다
@echo.==========================================================================================
:detach
>"!tmp!\disk.tmp" echo sel vdi file=%VHD%
>>"!tmp!\disk.tmp" echo detach vdi noerr
diskpart /s "!tmp!\disk.tmp"
@echo.
@echo.==========================================================================================
@echo. 모든 작업을 완료했습니다
@echo.==========================================================================================
@echo.
@pause
@exit /b
:remove
>"!tmp!\disk.tmp" echo sel vol %drv%
>>"!tmp!\disk.tmp" echo remove
diskpart /s "!tmp!\disk.tmp" || @echo.&& echo.&& echo. diskpart 작업에 오류가 발생하여 진행할 수 없습니다 && echo.&& pause&& exit|| exit
@goto :attach
-
타천사둘리 2024.05.21 16:05
이렇게만 작동합니다.
-
상발이 2024.05.21 16:25
테스트 해 주셔서 감사합니다.
시간 날때 ChatGPT에 물어보면서 저도 함 해봐야 겠네요..
Error 메시지가 나오면 ChatGPT에 넣어 주고 물어 보면서 진행해 보면 되는데 저런 결과가 나온다면...
어디서 부터 잘못된 건지....
-
상발이 2024.05.21 14:42
수고하셨습니다.
-
cungice 2024.05.21 15:00
수고 많으셨습니다.
-
할배장 2024.05.21 15:10
수고하셨습니다.
-
쭈니당 2024.05.21 15:13
수고하셨습니다. -
광풍제월 2024.05.21 17:26
수고하셨습니다.
-
격자 2024.05.21 18:09
수고많으셨습니다
-
타천사둘리 2024.05.21 22:26
UEFI/MBR 구분 겸용으로 수정해 주셨네요.
수고하셨습니다. 감사합니다. 꾸~~~벅
-
쭈니당 2024.05.22 00:21
수고하셨습니다. -
오이도행 2024.05.22 07:31
실컴에서 멀티부팅으로 잘 쓰고 있는 VHD를 시험해 봤습니다.
이런 경우는 왜일까요?
마운트는 A 드라이브더군요.
작업을 PE에서 해서 그럴까요?
-
강타 2024.05.22 09:11
수고하셨습니다~^^ 감사합니다!!
-
타천사둘리 2024.05.23 09:59
번거롭게 해 드려 죄송합니다.
이걸 UEFI WIM 파일을 당겨와서 VHD 를
만들 수는 없는 건지요?
-
와로 2024.05.30 12:58
오늘 짬이나서 스크립트 실행해봤는데 이후에 탑재하면 제 환경에선 이런 오류가 나오네요...
A드라이브로 마운트되고 탐색기에서 보이지 않을때도 있습니다
디스크 관리에선 정상적으로 보이구요
보이지 않을땐 우클릭 메뉴나 디스크 관리에 들어가 분리시켜줘야 하네요...
이 작업이후엔 새로 복사한 vhd와 건드리지 않은 다른 vhd도 탑재하면 같은 현상이 생깁니다
스크립트 실행시 오류 메시지는 없었습니다
레거시,uefi 환경에서 동일한 현상입니다
vhd가 아닌 실컴에서도 마찬가지고요
실컴과 VM부팅엔 문제 없습니다.
다른 자식vhd로 바꾸고 복구는 했습니다만
뭔가 꼬인거같은데 원인을 알수가 없네요...
-
iqoo 2024.06.07 10:18
초짜는 고수님들이 올려주시는거 쓰기에도 바쁘네요 ^^;;
수고하셨습니다. 감사합니다. 꾸~~~벅
제가 올린 의문점을 해결해 주셨네요.