Рейтинг:1

как переместить убунту в WSL

флаг kr

Когда я начал развиваться в WSL Не знаю почему, но я установил Убунту-20.04 приложение из магазина Microsoft, а не просто Убунту. Я знаю, что единственная разница в том, что Убунту-20.04 не будет автоматически обновляться при появлении новых Убунту версия будет выпущена. Все, что я хочу сделать, это сделать Убунту как Убунту-20.04 без его перенастройки. Я думал переместить все файлы из Убунту-20.04 к Убунту, но я не знаю, безопасно ли это делать. Кто-нибудь знает, как сделать то, что я пытаюсь сделать? Я тоже должен это делать?

редактировать: обе версии Ubuntu работают на ВСЛ-2 Я проверил это с помощью wsl -l -v как сказал @NotTheDr01ds.

изменить 2: я хочу, чтобы вся моя конфигурация из Убунту-20.04 к Убунту включая все файлы и установленные пакеты

Ilia Manjavidze avatar
флаг kr
@user68186 user68186 конечно есть
NotTheDr01ds avatar
флаг vn
@user68186 user68186 Это прямо указано в вопросе, поэтому я не понимаю, почему вы вообще об этом спрашиваете? Изменить. О, вы спрашиваете, установили ли они уже «простой ванильный» дистрибутив «Ubuntu» из Магазина? Вы правы, это не было ясно в вопросе, но я сам предполагал это.
NotTheDr01ds avatar
флаг vn
Добро пожаловать в Ask Ubuntu. Это будет довольно просто, я думаю, если вы используете WSL2, но мне нужно будет еще подумать, если вы используете WSL1. Можете ли вы сделать `wsl -l -v` и убедиться, что обе ваши установки Ubuntu из Магазина работают под управлением WSL2? Пожалуйста, отредактируйте свой вопрос, указав результаты `wsl -l -v`, если хотите. Спасибо!
Ilia Manjavidze avatar
флаг kr
@ user68186 вы уверены, что это безопасно?
NotTheDr01ds avatar
флаг vn
@user68186 user68186 Я бы не рекомендовал этого делать, если ОП действительно не знает, что делает. Разрешения/владение/и т. д. должны быть тщательно обработаны, и это определенно не следует делать с помощью чего-то вроде проводника Windows. По крайней мере, в WSL2 есть гораздо более простой/безопасный способ.
NotTheDr01ds avatar
флаг vn
@IliaManjavidze Хорошо, набираю ответ на основе WSL2, но будет немного. Я довольно подробно :-)
NotTheDr01ds avatar
флаг vn
@user68186 user68186 Конечно, но это получает только конфигурацию *user* из `$ HOME`. Мне кажется, что ОП хочет всю конфигурацию (установленные пакеты, конфигурации `/etc/` и т.
NotTheDr01ds avatar
флаг vn
@IliaManjavidze Пожалуйста, подтвердите, хотите ли вы *все* конфигурации или только *пользовательские* конфигурации. Пункт user68186 намного проще, если вам, конечно, нужны только пользовательские файлы. Мы можем просто предоставить инструкции для переноса ваших файлов из $HOME одного экземпляра в другой.
Ilia Manjavidze avatar
флаг kr
@ NotTheDr01ds Я отредактировал вопрос. Я хочу всю свою конфигурацию
Рейтинг:1
флаг vn

Почему вам может не понадобиться это делать вообще

Хорошо, обо всем по порядку. Это, вероятно, довольно ненужно.

То, что "Убунту" (без номера версии) в Магазине автоматически обновляется, это... правда, но на самом деле немного вводит в заблуждение.

Это немного сложно объяснить, но когда вы устанавливаете «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, который хранит напоминая мне об этом.)

Это довольно бесполезно для большинства пользователей, если вы:

  1. Отмените регистрацию экземпляра (что удалит всю конфигурацию) и заново настройте его, повторно запустив Ubuntu.exe команда.
  2. Хотите использовать это установить.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 формат.

Ilia Manjavidze avatar
флаг kr
Спасибо тебе за это. после этого Если единственное преимущество, которое я действительно получаю, - это более короткое имя и более чистое имя, я могу просто изменить его имя в терминале Windows. Если вы не возражаете, мне все еще интересно, как это делается. Я еще новичок, и я не очень понимаю, так что спасибо :)
NotTheDr01ds avatar
флаг vn
@IliaManjavidze Конечно. Я добавил это к ответу. Это действительно интересно и полезно знать, ИМХО.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.