WSL 버전 비교

WSL 2가 기본값인 이유와 설치된 Linux 배포를 이전 WSL 1 아키텍처로 전환할 수 있는 특정 시나리오 또는 예외를 포함하여 다양한 WSL 버전에 대해서 자세히 알아봅니다.

WSL 1과 WSL 2 비교

이 가이드에서는 WSL 2 대신 WSL 1 사용에 대한 예외를 포함하여 WSL 1과 WSL 2를 비교합니다. WSL 1과 WSL 2의 주요 차이점은 관리되는 VM 내에서 실제 Linux 커널 사용, 전체 시스템 호출 호환성 지원, Linux 및 Windows 운영 체제 전반의 성능입니다. WSL 2는 Linux 배포판을 설치할 때 현재 기본 버전이며, 최신의 가장 뛰어난 가상화 기술을 사용하여 경량 유틸리티 VM(가상 머신) 내에서 Linux 커널을 실행합니다. WSL2는 관리되는 VM 내에서 격리된 컨테이너로 Linux 배포를 실행합니다. 배포가 현재 WSL 1을 실행하고 있고 WSL 2로 업데이트하려는 경우, WSL 1에서 WSL 2로 업데이트를 참조하십시오.

기능 비교

기능 WSL 1 WSL 2
Windows와 Linux 통합
빠른 부팅 시간
기존 Virtual Machines보다 작은 리소스 공간
현재 버전의 VMware 및 VirtualBox에서 실행
관리 VM
전체 Linux 커널
전체 시스템 호출 호환성
OS 파일 시스템 간 성능
체계적인 지원
IPv6 지원

위의 비교 표에서 알 수 있듯이 WSL 2 아키텍처는 여러 가지 면에서 WSL 1보다 성능이 우수합니다. 단, OS 파일 시스템의 성능은 제외하면 프로젝트에서 작업하기 위해 실행 중인 도구와 동일한 운영 체제에 프로젝트 파일을 저장하여 해결할 수 있습니다.

WSL 2는 Windows 11 또는 Windows 10, 버전 1903, 빌드 18362 이상에서만 사용할 수 있습니다. Windows 로고 키 + R을 선택하고 winver를 입력한 다음, 확인을 선택하여 Windows 버전을 확인합니다. (또는 Windows 명령 프롬프트에서 ver 명령을 입력합니다.) 최신 Windows 버전을 업데이트해야 할 수도 있습니다. 14393보다 낮은 빌드의 경우 WSL은 전혀 지원되지 않습니다.

최신 WSL 2 업데이트에 대한 자세한 내용은 Windows 명령줄 블로그를 참조하세요. Systemd 지원은 이제 WSL 및 WSL 2023년 9월 업데이트에서 사용할 수 있습니다.

참고 항목

WSL 2는 VMware 15.5.5 이상에서 작동하며 VirtualBox 6 이상에서는 WSL 지원이 있다고 명시되어 있지만 여전히 지원되지 않는 중요한 문제가 있습니다. FAQ에서 자세히 알아보세요.

WSL 2의 새로운 기능

WSL 2는 기본 아키텍처를 전체적으로 점검했으며, 가상화 기술과 Linux 커널을 사용하여 새로운 기능을 사용하도록 설정합니다. 이 업데이트의 주요 목표는 파일 시스템 성능을 높이고, 전체 시스템 호출 호환성을 추가하는 것입니다.

WSL 2 아키텍처

기존 VM 환경은 부팅 속도가 느리고, 격리되어 있으며, 많은 리소스를 사용하고, 관리하는 데 시간이 걸릴 수 있습니다. WSL 2는 이러한 단점이 없습니다.

WSL 2는 Windows와 Linux 간의 원활한 통합, 빠른 부팅 시간, 작은 리소스 설치 공간을 포함하여 WSL 1의 이점을 제공하며 VM을 구성하거나 관리할 필요가 없습니다. WSL 2는 VM을 사용하지만 WSL 1과 동일한 사용자 환경을 유지하면서 백그라운드에서 관리되고 실행됩니다.

