Wsl где хранятся файлы
Перейти к содержимому

Wsl где хранятся файлы

  • автор:

WSL for linux where are files stored

I have been using Windows Subsystem for Linux (WSL) and when I create a file in the home directory of WSL, where does it actually exist in file explorer, also, since my C: drive is in /mnt/c/ does that mean Linux is on a seperate partition or mount?

When I run list directory in root for WSL:

Where does the var or bin or home folder exist in normal file explorer?

VJZ's user avatar

2 Answers 2

Ack- No! Regarding the comment and your corresponding self-answer, please never access files directly through %LOCALAPPDATA%\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs . While it is true that, for WSL1, the files are stored there by WSL, accessing them directly can cause WSL corruption. Also note that for WSL2, the files are inside a virtual HDD ( ext4.vhdx ), so it prevents you from using this technique at all.

There is one hard-and-fast rule when it comes to WSL on Windows:

DO NOT, under ANY circumstances, access, create, and/or modify Linux files inside of your %LOCALAPPDATA% folder using Windows apps, tools, scripts, consoles, etc. Opening files using some Windows tools may read-lock the opened files and/or folders, preventing updates to file contents and/or metadata, > essentially resulting in corrupted files/folders.

Creating/changing Linux files in your Appdata folder from Windows will likely result in data corruption and/or damage your Linux environment requiring you to uninstall & reinstall your distro!

The correct answer is also found in that page. WSL provides a \\wsl$\<distroname> pseudo-network-share that will allow you to safely access the WSL filesystem from Windows. Note that the WSL instance does need to be running in order to show up in \\wsl$\ .

Wsl где хранятся файлы

При работе с файловыми системами Windows и Linux следует учитывать ряд моментов. В этом пошаговом руководстве рассматриваются некоторые из них, а также приводятся примеры поддержки взаимодействия для смешанного использования команд на основе Windows и Linux.

Хранение файлов и производительность в файловых системах

Мы не рекомендуем работать с разными операционными системами, если на это нет особой причины. Для ускорения производительности сохраняйте файлы в файловой системе WSL, если используете командную строку Linux (Ubuntu, OpenSUSE и т. д.). Если вы работаете в командной строке Windows (PowerShell, командной строке), сохраняйте файлы в файловой системе Windows.

Например, при хранении файлов проекта WSL:

  • Используйте корневой каталог файловой системы Linux: \\wsl$\Ubuntu\home\<user name>\Project
  • Используйте корневой каталог файловой системы Windows: /mnt/c/Users/<user name>/Project$ или C:\Users\<user name>\Project .

Если вы видите /mnt/ в пути к файлу в командной строке WSL, это означает, что вы работаете с подключенного диска. Поэтому диск C:/ ( C:\Users\<user name>\Project ) в файловой системе Windows при подключении в командной строке WSL будет выглядеть следующим образом: /mnt/c/Users/<user name>/Project$ . Файлы проекта можно хранить на подключенном диске, но производительность может повыситься, если вы будете хранить их непосредственно на диске \\wsl$ .

Просмотр текущего каталога в проводнике Windows

Вы можете просмотреть каталог, в котором хранятся файлы, открыв проводник Windows из командной строки:

Также можно использовать команду powershell.exe /c start . . Обязательно добавьте точку в конце команды, чтобы открыть текущий каталог.

Чтобы просмотреть все доступные дистрибутивы Linux и их корневые файловые системы в Windows проводнике, введите \\wsl$ в адресной строке.

View project files in Windows File Explorer

Учет регистра в именах файлов и каталогов

Чувствительность к регистру определяет, обрабатываются ли прописные (FOO.txt) и строчные буквы (foo.txt) как уникальные (с учетом регистра) или эквивалентные (без учета регистра) в имени файла или каталога. В файловых системах Windows и Linux чувствительность к регистру разная: в Windows он учитывается, а в Linux — нет. Дополнительные сведения о том, как настроить чувствительность к регистру, особенно при подключении дисков с помощью WSL, см. в статье Настройка чувствительности к регистру.

