WSL의 고급 설정 구성

wsl.conf.wslconfig 파일은 배포당() 및 전역적으로 모든 WSL 2 배포(wsl.conf.wslconfig)에서 고급 설정 옵션을 구성하는 데 사용됩니다. 이 가이드에서는 각 파일 형식을 사용하는 경우, 파일을 저장할 위치, 샘플 설정 파일 및 팁을 포함하는 각 설정 옵션을 설명합니다.

wsl.conf와 .wslconfig의 차이점은 무엇인가요?

다음을 사용하여 두 가지 방법으로 WSL을 시작할 때마다 자동으로 적용되는 설치된 Linux 배포판에 대한 설정을 구성할 수 있습니다.

  • .wslconfig - WSL 2에서 실행되는 설치된 모든 배포판에서 전역적으로 설정을 구성합니다.
  • wsl.conf - WSL 1 또는 WSL 2에서 실행되는 Linux 배포판에 대한 배포당 설정을 구성합니다.

두 파일 형식은 모두 WSL 설정을 구성하는 데 사용되지만 파일이 저장된 위치, 구성 범위 및 배포를 실행하는 WSL 버전은 모두 선택할 파일 형식에 영향을 줍니다.

실행 중인 WSL 버전은 구성 설정에 영향을 줍니다. WSL 2는 경량 VM(가상 머신)으로 실행되므로 사용된 메모리 또는 프로세서의 양을 제어할 수 있는 가상화 설정을 사용합니다(Hyper-V 또는 VirtualBox를 사용하는 경우 익숙할 수 있음).

wsl.conf

  • 배포의 /etc 디렉터리에 unix 파일로 저장됩니다.
  • 배포별로 설정을 구성하는 데 사용됩니다. 이 파일에 구성된 설정은 이 파일이 저장된 디렉터리를 포함하는 특정 Linux 배포에만 적용됩니다.
  • 버전, WSL 1 또는 WSL 2 중 하나에서 실행되는 배포에 사용할 수 있습니다.
  • 설치된 배포의 /etc 디렉터리에 액세스하려면 배포의 명령줄을 cd / 사용하여 루트 디렉터리에 액세스한 다음ls, 파일을 나열하거나 explorer.exe . Windows 파일 탐색기 볼 수 있습니다. 디렉터리 경로는 와 같습니다 /etc/wsl.conf.

.wslconfig

  • 디렉터리에 저장 %UserProfile% 됩니다.
  • WSL 2 버전으로 실행되는 설치된 모든 Linux 배포판에서 전역적으로 설정을 구성하는 데 사용됩니다.
  • WSL 2에서 실행하는 배포에만 사용할 수 있습니다. WSL 1로 실행되는 배포는 가상 머신으로 실행되지 않으므로 이 구성의 영향을 받지 않습니다.
  • 디렉터리에 액세스 %UserProfile% 하려면 PowerShell에서 를 사용하여 cd ~ 홈 디렉터리(일반적으로 사용자 프로필C:\Users\<UserName>)에 액세스하거나 Windows 파일 탐색기 열고 주소 표시줄에 를 입력 %UserProfile% 할 수 있습니다. 디렉터리 경로는 와 같습니다 C:\Users\<UserName>\.wslconfig.

WSL은 이러한 파일의 존재를 감지하고, 내용을 읽고, WSL을 시작할 때마다 구성 설정을 자동으로 적용합니다. 파일이 없거나 형식이 잘못된 경우(부적절한 태그 서식 지정) WSL은 구성 설정을 적용하지 않고 정상적으로 계속 시작됩니다.

실행 중인 WSL 버전을 확인합니다.

참고

wsl.conf 파일을 사용하여 배포당 설정을 조정하는 것은 Windows 빌드 17093 이상에서만 사용할 수 있습니다.

8초 규칙

Linux 배포를 실행하는 하위 시스템이 실행을 완전히 중지하고 구성 설정 업데이트가 표시될 때까지 다시 시작할 때까지 기다려야 합니다. 일반적으로 배포 셸의 모든 인스턴스를 닫은 후 약 8초가 걸립니다.

배포를 시작하는 경우(예: Ubuntu), 구성 파일을 수정하고 배포를 닫은 다음 다시 시작합니다. 구성 변경 내용이 즉시 적용된 것으로 가정할 수 있습니다. 하위 시스템이 계속 실행될 수 있으므로 현재는 그렇지 않습니다. 변경 내용을 선택할 충분한 시간을 주기 위해 다시 시작하기 전에 하위 시스템이 중지될 때까지 기다려야 합니다. 명령 wsl --list --running과 함께 PowerShell을 사용하여 Linux 배포(셸)가 닫은 후에도 계속 실행되고 있는지 확인할 수 있습니다. 배포가 실행되고 있지 않으면 "실행 중인 배포가 없습니다."라는 응답을 받게 됩니다. 이제 배포를 다시 시작하여 구성 업데이트가 적용된 것을 확인할 수 있습니다.

