Windows wsl перенести на другой диск

Подсистема Windows для Linux (Windows Subsystem for Linux, WSL2) сегодня широко используется разработчиками, администраторами и простыми пользователями для запуска различных дистрибутивов (Ubuntu, Debian, OpenSUSE, Kali Linux, Alpine), инструментов и приложений Linux в среде Windows без использования виртуализации и двойной загрузки. В этой статье мы рассмотрим, как перенести файлы установленного WSL на другой диск или компьютер.

При установке WSL в Windows все файлы среды сохраняются на системный диск (C:\ как правило). Если размер системного диска недостаточен (небольшой SSD диск), то со временем размер файловой системы WSL может серьезно вырасти, и вы захотите перенести файлы WSL на другой диск. В Windows 10 и 11 вы можете перенести WSL на другой диск или компьютер несколькими способами.

В первую очередь определите текущий размер файловой системы WSL на вашем диске. Выведите список установленных дистрибутивов WSL на компьютере:

wsl --list --verbose

вывести список доступных образов WSL2 в Windows 10

В нашем примере установлена только Ubuntu-20.04. Выполните следующую команду PowerShell, чтобы получить название UWP приложения с вашим дистрибутивом Linux:

Get-AppxPackage -Name "*Ubuntu20*" | Select PackageFamilyName

В моем примере название UWP пакета — CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc. Файловая система WSL данного дистрибутива Linux хранится в VHD файле ext4.vhdx в каталоге %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

Чтобы получить размер файла с помощью PowerShell, выполните:

$path= $env:USERPROFILE+ ”\AppData\Local\Packages\” + (Get-AppxPackage -Name "*Ubuntu20*").PackageFamilyName + “\LocalState\ext4.vhdx”
Get-ChildItem -Path $path | fl @{Label="SizeGb"; Expression={$_.Length / 1Gb}}

размер файла ext4.vhdx в Windows WSL

Путь к VHD файлу данного дистрибутива WSL хранится в параметре BasePath ветки реестра
HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\{UUID}
.

путь к файловой системе WSL в Windows можно получить из реестра

Можно остановить WSL, переместить ext4.vhdx на другой диск и изменить путь к каталогу в реестре. Но этот сценарий не рекомендуется!

В современных билдах Windows 10 и 11 можно выполнить корректный перенос среды WSL с помощью встроенной процедуры экспорта и импорта.

Запустите среду wsl и проверьте имя пользователя:

wsl
whoami

В нашем примере это sysops.

получить имя пользователя в дистрибутиве Ubuntu для Windows WSL

Закройте все приложения, запущенные в среде Linux и консоли WSL:

wsl --shutdown

Чтобы создать резервную копию (экспортировать) вашу среду WSL и поместить ее на отдельный диск E:, выполните команды:

mkdir e:\backup
wsl --export Ubuntu-20.04 e:\backup\ubuntu.tar

Дождитесь окончания экспорта WSL (может занять длительное время). В целевом каталоге появится TAR архив с вашей средой WSL.

экспорт и перенос файлов WSL на другой диск

Теперь можно удалить файлы среды WSL на исходном диске:

wsl --unregister Ubuntu-20.04

Создайте каталог для вашего образа Linux на новом диске и импортируйте tar архив в WSL командой:

mkdir E:\WSL
wsl --import Ubuntu-20.04 E:\WSL\ E:\backup\ubuntu.tar

Для входа в Ubuntu по умолчанию используется root. Чтобы сменить его на другое имя пользователя (мы получили его ранее), выполните:

cd $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps
.\ubuntu2004.exe config --default-user sysops

Запустите вашу среду WSL:

wsl -d Ubuntu-20.04

запуск среды WSL из командной строки

Совет. Нужный дистрибутив WSL можно запустить из Windows Terminal. запуск нужного дистрибутива WSL из Windows Terminal

Этот же сценарий можно использовать для переноса настроенного образа WSL на другие компьютеры.

