기 타 suk님 새로운 1회부팅, BCD 흔적 삭제를 적용하여 보았습니다
2023.07.27 13:01
먼저 좋은 지식을 배풀어 주신 suk님께 진심으로 감사드립니다
새로운 PE 1회 부팅방법이 너무 좋습니다.. 이렇게 좋은 방법이 있었다니..그 동안 노력이 헛고생을 한것 같은 느낌입니다
기존의 1회 부팅에서는 BCD 삭제, 램옵션 등록, 메뉴에 등록 이렇게 3번에 걸쳐서 cmd의 경우 for 문을 사용을 합니다..
이 방식이 for문이 없는것에 비해서는 시간이 걸립니다
suk님 방식에서는 새로운 PE 1회 부팅방법에서는 GUID 값을 고정된것을 사용하기 때문에 for문이 필요가 없습니다
구불구불한 길을 가다가 일직선으로 뻗은 길을 가면 그만끔 빠르겠죠..제가 느끼기에는 확실히 빨라졌습니다
suk님께서 소개를 하여 주신 방법이 2가지 입니다
가. 외국 PE에서 BCD에 흔적을 삭제하는 소스입니다
외국 PE에서는 bcdedit.exe를 실행시에 GUID 값을 나타내는 identifier 항목이 현지어로 나와서 기존 소스로는 삭제를 하지 못합니다
이것을 해결하기 위해서 nov님께서는 System32 폴더에 있는 bcdedit.exe를 Windows 폴더에 복사후 사용하는 방법을 알려주셔서
저의 경우 오토잇과 cmd 버전 둘다 이방식을 적용을 하였습니다
suk님께서는 bcdedit.exe가 System32폴더에 있어서 identifier 가 현지어로 보이는것을 Find.exe를 사용해서 GUID 값을 추출하는 방법
입니다.
댓글에 업데이트 해주신 cmd는 아주 잘됩니다..
결론부터 말씀을 드리겠습니다., Find.exe가 여러번 사용이 되어서 속도가 느립니다.. suk님께서 고민을 하시고 만들어 주신 소스입니다만
이소스는 새로운 PE 1회 부팅방법 때문에 전혀 필요가 없게 되었습니다
suk님께서 업데이트 해주신 내용입니다
for /f "tokens=2" %%a in ('"bcdedit /enum all /v | find " {" | find "-""') do bcdedit /enum %%a | find "description " | find /i " PEBoot" && bcdedit /delete %%a /f /cleanup
나 새로운 PE 1회 부팅방법 입니다
저의 기준입니다만..이 방법이 최고인것 같습니다.. suk님 감사합니다
아래는 suk님께서 알려주신 방법입니다. GUID 값이 고정값이어서 등록 삭제시 for 문이 필요없어서 속도가 빠릅니다
GUID 값이 고정이어서 등록할때마다 먼저 삭제후 등록을 해주어야 합니다
bcdedit /delete {11111111-1111-1111-1111-111111111111} /f /cleanup >nul 2>nul
bcdedit /delete {00000000-0000-0000-0000-000000000000} /f /cleanup >nul 2>nul
bcdedit /create {11111111-1111-1111-1111-111111111111} /application osloader /d "PEBoot"
bcdedit /create {00000000-0000-0000-0000-000000000000} /device /d "PEBoot"
결론부터 말씀드리겠습니다 위의 소스는 그대로 사용을 할수가 없습니다..하지만 답이 같이 있습니다
{00000000-0000-0000-0000-000000000000} 값이 문제입니다
저는 처음에 {11111111-1111-1111-1111-111111111111}로 BCD 메뉴에 등록한것이 문제가 있는 줄 알았습니다
검색하던중에 찾은 소스입니다 아래는 러시아 사이트에서 있는 것입니다.. 2017년 3월에 쓴 글이네요..
{11111111-1111-1111-1111-111111111111} 로 BCD 메뉴에 등록을 하는 소스입니다
{11111111-1111-1111-1111-111111111111} 와 {ramdiskoptions} 를 사용하고 있습니다..잘 됩니다
bcdedit /create {11111111-1111-1111-1111-111111111111} /d "Asp.Style" /application osloader >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} device ramdisk=[%systemdrive%]\bost\boot.wim,{ramdiskoptions} >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} inherit {bootloadersettings} >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} locale ru-ru >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} nointegritychecks yes >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} testsigning yes >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} osdevice ramdisk=[%systemdrive%]\bost\boot.wim,{ramdiskoptions} >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} systemroot \windows >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} detecthal yes >nul
bcdedit /set {11111111-1111-1111-1111-111111111111} winpe yes >nul
bcdedit /displayorder {11111111-1111-1111-1111-111111111111} /addlast >nul
bcdedit /create {ramdiskoptions} >nul
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=%systemdrive% >nul
bcdedit /set {ramdiskoptions} ramdisksdipath \bost\boot.sdi >nul
이 러시아분 소스에는 Winload.xxx를 등록하는 path 부분이 없습니다..외국에서 이렇게 활용하시는 분이 있으셨네요
위의 소스를 보고 문제가 있다고 한 내용을 아시는 분도 있으실것 같습니다
아래는 {00000000-0000-0000-0000-000000000000} 를 구글에서 검색했을때 나오는 것들중에 하나입니다
https://stackoverflow.com/questions/7001362/guid-of-00000000-0000-0000-0000-000000000000-causing-merge-index-violation
{00000000-0000-0000-0000-000000000000} 값이 주로 에러가 발생할때 보이는 값인것 같습니다..GUID를 만들었는데 이 값이 유효
하지 않는 값이라고 하네요...이 값대신에 잘되는 {11111111-1111-1111-1111-111111111112} 것에서 숫자하나만 바꾸었습니다
이 값으로는 아주 잘됩니다
저는 앞으로 PE 1회 부팅에 suk님게서 알려주신 새로운 PE 1회 부팅방법을 사용할것 같습니다
사용기의 사진들을 보시면 쉽게 이해가 되실것 같습니다
1. 1번처럼 inedtifier 항목에서 GUID 값을 찾아서 메뉴를 삭제하고 있습니다 외국 PE에서는 이 부분이 현지어로 나와서 GUID 값을 찾지
못해서 작동을 하지 못합니다
2번 제가 bcdedit.exe 대해서 아는것이 없어서 램옵션을 만들때 만들고나서 이름을 바꾸는 방식을 했었습니다..3번에 보시면 이름으로
바로하는 소스가 있는데 제눈에는 보이지 않았나 봅니다..DengJang님 댓글을 보고 갑자기 생각이 나서 적용을 해보았더니 아주 잘됩
니다...DengJang님 감사합니다..
2. 중국 PE로 여러번 부팅을 한 상태입니다.. 그동안은 사용기를 쓰기 위해서 PE 부팅 확인 메세지가 있었습니다..이것 없이 테스트를 하던중
에 보이까 이상하게 중국 PE에서 몇초 딜레이가 있네요..윈도우에서는 바로 재부팅이고 왕자님 저용량 PE에서는 윈도우보다는 느리지만
순간이 지나면 재부팅이 됩니다..이렇게 딜레이가 되는 PE가 있을수 있어서 메세지 프로그램에 아래 기능을 추가를 하였습니다
cmd에서 PE일때만 실행이 되도록 하였습니다.. 한글이 네모로 보여서 한글이 아닌 경우 영문으로 보이게 하였습니다
3. cmd 실행시 삭제를 하지 못해서 위에 4개 아래에 4개가 등록이 되었습니다
4. suk님께서 업데이트 해주신 소스입니다..find.exe가 3번 사용이 되고 있습니다
5. cmd 실행시에 휙~하고 지나가는것 아니라 하나씩 삭제가 되고 있구나 하는것을 느낄수 있습니다..find.exe를 3번 사용하고 있어서 조금
느릴수 밖에 없을것 같습니다...아쉽게도 이 소스는 새로운 PE 1회 부팅방법 때문에 실전에 활용하지 못하게 되었습니다
6. 깨끗히 삭제되었습니다..suk님 감사합니다..
7. GUID 값을 {11111111-1111-1111-1111-111111111111}와 {00000000-0000-0000-0000-000000000000}를 활용한것입니다
PE에서는 간단한 메세지를 보여주도록 하였습니다.. 고정된 GUID값을 사용하면서 for 문이 없어져서인지 재부팅이 빨라졌습니다
8. 랩옵션이나 메뉴 등록시에 for문이 필요가 없습니다.. 저는 path에 등록 없이 활용을하고 있습니다
9. 사용기용으로 메세지가 있게 했습니다만..메세지없이 진행을 하여 보겠습니다..윈도우에서는 바로 재부팅이 됩니다
10. 저 같은 초보에게는 어려운 순간이죠..다행이 가상에서 테스트를 한것이어서 ISO 파일로 부팅을 진행하였습니다
11. 러시아분 소스를 보기전에는 BCD 등록 메뉴를 여러번 살펴보아도 잘못된 부분이 없었습니다
12. 램옵션 등록도 잘못된 부분이 없습니다..이유는 GUID 값 때문으로 생각을 했습니다
13. 다른 램옵션으로 설정을 변경하여 보았습니다
14. 이 램옵션이 적용이 되었습니다
15. 부팅이 되지 않습니다
16. 이 부분을 삭제를 하여 보겠습니다..사용기에서는 이미 다 알고 정리를 하는것이어서 간단히 해결이 된것처럼 보일것 같습니다
구글에서 검색을 하다가 러시아어로 된것에서 {ramdiskoptions}를 사용하는것을 보고 하나씩 테스트하여 보면서 알게된것입니다
17. 아예 램옵션을 삭제를 하였습니다
18. 윈도우에서 1회 부팅을 한것으로 부팅이 되었습니다..BCD 메뉴가 아니라 램옵션이 문제였습니다
19. 구글에서 {00000000-0000-0000-0000-000000000000}로 검색을 하면 에러시에 이 값이 나오는것 같아서 잘되는 BCD 메뉴값에 숫자
하나만 바꾸어 보았습니다..
20. BCD 흔적 삭제 테스트를 위해서 PE 부팅시에 우클릭에 자동 등록이되게 하였습니다
21. GUID값을 바꾸어서 PE로 부팅이 잘되었습니다..우클릭에 자동 등록이 되었습니다
22. cmd가 실행이 되면 제일먼저 BCD 흔적부터 삭제를 합니다
23. for문이 있을때 보다 빨라져서 아래 안내글이 보이고 바로 재부팅이 되네요
24. 중국 PE에서도 재부팅이 빨라진 느낌입니다
25. 여러번 부팅을 해도 cmd 실행시에 기존것을 삭제하고 새로 등록을 하기 때문에 항상 1개만 있습니다
26. 윈도우 부팅후 깨끗이 삭제가 되었습니다
27. 마무리
suk님께서 알려주신 새로운 PE 1회 부팅방법 때문에 저 나름대로는 열심히 공부했던것들이 다 소용이 없게 되어서 좀 허무하기는 합니다
그래도..너무 좋은 방법이죠..소스도 간단해지고..속도도 빨라지고..저만의 생각일수도 있지만 PE 1회 부팅에는 제일 좋은 방법 같습니다
PE 1회 부팅에 관심이 많으신 분이시라면 한번 활용해 보시는것이 좋을것 같습니다
suk님 좋은것을 배웠습니다..진심으로 감사드립니다
장마가 끝나고 무더위가 시작되었습니다
건강에 유의하시길 바랍니다
댓글 [13]
-
스마일^_^ 2023.07.27 13:31
-
dakija 2023.07.27 13:37
고생하셨습니다
-
붉바리 2023.07.27 13:37
감사합니다.
-
개골구리 2023.07.27 13:46
고생하셨습니다
-
suk 2023.07.27 13:50
아 제가 알려드린 것에 좀 문제가 있었군요
저는 검색하지 않고, 그냥 예전에 고정된 GUID를 사용한다는 것이 기억이 나서
아무 숫자나 예제로 올린 것입니다. 쉽게 바로 생각나는 것이 1과 0 이었습니다
{11111111-1111-1111-1111-111111111111} 과 {00000000-0000-0000-0000-000000000000}
저는 기존에 위에 GUID를 사용하시는 분이 계셔서 중복되는 것만 걱정했는데요. 다른 문제가 있었군요
저는 일단 이전 스샷에 올린대로 1과 0 GUID가 bcdedit로 등록되는 것까지만 확인했습니다
다른 언어로 나오는 외국 PE에서 bcd 흔적 삭제 구문은 그 전의 구문보다는 이것이 좀 더 빠릅니다.
for /f "tokens=1*" %%a in ('bcdedit /enum all /v') do @(echo "%%b" | find "{" | find "-" >nul && set guid=%%b&if /i "%%b" == "PEBoot" bcdedit /delete !guid! /f /cleanup)
for 구문 위에 setlocal enabledelayedexpansion 가 필요합니다
-
왕초보 2023.07.27 14:07
suk님께서 GUID 값일 고정해서 사용하는것을 알려주신 덕분에 PE 1회 부팅 프로그램에 혁신이 왔습니다.
소스가 간단해지고 빨라져서 너무 좋은 방법입니다..다시 한번더 감사인사를 올립니다
BCD 흔적을 삭제하는 소스도 다시 업데이트 해주셨네요..
cmd는 어려워서 아무리 보아도 암호같이 보입니다..
항상 좋은일만 있으시길 바랍니다
----------------------------------------------------------------------------------------------------
BCD 메뉴 부분이 삭제가 되지 않습니다..참고하여 주십시요
1. BCD에 흔적이 있습니다
2. 업데이트된 소스입니다
3. cmd 실행 모습입니다
4. 램옵션을 모두 삭제가 되고 BCD 메뉴 흔적이 남아 있습니다.
-
suk 2023.07.27 15:11
비교적 간단하게 생각했는데요. 은근히 변수가 있나보네요
저는 삭제 구문은 이 정도에서 물러날까 합니다. 이전 삭제 구문이 더 원시적이었는데요. 속도는 느리지만 작동하나봅니다
-
왕초보 2023.07.27 16:21
suk님의 새로운 방식 덕분에 BCD에 등록하거나 삭제하기 위해서 GUID값을 찾은일 자체가 없어졌습니다.
소스도 간결해시고 속도도 빨라졌습니다
감사인사를 수십번 드려저 부족한 기분입니다...이제는 완전한 모습으로 된것 같습니다
좋은일만 있으시길 바랍니다
-
DengJang 2023.07.27 14:35
덕분에 v3 완성했습니다.ㅋㅋㅋ 감사합니다!
-
왕초보 2023.07.27 14:40
suk님의 새로운 방식을 적용하신것인가요...
현재까지는..제일 좋은 방법인것 같습니다...저는 오토잇도 업데이트 중입니다..
이제는 cmd에서 레지하이브해서 BCD 삭제하는것 진행을 해도 될것 같습니다.
-
광풍제월 2023.07.27 19:09
수고하셨습니다.
-
매화꽃 2023.07.27 23:01
수고많으셨습니다.
-
상발이 2023.07.28 07:10
수고하셨습니다.
수고하셨습니다.