2015년 7월 28일 화요일

visual studio 2013 을 이용한 windows kernel driver 개발환경 만들기

visual studio 를 이용해서 windows kernel driver 를 만들고 debugger 붙이기

우선, kernel driver test PC 를 준비해야한다.
개발용 PC 에 직접 Test 를 실행하다가는 개발용 PC 를 포맷해야하는 일이 일어날 수도 있다. 이 경우 작업내용도 다 같이 날아갈 수도 :$

test PC 는 남아도는 PC 를 하나 구해도 상관없지만, 난 그런 자원이 없으므로 Virtual machine (VM) 을 하나 만든다. 그리고 개발용 PC 를 구한다. 그런데 내 개발용 PC 가 ubuntu 인 관계로 개발용 VM 을 하나 또 만들었다.

즉, 내 환경은 ubuntu 위의 virtual box : 개발용 VM1, Test 용 VM2

우선 VM1 에 windows 7 을 설치했다.
그리고 대충 업데이트들 하고
windows WDK 8.1 를 설치!
( https://msdn.microsoft.com/en-us/windows/hardware/gg454513.aspx )
그리고 clone 해서 VM2 를 만들었다. VM2의 컴퓨터 이름은 미리 바꿔주자. 나중에 헷갈림

이후 VM1 은 cpu 랑 ram 을 가능한 크게 주고, VM2 는 조금만 주었다.
Network 설정은 bridge 로 설정하였는데, NAT network 로 묶어도 된다.
( 여튼 서로 network 으로 VM1 에서 VM2 로 통신할 수 있게만 해주면 된다.
윈도우탐색기에서 네트워크를 클릭했을때 서로 보이면 ok )

그리고 VM1 과 VM2 를 serial 로 연결해준다.
( https://www.howtoforge.com/how-to-set-up-a-serial-port-between-two-virtual-machines-in-virtualbox )
이 과정을 지나면 VM1 을 켜야지만 VM2를 켤 수 있다.

이제 hardware 설정은 끝났고, 필요한 software 들을 설치한다.
VM1 에는 개발툴인 vs2013 을 설치~
VM2 에는 WDK target 설정을 위해 아래 패키지를 설치한다.
( C:\Program Files\Windows Kits\8.1\Remote\x86\WDK Test Target Setup x86-x86_en-us.msi
 당연히 x86 부분은 본인의 arch 에 맞는 걸로 변경해서... ㅎㅎㅎ)


자, 그러면 VM1 vs2013 을 켜고
Driver > Test > Configure Computers..., 선택 후 Add a new computer.
Computer name 에 VM2의 이름 (네트워크상의 컴퓨터이름) 을 입력하고
2번째 항목 (Provision computer and choose debugger settings) 선택 후 다음
com port 설정이 맞는 지 확인하고 또 다음.
그러면 VM2 에 이런 저런 창들이 떴다 없어졌다 하면서 리부팅도하고 설정이 된다.
이 때 VM2 의 windows 사용자 계정에는 반드시 password 를 설정되어 있어야한다.
도중에 한 분 물어보는데 password가 없으면 통과가 안된다.

이 과정이 잘 안된다는 사람들이 많은데,
네트워크 설정이랑 serial 설정만 제대로 되어있다면 문제 없이 동작한다. 잘 안되는 것 같으면 이 두 가지 설정을 다시 확인하자.

아래 링크대로 따라서 hello driver 를 하나 만든다.
https://msdn.microsoft.com/ko-kr/library/windows/hardware/hh439665(v=vs.85).aspx )
동작확인이 끝나면 개발환경 세팅 끝!





댓글 없음:

댓글 쓰기