전체 Linux 커널

WSL 2의 Linux 커널은 kernel.org에서 제공되는 원본을 기반으로 하여 Microsoft를 통해 안정적인 최신 분기에서 구축되었습니다. 이 커널은 WSL 2에 맞게 특별히 튜닝되어 크기와 성능을 최적화하여 Windows에서 놀라운 Linux 환경을 제공합니다. 커널은 Windows 업데이트를 통해 서비스를 제공하므로 직접 관리할 필요 없이 최신 보안 수정과 향상된 커널 기능을 얻을 수 있습니다.

WSL 2 Linux 커널은 오픈 소스입니다. 자세히 알아보려면 구축한 팀에서 작성한 Windows를 사용하여 Linux 커널 전달 블로그 게시물을 확인하세요.

Linux용 Windows 하위 시스템 커널의 릴리스 정보에서 자세히 알아봅니다.

파일 IO 성능 향상

git clone, npm install, apt update, apt upgrade 등과 같은 파일 집약적 작업은 모두 WSL 2를 통해 훨씬 더 빠르게 수행됩니다.

실제 속도 증가는 실행되는 앱과 이 앱에서 파일 시스템과 상호 작용하는 방법에 따라 달라집니다. 압축된 tarball의 압축을 푸는 경우 WSL 2의 초기 버전은 WSL 1보다 최대 20배 더 빠르게 실행되며, 다양한 프로젝트에서 git clone, npm install 및 cmake를 사용하는 경우 약 2~5배 더 빠르게 실행됩니다.

전체 시스템 호출 호환성

Linux 이진 파일은 시스템 호출을 사용하여 파일 액세스, 메모리 요청, 프로세스 만들기 등의 함수를 수행합니다. WSL 1은 WSL 팀에서 개발한 번역 계층을 사용했지만 WSL 2에는 전체 시스템 호출 호환성을 지원하는 자체 Linux 커널이 포함되어 있습니다. 이점은 다음과 같습니다.

  • Docker 등과 같이 WSL 내에서 실행할 수 있는 새로운 앱의 전체 세트입니다.

  • Linux 커널에 대한 모든 업데이트를 즉시 사용할 수 있습니다. (WSL 팀에서 업데이트를 구현하고 변경 내용을 추가할 때까지 기다릴 필요가 없습니다.)

WSL 2가 아닌 WSL 1의 사용에 대한 예외

