커널

WSL 같은 버전 여럿 만들기

y2h000123 2022. 9. 21. 22:07

이미 존재하는 18.04의 설정으로 인해 충돌이 생길 것을 우려하여 이 작업을 시작하게 되었다.

 

1. 원하는 버전 다운로드

https://learn.microsoft.com/ko-kr/windows/wsl/install-manual#downloading-distributions

 

Manual installation steps for older versions of WSL

Step by step instructions to manually install WSL on older versions of Windows, rather than using the wsl install command.

learn.microsoft.com

링크를 참고하여 .appx 형식의 패키지를 원하는 버전으로 다운로드 한다.

curl.exe -L -o ubuntu.appx https://aka.ms/wsl-ubuntu-1804

나의 경우 18.04 버전의 패키지를 다운받으려 했기 때문에 curl을 사용하여 패키지를 다운받았다.

 

2. 이미지 파일 추출

mv ./ubuntu.appx ./ubuntu.zip
Expand-Archive ./ubuntu.zip
mv ./ubuntu/install.tar.gz ./img.tar.gz
Remove-Item ./ubuntu -recurse

해당 패키지에서 우분투 이미지에 해당하는 부분만을 가져오는 명령어이다.

install.tar.gz에 이미지에 해당하는 데이터가 존재하기에 사용할 수 있는 방법이다.

더보기

20.04를 확인해보니 다른 appx 파일들이 추가로 존재했다.

하단에 있는 Ubuntu_2004.2021.825.0_x64.appx를 zip파일로 바꾸어 확인해보면 install.tar.gz 파일이 존재하는데, 때문에 20.04의 경우 아래와 같이 실행을 하면 18.04와 동일하게 이미지를 추출 할 수 있다.

mv ./ubuntu.appx ./ubuntu.zip
Expand-Archive ./ubuntu.zip
Expand-Archive ./ubuntu/ubuntu.zip -f
mv ./ubuntu/install.tar.gz ./img.tar.gz
Remove-Item ./ubuntu -recurse

추가한 명령줄에 -f 옵션을 붙힌 이유는 이미 존재하는 ubuntu 파일에 겹치는 내용이 존재하는데, 그래서 생기는 오류를 나타나지 않도록 하기 위함이다.

기존 18.04의 용량 문제로 인해 편법이라 생각되는 이 방법을 사용했다.

더보기

원래였다면

  1. 기존에 있던 이미지를 export 한다. (wsl.exe --export <name> ./backup.tar)
  2. 새로운 패키지를 적용한다. (Add-AppxPackage ./ubuntu.appx)
  3. 설정 후 backup.tar를 import 한다. (wsl.exe --import <name> <path> ./backup.tar)

위와 같은 과정을 통해 새로운 버전을 생성했을 것이다.

하지만 1, 3번 과정이 이미지의 용량이 너무 커 시간을 많이 소요하는 바람에 다른 방법을 찾게 되었다.

 

3. 이미지 파일 적용

wsl.exe --import <name> <path> ./img.tar.gz 
wsl.exe -l -v

나의 경우 아래와 같은 명령줄을 실행하여 Packages 파일 위치에 SSL-18.04 를 생성했다.

wsl.exe --import SSL-18.04 C:/Users/y2h00/AppData/Local/Packages/ ./img.tar.gz

 

4. 사용자 계정 생성

wsl.exe -d <name>

import 옵션을 사용하여 이미지를 불러온 경우 유저가 존재하지 않기 때문에 아래의 명령어로 유저를 추가했다.

wsl.exe -d <name> adduser <userId>

login 명령어를 사용하거나, 아래의 명령어를 이용해 생성한 유저로 접속할 수 있다.

wsl.exe -d <name> -u <userId>

 

+ /etc/wsl.conf 파일을 설정하여 default user를 설정할 수 있다 하는데, 필자는 성공하지 못했다고 한다.

+ 재부팅을 하니 제대로 적용이 되었다.

 

참고 자료