Взаимодействие между командами Windows и Linux

Средства и команды Windows и Linux в WSL могут использоваться взаимозаменяемо.

  • Запустить средства Windows (например, notepad.exe) из командной строки Linux (например, Ubuntu).
  • Запустить средства Linux (например, grep) из командной строки Windows (например, PowerShell).
  • Совместное использование переменных среды между Linux и Windows. (сборка 17063+)

Запуск инструментов Linux из командной строки Windows

Запускайте двоичные файлы Linux из командной строки Windows (CMD или PowerShell), используя wsl <command> (или wsl.exe <command> ).

Двоичные файлы вызываются следующим образом.

  • Используется тот же рабочий каталог, что и для текущей командной строки или сеанса PowerShell.
  • Файл выполняется от имени пользователя WSL по умолчанию.
  • Требуются те же права администратора Windows, что и у вызывающего процесса и терминала.

Команда Linux после wsl (или wsl.exe ) обрабатывается как любая команда, выполняемая в WSL. Можно выполнять sudo, конвейерную передачу и перенаправление файлов.

Пример использования sudo для обновления дистрибутива Linux по умолчанию:

Имя пользователя дистрибутива Linux по умолчанию будет указано после выполнения этой команды, и вам будет предложено указать пароль. После правильного ввода пароля дистрибутив скачает обновления.

Смешивание команд Linux и Windows

Ниже приведено несколько примеров смешиваний команд Linux и Windows с помощью PowerShell.

Чтобы выполнить команду Linux ls -la для вывода списка файлов и команду PowerShell findstr для фильтрации результатов слов, содержащих git, объедините команды:

Чтобы выполнить команду PowerShell dir для вывода списка файлов и команду Linux grep для фильтрации результатов слов, содержащих git, объедините команды:

Чтобы использовать команду Linux ls -la для вывода списка файлов и команду PowerShell > out.txt для вывода этого списка в текстовый файл с именем out.txt, объедините команды:

Команды, передаваемые в wsl.exe , перенаправляются в процесс WSL без изменения. Пути к файлам должны быть указаны в формате WSL.

Чтобы выполнить команду Linux ls -la для вывода списка файлов в пути файловой системы Linux /proc/cpuinfo с помощью PowerShell, сделайте следующее:

Чтобы выполнить команду Linux ls -la для вывода списка файлов в пути файловой системы Windows C:\Program Files с помощью PowerShell, сделайте следующее:

Запуск инструментов Windows из Linux

WSL может запускать средства Windows непосредственно из командной строки WSL с помощью [tool-name].exe . Например, notepad.exe .

Приложения, выполняемые таким образом, обладают следующими свойствами.

  • Рабочим каталогом остается каталог командной строки WSL (в большинстве случаев; исключения описаны ниже).
  • Они имеют те же разрешения, что и процесс WSL.
  • Они выполняются от имени активного пользователя Windows.
  • Они отображаются в диспетчере задач Windows так, как если бы они выполнялись непосредственно из командной строки.

Исполняемые файлы Windows, выполняемые в WSL, обрабатываются аналогично собственным исполняемым файлам Linux — конвейерной передаче, перенаправлению и даже фоновому режиму работы.

Чтобы запустить средство Windows ipconfig.exe , использовать средство Linux grep для фильтрации результатов IPv4, а также средство Linux cut для удаления полей столбцов из дистрибутива Linux (например, Ubuntu), введите:

Давайте рассмотрим пример сочетания команд Windows и Linux. Откройте дистрибутив Linux (например, Ubuntu) и создайте текстовый файл: touch foo.txt . Теперь используйте команду Linux ls -la , чтобы отобразить список файлов прямого доступа и сведения об их создании, а также средство Windows PowerShell findstr.exe , чтобы отфильтровать результаты и отобразить только файл foo.txt :

