Как перейти с магазинной версии WSL на встроенную в Windows 11: подробное руководство

Если вы работаете с WSL (Windows Subsystem for Linux) в Windows 11 и сталкиваетесь с ошибкой The file cannot be accessed by the system при попытке запустить команды через SSH, вероятно, проблема связана с версией WSL из Microsoft Store. Я сам недавно разбирался с этой ситуацией, и сейчас расскажу, как перейти на «встроенную» версию WSL, которая корректно работает в удалённых сессиях.

Кстати, магазинная версия WSL (устанавливаемая через wsl --install) иногда конфликтует с OpenSSH-сервером из-за особенностей интеграции. В Microsoft даже упоминают это в официальной документации, но без чётких инструкций по исправлению. Не переживайте – решение есть, и оно не требует глубоких знаний системы.

Почему магазинная версия WSL вызывает проблемы с SSH?

Магазинная версия WSL (она же «Store WSL») использует другой механизм взаимодействия с системой, чем встроенная. Когда вы подключаетесь через SSH, сессия работает в контексте, где доступ к некоторым компонентам WSL ограничен. Это связано с тем, что Store-версия запускается через Appx-пакет, который не полностью интегрируется с системными службами.

Например, при попытке выполнить wsl в SSH-сессии возникает ошибка доступа к файлам – система просто не видит нужные компоненты. Встроенная версия (она же «In-Windows WSL») лишена этого недостатка, так как устанавливается через системные обновления и интегрируется на уровне компонентов Windows.

Полная инструкция: переходим на встроенную версию WSL

Перед тем как начать, сохраните все данные из WSL-дистрибутивов – процесс удаления затронет их. Если нужно, экспортируйте виртуальные машины через wsl --export.

1. Удаление текущей версии WSL:

Откройте PowerShell или командную строку от имени администратора и выполните:

wsl --uninstall

Это удалит ядро WSL и все связанные компоненты. Но магазинная версия может оставить «следы», поэтому переходим к следующему шагу.

2. Отключение компонента WSL через панель управления:

Перейдите в «Панель управления» → «Программы» → «Включение или отключение компонентов Windows». Найдите в списке Подсистема Windows для Linux и снимите галочку. Нажмите OK и перезагрузите компьютер.

Важно: без перезагрузки изменения не вступят в силу. Если пропустите этот шаг, установка новой версии может завершиться ошибкой.

3. Скачивание встроенной версии WSL с GitHub:

Магазинная установка нам не подходит, поэтому загрузите последний релиз напрямую из официального репозитория Microsoft. Ищите файл с названием вроде WSL-x64.msi (например, WSL_1.2.5.0_x64.msi).

Совет: проверьте цифровую подпись файла перед установкой, чтобы избежать рисков безопасности.

4. Установка WSL и дистрибутива:

Запустите скачанный MSI-файл и следуйте инструкциям. После завершения откройте терминал и установите нужный дистрибутив через команду:

wsl --install -d Ubuntu

Можно выбрать Debian, Alpine или другой вариант из списка.

    Проверка работы WSL через SSH

    После переустановки подключитесь к машине по SSH и выполните wsl --version. Если версия отображается без ошибок, всё прошло успешно. Теперь можно использовать команды вроде:

    rsync -vPn --rsync-path='wsl rsync' my_user@my_ip:/mnt/c/rsync_testing .

    Если же ошибка The file cannot be accessed by the system сохраняется, проверьте:

    • Активирован ли компонент WSL в «Параметрах Windows» (иногда после обновлений он отключается);
    • Не блокирует ли брандмауэр доступ к WSL (попробуйте временно отключить его для теста);
    • Установлены ли последние обновления Windows через Настройки → Центр обновления.

    Дополнительные советы для работы с WSL

    Чтобы избежать проблем в будущем:

    • Не обновляйте WSL через Microsoft Store – используйте только wsl --update или ручную загрузку с GitHub;
    • Настройте /etc/wsl.conf для управления автоматическим монтированием дисков (например, добавьте automount.root = /mnt/);
    • Для работы с сетевыми приложениями в WSL (например, веб-серверами) проверьте настройки брандмауэра и проброса портов.

    Если вы переносите данные со старого WSL-дистрибутива, используйте wsl --import или создайте резервную копию через tar. И помните: встроенная версия WSL обновляется вместе с системой, поэтому проблемы совместимости возникают реже.

    Теперь вы можете спокойно работать с WSL через SSH – ошибки доступа к файлам останутся в прошлом. А если что-то пойдёт не так, пишите в комментарии: помогу разобраться!

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

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

    Новое
    Интересное