본문으로 바로가기

관리 및 구성 - WSL

category 윈도우즈/WSL 2018. 2. 22. 10:00

Applies to Windows 10 Fall Creators Update 와 그 이후버전들에서 사용가능하다.

Windows Subsystem for Linux 관리 및 구성

멀티 리눅스 배포판 관리

WSL Config(wslconfig.exe)는 WSL에서 실행되는 리눅스 배포를 관리하기위한 명령줄(command-line) 도구이다. 이 도구를 이용하여 이용가능한 배포판을 나열하고 기본 배포판을 설정하고, 배포판을 제거할 수 있다.

WSL Config는 배포판들에 대한 확장, 조정하는 설정에 유용하지만, 각각의 배포판은 자체 설정(구성, configuration)을 독립적으로 관리한다. 리눅스 배포판별 명령을 보려면 배포만명.exe /?(ex. ubuntu /?)를 실행하자.

wslconfig /?를 입력하면 WSL Config에 사용할 수 있는 모든 옵션을 확인할 수 있다.

C:\Users\uzugo>wslconfig /?
Linux를 위한 Windows 하위 시스템의 관리 작업을 수행합니다.

사용 방법:
    /l, /list [/all] - 등록된 배포를 나열합니다.
        /all - 현재 설치되어 있거나 제거된 배포를 포함하여
               선택적으로 모든 배포를 나열합니다.
    /s, /setdefault  - 지정된 배포를 기본으로 설정합니다.
    /u, /unregister  - 배포의 등록을 취소합니다.

배포판 목록확인

  • wslconfig /list : WSL에서 사용하고 있는 리눅스 배포판 목록을 표시한다. 배포판이 나열되면 설치되어 사용할 준비가 된 것이다.
  • wslconfig /list /all : 현재 사용할 수 없는 것을 포함해서 모든 배포판을 나열한다. 설치중이거나 설치 제거중이거나 손상된 상태일 수 있다.

기본 배포판(default distribution) 설정

WSL을 시작하고 실행하는 세 가지 방법이 있다.

  1. wsl.exe 혹은 bash.exe
  2. 명령 프롬프트에서 wsl 혹은 bash -c
  3. 배포판명칭(ex. ubuntu) : 윈도우즈 메뉴에서 설치된 앱을 실행하는 것과 같다(리눅스 콘솔에서 실행한 것과 같으며 이는 명령프롬프트나 파워셸에서 실행한 것과는 다르다).

1, 2번의 경우는 WSL을 실행을 위한 기본 배포판(default distribution)이 선택되어 있어야 한다. 명시적으로 기본값을 설정하지 않은 경우, 처음 설치시에 설정된다.

  • wslconfig /setdefault 배포판명 : 기본 배포판을 설정한다. 예를 들어, 우분투 배포판을 사용한다면 wslconfig /setdefault Ubuntu와 같이 기본 배포판을 설정한다. wsl -c npm init을 실행하면 우분투에서 실행될 것이다. wsl을 실행하면 우분투 세션이 열린다.

배포판 재설치 및 등록취소(unregister)

리눅스 배포판은 윈도우즈 스토어를 통해 설치할 수 있지만 제거는 불가능하다. WSL Config를 사용하면 배포판을 등록해제/제거할 수 있다.

또한, 등록을 해제하면 배포판을 다시 설치할 수 있다.

등록을 취소하면 해당 배포판과 관련된 모든 데이터, 설정 및 소프트웨어가 영구적으로 손실된다. 스토어에서 다시 설치하면 배포판의 깨끗한 사본이 설치된다.

  • wslconfig /unregister 배포판명 : WSL에서 배포판을 등록취소하여 다시 설치하거나 정리할 수 있다. 예를들어, 우분투 배포판을 사용한다면 wslconfig /unregister Ubuntu는 WSL에서 사용 가능한 배포판에서 우분투를 제거한다. wslconfig /list를 실행하면 나열되지 않는다.

