WSL에서 우분투를 이동하는 방법

WSL에서 우분투를 이동하는 방법

에서 개발을 시작했을 때 이유 는 WSL모르겠지만 . 유일한 차이점은 새 버전이 출시될 때 자동으로 업데이트되지 않는다는 것입니다. 내가하고 싶은 것은 재구성하지 않고 그대로 만드는 것뿐입니다. 모든 파일을 에서 로 이동하려고 생각했지만 그렇게 하는 것이 안전한지 모르겠습니다. 내가하려는 일을 수행하는 방법을 아는 사람이 있습니까? 나도 해야 하나?Ubuntu-20.04UbuntuUbuntu-20.04UbuntuUbuntuUbuntu-20.04Ubuntu-20.04Ubuntu

편집: 두 버전의 우분투가 모두 실행 중입니다. @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에게 감사의 말씀을 전합니다.나에게 이것을 생각나게 한다.)

다음과 같은 경우를 제외하고는 대부분의 사용자에게 이는 꽤 쓸모가 없습니다.

  1. 인스턴스 등록을 취소하고(모든 구성 삭제) ubuntu.exe명령을 다시 실행하여 인스턴스를 다시 구성합니다.
  2. 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 --importUbuntu

  • 먼저 Store를 제거해야 합니다 Ubuntu.
  • 그런 다음 새 인스턴스의 디렉터리를 선택합니다. 그것은 어디에나 있을 수 있으며 더 이상 귀하의 AppData디렉토리 아래에 있을 필요가 없습니다 .
  • wsl --import Ubuntu <directory> path\to\2021-09-26_Ubuntu-20.04_backup.tar --version 2

나는 에 %userprofile%\Documents\WSL\instancestar백업을 보관합니다 %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형식이 됩니다.

관련 정보