#VSCode

커널 개발 시에는 빌드, 테스트, 디버깅까지 이어지는 과정이 꽤나 번거롭다. 이 때문에 QEMU와 gdb를 연동하여 개발 환경을 구축하는 것을 보았다. 그에 비할 바인지는 모르겠지만 리눅스 그래픽스 스택과 관련한 개발에서도 몇 애로점이 있었다. 귀찮더라도 최초에 개발 환경을 구축하는 것이 낫다는 것이 정신 건강에 이로움을 나중에야 깨달았다.

보통, 리눅스를 이용한 개발은 가상머신에서 진행한다. 우분투 같은 배포판은 가상머신에 설치해도 가상머신 창의 크기에 따라 자동적으로 해상도가 조정된다. 하지만 GNOME이나 KDE와 같은 GUI 데스크톱 환경이 제공되지 않는 환경에서의 개발은 매우 불편하다. 가상머신 창의 크기를 키워도 800x600의 해상도로 고정되기 때문이다.

방법 1. putty + VS Code

putty를 이용하면 호스트에서 원격으로 가상머신 상에 접속하여 개발이 가능하다. 심지어 DISPLAY 환경변수의 값을 “:0”으로 설정하면 원격으로 리눅스 그래픽스 스택을 테스트할 수 있다! 물론, 디버깅 용도로 출력되는 메세지는 별도로 putty를 통해 확인할 수 있다는 점도 큰 장점이다. 한편, 코드 분석하기 위해서는 VS Code를 주로 사용하는데, 개발은 putty, 테스트는 가상머신, 분석은 VS Code에서 수행하니 매우 정신이 없었다. 물론, vi + ctags를 활용하면 putty에서 개발과 분석을 통합할 수 있지만 VS Code가 매우 좋은 도구라서 다른 방법을 찾기 시작했다.(vi와 친하지 않다…)

방법 2. Remote VS Code

VS Code는 Remote VS Code라는 플러그인을 제공한다. 이 플러그인은 이런거다. 우선, 가상머신에 rmate라는 바이너리와 ssh를 설치한다.(ssh는 putty를 사용하기 위해서도 필요하다) ssh를 설치했으므로 VS Code가 제공하는 쉘 상에서 역 터널링(reverse tunneling) 방법으로 가상머신에 접속한다. 이후, 쉘에서 “rmate [파일 경로]”를 입력하면 해당 파일을 VS Code에서 편집할 수 있다.