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

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

Posted 2018. 11. 05 Updated 2021. 12. 28 Views 16490 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 Apache .htaccess 파일 설정 - 루트 디렉토리 변경하기 TUW 2010.02.22 12704
192 일반 4선식 터치스크린의 원리 file TUW 2017.06.02 10341
191 Android android.process.acore 문제 해결방법 file TUW 2021.12.28 24729
190 Apache Apache 일별 로그파일 생성하기, 필터링 로깅하기 TUW 2014.04.23 19971
189 Apache Apache2 서버에 SSL/HTTPS 설치하기 (StartSSL) - 1 file TUW 2017.06.02 17814
188 Apache Apache2 서버에 SSL/HTTPS 설치하기 (StartSSL) - 2 file TUW 2017.06.02 20551
187 Apache Apache에사 Proxy Server를 통해 Port - Sub Domain 연결하기 TUW 2015.10.02 12664
186 Apache Apache에서 디렉토리별 php.ini 다르게 적용하기 (php_value, php_flag) TUW 2014.04.23 14487
185 Apache Apache에서 서브 도메인 및 가상 호스트 설정하기 file TUW 2017.06.02 38047
184 AVR ATmega의 ADC에서 결과를 읽을 때 주의할 점 TUW 2015.05.31 14399
183 일반 AutoCAD 자주 사용하는 명령어 요약 정리 TUW 2014.04.24 25511
182 일반 CPU 오버클럭에 관한 기본 상식 TUW 2014.04.20 12262
181 일반 Eclipse에 C/C++ 개발환경 구축하기 file TUW 2017.06.02 9919
180 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2017.06.02 51423
179 Linux fstab과 sshfs fuse를 활용한 원격 디렉토리 자동 마운트하기 TUW 2022.04.28 19876
178 일반 GitLab 코드리뷰 페이지 탭 크기(Tab Size) 4칸으로 바꾸기 file TUW 2021.12.28 3892
목록
Board Pagination Prev 1 2 3 4 5 6 7 ... 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5