재설치는 윈도우즈 스토어에서 해당 배포판을 찾아 설치하면 된다.

WSL 실행 설정

윈도우즈 버전 17093 과 그 이후 버전들에서 이용가능하다.

wsl.conf를 사용하여 WSL을 시작할때마다 적용될 WSL의 특정 기능을 자동으로 구성한다. 현재로서는 자동 마운트 옵션과 네트워크 구성이 포함된다.

wsl.conf는 리눅스 배포판의 /etc/wsl.conf에 위치하며, 만일 파일이 없다면 직접 만들어도 된다. WSL은 파일의 존재를 감지하고 그 내용을 읽어들이며, 파일이 없거나 잘못된 형식(부적절한 마크업)인 경우 WSL은 이를 무시하고 정상적으로 계속 실행된다.

아래는 배포판에 추가할 수 있는 샘플 wsl.conf파일이다.

# Enable extra metadata options by default
[automount]
enabled = true
root = /windir/
options = "metadata,umask=22,fmask=11"
mountFsTab = false

# Enable DNS – even though these are turned on by default, we’ll specify here just to be explicit.
[network]
generateHosts = true
generateResolvConf = true

설정 옵션

.ini 작성 규칙을 준수하여, 키(key)는 섹션에서 선언한다. WSL은 두가지 섹션을 지원하고 있다(automount, network).

[automount]
key value default notes
enabled boolean true true이면 고정 드라이브(ex. c:/ 혹은 d:/)가 /mnt 아래 DrvFs 파일시스템으로 자동 마운트된다. false이면 드라이브가 자동적으로 마운트되지 않지만 수동으로 또는 fstab을 통해 마운트 할 수 있음을 의미한다.
root String /mnt/ 자동적으로 마운트되어 고정적인 드라이브로 사용될 디렉토리를 설정한다. 예를들어, /windir/에 WSL 디렉토리가 있고 그 디렉토리를 루트로 지정한 경우 고정된 드라이브가 /windir/c처럼 마운트되는 것을 알 수 있다.
mountFsTab boolean true true이면 /etc/fstab을 WSL 시작에서 처리하도록 설정한다. /etc/fstab은 SMB 공유와 같은 다른 파일 시스템을 선언할 수 있는 파일이다. 따라서 시작할때 WSL에서 파일시스템을 자동으로 마운트할 수 있게된다.
option comma-separated list of values (쉼표로 구분된 값의 나열) empty string (빈 문자열) 이 값은 기본 DrvFs 마운트 옵션 문자열에 추가된다. 오직 DrvFs 전용 옵션만 지정할 수 있다. 옵션은 일반적으로 플래그(flag)로 구문분석되는(parse) 마운트 바이너리는 지원되지 않는다. 이러한 옵션을 명시적으로 지정하려면 /etc/fstab에 원하는 드라이브를 포함시켜야 한다.

기본적으로, WSL은 uidgid를 기본 사용자(default user)의 값으로 설정한다(우분투 배포판에서는 기본 사용자가 uid=1000, gid=1000). 만일 사용자가 이 키를 통해 명시적으로 gid 또는 uid 옵션을 지정하면, 관련 값을 덮어쓰게된다. 그렇지 않다면 기본값이 항상 추가된다.

이 옵션들은 자동으로 마운트된 모든 드라이브의 마운트 옵션으로 적용된다. 특정 드라이브에 대한 옵션만 변경하려면 /etc/fstab을 대신 사용하도록 하자.

[network]
key value default notes
generateHosts boolean true true이면 WSL이 /etc/hosts를 생성하도록 설정된다. hosts 파일에는 해당 IP 주소에 해당하는 호스트 이름의 정적맵(static map)이 들어있다.
generateResolvConf boolean true true이면 WSL이 /etc/resolv.conf를 생성하도록 설정된다. resolv.conf는 지정된 호스트 이름을 해당 IP주소로 확인할 수 있는 DNS 목록이 들어 있다.