본문 바로가기
리눅스

WSL 2(Windows Subsystem for Linux 2) 알아보기

by 머리올리자 2020. 12. 31.

최근 주변에서 WSL가 좋다는 얘기를 들어서 이와 관련하여 좀 정리해보려고 한다

WSL 무엇인가??

Windows Subsystem for Linux의 약자로서 개발자가 기존 가상 머신(virtual machine)의 오버헤드 또는 듀얼 부팅 설정 없이 대부분의 명령줄 도구, 유틀리티 및 애플리케이션을 비롯한 GNU/Linux 환경을 수정하지 않고 Windows에서 직접 실행할 수 있습니다(마이크로소프트 공식 문서 설명).

 

즉, 윈도우에서 기존의 virtual machine 프로그램을 실행시켜 리눅스를 사용하거나, 하드디스크에 리눅스를 따로 설치할 필요 없이 더 빠르고 상호호환될 수 있는 방법으로 윈도우에서 리눅스를 실행하는 방법

 

오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다(위키피디아). 

 

 

(영상 출처 : WSL이란)

 

영상 요약

 - WSL은 Linux command line tools, utilities 및 applications을 실행할 수 있는 곳

 - 그러나 그 이상의 기능이 있음

 - 윈도우 파일들에 접근할 수 있고, bash shell에서 직접 Windows 실행 파일(executables)을 호출 할 수 있음.

 - 파일 탐색기를 열고 마우스 오른쪽 버튼을 클릭하여 bash shell을 열고,

 - 바로 Windows 드라이브 내에서 bash script를 실행할 수 있음.

 - 그러나 그 이상의 기능이 있음(또...?)

 - Windows 내에서 VS code를 실행할 수 있으며, back-end에서 Linux로 실행되는 node.js application을 debug 할 수 있다.

 - 실제로 AF unix socket 을 사용하여 Linux 프로세스가 Windows 프로세스와 통신하도록 할 수 있는 기능을 공개

 - 즉, Windows 및 Linux 프로세스 내부에서 실행되는 mixed application을 개발, 생성 및 사용할 수 있음.

 - 일반적으로 WSL은 Linux tools와 workflows를 Windows 시스템에 직접 통합 할 수있는 정말 좋은 방법이며 Linux 방식과 Windows 방식 모두에서 원활하게 개발을 시작할 수 있음

 

WSL 2란?

- Linux용 Windows 하위 시스템 아키텍처의 새로운 버전

- Windows에서 ELF(Executable and Linkable Format)64 Linux 이진 파일을 실행할 수 있게 해줌

- 주 목표는 파일 시스템 성능을 높이고 전체 시스템 호출 호환성을 추가

 

ELF : ELF(Executable and Linkable Format)는 실행 파일, 목적 파일, 공유 라이브러리 그리고 코어 덤프를 위한 표준 파일 형식이다. 1999년 86open 프로젝트에 의해 x86 기반 유닉스, 유닉스 계열 시스템들의 표준 바이너리 파일 형식으로 선택되었다(위키피디아).

 

 

(영상 출처 : WSL 2?)

 

영상 요약

 - WSL1과 다른 두 가지 큰 특징

    1) 빠른 I/O performance(increase file system performance)

       (평균 WSL1보다 3~6배정도 빠르고, 압축 풀기(unzipping a tarball) 같은 경우 약 20배까지 차이난다고 함)

    2) 100% system call compatibility(support full system call compatibility)

       (docker, VS code 등등...)

 

VS code

 - 만약 리눅스에서 "code ." 을 치면 VS code remote를 연다.

 - VS code remote는 WSL에서 원격 서버를 실행하도록 하는 VS code 내부의 확장.

 - 이 말인즉, UI만 Windows에서 작동하고, 나머지는 모두 Linux에서 작동한다.

 

WSL 2는 가장 유용한 최신 가상화 기술(virtualization technology)을 사용하여 경량화(lightweight) 유틸리티 VM(가상 머신) 내에서 Linux 커널을 실행. WSL 2는 기존 VM 환경이 아님

 

기능 비교

사진 출처 : WSL1과 WSL 2 비교

 