Также для переноса WSL в Windows можно использовать стороннюю утилиту LxRunOffline (доступна на GitHub — https://github.com/DDoSolitary/LxRunOffline). Можно установить утилиту через Chocolatey:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install lxrunoffline

Вывести список доступных образов WSL:

lxrunoffline list

Завершаем все процессы:

wsl --shutdown

узнать текущий каталог, в котором хранится образ WSL:

lxrunoffline get-dir -n Ubuntu-20.04

утилита lxrunoffline для переноса файлов WSL

Перенос WSL образ на другой диск:

lxrunoffline move -n Ubuntu-20.04 -d d:\wsl2\Ubuntu-20.04

После окончания переноса, запустите дистрибутив WSL. Командой:

wsl -d Ubuntu-20.04

или

lxrunoffline run -n Ubuntu-20.04 -w

Language: [🇪🇸] Español — [🇺🇸] English


If the C: drive is running out of space or do you like to have your files on a different disk than your Operating System, we can move our WSL2 file system to another drive in a few steps.

Prerequisites

If we are using a username different than root, we need to know it running the command (WSL side):

# Linux Terminal
whoami

Enter fullscreen mode

Exit fullscreen mode

who am I

Also, we need to know the distro name and WSL version, running the command on PowerShell (Windows side):

#PowerShell
wsl --list --verbose

Enter fullscreen mode

Exit fullscreen mode

wsl list

Knowing the username: equiman, the linux distribution: Ubuntu, and confirming that we are using the WSL 2 version, we are ready to…

moving day

Move

All next steps need to be done on PowerShell (Windows side).

First, we need to close all terminals that are using WSL, and then shut it down to avoid data corruption running the command.

# PowerShell
wsl --shutdown

Enter fullscreen mode

Exit fullscreen mode

Next, we are going to create a backup from our Ubuntu linux distribution.

# PowerShell
mkdir D:\backup
wsl --export Ubuntu D:\backup\ubuntu.tar

Enter fullscreen mode

Exit fullscreen mode

Don’t worry if you do not see progress indicators. This can take a while depending on how much data you have. Maybe it’s a good idea to take a rest.

waiting

When finished, first of all, and more important ensure that the D:\backup\ubuntu.tarfile exists. Then we need to unregister the linux distribution from the C: drive. It will also release the disk space taken by WSL.

⚠️ Beware that everything that was stored on the WSL drive will be lost, and the command won’t ask for a confirmation, so make sure you backup everything you need first!

# PowerShell
wsl --unregister Ubuntu

Enter fullscreen mode

Exit fullscreen mode

And then, import it again on our new disk. I’ll use the D: disk as an example.

# PowerShell
mkdir D:\WSL
wsl --import Ubuntu D:\WSL\ D:\backup\ubuntu.tar

Enter fullscreen mode

Exit fullscreen mode

Use the " (double-quote) character to surround the paths if they have blank spaces

By default Ubuntu will use root as the default user, to switch to our user we need to run these commands.

# PowerShell
cd $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps
ubuntu config --default-user equiman

Enter fullscreen mode

Exit fullscreen mode

Ensure replacing equiman with yours.

Restart WSL by running the command:

# PowerShell
wsl --distribution Ubuntu

Enter fullscreen mode

Exit fullscreen mode

Recover

If something goes wrong in the process, don’t worry, we can restore our WSL disk from the backup.

Didn’t You skip the backup step? right?

right

Just repeat the steps after backup.


That’s All Folks!
Happy Coding 🖖

beer

В WIN 10 возможно установить в качестве подсистемы Linux — Ubuntu. Установка доступна в Microsoft Shop, и в настоящий момент на выбор имеются 18я и 20я версии. К сожалению, при установке нельзя выбрать куда будет размещена система. А установлена она будет в каталог C:/Users/root/AppData/Local/..

Типично, что Диск С: — это системный диск и его размещают на небольшом, но производительном SSD накопителе. Лишнего места там нет.

Вы можете решить проблему с местом, монтируя данные в Ubuntu с других дисков вашего PC, и предотвратите, тем самым, разрастание объема WSL Ubuntu на диске C:. Но более последовательным решением будет перенос файлов в другое место.

Все операции выполняются из консоли. Сначала посмотрим список установленных подсистем:

Обратите внимание, что Ubuntu 18 использует 1ю версию wsl, а 20я версия уже 2ю.

Шаг 1. Экспорт нужной WSL

Получив список WSL, мы узнаем имя контейнера и займемся экспортом. Статус контейнера должен быть — «stopped».

wsl export Ubuntu18.04 «d:\ubuntu.tar»

Операция может потребовать много времени. В результате вы получите архив.

Шаг 2. Удаление контейнера

Теперь можно удалить Ubuntu, освободив занимаемые ей ресурсы на диске C:. Используем команду —unregister:

wsl unregister Ubuntu18.04

Шаг 3. Импорт WSL

Остаётся снова создать контейнер, но уже там, где мы этого хотим.

wsl import Ubuntu18.04 «e:\ubuntu1804-root» «d:\ubuntu.tar» version 1

В качестве небольшого замечания: eсли вы планируете монтировать что то в ubuntu, то wsl v1 работает гораздо быстрее при необходимости взаимодействия с родительской файловой системой в сравнении с wsl 2.

Шаг 4. Запуск WSL

Прямо из консоли запустите ваш контейнер следующей командой:

А файл экспорта (архив d:\ubuntu.tar) уже можно удалить.

Точно так же переносятся данные desktop docker. Выполните аналогичные манипуляции с контейнером docker-desktop-data.

wsl

Написать комментарий


Данная запись опубликована в 06.03.2022 20:47 и размещена в рубрике Программирование.
Вы можете перейти в конец страницы и оставить ваш комментарий.

Мало букафф? Читайте есчо !

Как смонтировать папку из WSL образа

Июль 21, 2023 г.

В WSL обычно уже смонтированы все диски системы в папке /mnt, и вы легко получаете нужные файлы из родительской системы windows, хотелось бы иметь и обратную возможность. Рассмотрим как выполнить монтирование файлов wsl в файловую систему windows.

Читать

If you are using Windows 10 version 1903 (April 2019 Update) or later, you can try the WSL command line tool with the export and import options. If you are using an older Windows 10 version, you can move the distribution to another drive using lxRunOffline.


Using the WSL command line tool

In Windows 10 version 1903 (April 2019 Update) or later, you can use the wsl.exe command line tool.

1. Export the distribution. Create a .tar file with the distribution to move using wsl.exe --export

wsl.exe --export <DistributionName> <Tar-FileName>

For instance, to export an Ubuntu distribution, you can use

C:\> wsl.exe --export Ubuntu c:\data\ubuntu.tar

2. Import the distribution into the target folder. Then, you can import the exported distribution into another folder

wsl.exe --import <DistributionName> <Folder-To-Install> <Tar-FileName>

For instance, to import the exported Ubuntu into a new UbuntuCustom distribution, you can use

C:\> wsl.exe --import UbuntuCustom d:\wsl\UbuntuCustom c:\data\ubuntu.tar

NOTE: You may check an script for moving WSL distros that use these commands at https://github.com/pxlrbt/move-wsl

3. Delete old installation (optional)

wsl.exe --unregister <OriginalDistributionName>

4. Set up the default user

Edit /etc/wsl.conf and add:

[user]
default = <your username>

5. Run new distribution

wsl.exe -d <NewDistributionName>

Using LxRunOffline

In any Windows 10 version, you can move the distribution to another drive using lxRunOffline.

1. Set permissions to the target folder. First, I think you must set some permissions to the folder where the distribution will be moved. You may use icacls <dir> /grant "<user>:(OI)(CI)(F)" to set the proper permissions.

C:\> whoami
test\jaime

C:\> icacls D:\wsl /grant "jaime:(OI)(CI)(F)"

NOTE: In addition to the above permissions, I have activated the long path names in Windows.

2. Move the distribution. Using lxrunoffline move.

C:\wsl> lxrunoffline move -n Ubuntu-18.04 -d d:\wsl\installed\Ubuntu-18.04

You may check the installation folder using

C:\wsl> lxrunoffline get-dir -n Ubuntu-18.04
d:\wsl\installed\Ubuntu-18.04

3. Run the distribution. after moving the distribution, you can run the distribution using wsl or the same lxrunoffline

C:\wsl> lxrunoffline run -n Ubuntu-18.04 -w
user@test:~$ exit
logout

C:\wsl> wsl
user@test:/mnt/c/wsl$ exit
logout

Scenario

WSL is a great stuff! 😍 But sometimes, it may take up too much space in C drive, especially its ext4 file system. So in this article, I’d like to show how to move it to another drive so as to release drive storage pressure.

image-20230512194401252

Reference: https://woshub.com/move-wsl-another-drive-windows/


Procedures

Step 1. Preparation

First, you should make sure you know your username and password of WSL. If not, just open it, and use whoami command to find it out. Then, your WSL should be shutdown. In PowerShell, run the following command to make sure your WSL is down.

1
2
wsl --list --verbose
wsl --shutdown

If the output is like , it means your WSL is down. If not, run wsl --shutdown to … shut it down. 😌

image-20230512194650823

Notice: Here, remember the name of your distribution. :)

