WSL: Я использую версию 1 или версию 2?

У меня есть Подсистема Windows для Linux, но я не знаю, какая версия у меня есть, и многие вещи не будут работать в версии 1. Как мне проверить свою версию?

  1. В командной строке Windows 10 запустите ver. Является предпоследней версией числовой группы 18917 или выше? Если это так, то это возможный у вас есть WSL 2, но еще нет проверенный. Переходите к шагу А или B.
    Если вы это сделаете нет смотрите Windows версии 18917 или выше, у вас есть версия 1.
    Это иллюстрирует результат, когда ОС имеет сборку 16299:

    Version 16299

    A. Открытые окна PowerShell или cmd и введите команду wsl -l -v. Если версия 2 установлена правильно, вы увидите номер версии. Если вы не видите номер версии или если вы видите сообщение об ошибке (спасибо, Роговица Валентин) у вас есть версия 1 (вы также можете увидеть номер версии "1", который может указывать на то, что вы используете версию v1 - см. здесь). Удалите его, а затем переустановите в соответствии с https://scotch.io/bar-talk/trying-the-new-wsl-2-its-fast-windows-subsystem-for-linux

    B. Из командной строки WSL запустите uname или uname -r. Если версия ядра >= 4.19, это версия WSL 2.

Почему это имеет отношение к делу?

WSL 1 был основан на совместимом с Linux интерфейсе ядра Microsoft, а уровень перевода совместимости с нет ядра Linux код.

WSL 2 был переработан с использованием ядра Linux, работающего в облегченной среде виртуальной машины, и новаторы нашли еще много вещей, которые они могут сделать с помощью WSL 2.

Windows 10 версии 2004 (сборка 19041.153 и более поздние версии) дополнительно расширяет возможности WSL2; см. https://devblogs.microsoft.com/commandline/wsl2-will-be-generally-available-in-windows-10-version-2004/ и https://winaero.com/blog/wsl2-will-ship-with-windows-10-version-2004-with-kernel-updates-via-windows-update/ .

  1. Откройте PowerShell
  2. Проверьте версию с помощью wsl -l -v
  3. Если в версии 1, то обновите версию с помощью wsl --set-version Ubuntu-20.04 2

Примечание: Изменение версии запущенной операционной системы приведет к ее завершению.Название операционной системы не обязательно должно быть Ubuntu-20.04 для вас. Пожалуйста, выберите фактическое имя, указанное в wsl -l -v

Если вы не можете обновиться до версии 2, возможно, вы не используете ядро WSL 2. Это может быть загружено из Microsoft.

В версии WSL, которую я запускал, я просто набрал uname -r на что я получил результат

5.4.72-microsoft-standard-WSL2

Итак, я могу сказать, что это WSL2, так что вы можете попробовать запустить uname -r и проверь.

Если вы случайно используете Docker для Windows и у вас есть WSL 1, то если вы введете docker в терминале для вашего WSL вы увидите сообщение The command 'docker' could not be found in this WSL 1 distro., что является очень четким подтверждением.

@BrainSlugs83 Чрезвычайно хрупкий, но работает для меня! В WSL1 uname -r заканчивается на -Microsoft, в WSL2 он заканчивается на -microsoft-standard… строчная буква “м”!

@Rinzwind Вы можете присоединиться ко мне с просьбой о таком в How to tell in Linux under WSL if using WSL1 vs WSL2 ? · Issue #4555 · microsoft/WSL · GitHub

@Rinzwind Если вопрос по теме, то и ответы на этот вопрос тоже. Если кто-то спросит, как создать загрузочный USB-накопитель Ubuntu в Windows, то этот вопрос по теме, как и все ответы на него, даже если в ответах упоминается unetbootin.exe . То же самое и с WSL.

@Rinzwind Любые вопросы, касающиеся WSL, в том числе о том, как его установить, на мой взгляд, актуальны.

Из этого потока, похоже, работает следующая команда bash:
uname -r | grep Microsoft > /dev /null && echo "WSL1". – Это довольно простой способ обнаружить его, но он напечатает “WSL1”, если это то, что вы используете.

Я бы, по крайней мере, ожидал, что будет доступна wsl --version

@Flimm нет, если ответ лежит за пределами wsl. Как только кто-то упоминает powershell, это не по теме, мы НЕ должны знать ничего, что является инструментом в Windows.