- Export and import Windows Subsystem for Linux (WSL)
- What is Windows Subsystem for Linux?
- Export and import WSL distros
- Requirements
- Exporting a WSL Linux image
- Importing an exported WSL Linux image back into WSL
- Automating the export of WSL Linux distro images
- Subscribe to 4sysops newsletter!
- Wrapping Up
- Acronis не нужен или как на Linux делать образы любых операционных систем на примере Windows и Linux.
Export and import Windows Subsystem for Linux (WSL)
Learn how to export and import Windows Subsystem for Linux (WSL) distros between machines and on the same machine.
Brandon Lee has been in the IT industry 15+ years and focuses on networking and virtualization. He contributes to the community through various blog posts and technical documentation primarily at Virtualizationhowto.com.
One of the exciting new features that has been introduced in the past couple of years for Microsoft Windows is the Windows Subsystem for Linux (WSL). Previously, developers and DevOps professionals had to spin up a Linux VM or dual-boot a system to access a Linux environment quickly. With WSL, developers and others can bring up a WSL environment and interact with Linux in what looks like a simple command window.
However, once developers begin to heavily utilize their WSL environment, how can they save a copy of the WSL environment? Can you copy the WSL distro image used on one machine to another? This post will consider exporting and importing WSL distros.
What is Windows Subsystem for Linux?
Specifically for developers, WSL allows full access to the GNU/Linux command-line, various utilities, and Linux applications without the need to run a desktop virtualization hypervisor, dual-boot a system, or spin up a network-accessible virtual machine on an enterprise hypervisor.
Microsoft has made it even easier to run WSL with Linux distros for it in the Microsoft Store. Simply searching for «Linux» in the Microsoft Store will return the latest distros available for download in WSL.
Windows Subsystem for Linux distros available in the Microsoft Store
WSL2 extends the features and capabilities of WSL. With WSL2, Microsoft has increased file system performance and included the full Linux kernel for increased system call compatibility. WSL2 also runs inside a utility virtual machine that is transparent to the end user. For the most part, the end user experience with WSL2 is the exact same as WSL.
Export and import WSL distros
As developers and DevOps professionals rely on WSL for daily development and as part of their toolset for access to Linux command-line tools, utilities, and applications, many organizations may now be thinking about providing disaster recovery for highly customized WSL environments. Starting with Windows 10 version 1903, Microsoft included new export/import functionality that effectively exports a copy of the WSL environment and allows importing it again, either on the same or on a different machine.
Now, developers can save a copy of their WSL environment as a backup. Developers can also use WSL to move or copy the environment to a different development machine. It provides an almost container-like experience, in that everything needed to import the same environment onto another Windows 10 workstation is included with the export process of the WSL image. Let’s take a look at the process of exporting and importing a WSL Linux image.
Requirements
The requirements are quite simple.
- Windows 10 1903 or higher
- A location to store the .tar file—This can either be local or a remote location (network drive)
Exporting a WSL Linux image
Before exporting the WSL Linux image that you want to import onto the same system or another, you need to list the images and discover the image names. The image name is used during the export process. To list the WSL images, use the following command:
As you can see below, there is one WSL image that is available for export—Ubuntu20.04. This is the current default WSL image available on the system.
Listing available WSL images for export
Next, comes the actual export of the WSL Linux image. The command to perform the actual export of the WSL image is the following:
You do want to keep in mind that to export the WSL image from your source Windows 10 workstation, you will need to make sure you do not have a WSL command window open.
Running the WSL export command to export an Ubuntu 20.04 image
The Ubuntu 20.04 WSL image .tar file after export was around 1.7 GB. As mentioned above in the requirements section, you can also export your WSL images to a network location as well. This can either be a mapped network drive or a UNC path.
Importing an exported WSL Linux image back into WSL
Once you have the exported WSL image .tar file, you can copy the file to another Windows 10 workstation if you want and import the WSL image there. In addition, you can simply import the WSL image back into WSL using a different image name. In this way, you can effectively «clone» a WSL Linux image and run these on the same WSL Windows 10 workstation.
The command to import a WSL Linux distro image into WSL is as follows:
Importing an exported WSL Ubuntu image into WSL
As you can see below, the import of the WSL Linux distro image from an exported .tar backup file was successful. When listing the available WSL images, the UbuntuCustom WSL Linux image name used during the import is available as a WSL image.
Verifying the import of the WSL Linux distro was successful
To run the specific WSL Linux distro imported from the exported .tar backup file:
This allows running a specific WSL Linux distribution without making the distribution the default.
Running the specific WSL Linux distro imported from backup
Automating the export of WSL Linux distro images
The export/import functionality in WSL opens up the possibility of exporting WSL images contained on your WSL host. Using PowerShell or the command shell, developers or IT ops can create scripts that automate the workflow:
Subscribe to 4sysops newsletter!
- Stop the running WSL instances.
- Perform an export.
- Start the WSL instance once again.
Wrapping Up
WSL is a great platform that allows developers, DevOps, and others to have the command-line interface, utilities, and Linux apps needed without having to provision a dedicated Linux virtual machine for that purpose. The WSL platform is presented to the end user as a simple command window that provides access to the Linux environment. As developers and others become increasingly reliant on the functionality that WSL provides, having the ability to export and backup WSL Linux distros is important. This can be done easily and can even be automated using the built-in export/import feature.
Acronis не нужен или как на Linux делать образы любых операционных систем на примере Windows и Linux.
Очень многие знают, любят и применяют ежедневно # Acronis — очень популярную программу для создания образов операционных систем.
Хотя на самом деле, ничего эксклюзивного в функционале Acronis нет — все можно повторить стандартными утилитами Linux и по силам любому начинающему системному администратору .
Если вы можете установить дистрибутив Линукса по вашему выбору на флешку и сможете с него загрузить Линукс — вы сможете и все остальное, в том числе то, что описано в данной статье.
Чтобы не отягощать людей, разбирающихся в вопросе, я сначала скажу об фишке, которую использую для создания образов, про которую никто не вспоминает, когда речь идет о блочном копировании разделов ОС — сектор за сектором.
Есть файловые системы, которые поддерживают сокращение своего размера до размера данных, т.е. можно в два клика сократить размер раздела, выкинув всё пустое пространство, оставив на разделе только данные.
Примеры таких систем (те что проверял сам):
Всё просто: перед снятием образа запустил gparted и сократил размер раздела до минимального, чтобы свободного места оставалось не более 1%.
Дальше скопировать разметку диска и сами разделы через dd или ddrescue . Будет гораздо быстрее, чем делать образ через тот же Acronis.
Но обо всем по порядку, начну с того, что для работы нужна загрузочная флешка Linux , лучше с GUI, диск с которого снимаем образ и диск куда образ записывать.
В моем примере про Windows я работал с домашнего Ubuntu Linux, снимал образ с соседнего диска на ФС своего Ubuntu Linux.
В примере про Linux — я это делал на очень слабеньком компьютере, загружался с USB-флешки Альт-Линукс, образ снимал и разворачивал с локального SATA диска, образ записывал на внешний USB HDD диск.
Но все эти работы можно выполнять с флешки, если на флешке достаточно места.
Перенос ОС копированием файловых систем (из образа ФС)
1. Перенос операционной системы копированием файловой системы выполняется с минимальными затратами времени и позволяет решать задачи администрирования:
- восстанавливать работоспособность системы после фатального сбоя;
- разворачивать объемные системы по числу компьютеров с похожей архитектурой и программным обеспечением;
- переносить систему при модернизации оборудования.
2. Для сравнения: установка операционной системы Альт-Линукс с базовыми настройками занимает не менее 30 минут на каждый экземпляр установки и требует интерактивного вмешательства администратора.
Перенос операционной системы копированием файловой системы занимает от пары минут и может выполняться одновременно (параллельно) на нескольких компьютерах одним администратором.
3. Перенос операционной системы копированием файловой системы выполняется в два этапа:
4. Основные способы создания образа ФС:
- копирование раздела файловой системы (блочный метод);
- копирование файлов ОС и восстановление архитектуры ФС (файловый метод).
5. В инструкции представлены оба метода с применением к разным задачам. У каждого метода есть свои плюсы и минусы.
6. Блочный метод — копирует разметку диска и разделы диска целиком, он может быть применен к архивированию практически любой операционной системы и ее файловой системы, если файловая система поддерживает уменьшение своего размера, то этот метод один из лучших для применения в такой задаче.
Например, для файловой системы EXT4 или NTFS перед снятием архива размер раздела можно сократить до объема занимаемых данных, КПД метода в этом случае будет очень высок.
Но если исходная файловая система не может быть изменена в меньшую сторону, например XFS, то при наличии большого объема незанятого данными пространства, при архивировании — большая часть времени уйдет на сохранение пустого пространства раздела, КПД метода в этом случае будет не так хорош, как в предыдущем примере.
7. Файловый метод — очень зависит от Операционной системы и файловой системы, на которой она развернута. Для ОС Linux — это предпочтительный метод, т. к. он может быть применен фактически для любой файловой системы Linux.
XFS и EXT4 Linux лучше архивировать файловым методом.
8. Пример блочного архивирования файловой системы на примере переноса OS Windows NTFS.
8.1. Обычно для работы Windows использует два раздела — скрытый, размером от 512 Мб и системный, обычно это Диск С Windows. Дополнительные диски для копирования — не рассматриваем, т. к. их можно скопировать простым копированием файлов, они не влияют на работу ОС Windows и могут быть добавлены к системе в любой момент. При желании их так же можно скопировать блочным методом вместе с скрытым и системным разделами.
8.2. Этап создания образа ФС блочным методом.
8.2.1. Посмотреть разделы исходного диска с Windows fdisk
Диск /dev/sdb: 1,84 TiB, 2000398934016 байт, 3907029168 секторов
Disk model: Hitachi HUA72302
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Идентификатор диска: 0xb75549a0
Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sdb1 * 63 1028159 1028097 502M 7 HPFS/NTFS/exFAT
/dev/sdb2 1028160 132102143 131073984 62,5G 7 HPFS/NTFS/exFAT
Идентификаторы разделов и их файловой системы узнать командой blkid
/dev/sdb1: LABEL=»System Reserved» UUID=»38143AA4143A6552″ TYPE=» ntfs » PARTUUID=»b75549a0-01″
/dev/sdb2: UUID=»94ECB0E5ECB0C332″ TYPE=» ntfs » PARTUUID=»b75549a0-02″
8.2.2. В примере /dev/sdb1 — скрытый раздел Windows, /dev/sdb2 — системный раздел Windows.
8.2.3. Подключить системный раздел Windows в папку /mnt:
sudo mount -t ntfs /dev/sdb2 /mnt
8.2.4. Удалить файлы виртуальной и кэша памяти, можно на этом этапе удалить другие файлы — которые не понадобятся на новой системе и далее отключить системный раздел:
8.2.5. сократить раздел до минимального, не более 1-10% свободного места. Например к размеру данных добавить +200 МиБ. Для изменения размера задействовать графическую утилиту gparted (установка sudo apt-get install gparted):