Средства Windows должны иметь расширение файла, его регистр символов должен совпадать с регистром в имени файла и эти файлы должны быть исполняемыми. Неисполняемые файлы, в том числе сценарии пакетного выполнения и собственные команды командной строки, такие как dir , можно выполнять с помощью команды cmd.exe /C .

Например, отобразите список содержимого каталога C:\ файловой системы Windows, введя:

Или выполните команду ping , чтобы отправить запрос проверки связи на веб-сайт microsoft.com:

Параметры передаются в двоичный файл Windows без изменений. Например, следующая команда откроет C:\temp\foo.txt в notepad.exe .

Этот способ также будет работать:

Совместное использование переменных среды между Windows и WSL с помощью WSLENV

Решение WSL и Windows совместно используют WSLENV — специальную переменную среды, созданную для взаимодействия Windows и дистрибутивов Linux, запущенных в WSL.

Свойства переменной WSLENV :

  • она используется совместно и существует в средах Windows и WSL;
  • это список переменных среды, которые совместно используют Windows и WSL;
  • она позволяет форматировать список переменных среды для корректного использования в Windows и WSL.
  • она может использоваться в потоке между WSL и Win32.

До выпуска сборки 17063 единственной переменной среды Windows,, к которой могла получить доступ WSL, была PATH (это позволяло запускать исполняемые файлы Win32 из WSL). Начиная со сборки 17063, WSLENV поддерживается. WSLENV учитывает регистр.

Флаги WSLENV

В WSLENV доступны четыре флага, влияющие на способ преобразования переменной среды.

  • /p преобразовывает пути WSL и Linux в пути Win32 и наоборот;
  • /l указывает, что переменная среды представляет собой список путей;
  • /u указывает, что эту переменную среды следует добавлять только при запуске WSL из Win32;
  • /w указывает, что эту переменную среды следует добавлять только при запуске Win32 из WSL.

При необходимости флаги можно комбинировать.

Узнайте больше о WSLENV, ознакомившись с часто задаваемыми вопросами и примерами установки значения WSLENV для объединения других предварительно определенных переменных среды с суффиксом в виде косой чертой и флагами для указания способа перевода значения и передачи переменных скрипту. В этой статье также показано, как настроить среду разработки с помощью языка программирования Go для совместного использования GOPATH с WSL и Win32.

Отключение взаимодействия

Пользователи могут отключить возможность запуска средств Windows для отдельного сеанса WSL, выполнив следующую команду в качестве привилегированного пользователя.

Чтобы повторно включить возможность запуска двоичных файлов Windows, закройте все сеансы WSL и повторно запустите bash.exe или выполните следующую команду от имени привилегированного пользователя.

Отключение взаимодействия не будет сохраняться между сеансами WSL, оно снова будет включено при запуске нового сеанса.

Где находятся файлы Ubuntu в Bash для Windows 10?

Файлы Bash on Ubuntu on Windows доступны в папке C:\Users\имя_пользователя\AppData\Local\lxss\. По умолчанию эта папка скрыта, для доступа к ней придётся предварительно включить отображение скрытых файлов (Вид → Скрытые элементы).

Где находятся файлы Ubuntu в Bash для Windows 10?

Как вы наверное уже поняли, эта папка создаётся для каждого пользователя Windows в отдельности, Так что подсистема Linux у каждого из них своя, при поиске или модификации файлов это нужно учитывать.

К слову, из Bash получить доступ к файлам в Windows даже проще: все диски компьютера автоматически монтируются в привычную для любого пользователя Linux директорию — /mnt. То есть для просмотра содержимого диска С: достаточно ввести команду ls /mnt/c, например.

Где находятся файлы Ubuntu в Bash для Windows 10?

В этом случае нужно помнить о том, что Bash запускается с правами текущего пользователя Windows. То есть если для управления некоторыми файлами или папками вам потребовались права администратора системы, то и Bash нужно перезапустить от имени администратора.

Где находится корневой каталог файловой системы Ubuntu в подсистеме Windows NT и наоборот?

