이전 블로그에 해당 주제를 정리해 둔 포스팅(http://iam-hs.com/146)이 있지만~
내용을 조금 업데이트해서 새 블로그에도 올려봅니다. ^^;;;
VirtualBox 에서 '직렬 포트' 설정
먼저 VirtualBox 에서 Guest OS 의 '직렬포트' 를 설정합니다.
Guest OS '직렬포트' 설정 |
'직렬 포트 사용하기' 체크 박스를 클릭해서 활성화 시키면 하위 항목들에 대한 추가 설정이 가능해집니다.
'포트 번호' 는 그대로 "COM1" 로 두고, '포트 모드' 를 "호스트 파이프" 로 변경하고...
'존재하는 파이프/소켓에 연결' 항목을 클릭해서 체크 표시를 없애줍니다. (꼭!!!)
'경로/주소' 는 "\\.\pipe\[원하는이름]" 의 형태로 설정합니다.
참고로 '존재하는 파이프/소켓에 연결' 항목이 체크되어 있으면...
Guest OS 구동 시 아래와 같은 오류가 발생합니다. -_-;;;
'존재하는 파이프/소켓에 연결' 에 체크가 되어있으면 오류 발생 |
Guest OS 의 부팅 옵션 설정
VirtualBox 에서 '직렬 포트' 설정을 마친 후엔...
실제 Guest OS 안에서 커널 디버깅이 가능하도록 부팅 옵션을 변경해줘야 합니다.
WinXP 까지는 boot.ini 파일을 편집해서 설정이 쉬웠지만,
비스타 부터는 "BCDEDIT" 를 이용해야 되기에 다소 귀찮아졌습니다. oTL;;;
관리자 권한으로 '명령 프롬프트' 를 실행해서 "BCDEDIT" 를 이용해봅시다~~ :)
부팅 로더 추가 후 디버그 모드 활성화 |
"BCDEDIT" 를 실행하면 기본적으로 'Windows 부팅 로더' 에 {current} 하나가 있을 겁니다.
이 {current} 로더를 이용해도 되지만, 저는 커널 디버깅용 로더를 따로 구성하는 방식으로 진행했습니다.
- "/copy" 옵션으로 {current} 로더와 동일한 로더를 하나 추가합니다. - "/d" 옵션으로 부팅 시 화면에 보일 내용을 설정합니다. ※ 저는 기존의 description ("Windows 8.1") 뒤에 "[DEBUG]" 를 추가했습니다. |
- "/set" 옵션으로 복사한 로더에 디버깅이 가능하도록 설정합니다. |
디버그 환경 설정 |
- "/dbgsettings" 옵션으로 디버그 환경을 설정합니다. ※ "직렬 포트 : COM1" 을 이용하기 위해 SERIAL DEBUGPORT:1 로 설정합니다. |
Guest OS 의 부팅 옵션 설정이 정상적으로 되었다면 재부팅 시 멀티 부팅 화면이 뜰 겁니다.
'기본 부팅'과 '디버그 가능 부팅' |
WinDbg 에서 커널 디버깅 설정
마지막으로 WinDbg 에서 커널 디버깅을 설정합니다.
"File -> Kernel Debug..." 메뉴를 실행 후 'COM" 탭으로 변경~
'Baud Rate' 항목은 Guest OS 에서 설정한 값인 "115200" 로 지정을 하고...
'Pipe' 항목에 체크...!!!
'Port' 항목엔 VirtualBox 직렬 포트 설정에서 입력한 경로를 그대로 입력합니다.
'확인'을 누르면...
디버깅할 대상을 기다리는 대기 상태가 됩니다.
이 상태에서 Guest OS 의 '디버그 가능 부팅' 을 선택하면...
Guest OS 에 연결되었다는 메시지가 뜨면서 커널 디버깅이 가능해집니다 ~ :)
"File -> Kernel Debug..." 메뉴를 실행 후 'COM" 탭으로 변경~
WinDbg 의 커널 디버깅 설정 |
'Baud Rate' 항목은 Guest OS 에서 설정한 값인 "115200" 로 지정을 하고...
'Pipe' 항목에 체크...!!!
'Port' 항목엔 VirtualBox 직렬 포트 설정에서 입력한 경로를 그대로 입력합니다.
'확인'을 누르면...
OS 연결 대기 상태 |
디버깅할 대상을 기다리는 대기 상태가 됩니다.
이 상태에서 Guest OS 의 '디버그 가능 부팅' 을 선택하면...
OS 인식 |
Guest OS 에 연결되었다는 메시지가 뜨면서 커널 디버깅이 가능해집니다 ~ :)
제가 위대로 따라했는데 guest os에다 안하고 window 10ㅇㅔ다 해버렸는데.. 어떡하죠??.. 원상태로 바꾸는 방법이있나여
답글삭제BCDEDIT 부분 말씀하시는건가요...?
삭제로더를 새로 추가해서 설정하신거라면 추가한 로더만 삭제하면 되고..
기존 로더에서 설정하신거라면 변경한 값들만 다시 원래대로 돌려주면 됩니다.
BCDEDIT 에 익숙하지 않으시다면... 그냥 두시는걸 권장합니다..;;
원하던 정보를 쉽게 찾을수 있어 감사합니다 !
답글삭제뭔가 도움이 된 것 같아 뿌듯하네요~ :)
삭제