윈 도 우 BCDEdit를 이용한 부팅 메뉴 추가문의
2022.01.07 18:50
인터넷 구글링을 통해 아래의 배치 내용을 만들었습니다.
이렇게 Batch 파일로 만들어 관리자권한으로 실행하면 부팅 메뉴가 추가 됩니다.
그러나 실제 부팅해서 Recovery 메뉴를 실행하면 부팅이 되지 않습니다.
T.Dism을 이용하여 Z: 드라이브 루트에 있는 boot.wim 파일을 등록하면 정상으로 부팅까지 됩니다.
혹시 아래 배치 명령어가 어디 잘못 되었는지 BCD 관련 고수분들의 도움 부탁 드리겠습니다.
참고로 Z 드라이브는 Disk 0 에 Partition 4 의 드라이브 명입니다.
UEFI 부팅이고요~ wim 파일과 sdi 파일은 Z 드라이브 루트에 있습니다.
P.S. 추가로 청락님의 _런원스부트_All 마지막 버전에 포함되어 있는 WimAddBootMenu.exe 파일로 wim 파일을 등록해 봤는데
이것도 메뉴 등록은 되는데 부팅은 실패하네요~
if exist Z:\boot.wim (
if exist Z:\boot.sdi (
bcdedit /create {ramdiskoptions} /d "Recovery" || bcdedit /set {ramdiskoptions} description "Recovery"
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=Z: || goto _dynamic
bcdedit /set {ramdiskoptions} ramdisksdipath Z:\boot.sdi
for /f "tokens=1-5 usebackq delims=-" %%a in (`bcdedit /create /d "Recovery" /application osloader`) do (
set first=%%a
set last=%%e
set guid=!first:~-9!-%%b-%%c-%%d-!last:~0,13!
)
bcdedit /set !guid! device ramdisk=Z:\boot.wim,{ramdiskoptions}
bcdedit /enum bootmgr | findstr bootmgfw.efi
bcdedit /set !guid! path \Windows\system32\boot\Winload.efi
bcdedit /displayorder !guid! /addlast
bcdedit /set !guid! locale Ko-KR
bcdedit /set !guid! inherit {bootloadersettings}
bcdedit /set !guid! osdevice ramdisk=Z:\boot.wim,{ramdiskoptions}
bcdedit /set !guid! systemroot \Windows
bcdedit /set !guid! nx OptIn
bcdedit /set !guid! detecthal yes
bcdedit /set !guid! winpe yes
댓글 [15]
-
왕초보 2022.01.07 19:16
-
상발이 2022.01.07 19:36
답변 감사합니다.
T.Dism 실행 후 마지막 기타 탭에 wim 파일 검색 후 등록 버튼만 누르면 자동으로 부팅 메뉴에 추가 되고 정상 부팅이 됩니다.
여러번 해 봤는데 T.Dism은 잘되는 데 구글에서 구할 수 있는 스크립트 파일로 등록해 보면 거의 부팅 실패 하네요~
혹시 suk님의 cmd가 어디 있는지 링크 알려주시면 제가 한번 테스트해 보고 싶습니다.
부탁 드리겠습니다.
-
왕초보 2022.01.07 20:05
예...등록은 되는것은 알고 있습니다
숨김파티션에 Boot.wim 파일을 넣어야 하는데 이것을 cmd로 하셨는지 수동으로 하셨는지가 궁금해서 그렇습니다
suk님의 오래된 cmd 파일을 boot.wim 파일과 같은 위치에 있어야 합니다..이때 boot.sdi가 숨김파션에 복사가 되는데 이 경우 부팅에러가납니다..부팅 에러 사진을 올려주시면 같은 경우인지 알수가 있습니다..boot.sdi를 숨김파티션이 아닌곳에 두면 부팅이 되네요...테스트 하면서 관련 사진을 캡처를 했습니다..내용은..사용기에 정리를 하겠습니다..이 cmd 파일이 2015-11-29일자네요..아주 오래되었네요..cmd에 winload.efi 내용이 있는것을 보면 MBR UEFI 겸용인것 같습니다구버전도 아주 잘됩니다...처음에 테스트할때 BCD 관련해서 문제가 있었나 봅니다
BCD에서 깨끗하게 다 정리를 하고 새로 테스트를 하였더니 잘 됩니다
제가 큰 실수를 했습니다...suk님 죄송합니다...
잘되는 내용은 맨 아래 댓글에 정리를 하도록 하겠습니다
-
suk 2022.01.07 20:03
질문하신대로 Z:\boot.wim와 Z:\boot.sdi 파일이 있는 경우 부팅 등록되게 했습니다
위 스샷에 Z:\boot.wim 부팅 등록된 것이 보이게 했습니다
-
왕초보 2022.01.07 20:06
댓글을 쓰고 있는 동안에 suk님께서 글을 써주셔네요..
bat 파일 감사합니다..
-
상발이 2022.01.07 20:17
답변 감사합니다.
테스트 해 보도록 하겠습니다.
-
왕초보 2022.01.07 20:30
감사합니다....숨김파티션에서도 아주 잘됩니다
1. 숨김파티션을 bootice로 Z:로 마운트 한후 등록한것입니다..
2. boot.sdi 가 1:1 이라는 디스크 번호 파티션 번호로 등록이 되었습니다
3. 현재 숨김파티션으로 되었습니단
4. pe로 부팅이 잘되었습니다..
5. suk님 감사합니다..
-
메아리 2022.01.07 23:14
감사합니다.^_^
-
왕초보 2022.01.07 20:44
궁금해서 T.Dism 으로 직접 등록하는것을 해보았습니다..말씀하신것처럼 잘 됩니다..
1. 아래 순서대로 등록을 하였습니다
2. 등록이 잘되었습니다
3. T.Dism을 종료하면 자동으로 다시 숨김파티션이 되네요..
4. bootice에서 등록된것을 확인하여 보았습니다
5. 1:1 디스크 번호 파티션 번호로 등록이 되었습니다
6. 부팅도 잘되었습니다
7. 윈도우 7을 사용하고 있어서..wim 풀고 압축하는데만 사용을 해서 최신 버전에서 이런 기능이 있는것을 알지 못하였습니다
상발이님 덕분에 T.Dism에서 이런 기능이 있다는것도 알게되고 이렇게 체험까지 해보게 되었네요...감사합니다
저도 이제는 최신 버전을 사용해야겠습니다.
-
왕초보 2022.01.07 21:17
2015년 구버전으로 다시 테스트를 하여 보았습니다
구버전으로 처음 테스트 할때 BCD에 문제가 있었나 봅니다..BCD를 깨끗이 정리를 하고 다시 테스트를 하였더니 잘 됩니다
이상하기는 하였습니다...부족한 제가 실수를 한것 같습니다...suk님 죄송합니다..
1. T.Dism 을 마운트 하고 boot.wim은 수동을 복사후 cmd로 등록하는 방식으로 하였습니다
2. 2015년 구버전으로 진행을 하였습니다
3. 등록이 되었습니다
4. 구버전은 boot.sdi를 복사를 해주고 있습니다
5. T.Dism 종료후 bootice에서 확인을 하여 보았습니다
6. 1:1 로 등록이 되어 있습니다... 부팅이 안될때 여기를 캡쳐를 했어야 하는데요..이 부분을 안했네여
7. 부팅이 잘되었습니다
8. 처음 구버전으로 해 볼때 실패한 내용입니다.. 등록을 잘되어서 진행을 했었습니다
9. 이런 에러가 발생을 했었습니다
10. bootice에서 등록된것을 확인한 모습입니다
11. 구버전 cmd로 등록했을때 모습입니다
12. 혹시나 해서 T.Dism 로 등록을 했는데도 에러가 나서 C: 루트에 테스트로 boot.sdi를 넣어 본것입니다
13. C: 에 boot.sdi를 복사하고 나서 부팅에 성공한 모습입니다...뭔가 에러가 생겼었나 봅니다..이런 경우도 있네요
14. 덕분에 저도 오랜만에 BCD 등록관련해서 공부를 한것 같습니다
원하시는 결과를 얻으시길 바랍니다
-
상발이 2022.01.07 21:22
저의 질문에 답변과 테스트를 해 주신 모든 분들께 너무 감사 드립니다.
하루간 골머리 썩혔던 것을 이제야 해결하니 너무 홀가분 하네요~
감사합니다. 수고하세요...
-
ToPs 2022.01.08 00:03
수고하십니다.
============================================
아래의 글은 아무내용도 없이 너무 길어서 나중에 삭제하겠습니다.
제가 아는 것은 없지만 볼륨을 탑재하지 않고 그냥 등록해서 사용하기는 합니다.
아는 것이 없어서 내용이 맞지 않는 부분이 있더라도 이해해주시면 감사하겠습니다.
echo lis vol | diskpart
명령으로 볼륨 번호를 확인 후 ramdisk=[\Device\HarddiskVolume번호]\boot.wim 장치의 boot.wim을 등록해주면 될지 않을까요?
첨부 파일을 실행 후 9번 볼륨의 Root에 있는 boot.wim을 등록
bcdedit /enum {00000000-0000-0000-0000-000000000001}을 실행한 경우입니다.
혹시, guid {00000000-0000-0000-0000-000000000000}의 경우 안되었던 것으로 기억합니다.
guid의 경우 형식에 맞으면 ... 등록 후 사용이 가능합니다.
저 처럼 지정해서 사용하시지는 않을것 같아서 그냥 참고만 하시면 되실것 같습니다.
Windows 부팅 로더
-------------------
identifier {00000000-0000-0000-0000-000000000001}
device ramdisk=[\Device\HarddiskVolume9]\boot.wim,{11111111-1111-1111-1111-111111111111}
description WinPE
osdevice ramdisk=[\Device\HarddiskVolume9]\boot.wim,{11111111-1111-1111-1111-111111111111}
systemroot \Windows
detecthal Yes
winpe Yes
아래는 부팅된 윈도우의 boot.sdi를 사용해서 {11111111-1111-1111-1111-111111111111}로 guid를 등록한 경우입니다.
사용하시는 장치의 boot.sdi 상태나 winre.wim의 등록 여부도 모르고 . . .
저는 그냥 윈도우의 boot.sdi를 등록해서 사용합니다.
C:\Windows\system32>bcdedit /enum {11111111-1111-1111-1111-111111111111}
장치 옵션
--------------
identifier {11111111-1111-1111-1111-111111111111}
ramdisksdidevice partition=C:
ramdisksdipath \Windows\System32\boot.sdi
C:\Windows\system32>
이 정도의 정보만 넣어도 부팅이 되실것 같습니다.
그냥 참고하시라고 사용하는 배치파일을 첨부해보았습니다...
guid를 생성되는 것을 사용하지 않고 제가 부여해서 사용한 것이라
볼륨으로 경로를 지정하는 것만 사용하시는 것에 적용하시면 되실것 같아서 그냥 사용하는 것을 참고만하시라고 첨부했습니다.
굳이 볼륨을 탑재하지 않아도 등록이 가능한것만 아시면 되실듯합니다.
사용하던 것을 조금전에 질문 내용에 맞게 고쳐본다고했지만 뭔가 틀린 부분이 있을수도 있습니다.
관리자 권한으로 실행 후 9번 볼륨을 선택했습니다.
아래는 삭제하는 스크린 샷입니다.
-
왕초보 2022.01.08 10:35
여기에서 뵙네요...ToPs님 좋은 정보 감사합니다..
열공을 해야할것 같습니다
항상 좋은일만 있으시길 바랍니다
-
DarknessAngel 2022.01.08 00:29
작년에 SRS8땜에 한적 있는 삽질이네요
제경우 신경쓰기 귀찮아서 파티션 번호를 입력해두고 문자 수동으로 주고 거기 맞추어서 짜버렸습니다
-
왕초보 2022.01.08 10:37
cmd자동이 되면 초보분들께서는 이 방식이 더 편하시고 고수님들께서는..수동이 편하실수도 있습니다
디스크 번호 자체로 입력을 하시나 봅니다..저는 주로 bootice로 하고 있습니다..
그대로 테스트를 해보려고 해도 소스가 다 있는것이 아닌것 같습니다..
goto _dynamic 문도 있네요
Z: 마운트가 되었다면...suk님의 등록하는 cmd를 활용하셔도 되실것 같기도 합니다
"T.Dism을 이용하여 Z: 드라이브 루트에 있는 boot.wim 파일을"라도 되어 있어서요...마운트후 boot.wim sid 파일을 수동으로 복사를
하시는것인지요