Я установил подсистему Ubuntu в Windows 10 (после включения функции в настройках), но где находится корневой каталог файловой системы Ubuntu, расположенный на диске?

4 ответа

Это, похоже, изменилось с тех пор, как Bash изначально был представлен и не распространяется на дистрибутивы из Windows Store, или, может быть, он несовместим для всех систем, так как мой домашний каталог находится в другом месте:

Где — ваше имя пользователя Windows, а — ваше имя пользователя UNIX, установленное во время установки.

Таким образом, корневой каталог будет:

Обратите внимание, что корневой каталог может не отображаться в проводнике Windows из каталога %localappdata%. Вы должны иметь доступ к нему в любом случае, введя его в «адресной строке» проводника.

Если вы устанавливаете Linux из MS Market:

Бесплатный Ubuntu в магазине Windows Free Open Suse в хранилище Windows

разместил дистрибутивы под:

[d7 ] Установленный по умолчанию дистрибутив:

Корень Linux глубже:

PS. Я использовал Cygwin для изучения разделов реестра.

Единственное, что сработало для меня, было %localappdata%\lxss\home\ , где — ваше имя пользователя BASH, которое вы дали ему во время установки. По какой-то причине после отображения lxss скрытой папки в C:\Users\WINDOWS-USER\AppData\Local\ отказывается, а также дает полный путь C:\ к окнам и имя пользователя BASH тоже не работает.

И создайте ярлык на рабочем столе для что работает.

Вы можете быстро открыть Bash из окна File Explorer открытой папки, набрав bash в строке местоположения.

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

Microsoft WSL или пингвин в окошке

Сайт KV.BY опубликовал статью о подсистеме Windows Subsystem for Linux (WSL), предназначенной для запуска Linux-программ в ОС Windows 10. Упор в статье сделан на последнюю версию этой подсистемы WSL2.

Windows – это Linux

Как говорили древние греки, всё меняется и ничто не остаётся на месте. Многие ещё помнят те времена, когда операционная система GNU/Linux была для «Майкрософт» чем-то вроде красной тряпки для быка. Бывший руководитель рэдмондского гиганта Стив Балмер называл всё, что связано с детищем Линуса Торвальдса, не иначе как «раковой опухолью». Однако прошло не так уж и много времени после таких заявлений, и вот уже как три года корпорация «Майкрософт» является платиновым участником консорциума Linux Foundation – организации, занимающейся развитием и стандартизацией ядра Linux.

Мало того, в операционной системе Windows 10 появилась специальная программная подсистема Windows Subsystem for Linux (WSL). Эта подсистема позволяет в Windows запускать программы GNU/Linux в двоичном исполняемом формате ELF-64. В результате пользователям десятых «Форточек» становятся доступно программное обеспечение Linux-дистрибутивов, начиная со скриптов Bash и заканчивая службами наподобие Docer.

Windows Subsystem for Linux

Windows Subsystem for Linux

Поводом для произошедших перемен в политике корпорации, без сомнения, стала популярность мобильной операционной системы Android, основанной на ядре Linux. Но причина, по которой в Рэдмонде произошёл поворот в сторону Linux-сообщества, лежит не только в области мобильных операционных систем.

«Developers, developers, developers!»

Существует два способа запускать Linux-приложения в Windows. Первый способ предполагает перекомпиляцию Linux-программ в исполняемый формат exe-файлов. Благо большая часть программ Open Source является кроссплатформенной и свободно собирается под разные операционные системы. Примером первого способа можно назвать проекты Cygwin или MinGW – коллекции специально скомпилированных для Windows приложений UNIX.

Второй способ предполагает использование эмуляции и виртуализации, что позволяет запускать полноценный Linux-дистрибутив в специальной виртуальной среде. WSL – это и есть второй способ. Здесь используются как эмуляция ядра Linux, так и технологии виртуализации.

Но, прежде чем мы рассмотрим особенности второго способа, отметим, что в Windows 10 присутствует и первый способ. С недавнего времени тихо и незаметно в штатный состав «Десятки» входят три классические консольные UNIX-утилиты curl.exe, tar.exe, openssh.exe.

