WSL 인스턴스 export/import 방법 및 단축 아이콘 설정 방법
기본적으로 WSL 인스턴스는 Store App의 특성상 %LOCALAPPDATA%\Packages 폴더에 생성됩니다. 예를 들어, 20.04 버전의 Ubuntu를 설치한 경우,
Ubuntu 20.04 LTS
; https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71
해당 폴더로 가면 "CanonicalGroupLimited.Ubuntu20.04onWindows" 이름으로 시작하는 디렉터리를 하나 보게 될 것입니다.
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc
만약 해당 인스턴스 이미지를 다른 디렉터리로 옮기고 싶다면 export한 후,
c:\temp\wsl> wsl --export Ubuntu-20.04 Ubuntu-20.04-default.tar
c:\temp\wsl> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Converting 1
docker-desktop-data Running 2
docker-desktop Running 2
다른 디렉터리를 지정해 import를 하면 됩니다.
c:\temp\wsl> mkdir d:\wsldist
c:\temp\wsl> wsl.exe --import Ubuntu20.04 d:\wsldist\Ubuntu20.04 c:\temp\wsl\Ubuntu-20.04-default.tar
c:\temp\wsl> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 1
docker-desktop-data Running 2
Ubuntu20.04 Installing 1
docker-desktop Running 2
보는 바와 같이 기존 인스턴스가 있는 상태에서 복사가 된 것이므로 원한다면 이전 것은 삭제해도 됩니다.
c:\temp\wsl> wsl --unregister Ubuntu-20.04
Unregistering...
위의 명령어로 %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc의 "LocalState" 하위 폴더에 있는 ext4.vhdx 파일 또는 "rootfs" 디렉터리가 삭제됩니다. 그리고 원한다면 default 인스턴스도 새롭게 바꿔주는 것으로 마무리할 수 있겠고!
D:\wsldist> wsl --set-default Ubuntu20.04
D:\wsldist> wsl -l -v
NAME STATE VERSION
* Ubuntu20.04 Stopped 1
docker-desktop-data Running 2
docker-desktop Running 2
이런 식으로 인스턴스를 옮긴 경우 문제가 있다면, "시작" 메뉴에 Ubuntu WSL 인스턴스를 띄울 수 있는 아이콘이 없다는 점입니다. 기존에 "Ubuntu 20.04"를 설치해서 생긴 단축 아이콘은,
여전히 이전 인스턴스의 아이콘이기 때문에 그걸 선택하면 %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc 디렉터리에 다시 이미지가 구축됩니다.
이런 이유 때문에, 새롭게 import한 인스턴스를 간편하게 실행시킬 우아한 방법이 없습니다.
일단, 간단하게는 해당 인스턴스를 --set-default로 지정했다면 wsl.exe를 실행하는 것으로 시작할 수 있습니다.
D:\wsldist> wsl
root@TestPC:/mnt/d/wsldist#
/* 또는, -d 인자로 인스턴스를 지정
D:\wsldist> wsl.exe -d Ubuntu20.04
*/
그런데, 프롬프트를 보면 "
root@TestPC"의 root 계정으로 실행하기 때문에 시작 계정이 마음에 들지 않습니다. 실제로 이전의 "Ubuntu-20.04" 단축 아이콘으로 실행한 경우에는 시작부터 "
testusr@TestPC:~$"라는 프롬프트가 떴습니다.
다행히 시작 계정은 wsl.exe의 -u 옵션으로 가능하기 때문에 다음과 같이 실행하는 것으로 바꿀 수 있습니다.
D:\wsldist> wsl -d Ubuntu20.04 -u testusr
testusr@TestPC:/mnt/d/wsldist$
/* 또는, 현재 윈도우의 로그인 사용자와 같은 계정을 wsl에 생성해 두었다면,
D:\wsldist> wsl.exe -d Ubuntu20.04 -u %USERNAME%
*/
/*
또는, 기본 사용자 계정을 설정하고 싶다면 해당 리눅스 환경 내에서 /etc/wsl.conf 파일의 내용을 다음과 같이 설정합니다.
// Configure per distro launch settings with wslconf
// ; https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-per-distro-launch-settings-with-wslconf
[user]
default=testusr
*/
자, 그럼 여기까지의 구성으로 새롭게 단축 아이콘을 만들 수 있습니다.
Name: Ubuntu20.04
Target: C:\Windows\system32\wsl.exe -d Ubuntu20.04 -u %USERNAME%
이렇게 하고 단축 아이콘을 두 번 클릭하면 되는데, 여전히 사소한 문제가 하나 거슬립니다. 즉, 현재 디렉터리가 "/mnt/c/Windows/system32"로 wsl.exe를 실행했을 때의 디렉터리를 pwd로 시작하고 있는 것입니다.
이것까지 맞춰주려면 단축 아이콘 설정의 "Start in"에 다음과 같은 경로를 지정하면 됩니다.
\\wsl$\Ubuntu20.04\home\%USERNAME%
이걸로 모두 끝입니다. 여기까지 구성한 단축 아이콘을 두 번 누르면,
"Ubuntu 20.04 LTS" Store App의 동작이 그러했듯이 시작 프롬프트 경로가 동일하게 구성됩니다. ^^
testusr@TestPC:~$
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]