vs code + WSL

Featured image

윈도우즈에서 WSL을 쓰게 되면 리눅스를 위해 만들어졌던 것을 일부러 윈도우즈용으로 포팅해서 나온 것들을 설치해야 할 이유가 없다. 더구나 윈도우즈에서는 불필요하게 덩치가 큰 것들인데 리눅스에서는 가볍게 해결할 수 있는 것들은 윈도우즈에서도 놔둘 이유가 없어진다.

개발툴의 경우도 그러하다. WSL이 있다고 하면 구태여 무거운 통합환경을 들고 있어야 할 이유가 없어서, 간단한 텍스트 에디터만 있으면 가볍고도 빠르게 일을 할 수 있다. 그런데 요샌 텍스트 에디터라도 가벼운 것이란 게 사실 없긴하지만, 그래도 vs code는 나름 쓸만하다.

vs code로 편집 작업을 해야한다고 할 때 WSL와 윈도우즈 사이를 오가는 것이 사실 좀 불편하다. 가장 큰 것이 WSL과 윈도우즈간 path가 일치하지 않는다는 것인데, vscode는 extension으로 이 문제를 해결 했다.

어떻게 하느냐?

vs code에 WSL 용 플러그인(extension)을 가져다 설치한다.

그 다음 wsl로 가서 “code .”로 해서 code를 부른다. 대개 WSL하면 우분투를 예로 드는데, WSL로 올릴 수 있는게 우분투 뿐 아니고, WSL에서 돌아가는 어떤 리눅스이든 별탈 없이 지원이 된다.

그러면 wsl의 리눅스를 이용해서 wget으로 vs code server(?)라는 것을 설치하고 그것이 윈도우즈에 설치된 vs code를 마치 리눅스에서 띄운양 동작하게 해준다. 같은 vs code인데 WSL에서도 부를 수 있고 윈도우즈에서도 부를 수 있다. MacOS 같으면 그 자체가 unix 환경이니까 그냥 자연스러운 것인데, 윈도우즈만 요즘 세상 MS-DOS로 출발한 그 구태를 여전히 유지해야하다보니 이런 생쑈를 하고 있는 것이라고 볼 수 있지만, 그 사람의 컴퓨터 라이프가 윈도우즈에서 출발했던 사람인데 linux를 써야 하는 상황에 놓이고 보면 참 좋은 기능이구나 할 수 있겠지.

그러면 make라든가 git이라든가 그외에 다양한 소프트웨어들을 윈도우상에 설치할 필요 없이 wsl안에 있는 리눅스에 설치해놓으면 vscode가 알아서 가져다 쓴다. 이점도 아주 매력적이다.

WSL이 docker처럼 동작하지만 사실 docker처럼 기민하진 않고, 그렇지만 동작속도는 대단히 빨라서 참 좋다. WSL2로 오면서 WSL에서 응용 프로그램을 동작시키면 윈도우즈상에서는 VMMEM이란 프로세스가 뜬다. 또 자신의 파일 시스템을 vmdk라는 가상 드라이브 파일로 만들어놓는다. 사실 그전엔 일반 윈도우즈 파일들과 별 다름없이 되어있었는데 (그래서 편했는데) permission의 문제가 있어서인지 그렇게 만들어버렸다.

여기서 한가지 궁금증이 생기게 된다. WSL1대비 WSL2 속도가 어떻게 되었냐고?

WSL2에 와서 빨라졌다는 사람이있고 그렇지 않은 사람들이 있는데, 파일 시스템이 가상시스템으로 되면서 속도가 빨라진 것이 체감된다. 그냥 벤치를 돌리면 사실상 큰 차이를 느낄 수 없다. 벤치 점수는 그때 그때 조금씩 다르기 때문이기도 하다.

분명히 최근 버전의 linux native한 상태보다 약간 느리다. 그래도 윈도우즈에서 돌아가는 qemu보단 빠르다. WSL2에서는 docker도 돌릴 수가 있다. systemd는 이상하게 잘 안도는 것 같다. WSL1에서는 원래 안됐지만 WSL2에서 이걸 가능하게 했다는 이야기가 있는데, yuk7이 풀어놓은 arch linux에서는 잘 안된다.

이게 머리만 좀 잘 쓰면 docker처럼 쓸 수가 있다. docker처럼 개개의 container에 NIC를 붙인다거나 해서 저희들끼리 연결되고 그런 식으로 네트웍 서비스를 테스트하거나 하는 식으로는 쓰기 어렵다 치더라도 linux의 배포판과 버전을 까다롭게 따지는 상용 s/w를 윈도우즈 위에서 돌리는 것은 가능하다.

사실 상용이 아닌 오픈소스 소프트웨어들은 최신 리눅스위에서는 더 날개단듯이 빠르게 돌아가는데, 세상이 바뀌니 가장 빠르고 좋아야 할 상용 소프트웨어들의 수준이 참 한심스러워졌다.