이전 블로그에 해당 주제를 정리해 둔 포스팅(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} 로더를 이용해도 되지만, 저는 커널 디버깅용 로더를 따로 구성하는 방식으로 진행했습니다.


BCDEDIT /copy {current} /d "부팅시 화면에 보일 설명"
- "/copy" 옵션으로 {current} 로더와 동일한 로더를 하나 추가합니다.
- "/d" 옵션으로 부팅 시 화면에 보일 내용을 설정합니다.

※ 저는 기존의 description ("Windows 8.1") 뒤에 "[DEBUG]" 를 추가했습니다.
BCDEDIT /set {복사한 로더} debug on
- "/set" 옵션으로 복사한 로더에 디버깅이 가능하도록 설정합니다.

디버그 환경 설정

BCDEDIT /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200
- "/dbgsettings" 옵션으로 디버그 환경을 설정합니다.

※ "직렬 포트 : COM1" 을  이용하기 위해 SERIAL DEBUGPORT:1 로 설정합니다.

Guest OS 의 부팅 옵션 설정이 정상적으로 되었다면 재부팅 시 멀티 부팅 화면이 뜰 겁니다.

'기본 부팅'과 '디버그 가능 부팅'

WinDbg 에서 커널 디버깅 설정

마지막으로 WinDbg 에서 커널 디버깅을 설정합니다.

"File -> Kernel Debug..." 메뉴를 실행 후 'COM" 탭으로 변경~

WinDbg 의 커널 디버깅 설정

'Baud Rate' 항목은 Guest OS 에서 설정한 값인 "115200" 로 지정을 하고...

'Pipe' 항목에 체크...!!!

'Port' 항목엔 VirtualBox 직렬 포트 설정에서 입력한 경로를 그대로 입력합니다.


'확인'을 누르면...

OS 연결 대기 상태

디버깅할 대상을 기다리는 대기 상태가 됩니다.

이 상태에서 Guest OS 의 '디버그 가능 부팅' 을 선택하면...

OS 인식

Guest OS 에 연결되었다는 메시지가 뜨면서 커널 디버깅이 가능해집니다 ~ :)