기존에 사용하던 윈도우/리눅스 듀얼부트를 공장초기화로 밀면서 모든 개발환경을 다시 셋업하고 있었다. 리눅스 가상서버로는 부족함을 느꼈던 개발환경에 고민 중이었는데, 뒤늦게 WSL2를 알게 되어 직접 설치해보고 경험 해본 후기를 간단하게 적어보려고 한다.
WSL이란 무엇인가?
일단 WSL2를 설명하기에 앞서, WSL에 대해 이야기하자면 WSL(Windows Subsystem for Linux)이란 말 그대로 리눅스용 윈도우 서브시스템이고 기존 버전의 WSL은 2017년 릴리즈되었다.
WSL2는 쉽게 말하자면, 그 WSL의 개선된 버전이라고 볼 수 있는데 2019년 릴리즈되었고, 퍼포먼스 면에서나 성능 면에서 VM에 비해서 훨씬 Seamless하다고 강조한다.
WSL과 WSL2의 비교
WSL2에 대해 이야기하기에 앞서, WSL2의 릴리즈 배경에 대해서 설명하고 넘어가지 않을 수 없는데, 2017년 릴리즈 된 WSL의 한계에 대해 설명하겠다.
1. System call 한계점 개선
WSL의 첫 번째 버전은 윈도우에서 구현된 시스템 콜만 사용가능한데, 시스템 콜은 커널에서 제공하는 기능이기에 구현된 호출만 WSL 환경에서 지원되었다. 이전 버전에서는 이러한 한계점 때문에 Go debugger 같은 사례와 같이 구현되지 않은 시스템 콜에 엑세스하고 접근하는 라이브러리와 도구에서 문제가 발견되었다.
그러나 WSL2에서는 완전히 새로운 방식으로 완전한(Complete) 리눅스 커널을 제공한다고 한다. 어케했누?
2. I/O 퍼포먼스 차이
WSL1에서 WSL2 대비 I/O 퍼포먼스가 20x 성능개선되었으며 Sequential write 등 성능면에서 훨씬 앞서는 모습을 보여준다. (* I/O 퍼포먼스 비교글 참고)
WSL2, 왜 좋은가?
MS 공식 홈페이지에서는 홍보시 Seamless experience를 강조한다.
그 중에서 반복해서 이야기하는 내용을 정리해보자.
- 가상 머신은 리소스를 많이 사용하고 매우 단절된 경험을 만든다.
- 기존 WSL1은 매우 Seamless하지만 VM에 비해 성능이 현저히 낮았다.
- WSL2는 경량 VM, 완전히 연결된 경험 및 고성능을 갖춘 하이브리드 접근 방식을 제공한다.
대충 가상머신보다 좋으니 많이 써달라는 말
WSL2 설치하기
이제 이 WSL2를 윈도우에 설치하고, VScode에서 플러그인과 사용하는 법을 설명하고자 한다.
1. Hyper - V 체크
WSL2를 지원하는 윈도우 10 릴리즈 버전인지 확인, Hyper - V 기능을 지원하는 지 확인하자. (시스템정보-시스템요약)
2. cmd에서 wsl.exe 설치
윈도우 프롬프트에서 관리자 모드 실행 후 wsl.exe --install 명령 실행시, 리눅스용 윈도우 하위시스템 설치 명령이 출력되고 설치가 완료된 이후 재부팅 후 wsl 설치 완료된다.
3. VScode WSL 확장프로그램 설치
WSL2를 설치했으니 이제 개발환경에 WSL2를 적용해보자.
VScode에서는 Remote - WSL이라는 확장프로그램을 제공한다. 이를 이용하여 윈도우 프롬프트와 리눅스용 윈도우 서브시스템(WSL)의 전환이 가능하다.
설치된 Remote - WSL을 이용하여 리눅스 어플리케이션을 빌드할 수 있다. 좌측 하단에 보이는 것과 같이 WSL-Ubuntu로 스위치 이후, ocaml hello world를 찍어보았다.
마치며
빠르고 Seamless한 리눅스용 윈도우 서브시스템,
첫인상으로는 잘되고 편해보인다.
하드하게 사용하면 물론 제약은 있겠지만 당분간은 좀 더 써볼 듯 하다.