더 빠른 성능과 100% 시스템 호출 호환성을 제공하는 WSL 2를 사용하는 것이 좋습니다. 그러나 WSL 1을 사용하는 것이 더 나을 수 있는 몇 가지 특정 시나리오가 있습니다. 다음과 같은 경우 WSL 1을 사용하는 것이 좋습니다.

  • 프로젝트 파일을 Windows 파일 시스템에 저장해야 합니다. WSL 1을 사용하면 Windows에서 탑재된 파일에 더 빠르게 액세스할 수 있습니다.
    • WSL Linux 배포를 사용하여 Windows 파일 시스템의 프로젝트 파일에 액세스하고 이러한 파일을 Linux 파일 시스템에 저장할 수 없는 경우 WSL 1을 사용하여 OS 파일 시스템에서 더 빠른 성능을 얻을 수 있습니다.
  • Windows 및 Linux 도구를 모두 동일한 파일에 사용하여 크로스 컴파일해야 하는 프로젝트입니다.
    • Windows 및 Linux 운영 체제 전체의 파일 성능은 WSL 2보다 WSL 1에서 더 빠르므로 Windows 애플리케이션을 사용하여 Linux 파일에 액세스하는 경우 현재 WSL 1에서 더 빠른 성능을 얻을 수 있습니다.
  • 프로젝트가 직렬 포트 또는 USB 디바이스에 액세스해야 합니다. 그러나 USB 디바이스 지원은 이제 USBIPD-WIN 프로젝트를 통해 WSL 2에 사용할 수 있습니다. 설정 단계는 USB 디바이스 연결을 참조하세요.
  • WSL 2는 직렬 포트 액세스를 지원하지 않습니다. FAQ 또는 WSL GitHub 리포지토리에서 직렬 지원에 대해 자세히 알아보세요.
  • 메모리 요구 사항이 엄격합니다.
    • WSL 2의 메모리는 사용자가 사용함에 따라 사용량이 증가하고 축소됩니다. 프로세스에서 메모리를 해제하면 자동으로 Windows에 반환됩니다. 그러나 현재 WSL 2는 WSL 인스턴스가 종료되어야만 메모리의 캐시된 페이지를 Windows로 다시 해제합니다. WSL 세션이 오랫동안 실행되거나 사용자가 매우 많은 파일에 액세스하는 경우 이 캐시가 Windows의 메모리를 사용할 수 있습니다. WSL GitHub 리포지토리 문제 4166에서 이 환경을 개선하는 작업을 추적하고 있습니다.
  • VirtualBox를 사용하는 경우 VirtualBox 및 WSL 2의 최신 버전을 모두 사용해야 합니다. 관련 FAQ를 참조하세요.
  • Linux 배포판을 사용하여 호스트 머신과 동일한 네트워크에 IP 주소를 사용하는 경우 WSL 2를 실행하기 위해 해결 방법을 설정해야 할 수 있습니다. WSL 2는 hyper-v 가상 머신으로 실행되고 있습니다. 이는 WSL 1에서 사용되는 브리지된 네트워크 어댑터의 변경입니다. 즉, WSL 2는 호스트 NIC(네트워크 인터페이스 카드)에 브리지되는 대신 해당 가상 네트워크에 NAT(네트워크 주소 변환) 서비스를 사용하므로 다시 시작할 때 고유한 IP 주소가 변경됩니다. WSL 2 서비스의 TCP 포트를 호스트 OS에 전달하는 문제 및 해결 방법에 대한 자세한 내용은 WSL GitHub 리포지토리 문제 4150, NIC 브리지 모드(TCP 해결 방법)를 참조하세요.

참고 항목

VS Code 원격 WSL 확장에서 Linux 명령줄 도구를 사용하여 프로젝트 파일을 Linux 파일 시스템에 저장하도록 시도하는 것을 고려할 수 있지만, Linux 및 Windows 간의 작업과 관련된 성능을 저하시키지 않고 Windows에서 VS Code를 사용하여 인터넷 브라우저에서 프로젝트를 작성, 편집, 디버그 또는 실행할 수도 있습니다. 자세히 알아보기.

Microsoft Store에서 WSL

WSL은 Windows OS 이미지에서 Microsoft Store를 통해 사용할 수 있는 패키지로 업데이트 기능을 해제했습니다. 즉, Windows 운영 체제의 업데이트를 기다릴 필요 없이 사용 가능한 즉시 업데이트와 서비스가 더 빨라집니다.

WSL은 원래 Linux 배포를 설치하기 위해 사용하도록 설정해야 하는 선택적 구성 요소로 Windows 운영 체제에 포함되었습니다. 스토어의 WSL은 동일한 사용자 환경을 가지며 동일한 제품이지만 전체 OS 업데이트가 아닌 스토어 패키지로 업데이트 및 서비스를 받습니다. Windows 버전 19044 이상부터 wsl.exe --install 명령을 실행하면 Microsoft Store에서 WSL 서비스 업데이트가 설치됩니다. (이 업데이트를 발표하는 블로그 게시물을 참조하세요.) 이미 WSL을 사용 중인 경우 wsl.exe --update을 실행하여 최신 WSL 기능을 수신하고 저장소에서 서비스를 받을 수 있도록 업데이트할 수 있습니다.