OS 파일 시스템 간 성능

 - 이를 수행하는 특별한 이유가 없으면 운영 체제 간에 작업하지 않는 것이 좋음

 - Linux 명령줄(Ubuntu, OpenSUSE 등)에서 작업하는 경우 가장 빠른 성능을 달성하려면 파일을 WSL 파일 시스템에 저장

- Windows 명령줄(PowerShell, 명령 프롬프트)에서 작업하는 경우 파일을 Windows 파일 시스템에 저장

 

WSL 프로젝트 파일을 저장하는 경우!

 

1) Linux 파일 시스템 루트 디렉토리는 아래와 같음

\\wsl$\Ubuntu-18.04\home\<user name>\Project

 

2) Windows 파일 시스템 루트 디렉토리는 아래가 아님

C:\Users\<user name>\Project

 

- 실행 중인 모든 배포(wsl -l)은 네트워크 연결을 통해 액세스 할 수 있음

- 그렇게 하려면

  → [WIN + R](바로 가기 키) 명령을 실행

     아니면

  파일 탐색기 주소 표시줄에 \\wsl$를 입력하여 해당 배포 이름을 찾고 루트 파일 시스템에 액세스

 

- WSL의 Linux 터미널 내에서 windows 명령을 사용할 수도 있음

  1) Linux 배포를 열어 보고, cd ~ 명령을 입력하여 Linux 홈 디렉토리에 있는지 확인

  2) 다음, powershell.exe /c start . (마침표 넣어야 함) 를 입력하여 파익 탐색기에서 Linux 파일 시스템을 연다.

 

WSL 2의 새로운 기능

- 가상화 기술과 Linux 커널을 사용하여 새로운 기능을 사용하도록 설정

- 파일 시스템 성능을 높이고, 전체 시스템 호출 호환성을 추가(위에서 했던 얘기...)

 

WSL 2의 아키텍쳐

- 기존 VM 환경은 부팅 속도가 느리고, 격릴되어 있으며, 많은 리소스를 사용하고, 관리하는 데 시간이 걸릴 수 있음

- WSL 2는 이러한 단점들이 없음

- WSL 2는 Windows와 Linux 간의 원활한 통합, 빠른 부팅 시간, 작은 리소스 설치 공간을 포함하여 WSL 1의 이점을 제공하며 VM을 구성하거나 관리할 필요가 없음

- WSL 2는 VM을 사용하지만 WSL 1과 동일한 사용자 환경을 유지하면서 백그라운드에서 관리되고 실행

 

Full system call compatibility

WSL 1 : translation layer

WSL 2 : full system call 호환성이 있는 자체 Linux kernel이 있음

 

더 적은 양의 메모리 사용

 - lightweight utility VM on a real Linux kernel with a small memory footprint

 

WSL 2보다 WSL 1을 사용하는 경우

 - 프로젝트 파일을 Windows 파일 시스템에 저장 할때, WSL 1이 Windows에 탑재된 파일에 더 빠르게 액세스 가능

 - Windows 및 Linux 도구를 모두 동일한 파일에 사용하여 크로스 컴파일해야 하는 프로젝트 경우

   (Windows 애플리케이션을 사용하여 Linux 파일에 액세스하는 경우 현재 WSL 1에서 더 빠른 성능)

 

WSL 2 가상 하드 디스크의 크기 확장

- WSL 2는 VHD(가상 하드 디스크)를 사용하여 Linux 파일을 저장

- WSL 2에서 VHD는 Windows 하드 드라이브에 .vhdx 파일로 표시

 

- WSL 2 VHD는 ext4 파일 시스템 사용

- VHD는 스토리지 요구 사항에 맞게 크기가 자동 조정, 초기 최대 크기는 256GB

 - Linux 파일에 필요한 저장소 공간이 이 크기를 초과하는 경우 크기를 확장

 - 확장하는 방법은 링크 참고

 

설치 방법은 따로 정리해야겠다

 

아래는 참고한 링크들

docs.microsoft.com/ko-kr/windows/wsl/

ko.wikipedia.org/wiki/%EC%98%A4%EB%B2%84%ED%97%A4%EB%93%9C

docs.microsoft.com/ko-kr/windows/wsl/about

ko.wikipedia.org/wiki/ELF_%ED%8C%8C%EC%9D%BC_%ED%98%95%EC%8B%9D