В общем, если вы можете получить tar-архив rootfs виртуальной машины, это должно быть (теоретически) довольно просто, хотя я не пробовал. Главный трюк будет заключаться в том, чтобы получить rootfs.tar
"в самый раз". Соображения:
Он должен будет включать все «обычные» файловые системы виртуальной машины, но вы, конечно, можете игнорировать такие вещи, как /прок
, /sys
, /dev
, и т.д.
Вы должны включить --xattrs
отметьте tar, чтобы убедиться, что вы выбрали все расширенные атрибуты. Это не значение по умолчанию.
Если у вас есть действительный tar-архив rootfs, импортировать его в WSL несложно:
wsl --import Ubuntu2110 <каталог> <tarball> --версия 2
Первый аргумент (имя дистрибутива) может быть каким угодно, хотя я бы рекомендовал избегать Убунту
так как это имя дистрибутива WSL по умолчанию и может вызвать конфликт.
Я обычно настраиваю свой «каталог» WSL:
- Куда легко добраться из PowerShell, например
~\Документы\ВСЛ
- Есть
~\Документы\WSL\экземпляры\Ubuntu2110
(и другие) для моих дистрибутивов
- Есть
~\Документы\WSL\изображения\Ubuntu2110.tar
(и другие) для моих образов rootfs.
Аппаратный слой имеет хорошие шансы отличаться.
Не совсем та проблема, о которой вы могли подумать. Экземпляры WSL2 на самом деле больше «контейнеры», чем виртуальные машины. Там является виртуальная машина работает, но вы не можете получить к ней доступ. Сама виртуальная машина обрабатывает импорт и запуск дистрибутивов/экземпляров/контейнеров. Все экземпляры WSL2 используют одно и то же пространство ядра, виртуальное оборудование, сеть и т. д., но у каждого есть собственное пространство имен PID, chroot и т. д. (для суммирования).
Различия между WSL и вашей виртуальной машиной
Запуск системы
Самая большая разница, которую вы обнаружите, заключается в том, что виртуальная машина, конечно же, выполняет всю свою настройку через Systemd. Этого не произойдет на WSL2, так как Systemd не поддерживается. Вместо этого WSL использует собственный /в этом
для начальной загрузки взаимодействия с системной ВМ и Windows.
Это означает, что когда вы запускаете экземпляр WSL2 с импортированной виртуальной машины, ничего такого будет работать.
Вам нужно будет запустить каждую службу вручную. Или используйте другие методы для автоматического запуска.
Другие системные проблемы
Хотя вы можете запускать многие службы в Ubuntu без Systemd, все больше и больше полагаются на Systemd. Это может быть проблематично в WSL. Хотя есть обходные пути для запуска Systemd в WSL, в настоящее время они, как правило, «хакерские».
Приложения с графическим интерфейсом
Кроме того, помните, что WSL в первую очередь среда командной строки. Чтобы запустить приложения с графическим интерфейсом, вам необходимо запустить:
- Windows 11
- Сторонний X-сервер в Windows
- Или же
xrdp
Среды рабочего стола
Наконец, среда рабочего стола может быть еще более сложной из-за сочетания перечисленных выше и других причин:
- Некоторым требуется Systemd
- Запуск полноэкранных приложений Linux с графическим интерфейсом пользователя в Windows может вызвать проблемы с привязкой клавиш (например, Альт+Вкладка будут перехвачены Windows и удалены от вашего DE).
- WSLg в Windows 11 использует Weston, который предоставляет собственный оконный менеджер.