Утилиты curl.exe, tar.exe, openssh.exe в Windows 10

Утилиты curl.exe, tar.exe, openssh.exe в Windows 10

Выбор этих консольные утилит явно указывает на тот класс пользователей, ради которых «Майкрософт» и затеяла всю эту эпопею с запуском в «Форточках» программ Linux. Программы Curl, tar и openssh – популярные инструменты у веб-разработчиков. Именно для них и для веб-разработки создают в Рэдмонде подсистему Windows Subsystem for Linux.

Как правило, веб-разработчики используют для своей работы Windows. Однако их клиенты и заказчики в основном пользуются хостингом на Linux. И для веб-разработчики в среде Windows приходится использовать что-то вроде Denver и XAMP, или же запускать программы виртуализации VMware и VirtualBox, или же использовать на компьютере двойную загрузку с системами Linux. Или уже наметилась устойчивая тенденция для веб-разработки переходить на Mac OS, в которой имеется полноценное POSIX-ядро, позволяющее без лишних телодвижений запустить все консольные скрипты и программы, необходимых для современных веб-кодеров.

Поэтому основная цель WSL – удержать веб-разработчиков на Windows, предоставив им удобную и комфортную среду запуска всех консольных скриптов, программ и примеров с GitHub и StackOwerflow. (Кстати GitHub с недавних пор тоже под контролем Microsoft).

Главная особенность WSL

Технологиями виртуализации давно никого не удивишь. Если подсистема WSL основана на технологиях виртуализации, то возникает основной вопрос: чем Windows Subsystem for Linux лучше того же VirtualBox?

Преимущество WSL не только в том, что пользователю Windows 10 теперь не требуется устанавливать и настраивать отдельные программы для создания виртуальных машин, довольствуясь штатными средствами виртуализации. Основным достоинством WSL является очень тесная и бесшовная интеграция работы приложений Linux в системе Windows. WSL настолько глубоко интегрирует виртуальную среду выполнения Linux-программ в операционную систему Windows 10, что эти программы становятся мало отличимы от приложений Windows на уровне пользовательского интерфейса. Хотя эта бесшовность даётся не легко.

Ниже рассмотрим эту бесшовность и прозрачность более детально. Все инструкции в этой статье для работы с WSL актуальны для сборки Windows 10 18917 и более поздних версий. Проверить номер своей сборки Windows 10 можно командой «ver» в приложении «Командная строка».

Настройка WSL

Настраивать подсистему WSL практически не нужно. Виртуальная среда WSL в процессе работы настроится автоматически и незаметно для пользователя.

Единственное, нужно проверить включение компонентов «Подсистема Windows для Linux» и «Платформа виртуальной машины» через «Панель управления -> Программы и компоненты -> Включение или отключение компонента Windows».

Включение WSL

Включение WSL

WSL работает только в 64-разрядных версии Windows 10, начиная с редакции «Домашняя» для процессоров x64 и ARM. Подсистема не работает в безопасном S-режиме Windows 10.

Загрузка дистрибутива

Как известно программы для Linux распространяются в составе дистрибутивов, наиболее популярными из которых можно назвать Fedora, Debian, Ubuntu, OpenSUSE. Поэтому чтобы начать работу с WSL следует загрузить и установить базовый набор приложений какого-либо дистрибутива и затем штатным менеджером пакетов установить нужные программы.

Дистрибутивы Linux для WSL устанавливаются прямо из магазина приложений Windows Store так же, как и программы Windows. По поисковому запросу «linux» в магазине появится список дистрибутивов для выбора. На текущий момент в магазине представлено уже около дюжины дистрибутивов. Выбираем нужный дистрибутив, – например Ubuntu-18.04, – и нажимаем кнопку «Получить».

Ubuntu-18.04 в Windows Store

Ubuntu-18.04 в Windows Store

