WSL 환경 세팅

Kyojun Jin·2024년 4월 17일

WSL 사용법

목록 보기
1/6

1. 기능 활성화

Windows 키 누르고 검색에서 Windows 기능 켜기/끄기 검색해서 들어감.
Hyper-V, Linux용 Windows 하위 시스템 체크하고 재부팅
wsl --set-default-version 2로 버전 2를 쓰도록 한다.

2. 리눅스 설치

Option A

윈도우 측에서 검증된 Stable 배포판을 설치한다.

wsl --list --online으로 유효한 배포판 목록 확인.
wsl --install <설치할 배포판 이름>로 설치

이렇게 할 시, 리눅스가 설치된 가상 디스크, .vhdx 파일은 C드라이브 어딘가에 위치함.

Option B.

이미지 파일 (.tar) 찾아서 직접 설치한다.

우분투의 경우 여기서 버전별 WSL 이미지 파일을 찾을 수 있음.
단, .gz로 압축되어 있기 때문에 7z로 압축 풀어서 사용해야 함.

AMD64 기반 Ubuntu-22.04.4 LTS
AMD64 기반 Ubuntu-24.04 LTS

.tar 파일을 얻었으면 wsl --import {지정할 배포명} {설치할 위치} {tar 파일 위치}로 wsl에 임포트 가능.

설치 위치에 .vhdx 파일이 생성된다. 이는 리눅스가 설치된 가상 디스크이다.

3. 가상 디스크 옮기기 (선택)

이하는 .vhdx 파일

Option A.

.vhdx 파일의 위치를 찾아 원하는 곳에 위치시킨 다음 registry를 통해 경로 설정을 다시 해주는 방법이 있음.

wsl --shutdown
Get-AppxPackage -Name "배포판 이름" | Select PackageFamilyName

Powershell에서 위 명령어를 입력하면 앱 패키지 이름이 출력됨.

.vhdx 파일은 %USERPROFILE%\AppData\Local\Packages\앱 패키지 이름\LocalState\ext.vhdx에 위치함.
이를 복사해서 원하는 경로에 붙여넣기 함.

registry 를 이용하여 가상 디스크 경로 설정을 다시 하기 위해 SID가 필요함.
SID는 cmd에서 whoami /USER 명령어로 알 수 있음.

Windows Registry Editor Version 5.00

[HKEY_USERS\SID\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{UUID}]

"State"=dword:00000001

"DistributionName"="배포판 이름"

"Version"=dword:00000002

"BasePath"="vhdx 경로"

"Flags"=dword:0000000f

"DefaultUid"=dword:000003e8

아무 텍스트 파일이나 만들어서 위를 붙여넣고, SID와 배포판 이름, vhdx 경로를 수정함.
vhdx 경로는 양식이 좀 다른데, 경로가 "C:\A\B\C\ext.vhdx"라면 "\\\\?\\C:\\A\\B\\C"라고 해야 함. 이 파일의 확장자를 .reg로 저장.

기존 설치를 지우기 위해 wsl --unregister 배포판을 입력.

레지스트리 파일을 더블클릭으로 실행 후 wsl -l -v로 잘 있나 확인.

Option B.

기존 것을 tar로 내보낸 뒤 그 파일을 옮긴 다음 다시 Import 하는 작업.

  1. 배포를 tar 파일로 백업
  2. 배포 등록 해제
  3. 1번에서 백업했던 파일을 import

CMD 창을 켠 후 (관리자일 필욘 없다)
wsl --export {배포명} {tar 파일을 저장할 위치} 로 백업
wsl --unregister {지정할 배포명}로 등록해제
wsl --import {지정할 배포명} {설치 위치} {tar 파일 위치}로 임포트한다.
tar 파일은 그냥 지워도 된다.

4. Sparse 옵션 활성화

리눅스는 vhdx 가상 디스크 파일 안에서 돈다.
뭔가 설치할 때는 용량을 늘려서 설치된 드라이브를 침범하고, 삭제한다고 해서 디스크의 전체 용량이 줄어들지 않는다. 즉, 가상 디스크의 용량은 확장만 되고 줄어들지를 않는다.

WSL 2 버전에선 줄어들게 할 수 있다. wsl --manage {배포판 이름} --set-sparse true로 가능하다.

5. 유용한 명령어

sudo sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
다운로드를 카카오 미러서버로 바꿈 (안 하면 북미에서 받아서 엄청 느림)

sudo sed -i 's/ports.ubuntu.com/ftp.kaist.ac.kr/g' /etc/apt/sources.list

ARM 기반의 경우 아카이브 주소가 다르다. (ubuntu ports를 사용)
카카오는 ports 서버가 없으므로 KAIST의 미러 서버를 사용한다.

sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove
레포지터리 최신화

6. Systemd 활성화

WSL에서는 기본적으로 리눅스 운영체제 서비스 관리 프로그램인 systemctl 을 사용하지 못한다.

vim /etc/wsl.conf로 문서 생성 후

[boot]
systemd=true

을 복사해서 붙여넣는다. shutdown 후 다시 시작하면 사용할 수 있게 된다.

systemctl list-unit-files --type=service 로 확인해볼 수 있다.

0개의 댓글