Почему вам может не понадобиться это делать вообще
Хорошо, обо всем по порядку. Это, вероятно, довольно ненужно.
То, что "Убунту" (без номера версии) в Магазине автоматически обновляется, это... правда, но на самом деле немного вводит в заблуждение.
Это немного сложно объяснить, но когда вы устанавливаете «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
) программа установки создает фактический экземпляр WSL в вашем файле %UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
Когда в Магазине появляется новая версия, обновляется только пакет rootfs. Это не изменяет установленный экземпляр .
Это довольно бесполезно для большинства пользователей, если вы:
- Отмените регистрацию экземпляра (что приведет к удалению всей конфигурации) и повторно настройте его, повторно выполнив команду
ubuntu.exe
- Хотите использовать это
install.tar.gz
для создания второго экземпляра WSL/Ubuntu (используя wsl --import
). Вновь созданный экземпляр будет использовать обновленную из Store папку rootfs.
Ни один из этих сценариев не очень распространен. Даже когда неверсионный Store Ubuntu
будет обновлен (предположительно) до 22.04, он не изменит установленный вами экземпляр 20.04, а только пакет rootfs .
Вам все равно нужно будет запустить a,
sudo do-release-upgrade -d
когда вы в конечном итоге захотите обновиться до 22.04 (или промежуточного выпуска).
Итак, учитывая это ... Поскольку вы уже Ubuntu-20.04
настроили так, как хотите, у вас нет большого преимущества, чтобы изменить его, кроме как получить более короткое и чистое имя Ubuntu
для экземпляра WSL.
Как это сделать в любом случае
Тем не менее, способ, которым WSL2 хранит ваши данные, не так уж и сложен в перемещении конфигураций. Вся файловая система экземпляра WSL2 хранится на виртуальном жестком диске с именем 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 --shutdown
чтобы убедиться, что в данный момент ничего не запущено.
wsl --export Ubuntu-20.04 2021-09-26_Ubuntu-20.04_backup.tar
(или как вы хотите назвать файл резервной копии). Это в основном создает tarball текущих rootfs, включая все файлы, владельцев и разрешения.
В этот момент просто скопируйте желаемую (Ubuntu-20.04) ext4.vhdx
поверх только что установленной (Ubuntu). Настоящий трюк заключается в том, чтобы просто убедиться, что вы копируете правильный. Возможно, вы захотите запустить свой 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, читающих это. Rootfs для WSL1 хранится не в файле виртуального жесткого диска, а в виде реальных файлов и каталогов в формате ...\LocalState\rootfs\
. Пожалуйста, не обращайтесь к этим файлам напрямую, так как это может легко привести к повреждению файловой системы WSL (см. блог разработчиков Microsoft ).
Если вам нужно просто получить доступ к файлам из Windows, используйте путь \\wsl$\<distro>
в Windows, как указано в этом блоге Microsoft. Но если вам нужно скопировать все это, как в этом вопросе, лучше всего было бы сначала преобразовать экземпляр в WSL2 через wsl --set-version <distro> 2
(сначала сделайте wsl --export
резервную копию). После конвертации файловая система будет в ext4.vhdx
формате WSL2.