Then, create some directories. For example, here, I created Backup\ for intermediate file backup, and Storage\ for the final location.

image-20230512200221001

Step 2. Export WSL File System

Now, it’s time to export WSL to another place. So, open your PowerShell, and execute the following command. Remember to replace the directory with your own.

1
wsl --export Ubuntu-20.04 E:\IDE\WSL\Backup\ubuntu.tar

If everything goes well, you will see this.

image-20230512201119392

Step 3. Import WSL File System

Before your import stuffs, there are few steps to go. First, you got to unregister your WSL temporarily.

1
wsl --unregister Ubuntu-20.04

And you will see the following output.

image-20230512201229395

Then, you can start import. Remember the directory we created before? Will place our file system there.

1
2

wsl --import Ubuntu-20.04 E:\IDE\WSL\Storage E:\IDE\WSL\Backup\ubuntu.tar

And you will se this.

image-20230512201755671

Step 4. Finishing up

Now, finally, we got to set up our WSL again. There won’t be any output on success.

1
2
cd $env:USERPROFILE\AppData\Local\Microsoft\WindowsApps
.\ubuntu2004.exe config --default-user your_username

Notice: If you’re using Ubuntu 20.04, the executable file should be ubuntu2004.exe. Otherwise, please use ls command to check it by yourself.

Ta-da!🎉 Now you can run WSL again!


Easy, huh? :)

  • Windows xp black edition 2010
  • Windows x32 и x64 в чем разница
  • Windows xp best xp kdfx
  • Windows winsxs windows 7 вручную
  • Windows xp best edition torrent