개발

WSL(Windows Subsystem for Linux)이란?

nova_dev 2021. 5. 23. 00:00
반응형

WSL(Windows Subsystem for Linux)이란?

WSL 개요

예전에는 윈도우에서 리눅스를 사용하려면 Virtual Machine과 같은 도구(Virtual Box, VMware 등)을 이용하여 환경을 구성하거나 듀얼 부팅 설정을 해야 했다. (라떼는 말이야..)

그러나 WSL을 이용하면 듀얼부팅이나 VM과 같은 느린 환경이 아니라 윈도우에서 리눅스 환경처럼 Powershell을 Bash 처럼 사용하고, Linux 명령어(sed, awk, vim, apt 등)를 사용할 수 있으며 Linux 커널조차 이용할 수 있다. (그것도 매우 빠른 부팅속도와 적은 메모리를 사용하면서 말이다!)

이에 윈도우를 사용하는 많은 개발자들이 환호했다. 2016년에 처음으로 WSL이 나오고 점차 발전하면서 2019년에는 완전히 새로운 아키텍처로 WSL2가 나왔다.

WSL1 vs WSL2

wsl1 vs wsl2

WSL1에서는 windows의 NT Kernel 위에 WSL을 올리고 리눅스용 어플리케이션을 돌렸다면, WSL2에서는 Hypervisor 위에 윈도우 NT 커널과 리눅스 커널을 각각 올리는 방식이다.

wsl1_wsl2

WSL2는 Linux커널을 직접 사용하기 때문에 파일 시스템 성능이 올라가고 리눅스 시스템 호출 호환성이 대폭 증가했다.

WSL 설치 및 사용법

WSL install in windows 10

설치는 위 MS 공식 문서를 참고하면 된다.
사용할 수 있는 Linux 배포판은 Ubuntu, openSUSE, Debian GNU Linux, Kali Linux 등이 있다. (CentOS는 MS에서 공식적으로는하지 않지만 따로 다운받는 방법은 있다.)

우분투를 설치한 뒤, 아래와 같이 wsl 설정을 하고 실행해보면 powershell에서 쉽게 wsl로 전환할 수 있다.

powershell

이제 윈도우에서도 스크립트도 편하게 짜고 마치 리눅스 서버처럼 각종 서버들을 설치하고 사용할 수 있다. (mysql, mongo, nginx, redis-server 등)

WSL 디렉터리 구조

wsl filesystem

기존 C드라이브는 /mnt/c 로 마운트되고, 루트의 디렉터리 구조는 linux와 동일하다. 홈도 리눅스와 동일하게 /home/{user-name}이다.

WSL vs Git bash

WSL이 나오기 전까지는 리눅스 명령어가 익숙한 윈도우 유저들에게는 git bash가 유용한 대안책이었다. git bash 소프트웨어에서는 리눅스의 많은 명령어들을 윈도우용 MinGW GNU 위에서 실행하는거라 .exe로 실행되는 명령어들이다.

  • WSL2

wsl bin

  • Git Bash

git bash

WSL2 with windows docker desktop

이제 Windows의 Docker Desktop도 WSL2를 사용하면서 데몬을 띄우는데 필요한 시간이 1분에서 10초도 걸리지 않는 수준으로 훨씬 짧아졌다! Docker Desktop에서 제공하는 kubernetes 원클릭 설치도 윈도우에서 쉽게 할 수 있다.

자세한 설정과 설명은 아래를 참고하자.
https://docs.docker.com/docker-for-windows/wsl/
https://docs.docker.com/docker-for-windows/

참고 자료

WSL 소개

WSL 이란? - MS 공식 문서

VS Code를 사용해서 원격 컨테이너에서 개발하기

Docker Desktop WSL 2 Backend

반응형

'개발' 카테고리의 다른 글

[Spring Cloud] Hystrix 파헤치기  (0) 2021.11.07
[Golang] Go 언어 빠르게 훑어보기  (0) 2021.10.26
gradle  (0) 2021.08.16
gRPC란?  (0) 2021.03.22
HTTP 프로토콜 1.0 vs 1.1 vs 2.0 비교  (0) 2021.03.15