주희아빠의 헝그리 라이딩

WSL 1 vs WSL 2 실질적인 차이점 본문

나름 IT 이야기

WSL 1 vs WSL 2 실질적인 차이점

도림천 버섯돌이 2023. 11. 1. 21:51

2023.11.1 

 

WSL 1 vs WSL 2 실질적인 차이점

 

최근 얼마간 WSL1 과 WSL2 를 사용해 보면서 실제로 차이가 나는 몇가지를 발견하였습니다.

 

공식적으로 마이크로소프트에서 말하는 차이점은 아래 링크를 참고해 주십시오.

https://learn.microsoft.com/ko-kr/windows/wsl/compare-versions

 

WSL 버전 비교

WSL 2는 WSL 1의 이점을 제공하지만 WSL 1과 같은 변환 계층이 아닌 실제 Linux 커널을 사용하므로 성능이 향상됩니다.

learn.microsoft.com

 

사실 읽어봐도 저는 잘 모르겠습니다. 대부분의 경우는 WSL2 가 더 좋으므로 그냥 이것을 이용하면 됩니다.

 

1. 파일의 저장되는 형태가 다릅니다.

WSL1 은 다음처럼 windows 의 실제 파일시스템으로 존재합니다. 거의 모든 점에서 WSL2 유리하지만 WSL1 의 유일한 장점이 파일 액세스 속도라고 하는데 아마 이때문이 아닐까 싶습니다.

 

파일이 저장되는 경로는 다음과 같습니다.

 

C:\Users\multitab\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState

 

한칸 아래인 rootfs 에 들어가 보면 다음처럼 리눅스 파일시스템이 그대로 존재하는 것을 볼 수 있습니다.

 

WSL2 는 다음처럼 단일 파일로 구성됩니다. 일반적으로 보던 다른 VM 에서의 형태와 유사하군요. 다른 vm 관리자에 물리면 바로 돌아가려나???

 

중간에 WSL 버전을 1과 2에서 서로 오가면 이 때 파일이 컨버팅되는 임시 상황도 볼 수 있습니다.

일반 파일시스템과 vhdx 디스크가 동시에 존재함.

 

2. WSL1 에서는 디스크관련 몇가지 문제가 발생하는 것을 발견했습니다.

/dev/ 아래 loop 장치가 안잡힙니다. 그래서 이 장치를 사용하는 스크립트의 경우는 문제가 생겼습니다.

추가로 lspci 명령어도 동작하지 않습니다.

WSL2 에서는 /dev/loop* 장치들이 올바르게 나오고 lspci 명령어도 잘 수행됩니다.

 

3. X11 어플리케이션 바로 사용 여부

원래 X11 어플리케이션의 경우는 별도로 DISPLAY=ip:0 의 세팅을 해주고 Windows 쪽에 X-Server 역할을 해주는 X-Manager 나 mobaxterm 같은 것을 띄워주어야 화면을 받을 수 있습니다.

예) export DISPLAY=192.168.1.5:0 <-- windows 의 ip.

 

WSL1 에서는 당연히 이렇게 동작하는데 WSL2 에서는 별도의 설정 없이도 X 관련 어플리케이션을 띄울 수 있습니다.

사진은 위에 것 참조. 오랜만에 보는 'xclock'...

그렇다고 다른 머신의 Terminal 에서 띄운 프로그램까지 X 를 사용할 수 있는건 아닙니다. WSL 에서 실행되는 것에 대해서만 받아줍니다.

 

나중에 또 차이점을 발견하면 업데이트하도록 하겠습니다.

 

Tip 1 . wsl 버전 1 과 2 변환하기. 필요에 따라 wsl1 과 wsl2 를 변환할 수 있습니다. 변환에 필요한 시간은 사용한 디스크양에 따라 달라집니다.

 

Tip 2. WSL 의 리눅스 저장 파일 옮기기.

c: 드라이브 공간이 부족해서 d: 로 옮기거나 아예 다른 컴퓨터로 이동할 수도 있습니다.

솔직히 이런 구석에 쳐 박혀 있으면 관리도 안됩니다.

C:\Users\multitab\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState

-- windows 쪽 cmd 창 혹은 powershell 에서 진행
C:\Users\multitab> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu          Running         2
  Ubuntu-20.04    Stopped         2

C:\Users\multitab> wsl --export ubuntu-20.04 c:\temp\ubuntu.tar
내보내기가 진행 중입니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.
작업을 완료했습니다.

-- 바로 import 하면 같은 이름이 있다고 오류가 납니다. 기존것을 지워주고 진행합니다.
C:\Users\multitab> wsl --unregister ubuntu-20.04
등록 취소 중입니다.
작업을 완료했습니다.

-- 새로 옮겨갈 디렉토리를 지정해 줍니다.
C:\Users\multitab> wsl --import ubuntu-20.04 c:\home\ubuntu-20.04 c:\temp\ubuntu.tar
가져오기가 진행 중입니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.
작업을 완료했습니다.

-- export/import 를 진행하면 기본접속 유저 정보가 날아갑니다. 다시 설정해 줍니다. 
-- 명령어는 ubuntu, ubuntu2004 처럼 구분됩니다.
C:\Users\multitab> ubuntu2004 config --default-user multitab

C:\Users\multitab> dir c:\home\ubuntu-20.04\
 C 드라이브의 볼륨: Windows10
 볼륨 일련 번호: 2AD2-3996

 c:\home\ubuntu-20.04 디렉터리

2023-11-17  오후 08:59    <DIR>          .
2023-11-17  오후 08:59    <DIR>          ..
2023-11-17  오후 09:19     4,374,659,072 ext4.vhdx
               1개 파일       4,374,659,072 바이트
               2개 디렉터리  107,668,172,800 바이트 남음

 

Tip 3. wsl ubuntu 호출 명령어

wsl 에 여러벌의 리눅스가 설치된 경우 각각 고유의 이름을 가지게 됩니다. 보통 처음에 설치한 것은 ubuntu 이고 이후에는 버전명이 붙는 것 같습니다. 이 이름으로 바로 시작을 하거나 위에처럼 config 를 변경할 때도 사용 됩니다.

다음 경로를 보면 실행 파일을 찾을 수 있습니다. 본인의 유저 디렉토리로 치환하여 봐주십시오.

C:\Users\multitab\AppData\Local\Microsoft\WindowsApps

반응형