Загрузится около 200 мегабайт файлов для базовой системы. В главном меню «Пуск», в «плитках» и на рабочем столе наравне с иконками Windows-программ появится иконка Linux-дистрибутива.

Иконки дистрибутива Linux в Windows 10

Иконки дистрибутива Linux в Windows 10

Удаление дистрибутива происходит также как и удаление Windows-программ – через контекстное меню «плитки» дистрибутива в меню «Пуск».

Отметим, что в редакциях Windows 10 для предприятий, в которых нет Windows Store, дистрибутивы Linux для WSL можно скачать и установить посредством специальных команд Power Shell. В этой статье для краткости мы данный метод рассматривать не станем.

Первый запуск WSL

Подсистема WSL предназначена для запуска консольных программ Linux с интерфейсом командной строки. Для программ с графическим интерфейсом необходимо устанавливать дополнительное ПО, о чём будет сказано ниже.

При первом запуске установленного дистрибутив откроется приложение «Командная строка», в котором запустится командный интерпретатор установленного дистрибутива – обычно это bash. Будет предложено подождать одну или две минуты для завершения установки. На последнем этапе после завершения установки необходимо создать новую учетную запись пользователя Linux-системы, который будет использоваться по умолчанию подсистемой WSL, и задать пароль. После чего с установленной системой Linux можно работать.

Начальная инициализация WSL-дистрибутива

Начальная инициализация WSL-дистрибутива

Запустить установленную систему Linux можно в приложении «Командная строка» с помощью команд «bash.exe», «wsl.exe» или «<имя дистрибутива>.exe» (не во всех дистрибутивах работает). Самой продвинутой является команда «wsl.exe», так как с её помощью доступны все возможные операции с подсистемой WSL.

Список установленных дистрибутивов задаётся командой «wsl» с помощью опции «-l» или «—list»:

Пример вывода команды “wsl -l”

Пример вывода команды “wsl -l”

Установка дистрибутива по умолчанию, который будет запускаться командами «bash.exe», «wsl.exe» без параметров, происходит с помощью опций «-s» («—setdefault»):

Если для дистрибутива задано несколько учётных записей, то для запуска от имени определенного пользователя имеются опции «-u» («—user»):

Запуск определенного дистрибутива по названию с помощью опций «-d» («—distribution»):

WSL1 и WSL2

После установки и первого запуска любой системы обычно всегда делается обновление ПО. Например, для Ubuntu обновление делается командами:

В первых версиях WSL пользователи столкнулись с неприятным фактом, что это обновление происходило очень медленно. Операция замены пары сотен мегабайт могла затянуться на долгое время. Резкое снижение производительности было характерно также и для других приложений, требующих большого числа файловых операций – Git, Node.js и других.

Такая низкая скорость файловых операций объяснялась тем, что первая версия WSL использовала эмуляцию ядра Linux на уровне API Windows. Также подсистема WSL эмулировала метаданные файловой системы дистрибутива Linux.

На практике оказалось, что такая эмуляция не обеспечивает высокую скорость файловых операций для систем Linux. Поэтому, начиная со сборки Windows 10 18917, используется новая архитектура WSL2, которая основана на технологиях виртуализации Microsoft Hyper-V. Другими словами теперь для каждого установленного дистрибутива Linux подсистема WSL запускает отдельную легковесную виртуальную машину и отдельный виртуальный диск. При этом для этой виртуальной машины используется настоящее ядро Linux, а не эмуляция на уровне системных вызовов Windows. В результате для WSL2 удалось повысить производительность файловых операций по сравнению с WSL1 на порядок.

На текущий момент в Windows 10 присутствуют обе версии подсистемы – и WSL1, и WSL2. Рекомендуется использовать WSL2.

Чтобы проверить, какие версии WSL использует каждый дистрибутив, используйте для команды «wsl.exe» опции «-l -v» («—list —verbose»):

Пример вывода команды “wsl -l -v”

Пример вывода команды “wsl -l -v”

Установить WSL 2 для отдельного дистрибутива можно опцией «—set-version»:

