
에서 개발을 시작했을 때 이유 는 WSL
모르겠지만 . 유일한 차이점은 새 버전이 출시될 때 자동으로 업데이트되지 않는다는 것입니다. 내가하고 싶은 것은 재구성하지 않고 그대로 만드는 것뿐입니다. 모든 파일을 에서 로 이동하려고 생각했지만 그렇게 하는 것이 안전한지 모르겠습니다. 내가하려는 일을 수행하는 방법을 아는 사람이 있습니까? 나도 해야 하나?Ubuntu-20.04
Ubuntu
Ubuntu-20.04
Ubuntu
Ubuntu
Ubuntu-20.04
Ubuntu-20.04
Ubuntu
편집: 두 버전의 우분투가 모두 실행 중입니다. @NotTheDr01ds가 말한 대로 WSL-2
확인했습니다 .wsl -l -v
편집 2: 모든 파일과 설치된 패키지를 포함하여 Ubuntu-20.04
모든 구성을 원합니다.Ubuntu
답변1
이 작업을 전혀 수행할 필요가 없는 이유
알겠습니다. 우선 중요한 일부터 하세요. 이것은 아마도 꽤 불필요할 것입니다.
Store의 "Ubuntu"(버전 번호 없음)가 자동으로 업데이트된다는 사실은 ... 사실이지만 실제로는 약간 오해의 소지가 있습니다.
설명하기가 조금 어렵지만 Store에서 "Ubuntu"(버전 없음)를 설치하면 실제로 다음과 같은 결과가 발생합니다.둘것들:
의 rootfs 패키지(
install.tar.gz
)입니다C:\Program Files\WindowsApps\CanonicalGroup...
. 관리 PowerShell을 시작하고Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Where-Object {$_.Name -eq 'install.tar.gz' } | % { $_.DirectoryName }
.를 통해 처음 실행하면
ubuntu.exe
설치 프로그램이%UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
Store에 새 릴리스가 있을 때 업데이트되는 유일한 것은 rootfs 패키지입니다. 그렇습니다~ 아니다설치된 것을 변경하세요사례. (저를 유지해주시는 Reddit의 u/zoredache에게 감사의 말씀을 전합니다.나에게 이것을 생각나게 한다.)
다음과 같은 경우를 제외하고는 대부분의 사용자에게 이는 꽤 쓸모가 없습니다.
- 인스턴스 등록을 취소하고(모든 구성 삭제)
ubuntu.exe
명령을 다시 실행하여 인스턴스를 다시 구성합니다. install.tar.gz
이를 사용하여 두 번째 WSL/Ubuntu 인스턴스를 생성하려고 합니다 ( 사용wsl --import
). 새로 생성된 인스턴스는 Store에서 업데이트된 rootfs를 사용합니다.
이러한 시나리오 중 어느 것도 매우 일반적이지 않습니다. 버전이 지정되지 않은 Store가 Ubuntu
(아마도) 22.04로 업데이트 되더라도설치됨20.04의 인스턴스, 단지 rootfs패키지.
sudo do-release-upgrade -d
최종적으로 22.04(또는 임시 릴리스)로 업그레이드하려면 여전히 실행해야 합니다 .
따라서... 원하는 방식으로 이미 구성했으므로 WSL 인스턴스에 대해 Ubuntu-20.04
더 짧고 깔끔한 이름을 얻는 것 외에는 변경해도 큰 이점이 없습니다 .Ubuntu
어쨌든 어떻게 해야 할까요?
즉, WSL2가 데이터를 저장하는 방식으로 구성을 이동하는 것이 그다지 어렵지는 않습니다. WSL2 인스턴스의 전체 파일 시스템은 이름이 지정된 가상 HDD에 저장됩니다 ext4.vhdx
.
Ubuntu
두 개의 Ubuntu 설치( 및 Ubuntu-20.04
) ext4.vhdx
가 있으므로 %userprofile%\AppData\Local\Packages\
. 정확한 위치를 얻으려면 PowerShell에서 다음을 실행하세요.
Get-ChildItem "$env:USERPROFILE\AppData\Local\Packages\CanonicalGroupLimited*\LocalState\*"
내 설치의 경우 다음과 같습니다.
...\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
...\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
이 시점에서는 해결책이 매우 분명할 수 있지만, 물론 다음과 같이 주의해야 합니다.
실행 중인 모든 WSL 인스턴스를 종료합니다.
그런 다음
wsl --shutdown
현재 실행 중인 항목이 없는지 확인합니다.기존 구성을 백업하는 것은 나쁜 생각이 아닙니다
wsl --export Ubuntu-20.04 2021-09-26_Ubuntu-20.04_backup.tar
(또는 백업 파일이라고 부르고 싶은 모든 것). 이는 기본적으로 모든 파일, 소유권 및 권한을 포함하여 현재 rootfs의 tarball을 생성합니다.ext4.vhdx
이 시점에서 새로 설치된(Ubuntu) 항목 위에 원하는(Ubuntu-20.04)을 복사하기만 하면 됩니다 . 진짜 비결은 단순히 올바른 것을 복사했는지 확인하는 것입니다.Ubuntu-20.04
"오른쪽" 복사본에서 후자의 타임스탬프를 쉽게 볼 수 있도록 배포판을 실행하고 빠르게 변경할 수 있습니다 .
유일한 실제 요구 사항은 두 인스턴스의 기본 사용자가 동일해야 한다는 것입니다.
또 다른 가능성 - 원하는 구성을 으로 백업했으므로 언제든지 이름이 새 인스턴스로 wsl --export
백업될 수 있습니다 .wsl --import
Ubuntu
- 먼저 Store를 제거해야 합니다
Ubuntu
. - 그런 다음 새 인스턴스의 디렉터리를 선택합니다. 그것은 어디에나 있을 수 있으며 더 이상 귀하의
AppData
디렉토리 아래에 있을 필요가 없습니다 . wsl --import Ubuntu <directory> path\to\2021-09-26_Ubuntu-20.04_backup.tar --version 2
나는 에 %userprofile%\Documents\WSL\instances
내 tar
백업을 보관합니다 %userprofile%\Documents\WSL\images
. 이를 통해 wsl --import
. 일상적인 환경에 영향을 주지 않고 무언가를 테스트할 수 있다는 것은 좋은 일입니다.
이 글을 읽고 있는 WSL1 사용자를 위한 참고 사항입니다. WSL1의 rootfs는 가상 HDD 파일에 저장되지 않고 ...\LocalState\rootfs\
. WSL 파일 시스템이 쉽게 손상될 수 있으므로 이러한 파일에 직접 액세스하지 마십시오.마이크로소프트 개발자 블로그).
단순히 Windows에서 파일에 액세스해야 하는 경우 \\wsl$\<distro>
해당 Microsoft 블로그에 설명된 대로 Windows의 경로를 사용하세요. 그러나 이 질문과 같이 전체 내용을 복사해야 하는 경우 가장 좋은 방법은 먼저 백업을 먼저 wsl --set-version <distro> 2
수행하여 인스턴스를 WSL2로 변환하는 것입니다 wsl --export
. 변환 후 파일 시스템은 WSL2 ext4.vhdx
형식이 됩니다.