Windows Subsystem for Linux (WSL)는 Windows에서 리눅스 배포판을 구동하기 위한 Windows 하위 계층(부속)이다. 이 WSL 위에 원하는 리눅스 배포판을 설치해 실행할 수 있는데, 단순히 셸을 흉내내는 것이 아니라 Windows환경에서 Linux를 마치 응용 프로그램처럼 직접 구동한다.
한마디로 Ubuntu.exe와 Bash.exe로 요약할 수 있다.
▲ 시작 메뉴에 등록되어 있는 Ubuntu.exe
동작 원리: WSL은 가상머신 방식이 아닌 시스템 콜 에뮬레이션(System Call Emulation) 방식으로 동작하는데, 리눅스 커널의 시스템 콜들을 상위 계층 인터페이스는 그대로 유지한 채 기저 부분만 뜯어 고쳐서 Windows에 내장해 놓은 WSL에 연결해 놓은 것이다. 즉, 리눅스 커널 위에서 동작하는 응용 프로그램이 발생시키는 시스템 콜들이 전부 WSL에 의해 Windows 시스템 콜로 변환되어 Windows 커널로 전달되고, 실행 결과는 다시 역으로 WSL에 의해 리눅스 시스템 콜의 반환 형식으로 변환되어 응용 프로그램에 전달된다. 결과적으로 리눅스에서 잘 굴러가는 프로그램 바이너리들을 Windows용으로 포팅할 필요 없이 그대로 사용할 수 있는 환경을 제공한다.
이전에는 Windows와 Linux를 함께 사용하려면 듀얼부팅을 하거나, 가상머신을 이용해 한쪽에서 다른 쪽을 부팅해 사용하는 방법이 최선이었다. 가상머신은 하드웨어 전체를 에뮬레이션하므로 무겁고 하드웨어 자원을 많이 소모하며, 비록 공유 폴더나 심리즈 모드와 같은 편의 기능이 제공되긴 하지만 가상머신 특유의 괴리감은 사라지지 않는다.
반면 WSL을 활용하면 마치 Windows에서 명령 프롬포트 띄워서 쓰는 것처럼 Bash 셸을 사용할 수 있으므로 괴리감 없이 두 OS를 함께 사용할 수 있다. 실행이 간편하고 속도가 빠르며, 파일 시스템이 하나로 통합되어 있어서 별도의 공유 폴더 설정을 하지 않아도 파일 공유가 가능하다는 점이 가장 큰 장점이다.
▶ 이 글에서는 Windows 10 환경에서 WSL에 Ubuntu를 설치하여 Bash Shell을 사용하기 위한 세팅 절차를 설명한다.
WSL 활성화와 Ubuntu 배포판 설치
먼저 Windows에 내장된 WSL을 활성화하기 위해 [제어판] > [프로그램 및 기능] > [Windows 기능 켜기/끄기]에서 "Linux용 Windows 하위 시스템"을 체크해서 관련 기능을 설치한다.
설치가 완료되면 WSL용 리눅스 배포판을 설치할 수 있는 Microsoft Store 페이지가 자동으로 뜨는데, 여기서 "Ubuntu"를 클릭해서 설치를 진행한다.
필요에 따라 Ubuntu외에 다른 배포판을 선택해서 설치할 수도 있다. 다양한 리눅스 배포판을 지원하지만, 아쉽게도 현 시점(18.11.05) 까지 CentOS 배포판은 아직 공식적으로 지원하지 않는다.
떠도는 소문(?)에 의하면 조만간 지원할 것으로 보이긴 한데, 기약은 없다. 외국 포럼 등을 찾아보면 WSL용 CentOS 배포판을 직접 만들어서(??!?) 설치하는 방법을 공유하고 있기도 한데, MS 공식 지원판이 아닌 관계로 안정성 등은 다소 떨어지는 것으로 보인다.
참고: 오프라인 환경에서 설치하기
인터넷이 연결되지 않은 환경에서는 Microsoft Store 접속이 불가능하기 때문에 앱 패키지(*.appx)를 다운받아서 수동으로 설치해야 한다. 앱 패키지 파일을 더블클릭해서 설치하지 말고, 반드시 다음 절차를 따르도록 하자.
- 다른 WSL용 리눅스 배포판이 설치되어 있는 경우 모두 완전히 삭제한다.
- 확인: wslconfig /list
- 삭제: wslconfig /u <배포판 이름> - 여기에서 WSL 배포판 패키지를 다운받는다.
- 앱 패키지 파일(*.appx)의 확장자를 *.zip으로 변경하고 압축을 푼다.
- 압축을 푼 폴더를 적절한 위치(예: C:\Ubuntu)로 이동시킨다.
- 폴더 내의 ubuntuXXXX.exe를 실행하여 초기 설치를 진행한다.
최초 실행시에는 파일 시스템을 생성하는 등 여러가지 내부 세팅절차가 진행되기 때문에 시간이 좀 오래 걸리지만, 이후에는 명령 프롬포트 창을 띄우는 속도로 Ubuntu를 실행할 수 있다.
초기 세팅시에만 Ubuntu로 실행하고, 이후부터는 시작메뉴에서 "Bash"를 검색해서 사용하도록 하자. ("Ubuntu"로 실행하면 글꼴 설정이 저장되지 않는 등의 자잘한 문제가 발생하는 경우가 있다.)
※ 반드시 폴더를 먼저 이동시키고 ubuntuXXXX.exe를 실행해야 한다.
설치 문제 해결
File System Error (-2145103860)
위 절차를 따르지 않고 앱 패키지 파일을 더블클릭해서 설치하면 발생하는 문제이다. 전부 삭제하고 수동으로 다시 설치하도록 한다.
아무래도 "C:\Program Files\WindowsApps"폴더 내에 배포판 실행파일이 제대로 복사되지 않아서 발생하는 문제로 보인다. (ubuntu.exe가 제대로 복사되지 않고 0KB이다.)
Error 0x80070003
수동 설치를 진행할 때 ubuntuXXXX.exe를 실행하여 초기 설치를 먼저 하고 폴더를 이동한 경우 발생하는 문제이다. 전부 삭제하고 순서대로 설치를 진행한다.
아무래도 배포판을 설치하는 시점에 WSL이 자체적으로 ubuntu.exe의 경로를 어딘가에 저장했다가 실행 시점에 참고하기 때문에 발생하는 문제로 보인다.
모종의 이유로 배포판 설치/삭제가 전부 안 되는 상황인 경우: 다른 버전의 리눅스 배포판을 설치했다가 삭제하고 재설치를 시도해보자.
- [WSL] Windows Subsystem for Linux - 디스플레이 서버 설정 및 GUI 사용하기 (35961)
- [WSL] Windows Subsystem for Linux - SSH 서버 자동 시작 설정하기 (18731)
- [WSL] Windows Subsystem for Linux - SSH 서버 세팅하기 (45223)
- [WSL] Windows Subsystem for Linux - Bash.exe를 Ubuntu와 유사하게 설정하기 (6573)
- SCP명령어 - 초간단 파일/디렉토리 전송 (41629)
- Ubuntu에서 저장소(Repository) 위치 변경하기 (24583)
- [Ubuntu] 파티션 관리 프로그램 - GParted (23469)
- [Ubuntu] 디스크 마운트하기 (37118)
- Windows에서 Ubuntu로 원격 데스크톱 연결하기 (45678)
- [Ubuntu] 화면캡처 및 작업공간 전환 단축키 (24966)
- Ubuntu에서 PATH 설정하기 (61778)
- 좀 더 '진짜같이' VirtualBox 활용하기 - 심리스 모드 외 (43945)
- Ubuntu 에서 VirtualBox로 Windows 7 설치 및 사용하기 (23801) *1