Чтобы задать WSL 2 по умолчанию для всех устанавливаемых в дальнейшем дистрибутивов Linux, используйте опцию «—set-default-version»:

Одиночное и смешанное выполнение программ

Самое важное и интересное в WSL – это одиночное и смешанное выполнение программ Linux из среды Windows и наоборот.

Чтобы выполнить какую-либо программу из установленного дистрибутива Linux, совсем не обязательно запускать терминальную сессию Linux. Можно просто передать имя Linux-программы в качестве аргумента для wsl.exe и она будет выполнена прямо в контексте командной строки Windows.

Примеры одиночного выполнения Linux-программ

Примеры одиночного выполнения Linux-программ

При этом программа для Linux выполнится в том же каталоге, в котором находится интерпретатор «Командная строка», от имени пользователя WSL по умолчанию с правами вызывавшего её интерпретатора. То есть если «Командная строка» запущена с правами Администратора Windows, то и запущенная здесь программа для Linux будет иметь права Администратора.

Возможно и обратное – вызов двоичных файлов Windows из консоли Linux. Поэтому из командного интерпретатора Linux, например, набрав команду «notepad.exe» можно запустить «Блокнот», который будет запущен с правами активного пользователя Windows.

Запуск “Блокнота” из консоли Linux

Запуск “Блокнота” из консоли Linux

Мало того, можно объединять программы Linux и программы Windows через механизм конвейера pipe. То есть можно соединять выход Linux-программы с входом Windows-программы и наоборот.

Пример 1, cmd. Выход Windows-программы «dir» направляем на вход Linux-утилиты «grep»:

Пример 2, bash. Выход Linux-программы «cat» направляем на вход Windows-утилиты «findstr»:

Такая тесная интеграция программ Windows и Linux с помощью WSL позволяет, например, писать смешанные скрипты BASH и Power Shell. Или интегрировать инструменты Linux в средства разработки Windows.

Доступ к файлам

WSL предоставляет доступ из оболочки bash Linux ко всем дискам и всей файловой системе Windows. Локальные диски автоматически монтируются в каталог «/mnt». Например, диск «C:» монтируется как «/mnt/c».

USB-флэшки не монтируются автоматически в каталог «/mnt». Их нужно монтировать с помощью плагина drvfs. Например, монтирование флэш-диска H:

Файлы WSL-дистрибутивов Linux можно найти в папке «C:\Users\имя_пользователя\AppData\Local\Packages\». Они будут находиться в папках с названиями вида «CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc». Если используется версия WSL1, то файлы Linux-системы там будут находиться как есть в прямом доступе из Windows. Но категорически не рекомендуется их трогать в обход WSL, так как Windows не обработает специфические метаданные этих файлов.

В случае версии WSL2 в папке дистрибутива будет расположен файл образа виртуального жёсткого диска. Если в командном интерпретаторе запустить команду «explorer.exe .» с точкой в качестве аргумента, то откроется «Обозреватель» Windows, в котором отобразится файловая система текущего дистрибутива Linux как сетевой ресурс вида «\wsl$\<название дистрибутива>».

WSL-диск как сетевой ресурс Windows

WSL-диск как сетевой ресурс Windows

Другими словами, передать приложению Windows какой-либо файл из WSL-дистрибутива можно по сетевому пути к этому файлу.

Сеть и сетевые приложения

Версия WSL1 использует IP-адрес Windows. Сетевой стек у подсистемы WSL1 общий с Windows. Сервер, поднятый в Linux, будет доступен на localhost в Windows и наоборот.

Если дистрибутив использует версию WSL2, то уже потребуется найти IP-адрес виртуальной машины, чтобы подключить дистрибутив по этому IP-адресу. Это можно сделать, выполнив в Linux-системе команду «ip addr» и через поиск строки «eth0» найти адрес по значению «inet».

Дальше можно в Linux запустить, для примера, http-сервер Python командой «python3 -m http.server» и обратиться к нему из браузера Windows по полученному IP.

