Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 98
  • 2717936
DNS Powered by DNSEver.com
일반

[WSL] Windows Subsystem for Linux - 초기 설치와 Ubuntu 배포판 설치

Posted 2018. 11. 05 Updated 2021. 12. 28 Views 17421 Replies 0
Atachment
첨부

Windows Subsystem for Linux (WSL)는 Windows에서 리눅스 배포판을 구동하기 위한 Windows 하위 계층(부속)이다. 이 WSL 위에 원하는 리눅스 배포판을 설치해 실행할 수 있는데, 단순히 셸을 흉내내는 것이 아니라 Windows환경에서 Linux를 마치 응용 프로그램처럼 직접 구동한다.

한마디로 Ubuntu.exeBash.exe로 요약할 수 있다.

 

wsl.png
▲ 시작 메뉴에 등록되어 있는 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 enable.png

설치가 완료되면 WSL용 리눅스 배포판을 설치할 수 있는 Microsoft Store 페이지가 자동으로 뜨는데, 여기서 "Ubuntu"를 클릭해서 설치를 진행한다.

wsl install distrib.png

필요에 따라 Ubuntu외에 다른 배포판을 선택해서 설치할 수도 있다. 다양한 리눅스 배포판을 지원하지만, 아쉽게도 현 시점(18.11.05) 까지 CentOS 배포판은 아직 공식적으로 지원하지 않는다.

떠도는 소문(?)에 의하면 조만간 지원할 것으로 보이긴 한데, 기약은 없다. 외국 포럼 등을 찾아보면 WSL용 CentOS 배포판을 직접 만들어서(??!?) 설치하는 방법을 공유하고 있기도 한데, MS 공식 지원판이 아닌 관계로 안정성 등은 다소 떨어지는 것으로 보인다.

참고: 오프라인 환경에서 설치하기

인터넷이 연결되지 않은 환경에서는 Microsoft Store 접속이 불가능하기 때문에 앱 패키지(*.appx)를 다운받아서 수동으로 설치해야 한다. 앱 패키지 파일을 더블클릭해서 설치하지 말고, 반드시 다음 절차를 따르도록 하자.

  1. 다른 WSL용 리눅스 배포판이 설치되어 있는 경우 모두 완전히 삭제한다.
    - 확인: wslconfig /list
    - 삭제: wslconfig /u <배포판 이름>
  2. 여기에서 WSL 배포판 패키지를 다운받는다.
  3. 앱 패키지 파일(*.appx)의 확장자를 *.zip으로 변경하고 압축을 푼다.
  4. 압축을 푼 폴더를 적절한 위치(예: C:\Ubuntu)로 이동시킨다.
  5. 폴더 내의 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의 경로를 어딘가에 저장했다가 실행 시점에 참고하기 때문에 발생하는 문제로 보인다.

모종의 이유로 배포판 설치/삭제가 전부 안 되는 상황인 경우: 다른 버전의 리눅스 배포판을 설치했다가 삭제하고 재설치를 시도해보자.

 

서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
193 일반 [Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 2 file TUW 2018.11.21 245157
192 XE Social XE 트위터 프로필사진 표시 문제 해결하기 3 file TUW 2017.06.02 205477
191 일반 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 1 file TUW 2019.10.02 188105
190 일반 [CMake 튜토리얼] 1. CMake 소개와 예제, 내부 동작 원리 file TUW 2018.06.13 174008
189 Linux Windows 및 Linux 클라이언트에서 SSH 자동 로그인 설정하기 file TUW 2018.07.22 136798
188 Linux Root권한 없이 Wireshark 사용하기 file TUW 2017.06.02 110492
187 일반 영어로 나타낸 수학 용어 모음 2 file TUW 2018.01.08 87229
186 일반 [Windows] 다중 NIC(LAN카드) 환경에서 Routing Table 설정 - route 명령 2 file TUW 2019.10.21 75460
185 일반 Windows에서 포트 포워딩(Port Forwarding) 설정하기 - Netsh TUW 2018.02.03 66506
184 일반 [GIT] 실행취소와 Commit 삭제: reflog, reset, checkout, revert TUW 2019.04.28 65547
183 AVR [AVR 강의] AVR 강의용 예제 프로그램 모음 file TUW 2017.06.02 63676
182 Linux Ubuntu에서 PATH 설정하기 TUW 2014.04.20 61778
181 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2017.06.02 51871
180 일반 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 5 TUW 2019.08.19 50623
179 일반 신호 레벨 변환 회로(Level Transceiver/Translator/Shifter) 설계 file TUW 2021.12.28 49725
178 일반 [GIT] Branch 관리하기: branch, checkout, push, pull 2 TUW 2018.02.03 48984
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5