Почему вам может не понадобиться это делать вообще
Хорошо, обо всем по порядку. Это, вероятно, довольно ненужно.
То, что "Убунту" (без номера версии) в Магазине автоматически обновляется, это... правда, но на самом деле немного вводит в заблуждение.
Это немного сложно объяснить, но когда вы устанавливаете «Ubuntu» (без версии) из Магазина, вы на самом деле получаете два вещи:
Пакет rootfs (установить.tar.gz
) в C:\Program Files\WindowsApps\CanonicalGroup...
. Вы можете увидеть это, запустив административную оболочку PowerShell и запустив Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Where-Object {$_.Name -eq 'install.tar.gz' } | % {$_.имя_каталога}
.
При первом запуске (через Ubuntu.exe
), установщик создает фактический экземпляр WSL в вашем %UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
Когда в Магазине появляется новая версия, обновляется только пакет rootfs. Оно делает нет измените установленный пример. (Спасибо и спасибо u/zoredache на Reddit, который хранит напоминая мне об этом.)
Это довольно бесполезно для большинства пользователей, если вы:
- Отмените регистрацию экземпляра (что удалит всю конфигурацию) и заново настройте его, повторно запустив
Ubuntu.exe
команда.
- Хотите использовать это
установить.tar.gz
для создания второго экземпляра WSL/Ubuntu (используя wsl --импорт
). Вновь созданный экземпляр будет использовать обновленную из Store папку rootfs.
Ни один из этих сценариев не очень распространен. Даже когда неверсионный Store Убунту
обновляется до (предположительно) 22.04, это не изменит ваш установлен экземпляр 20.04, только rootfs упаковка.
Вам все равно нужно запустить sudo сделать-релиз-обновление-d
когда вы в конечном итоге захотите перейти на 22.04 (или промежуточный выпуск).
Итак, учитывая, что ... Поскольку у вас уже есть свой Убунту-20.04
настроены так, как вы хотите, нет большого преимущества для вас, чтобы изменить его, кроме как получить более короткий и чистый Убунту
назван в честь экземпляра WSL.
Как это сделать в любом случае
Тем не менее, способ, которым WSL2 хранит ваши данные, не так уж и сложен в перемещении конфигураций. Вся файловая система экземпляра WSL2 хранится на виртуальном жестком диске с именем ext4.vhdx
.
Поскольку у вас есть две установки 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
(или как вы хотите назвать файл резервной копии). Это в основном создает tarball текущих rootfs, включая все файлы, владельцев и разрешения.
В этот момент просто скопируйте нужный (Ubuntu-20.04) ext4.vhdx
поверх недавно установленного (Ubuntu). Настоящий трюк заключается в том, чтобы просто убедиться, что вы копируете правильный. Вы можете запустить свой Убунту-20.04
дистрибутив и внесите быстрое изменение, чтобы вы могли легко увидеть последнюю метку времени на «правильной» копии.
Единственное реальное требование состоит в том, что пользователь по умолчанию для обоих экземпляров должен быть одним и тем же.
Другая возможность. Поскольку вы создали резервную копию желаемой конфигурации с помощью wsl --экспорт
, вы всегда можете просто wsl --импорт
это в новый экземпляр с именем Убунту
.
- Во-первых, вам нужно удалить Магазин
Убунту
.
- Затем выберите каталог для вашего нового экземпляра. Он может быть где угодно и больше не должен жить под вашим
Данные приложения
каталог.
wsl --import Ubuntu <каталог> путь\к\2021-09-26_Ubuntu-20.04_backup.tar --версия 2
я держу свой в %userprofile%\Documents\WSL\экземпляры
и мой смола
резервные копии в %userprofile%\Documents\WSL\images
. Это позволяет мне быстро запускать новые экземпляры через wsl --импорт
. Приятно иметь возможность протестировать что-то, не влияя на мою повседневную среду.
Примечание для всех пользователей WSL1, читающих это. rootfs для WSL1 хранится не в файле виртуального жесткого диска, а в виде реальных файлов и каталогов под ...\LocalState\rootfs\
. Пожалуйста, не обращайтесь к этим файлам напрямую, так как это может легко привести к повреждению файловой системы WSL (см. Блог разработчиков Майкрософт).
Если вам нужно просто получить доступ к файлам из Windows, используйте \wsl$\<дистрибутив>
путь в Windows, как указано в этом блоге Microsoft. Но если вам нужно скопировать все это, как в этом вопросе, лучше всего было бы сначала преобразовать экземпляр в WSL2 через wsl --set-version <дистрибутив> 2
(сделать wsl --экспорт
резервное копирование в первую очередь). После конвертации файловая система будет в WSL2 ext4.vhdx
формат.