성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline' id='title'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>WSL 인스턴스 export/import 방법 및 단축 아이콘 설정 방법</h1> <p> 기본적으로 WSL 인스턴스는 Store App의 특성상 %LOCALAPPDATA%\Packages 폴더에 생성됩니다. 예를 들어, 20.04 버전의 Ubuntu를 설치한 경우,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Ubuntu 20.04 LTS ; <a target='tab' href='https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71'>https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71</a> </pre> <br /> 해당 폴더로 가면 "CanonicalGroupLimited.Ubuntu20.04onWindows" 이름으로 시작하는 디렉터리를 하나 보게 될 것입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc </pre> <br /> 만약 해당 인스턴스 이미지를 다른 디렉터리로 옮기고 싶다면 export한 후,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp\wsl> <span style='color: blue; font-weight: bold'>wsl --export Ubuntu-20.04 Ubuntu-20.04-default.tar</span> c:\temp\wsl> <span style='color: blue; font-weight: bold'>wsl -l -v</span> NAME STATE VERSION * <span style='color: blue; font-weight: bold'>Ubuntu-20.04 Converting</span> 1 docker-desktop-data Running 2 docker-desktop Running 2 </pre> <br /> 다른 디렉터리를 지정해 import를 하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp\wsl> <span style='color: blue; font-weight: bold'>mkdir d:\wsldist</span> c:\temp\wsl> <span style='color: blue; font-weight: bold'>wsl.exe --import Ubuntu20.04 d:\wsldist\Ubuntu20.04 c:\temp\wsl\Ubuntu-20.04-default.tar</span> c:\temp\wsl> <span style='color: blue; font-weight: bold'>wsl -l -v</span> NAME STATE VERSION * Ubuntu-20.04 Stopped 1 docker-desktop-data Running 2 <span style='color: blue; font-weight: bold'>Ubuntu20.04 Installing</span> 1 docker-desktop Running 2 </pre> <br /> 보는 바와 같이 기존 인스턴스가 있는 상태에서 복사가 된 것이므로 원한다면 이전 것은 삭제해도 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp\wsl> <span style='color: blue; font-weight: bold'>wsl --unregister Ubuntu-20.04</span> Unregistering... </pre> <br /> 위의 명령어로 %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc의 "LocalState" 하위 폴더에 있는 ext4.vhdx 파일 또는 "rootfs" 디렉터리가 삭제됩니다. 그리고 원한다면 default 인스턴스도 새롭게 바꿔주는 것으로 마무리할 수 있겠고!<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\wsldist> <span style='color: blue; font-weight: bold'>wsl --set-default Ubuntu20.04</span> D:\wsldist> <span style='color: blue; font-weight: bold'>wsl -l -v</span> NAME STATE VERSION <span style='color: blue; font-weight: bold'>* Ubuntu20.04</span> Stopped 1 docker-desktop-data Running 2 docker-desktop Running 2 </pre> <br /> 이런 식으로 인스턴스를 옮긴 경우 문제가 있다면, "시작" 메뉴에 Ubuntu WSL 인스턴스를 띄울 수 있는 아이콘이 없다는 점입니다. 기존에 "Ubuntu 20.04"를 설치해서 생긴 단축 아이콘은,<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='custom_wsl_instance_shortcut_1.png' src='/SysWebRes/bbs/custom_wsl_instance_shortcut_1.png' /><br /> <br /> 여전히 이전 인스턴스의 아이콘이기 때문에 그걸 선택하면 %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc 디렉터리에 다시 이미지가 구축됩니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 이런 이유 때문에, 새롭게 import한 인스턴스를 간편하게 실행시킬 우아한 방법이 없습니다.<br /> <br /> 일단, 간단하게는 해당 인스턴스를 --set-default로 지정했다면 wsl.exe를 실행하는 것으로 시작할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\wsldist> <span style='color: blue; font-weight: bold'>wsl</span> root@TestPC:/mnt/d/wsldist# /* 또는, -d 인자로 인스턴스를 지정 D:\wsldist> <span style='color: blue; font-weight: bold'>wsl.exe -d Ubuntu20.04</span> */ </pre> <br /> 그런데, 프롬프트를 보면 "<span style='color: blue; font-weight: bold'>root</span>@TestPC"의 root 계정으로 실행하기 때문에 시작 계정이 마음에 들지 않습니다. 실제로 이전의 "Ubuntu-20.04" 단축 아이콘으로 실행한 경우에는 시작부터 "<span style='color: blue; font-weight: bold'>testusr</span>@TestPC:~$"라는 프롬프트가 떴습니다. <br /> <br /> 다행히 시작 계정은 wsl.exe의 -u 옵션으로 가능하기 때문에 다음과 같이 실행하는 것으로 바꿀 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\wsldist> <span style='color: blue; font-weight: bold'>wsl -d Ubuntu20.04 -u testusr</span> testusr@TestPC:/mnt/d/wsldist$ /* 또는, 현재 윈도우의 로그인 사용자와 같은 계정을 wsl에 생성해 두었다면, D:\wsldist> <span style='color: blue; font-weight: bold'>wsl.exe -d Ubuntu20.04 -u %USERNAME%</span> */ /* 또는, 기본 사용자 계정을 설정하고 싶다면 해당 리눅스 환경 내에서 /etc/wsl.conf 파일의 내용을 다음과 같이 설정합니다. // Configure per distro launch settings with wslconf // ; <a target='tab' href='https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-per-distro-launch-settings-with-wslconf'>https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-per-distro-launch-settings-with-wslconf</a> [user] default=testusr */ </pre> <br /> 자, 그럼 여기까지의 구성으로 새롭게 단축 아이콘을 만들 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Name: Ubuntu20.04 Target: C:\Windows\system32\wsl.exe -d Ubuntu20.04 -u %USERNAME% </pre> <br /> 이렇게 하고 단축 아이콘을 두 번 클릭하면 되는데, 여전히 사소한 문제가 하나 거슬립니다. 즉, 현재 디렉터리가 "/mnt/c/Windows/system32"로 wsl.exe를 실행했을 때의 디렉터리를 pwd로 시작하고 있는 것입니다.<br /> <br /> 이것까지 맞춰주려면 단축 아이콘 설정의 "Start in"에 다음과 같은 경로를 지정하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > \\wsl$\Ubuntu20.04\home\%USERNAME% </pre> <br /> 이걸로 모두 끝입니다. 여기까지 구성한 단축 아이콘을 두 번 누르면,<br /> <br /> <img alt='custom_wsl_instance_shortcut_2.png' src='/SysWebRes/bbs/custom_wsl_instance_shortcut_2.png' /><br /> <br /> "Ubuntu 20.04 LTS" Store App의 동작이 그러했듯이 시작 프롬프트 경로가 동일하게 구성됩니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > testusr@TestPC:~$ </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1474
(왼쪽의 숫자를 입력해야 합니다.)