Доступ к веб-серверу Python для WSL из Windows

Доступ к веб-серверу Python для WSL из Windows

WSL и программы с графическим интерфейсом

WSL — это средство, предназначенное для пользователей, которым требуется запускать программы командной строки Bash и Core Linux в Windows. WSL не имеет штатных средств для запуска приложений Linux с графическим интерфейсом GNOME, KDE и т. д.

Тем не менее, энтузиасты вполне успешно запускают графические программы в WSL, устанавливая и запуская сторонние порты X-сервера для Linux – например VcXsrv.

VcXsrv – X-сервер для Windows

VcXsrv – X-сервер для Windows

В сети Интернет немало инструкций по запуску в WSL графических Linux-программ. Большая часть этих инструкций написана для WSL1, но с появлением второй версии подсистемы они устарели. Ниже последовательность действий для настройки X-сервера VcXsrv для подсистемы WSL2.

  1. Находим в Сети, скачиваем и устанавливаем X-сервер VcXsrv.
  2. В WSL-дистрибутиве через пакетный менеджер устанавливаем какую-нибудь программу с графическим интерфейсом – например, Nautilus GNOME.
  3. В настройках брандмауэра Защитника Windows «Пуск > Параметры > Обновление и безопасность > Безопасность Windows > Брандмауэр и защита сети» отключаем брандмауэр для опции «Общедоступная сеть».
  4. В Linux находим IP-адрес сервера имен nameserver, прописанный в «/etc/reslv.conf».
  1. Экспортируем переменную DISPLAY со значением nameserver из reslv.conf и номером экрана «0».
  1. Запускаем в Windows VcXsrv. Устанавливаем «0» для «Display number» и галочку для «Disable access control».
  2. В Linux из командной строки запускаем графическую программу.

WSL и программы Linux с графическим интерфейсом

WSL и программы Linux с графическим интерфейсом

Само собой, приведенный способ в запуска программ Linux с графическим интерфейсом в скором времени тоже устареет. Хотя бы потому, что подобный способ не соответствует главной задумке Windows Subsystem for Linux: использовать только штатные компоненты Windows и не требовать их сложной настройки.

Where are the files inside wsl2 physically stored? [closed]

This question does not appear to be about programming within the scope defined in the help center.

Closed 2 years ago .

The community reviewed whether to reopen this question 1 year ago and left it closed:

Original close reason(s) were not resolved

I’ve installed wsl2 on my windows machine and I was not able to figure out where the files are actually stored.
Note, that I don’t mean that I wanna browse them inside the file explorer — I know it can be done by typing in the explorer \\wsl$\ .
If I would have to guess I would say the files are stored in the same hard-drive that the os is stored.

So actually I have two related questions.

  1. Where the files are stored?
  2. If they are stored in the hard drive of my os, can I somehow relocate my wsl to another hard drive?

EDIT:
I was able to locate the installation path, in my machine the path is:
C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState

Is there a way to mount this to another location?

Dweeberly's user avatar

Eliran Turgeman's user avatar

3 Answers 3

All the files are stored in a ext4.vhd files in the installation directory, which you can’t mount directly onto windows as it is in ext4 (obv)

There’s two ways to change the location of the above mentioned vhd file the official, tedious way and an unofficial quick and dirty way

The official tedious way

  1. Export the distro to a location with wsl.exe —export <Distro> <FileName> from CMD/PowerShell
  2. Import the distro to a different location with wsl.exe —import <Distro> <InstallLocation> <FileName> [Options]

The problems with this is it’s quite time consuming and after you do this, pray that it exported and imported several gigabytes worth of thousands of files without any problems

The quick and dirty way

This involes an unofficial opensource WSL manager called lxrunoffline

To install it (takes like a min at max) read through the instructions by the dev here

If you installed it by manually downloading the binaries from the release page, make sure to install it to a directory in PATH, like C:\Windows

Now the process is simple as lxrunoffline move -n <distroname> -d <destination-folder>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *