Recent Posts
Recent Comments
Link
04-09 03:54
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

WSL(Windows Subsystem for Linux) 설치와 설정 본문

DEV&OPS/Linux & Cloud

WSL(Windows Subsystem for Linux) 설치와 설정

ALEPH.GEM 2025. 3. 5. 22:24

 

WSL2

WSL은 리눅스 가상 머신(VM)을 실행하지 않고도 기본적인 리눅스 바이너리를 그대로 윈도우에서 실행할 수 있드록 해줍니다. 

단순히 리눅스 bash 쉘만 제공하는 것을 넘어서 실제 리눅스와 똑같이 보이도록 동작하게 해줍니다.

단, 윈도우10 버전 1903 빌드 18362 이상에서 설치 가능합니다.

 

WSL2 기능 활성화

1.윈도우의 PowerShell을 관리자 권한으로 실행합니다.

시작 버튼 > powershell 입력 > 관리자 권한으로 실행

 

2. 아래 명령어를 입력해서 wsl을 활성화 합니다.

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

 

3. 윈도우를 재부팅합니다.

 

혹은 윈도우 명령프롬프트 관리자 모드에서 아래 명령어를 입력해서 설치해도 됩니다.

optionalfeatures

그러면 Windows 기능 켜기/끄기 가 실행되는데

Windows Subsystem for Linux 와 Virtual Machine Platform을 체크해서 설치합니다.

단, 비슷한 가상 기술인 Hyper-V와 Windows Hypervisor Platform은 설치하지 않아도 됩니다.

 

 

WSL2 리눅스 커널 업데이트

X64 리눅스 커널 업데이트 패키지 다운로드

wsl_update_x64.msi
16.31MB

 

arm54 리눅스 커널 업데이트 패키지 다운로드

wsl_update_arm64.msi
8.65MB

 

위의 파일을 실행하지 않으면 나중에 리눅스(우분투) 실행시 WslRegisterDistribution failed with error:이 발생합니다.

설치가 완료되면 윈도우 PowerShell 에서 다음과 같이 입력합니다.

wsl --set-default-version 2

 

 

Microsoft Store에서 리눅스 배포판 다운로드 및 설치

마이크로소프트 스토어에서 리눅스 배포판을 다운로드 받을 수 있습니다.

1. 시작 메뉴 > Microsoft Store 검색 후 실행

2. Linux or ubuntu 검색 후 다운로드

여기서는 우분투24를 다운로드받고 설치하겠습니다.

만약 실행 시 WslRegisterDistribution failed with error: 이 발생한다면 아래 방법으로 해결해봅니다.

1. 시작 > 실행 > %localappdata%\Packages 입력합니다.
2..CanonicalGroupLimited.Ubuntu_ 로 검색해서 나오는 폴더를 찾아서 오른쪽 클릭을 합니다.
3..속성 > 일반 > 고급 > "내용을 압축하여 디스크 공간 절약" 의 체크 박스의 체크를 해제합니다.
4..Ubuntu App을 재실행 합니다..

 

정상적으로 실행되면 username과 password를 등록합니다. (윈도우 사용자 계정과 일치할 필요는 없습니다.)

이 사용자는 배포판의 기본 사용자이고 sudo 그룹에 추가됩니다.

그러면 이제 탐색기에서 리눅스의 파일 시스템에 접근할 수 있으며 네트워크 드라이브로도 등록할 수 있습니다.

 

WSL 으로 설치된 리눅스 배포판 실행

설치된 배포판 확인 방법(powershell 이나 cmd 에서)

wsl.exe -list
혹은
wsl.exe -l

 

위 명렁어에 나오는 리눅스 배포판 이름을 이용해서 wsl 실행 시 특정 배포판으로 실행 할 수 있습니다.

wsl.exe -d 설치된배포판이름

 

C:\Users\사용자계정\AppData\Local\Microsoft\WindowsApps 경로에는 설치된 배포판 이름의 exe 파일이 존재하는데 이 exe 파일으로도 리눅스 배포판을 실행할 수 있습니다.

간편하게 시작 메뉴에서 설치한 배포판을 검색해서 app으로도 실행 할 수 있습니다.

 

 

 

WSL 사용자 계정 구성 및 관리

특정 리눅스 배포판에 대한 암호를 잊어버렸다면 파워셸을 열고 리눅스 배포판의 루트 사용자로 실행합니다.

wsl -u root -d 리눅스배포판이름

 

그런 다음 아래처럼 passwd 명령어로 사용자의 암호를 재 설정합니다.

passwd 사용자계정

 

 

우분투 배포판 업데이트와 업그레이드

업데이트와 업그레이드의 차이점은 업데이트는 현재 제품을 수정하는 것이고 업그레이드는 현제 재품을 새 버전으로 교체하는 것입니다.

sudo apt update && sudo apt upgrade

 

Advanced Package Tool(apt)는 우분투 배포판 패키지 처리를 도와주는 도구입니다.

apt update는 /etc/apt/sources.list 파일에 있는 배포판 소프트웨어 저장소에서 사용 가능한 패키지 목록 데이터베이스를 갱신하는 작업입니다.

반면 apt upgrade는 실제 소프트웨어를 업그레이드 하는 것입니다. 

 

 

메모리, CPU 제한 값 설정

딥러닝 학습을 시키려면 많은 자원이 필요한데 기본 설정으로는 부족할 수 있습니다.

%USERPROFILE%\.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=32GB 

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

# 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=16GB

# 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 on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored
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

# Enable experimental features
[experimental]
sparseVhd=true

 

 

 

WSL 에서 배포판 리눅스의 포트로 연결하는 방법

# WSL의 IP 주소를 172.19.120.200 이라 가정합니다.

# 윈도우즈 파워쉘의 네트워크 관리 기능인 netsh 명령어를 이용하여 5432 포트를 포워딩 설정합니다.
netsh interface portproxy add v4tov4 listenport=5432 listenaddress=0.0.0.0 connectport=5432 connectaddress=172.19.120.200

# 다시 netsh 명령어로 방화벽 규칙을 추가합니다.
netsh advfirewall firewall add rule name="WSL PostgreSQL Port Forwarding" dir=in action=allow protocol=TCP localport=5432

 

방화벽 규칙에서 사용한 옵션 설명

  • name="WSL PostgreSQL Port Forwarding": 규칙의 이름을 지정합니다.
  • dir=in: 규칙의 방향을 지정하여, direction=inbound 즉, 들어오는 트래픽에 적용합니다.
  • action=allow: 트래픽을 허용합니다.
  • protocol=TCP: 규칙이 TCP 프로토콜에 적용됩니다.
  • localport=5432: 로컬 포트 5432로 향하는 트래픽에 적용됩니다.

 

wsl.conf

/etc/wsl.conf 에 있는 파일을 사용해서 모든 배포판의 시작 구성을 설정할 수 있습니다.

이 파일은 생성되지 않았다면 직접 생성해줘야 합니다.

key=value 형식으로 속성을 지정해주면 됩니다.

변경사항을 적용하려면 wsl을 다시 시작해야 합니다.

 

[automount] 

이 항목은 wsl 시작시 리눅스에서 파일시스템을 자동으로 마운트 해줍니다.

속성 형식 기본값 설명
enabled true/false true true를 설정하면 리눅스의 /mnt 경로 아래에 윈도우 운영체제의 C:\ , D:\ 등 고정 드라이브들이 자동으로 마운트 됩니다.
mountFsTab true/false true true를 설정하면 고정 드라이브 외에 /etc/fstab 파일에 서술된 항목들이 자동으로 마운트 됩니다.
root 문자열 /mnt/ 고정 드라이브들을 마운트할 기본 경로를 설정합니다.
options 쉼표로 구분된 문자열 빈 문자열 drvfs 마운트시 세부 옵션을 추가로 지정할 수 있습니다.

 

options 항목에서 사용하는 drvfs 마운트 옵션은 다음과 같습니다.

uid: 모든 파일의 소유자가 사용하는 사용자 ID
gid: 모든 파일의 소유자가 사용하는 그룹 ID
umask: 모든 파일(디렉터리)를 제외하기 위한 8진수 권한 마스크
fmask: 모든 일반 파일을 제외하기 위한 8진수 권한 마스크
dmask: 모든 디렉터리를 제외하기 위한 8진수 권한 마스

 

[network]

속성 형식 기본값 설명
generateHosts true/false true true로 설정하면 /etc/hosts 파일에 윈도우의 \system32\drivers\etc\hosts의 내용을 반영해줍니다.
generateResolvConf true/false true true로 설정하면 /etc/resolv.conf 파일에 WSL에서 사용할 DNS 서버 주소 목록을 생성합니다.

 

[interop]

속성 형식 기본값 설명
Enabled true/false true true로 설정하면 WSL이 notepad.exe 처럼 윈도우 프로세스를 실행할 수 있습니다.
appendWindowsPath true/false true true로 설정하면 환경 변수인 $PATH에 윈도우의 PATH 환경 변수의 내용을 자동으로 덧붙입니다.

 

 

WSLENV

WSLENV는 윈도우와 WSL 환경 사이 공유되는 설정입니다.

WSLENV 변수에 대한 변경 사항은 WSL 세션이 종료되면 자동으로 제거됩니다.

따라서 계속해서 값들을 유지하려면 .profile 이나 .bash_rc 값으로 설정해야 합니다.

 

다음 플래그들은 중복해서 사용가능합니다.

/p : WSL에서 윈도우 사이에 경로를 변환해야함을 의미합니다.
/l : 환경 변수가 경로 목록임을 나타냅니다.
/u : 이 플래그가 붙은 환경 변수는 윈도우에서 WSL 애플리케이션을 실행할 때만 사용합니다.
/w : 이 플래그가 붙은 환경 변수는 반대로 WSL에서 윈도우 애플리케이션을 실행할 때에만 사용합니다.

 

사용 예제

$ export FORWSL=/mnt/c
$ export FORWIN=/mnt/c/Data
$ export MYPATHLIST=/mnt/c/Users:/mnt/c/Data
$ export TEMPDIR=/mnt/c/temp
$ export WSLENV=FORWSL/u:FORWIN/w:MYPATHLIST/l:TEMPDIR/p
$ cmd.exe #WSL에서 윈도우 명령 프롬프트를 실행
C:\WINDOWS\system32> echo %TEMPDIR%

 

 

 

 

728x90

'DEV&OPS > Linux & Cloud' 카테고리의 다른 글

WSL 배포판 관리  (0) 2025.03.11
git branch 관리: tracking, cherry-pick, stash  (0) 2025.02.20
Docker 기본  (0) 2024.05.08
Docker 설치  (0) 2024.05.08
Ubuntu 22.04.4 서버 설치 및 설정  (0) 2024.05.08