명령은 wsl --shutdown WSL 2 배포를 다시 시작하는 빠른 경로이지만 실행 중인 모든 배포를 종료하므로 현명하게 사용합니다.

wsl.conf에 대한 구성 설정

wsl.conf 파일은 배포별로 설정을 구성합니다. (WSL 2 배포의 전역 구성은 .wslconfig를 참조하세요.)

wsl.conf 파일은 , , networkinteropuser의 네 가지 섹션automount을 지원합니다. (.ini 파일 규칙을 따라 모델링된 키는 .gitconfig 파일과 같은 섹션 아래에 선언됩니다.wsl.conf 파일을 저장할 위치에 대한 자세한 내용은 wsl.conf를 참조하세요.

systemd 지원

많은 Linux 배포판은 기본적으로 "systemd"(Ubuntu 포함)를 실행하며 WSL은 최근에 이 시스템/서비스 관리자에 대한 지원을 추가하여 WSL이 운영 체제 미설치 컴퓨터에서 즐겨 찾는 Linux 배포판 사용과 훨씬 더 유사합니다. systemd를 사용하도록 설정하려면 버전 0.67.6 이상 WSL이 필요합니다. 명령을 wsl --version사용하여 WSL 버전을 확인합니다. 업데이트해야 하는 경우 Microsoft Store에서 최신 버전의 WSL을 사용할 수 있습니다. 블로그 공지에서 자세히 알아보세요.

systemd를 사용하도록 설정하려면 관리자 권한을 사용하여 sudo 텍스트 편집기에서 파일을 열고 wsl.conf 다음 줄을 에 /etc/wsl.conf추가합니다.

[boot]
systemd=true

그런 다음, WSL 인스턴스를 다시 시작하려면 PowerShell에서 를 사용하여 wsl.exe --shutdown WSL 배포를 닫아야 합니다. 배포가 다시 시작되면 systemd가 실행되어야 합니다. 서비스 상태를 표시하는 명령을 systemctl list-unit-files --type=service사용하여 확인할 수 있습니다.

자동 탑재 설정

섹션 레이블: [automount]

key default 정보
사용 boolean true true 는 고정 드라이브(즉 C:/ , 또는 D:/)가 에서 /mntDrvFs를 사용하여 자동으로 탑재되도록 합니다. false 는 드라이브가 자동으로 탑재되지 않지만 수동으로 또는 를 통해 fstab탑재할 수 있다는 것을 의미합니다.
mountFsTab boolean true true는 WSL 시작 시 /etc/fstab가 처리되도록 설정합니다. /etc/fstab는 SMB 공유와 같은 다른 파일 시스템을 선언할 수 있는 파일입니다. 따라서 시작 시 이러한 파일 시스템을 WSL에 자동으로 탑재할 수 있습니다.
root 문자열 /mnt/ 고정 드라이브가 자동으로 탑재될 디렉터리를 설정합니다. 기본적으로 로 설정 /mnt/되므로 Windows 파일 시스템 C 드라이브가 에 /mnt/c/탑재됩니다. 으로 /windir/변경 /mnt/ 하면 고정 C 드라이브가 에 탑재된 것을 볼 수 /windir/c있습니다.
옵션 uid, gid 등과 같이 쉼표로 구분된 값 목록은 아래의 자동 탑재 옵션을 참조하세요. 빈 문자열 자동 탑재 옵션 값은 아래에 나열되어 있으며 기본 DrvFs 탑재 옵션 문자열에 추가됩니다. DrvFs별 옵션만 지정할 수 있습니다.

자동 탑재 옵션은 자동으로 탑재된 모든 드라이브에 대한 탑재 옵션으로 적용됩니다. 특정 드라이브에 대한 옵션만 변경하려면 파일을 대신 사용합니다 /etc/fstab . 탑재 이진 파일이 일반적으로 플래그로 구문 분석되는 옵션은 지원되지 않습니다. 이러한 옵션을 명시적으로 지정하려면 에 해당 옵션을 지정하려는 /etc/fstab모든 드라이브를 포함해야 합니다.

자동 탑재 옵션

Windows 드라이브(DrvFs)에 다른 탑재 옵션을 설정하면 Windows 파일에 대한 파일 사용 권한이 계산되는 방법을 제어할 수 있습니다. 다음 옵션을 사용할 수 있습니다.

Description 기본값
uid 모든 파일의 소유자에게 사용되는 사용자 ID WSL 배포판의 기본 사용자 ID(처음 설치 시 기본값은 1000)입니다.
gid 모든 파일의 소유자에게 사용되는 그룹 ID WSL 배포판의 기본 그룹 ID입니다(처음 설치할 때 기본값은 1000).
umask 모든 파일 및 디렉터리에서 제외할 권한의 8진수 마스크 000
fmask 모든 파일에서 제외할 권한의 8진수 마스크 000
dmask 모든 디렉터리에서 제외할 권한의 8진수 마스크 000
metadata Linux 시스템 권한을 지원하기 위해 메타데이터가 Windows 파일에 추가되는지 여부 disabled
case 대/소문자를 구분하는 것으로 처리되는 디렉터리와 WSL로 만든 새 디렉터리에 플래그가 설정되어 있는지 여부를 결정합니다. 옵션에 대한 자세한 설명은 대/소문 자 구분 을 참조하세요. 옵션으로는 , dir또는 force가 있습니다off. off

기본적으로 WSL은 uid 및 gid를 기본 사용자의 값으로 설정합니다. 예를 들어 Ubuntu에서 기본 사용자는 uid=1000, gid=1000입니다. 이 값을 사용하여 다른 gid 또는 uid 옵션을 지정하는 경우 기본 사용자 값을 덮어씁니다. 그렇지 않으면 항상 기본값이 추가됩니다.

사용자 파일 만들기 모드 마스크(umask)는 새로 만든 파일에 대한 권한을 설정합니다. 기본값은 022이며, 사용자는 데이터를 쓸 수 있지만 누구나 데이터를 읽을 수 있습니다. 값은 다른 사용 권한 설정을 반영하도록 변경할 수 있습니다. 예를 들어 umask=077 권한이 완전히 비공개로 변경되고 다른 사용자는 데이터를 읽거나 쓸 수 없습니다. 사용 권한을 추가로 지정하기 위해 fmask(파일) 및 dmask(디렉터리)도 사용할 수 있습니다.

참고

권한 마스크는 파일 또는 디렉터리에 적용되기 전에 논리 OR 연산을 거칩니다.

DrvFs란?

DrvFs는 WSL과 Windows 파일 시스템 간의 interop을 지원하도록 설계된 WSL에 대한 파일 시스템 플러그 인입니다. DrvFs를 사용하면 WSL이 /mnt/c, /mnt/d 등과 같이 /mnt에서 지원되는 파일 시스템을 사용하여 드라이브를 탑재할 수 있습니다. Windows 또는 Linux 드라이브 또는 디렉터리를 탑재할 때 기본 대/소문자 구분 동작을 지정하는 방법에 대한 자세한 내용은 대/소문자 구분 페이지를 참조하세요.

네트워크 설정

섹션 레이블: [network]

key default 정보
generateHosts boolean true true는 WSL에서 /etc/hosts를 생성하도록 설정합니다. hosts 파일에는 IP 주소에 해당하는 호스트 이름의 정적 맵이 포함됩니다.
generateResolvConf boolean true true는 WSL에서 /etc/resolv.conf를 생성하도록 설정합니다. resolv.conf에는 지정된 호스트 이름을 해당 IP 주소로 확인할 수 있는 DNS 목록이 포함됩니다.
hostname 문자열 Windows 호스트 이름 WSL 배포에 사용할 호스트 이름을 설정합니다.

Interop 설정

섹션 레이블: [interop]

다음 옵션은 참가자 빌드 17713 이상에서 사용할 수 있습니다.

key default 정보
사용 boolean true 이 키를 설정하면 WSL에서 Windows 프로세스 시작을 지원하는지 여부가 결정됩니다.
appendWindowsPath boolean true 이 키를 설정하면 WSL에서 Windows 경로 요소를 $PATH 환경 변수에 추가할지 여부가 결정됩니다.

사용자 설정

섹션 레이블: [user]

이러한 옵션은 빌드 18980 이상에서 사용할 수 있습니다.

key default 정보
default 문자열 처음 실행할 때 만든 초기 사용자 이름 이 키를 설정하면 WSL 세션을 처음 시작할 때 실행할 사용자가 지정됩니다.

부팅 설정

부팅 설정은 Windows 11 및 Server 2022에서만 사용할 수 있습니다.

섹션 레이블: [boot]

key default 정보
명령을 사용합니다. 문자열 "" WSL 인스턴스가 시작될 때 실행하려는 명령의 문자열입니다. 이 명령은 루트 사용자로 실행됩니다. 예: service docker start.

예제 wsl.conf 파일

아래 샘플 파일은 wsl.conf 사용 가능한 몇 가지 구성 옵션을 보여 줍니다. 이 예제에서 배포는 Ubuntu-20.04이고 파일 경로는 입니다 \\wsl.localhost\Ubuntu-20.04\etc\wsl.conf.

# Automatically mount Windows drive when the distribution is launched
[automount]

# Set to true will automount fixed drives (C:/ or D:/) with DrvFs under the root directory set above. Set to false means drives won't be mounted automatically, but need to be mounted manually or with fstab.
enabled = true

# Sets the directory where fixed drives will be automatically mounted. This example changes the mount location, so your C-drive would be /c, rather than the default /mnt/c. 
root = /

# DrvFs-specific options can be specified.  
options = "metadata,uid=1003,gid=1003,umask=077,fmask=11,case=off"

# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.
mountFsTab = true

# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false

# Set whether WSL supports interop process like launching Windows apps and adding path variables. Setting these to false will block the launch of Windows processes and block adding $PATH environment variables.
[interop]
enabled = false
appendWindowsPath = false

# Set the user when launching a distribution with WSL.
[user]
default = DemoUser

# Set a command to run when a new WSL instance launches. This example starts the Docker container service.
[boot]
command = service docker start

.wslconfig에 대한 구성 설정

.wslconfig 파일은 WSL 2로 실행되는 모든 Linux 배포판에 대한 설정을 전역적으로 구성합니다. (배포당 구성의 경우 wsl.conf를 참조하세요.)

.wslconfig 파일을 저장할 위치에 대한 자세한 내용은 .wslconfig를 참조하세요.

참고

.wslconfig 전역 구성 옵션은 Windows 빌드 19041 이상에서 WSL 2로 실행되는 배포에만 사용할 수 있습니다. 를 실행하여 WSL 2 VM을 종료한 다음 WSL 인스턴스를 다시 시작해야 wsl --shutdown 변경 내용이 적용됩니다.

이 파일에는 WSL 2 배포를 구동하는 VM에 영향을 주는 다음 옵션이 포함될 수 있습니다.

섹션 레이블: [wsl2]

key default 정보
커널(kernel) path Microsoft에서 제공한 커널 제공 받은 편지함 사용자 지정 Linux 커널에 대한 절대 Windows 경로입니다.
메모리 크기 Windows 또는 8GB의 총 메모리 중 50%가 더 적습니다. 20175년 이전 빌드: Windows에서 총 메모리의 80% WSL 2 VM에 할당할 메모리 양입니다.
프로세서 number Windows에서 동일한 수의 프로세서 WSL 2 VM에 할당할 프로세서 수입니다.
localhostForwarding boolean true WSL 2 VM의 와일드카드 또는 localhost에 바인딩된 포트를 를 통해 localhost:port호스트에서 연결할 수 있는지 여부를 지정하는 부울
kernelCommandLine 문자열 비어 있음 추가 커널 명령줄 인수입니다.
swap 크기 Windows에서 메모리 크기의 25%가 가장 가까운 GB로 반올림됨 WSL 2 VM에 추가할 스왑 공간(스왑 파일 없음의 경우 0)입니다. 스왑 스토리지는 메모리 수요가 하드웨어 디바이스의 제한을 초과할 때 사용되는 디스크 기반 RAM입니다.
swapFile path %USERPROFILE%\AppData\Local\Temp\swap.vhdx 가상 하드 디스크 교환에 대한 절대 Windows 경로입니다.
pageReporting boolean true 기본 true 설정을 사용하면 Windows에서 WSL 2 가상 머신에 할당된 사용되지 않는 메모리를 회수할 수 있습니다.
guiApplications 부울* true WSL에서 GUI 애플리케이션(WSLg)에 대한 지원을 설정하거나 해제하는 부울입니다. Windows 11만 사용할 수 있습니다.
debugConsole 부울* false WSL 2 배포판 인스턴스가 시작될 때 의 dmesg 내용을 표시하는 출력 콘솔 창을 켜는 부울입니다. Windows 11만 사용할 수 있습니다.
nestedVirtualization 부울* true 중첩된 가상화를 설정하거나 해제하는 부울로, 다른 중첩된 VM이 WSL 2 내에서 실행되도록 합니다. Windows 11만 사용할 수 있습니다.
vmIdleTimeout 수* 60000 VM이 종료되기 전에 유휴 상태인 시간(밀리초)입니다. Windows 11만 사용할 수 있습니다.

값이 있는 항목은 path 이스케이프된 백슬라이시가 있는 Windows 경로여야 합니다( 예: C:\\Temp\\myCustomKernel

값이 있는 항목은 size 크기 뒤에 단위(예 8GB : 또는 512MB)가 와야 합니다.

값 형식 다음에 *가 있는 항목은 Windows 11만 사용할 수 있습니다.

예제 .wslconfig 파일

아래 샘플 파일은 .wslconfig 사용 가능한 몇 가지 구성 옵션을 보여 줍니다. 이 예제에서 파일 경로는 입니다 C:\Users\<UserName>\.wslconfig.

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets the VM to use two virtual processors
processors=2

# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
kernel=C:\\temp\\myCustomKernel

# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
swapfile=C:\\temp\\wsl-swap.vhdx

# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false

# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true

# Disables nested virtualization
nestedVirtualization=false

# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true

추가 리소스