Linux용 Windows 하위 시스템

(리눅스용 윈도우 서브시스템에서 넘어옴)

1 개요[ | ]

Windows Subsystem for Linux (WSL)
Linux Windows 下位 system, Linux Windows subsystem
Linux용 Windows 하위 시스템, 리눅스용 윈도우 서브시스템
  • 리눅스 애플리케이션을 윈도우 상에서 네이티브로 사용할 수 있게 하는 호환성 계층
  • Windows에서 네이티브 사용자 모드 Linux 셸 및 도구를 실행하기 위한 서비스와 환경을 제공합니다.
  • 기존의 Windows Services for UNIX를 대체한다.
  • 윈도우 10 Anniversary Update 이후부터 지원한다.

2 사용 방법[ | ]

"Linux용 Windows 하위 시스템"에 체크한다.
  1. 윈도우 10이 최신화되어 있는지 확인. (64비트만 지원)
  2. 시작 버튼을 누르고 좌측의 설정 아이콘을 클릭.
  3. 개발자용 클릭 → 개발자 모드 선택
  4. 제어판 → 프로그램 및 기능 → Windows 기능 켜기/끄기 클릭 → Linux용 Windows 하위 시스템에 체크.
  5. 시스템 재시작
  6. 명령 프롬프트(cmd) 실행 후 bash라고 입력. 지시에 따름.
    1. Microsoft store에서 Ubuntu, OpenSUSE, Kali Linux, debian을 제공.

2.1 수동 설치[ | ]

  1. 관리자 권한 파워쉘에서 아래 명령 실행으로 활성화
    1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  2. 배포판 설치
    1. 파워쉘 이용 시
      1. 배포 다운로드: Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing
      2. 탐색기에서 appx 파일 실행.[1]
    2. Chocolatey
      1. choco install WSL-Archlinux
      2. 다운로드와 설치까지 자동으로 실행됨.

2018년 10월, Chocolatey로 설치 가능한 리눅스 배포 목록

  • wsl-ubuntu-1804
  • wsl-ubuntu-1604
  • wsl-debiangnulinux
  • wsl-kalilinux
  • wsl-opensuse
  • wsl-sles
  • wsl-archlinux

3 특징[ | ]

3.1 장점[ | ]

  • 윈도우 10에서 리눅스를 직접 사용할 수 있는 직접적인 방법이다. 리눅스를 사용하기 위해 가상 머신(VM)을 설치할 필요가 없다.
  • X 윈도 시스템을 통한 GUI를 지원한다.
  • 수많은 DB와 WAS를 구동할 수 있다.
  • CPU에 리소스 집중적인 프로그램을 실행 시 일반 리눅스와 거의 동등한 성능을 제공한다.

3.2 단점[ | ]

  • (2018년 1월 기준) 파일 액세스에 집중적인 프로그램의 경우 성능 저하가 있다.
  • (2018년 1월 기준) 실제 포트를 이용한 통신에는 문제가 없지만, netstat 명령은 정상 동작하지 않는다. 이 명령은 윈도우의 cmd를 통해 실행할 수 있다.
  • WSL 2는 VirtualBox와 충돌이 있다.[2]

3.3 CLI[ | ]

  • cmd 혹은 powershell에서 wsl.exe 실행 시, 기본 WSL 실행 (%windir%\system32\bash.exe 실행과 동일)
    • wsl -d 배포명 기본 배포 이외 실행
  • wslconfig /l WSL 목록 확인, 기본 WSL 확인 가능.
  • wslconfig /s 배포명 기본 WSL 변경

4 같이 보기[ | ]

5 참고[ | ]

  1. appx은 zip 파일임. 압축풀고 안의 exe 실행해도 설치 된다. [참조]
  2. https://github.com/MicrosoftDocs/WSL/issues/536#issuecomment-567360330
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}