WSL의 고급 설정 구성

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

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배포의 디렉터리에 저장됩니다.
  • 배포별로 설정을 구성하는 데 사용됩니다. 이 파일에 구성된 설정 이 파일이 저장된 디렉터리를 포함하는 특정 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) 구성 파일을 수정하고 배포를 닫은 다음 다시 시작합니다. 구성 변경 내용이 즉시 적용된 것으로 가정할 수 있습니다. 하위 시스템이 여전히 실행 중일 수 있기 때문에 현재는 그렇지 않습니다. 변경 내용을 선택할 충분한 시간을 주기 위해 다시 시작하기 전에 하위 시스템이 중지될 때까지 기다려야 합니다. 명령으로 PowerShell을 사용하여 Linux 배포판(셸)이 닫은 후에도 여전히 실행 중인지 확인할 수 wsl --list --running 있습니다. 실행 중인 배포가 없으면 "실행 중인 배포가 없습니다."라는 응답이 수신됩니다. 이제 배포를 다시 시작하여 구성 업데이트가 적용된 것을 확인할 수 있습니다.

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

wsl.conf에 대한 구성 설정

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

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

자동 탑재 설정

섹션 레이블: [automount]

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

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

자동 탑재 옵션

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

설명 기본값
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로 만든 새 디렉터리에 플래그가 설정 되어 있는지 여부를 확인 합니다. 옵션에 대 한 자세한 설명은 대 /소문자 구분 을 참조 하세요. off

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

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

참고

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

네트워크 설정

섹션 레이블: [network]

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

Interop 설정

섹션 레이블: [interop]

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

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

사용자 설정

섹션 레이블: [user]

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

key 기본값 정보
기본값 문자열 처음 실행할 때 생성 된 초기 사용자 이름입니다. 이 키를 설정 하면 먼저 WSL 세션을 시작할 때 실행할 사용자를 지정 합니다.

부팅 설정

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

섹션 레이블: [boot]

key 기본값 정보
명령을 사용합니다. 문자열 "" WSL 인스턴스가 시작 될 때 실행할 명령 문자열입니다. 이 명령은 루트 사용자로 실행 됩니다. 예: service docker start Windows 11에만 사용할 수 있습니다.

예제 wsl 파일

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를 참조 하세요.)

. Wslconfig 파일을 저장할 위치에 대 한 정보는 . wslconfig 를 참조 하세요.

참고

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

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

섹션 레이블: [wsl2]

key 기본값 정보
커널(kernel) 문자열 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 문자열 %USERPROFILE%\AppData\Local\Temp\swap.vhdx 스왑 가상 하드 디스크에 대한 절대 Windows 경로입니다.
pageReporting boolean true 기본 true 설정을 사용하면 Windows WSL 2 가상 머신에 할당된 사용되지 않는 메모리를 회수할 수 있습니다.
guiApplications boolean* true WSL에서 GUI애플리케이션(WSLg)에대한 지원을 설정하거나 해제하는 부울입니다. Windows 11 경우에만 사용할 수 있습니다.
debugConsole boolean* false WSL 2 배포판 인스턴스가 시작될 때 의 내용을 표시하는 출력 콘솔 창을 켜는 dmesg 부울입니다. Windows 11 경우에만 사용할 수 있습니다.
nestedVirtualization boolean* true 중첩된 가상화를 설정하거나 해제하는 부울을 사용하면 다른 중첩된 VM이 WSL 2 내에서 실행될 수 있습니다. Windows 11 경우에만 사용할 수 있습니다.
vmIdleTimeout number* 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