Вопрос или проблема
У меня есть рабочая станция HP с Windows 10 и видеокартой NVIDIA GeForce GTX 1070, на которую я установил UBUNTU 18.04 как приложение (нативно), следуя ссылке:
https://www.howtogeek.com/fyi/windows-10-will-finally-offer-easy-access-to-linux-files/
Я могу получить доступ к этой видеокарте в Windows, но не могу сделать это в Ubuntu. Я ввожу следующую команду в терминале:
lspci -k
И получаю следующие сообщения:
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.
Я также ввел: lshw -numeric -C
display, но это не дало никакого результата.
У меня нет твердых доказательств для этого, но возможно, что WSL фактически не предоставляет все оборудование, заявленное хостом, в окружение Ubuntu WSL. Это может быть причиной, почему вы не можете работать с ним, поскольку у вас нет прямого доступа к PCI, как если бы Ubuntu была установлена непосредственно на системе, а вместо этого вы как бы “контейнеризованы” в Windows. Также возможно, что библиотеке абстракции системных вызовов WSL не разрешено иметь этот доступ.
ИЗМЕНЕНИЕ: Согласно запросу о том, так ли это или нет, на WSL GitHub, в настоящее время невозможно получить доступ к GPU или шине PCI напрямую.
На данный момент вы не можете получить доступ к вашему GPU внутри WSL. Это что-то, чего очень часто требуют (это наш запрос номер 1 на UserVoice!), и мы уже отслеживаем это здесь в этом вопросе: #829. Мы изучаем, как сделать это возможным, и обязательно опубликуем любые обновления, как только они станут доступны.
Они также указали, что это сильно запрашиваемо, и предложили отслеживать запрос через данный вопрос на GitHub.
Иногда хорошо, что Community-bot поднимает старые вопросы. Ситуация определенно изменилась с тех пор, как этот вопрос был изначально задан и отвечен.
Хотя все еще верно, что WSL2 является виртуализированной платформой, которая в большинстве случаев не дает прямого доступа к оборудованию, недавно произошло два больших прогресса в отношении графики:
-
Во-первых, с выпуском Windows 11 функция WSLg позволяет запускать графические приложения Linux непосредственно из WSL2 в Windows. Это также обеспечивает ускоренную графику в большинстве случаев.
-
Во-вторых, GPU от nVidia и AMD теперь могут быть доступны непосредственно для задач вычислений с использованием GPU. Эта функция доступна как в Windows 10 21H2, так и в Windows 11 (все выпуски).
.
Ответ или решение
Вопрос об использовании графических возможностей Ubuntu, установленного как приложение в Windows 10, является актуальным и сложным для многих пользователей, особенно тех, кто хочет использовать возможности своего оборудованию на полной мощности. В данной ситуации мы сталкиваемся с несколькими аспектами, которые требуют внимательного рассмотрения.
Теория
Первоначально стоит понять, как именно работает Windows Subsystem for Linux (WSL), который вы используете для работы с Ubuntu на Windows 10. WSL предоставляет слой совместимости, который позволяет пользователям запускать Linux-программы внутри Windows, не требуя использования виртуальной машины или двойной загрузки. Тем не менее, это не полноценная Linux-система: WSL в первую очередь предназначен для разработки программного обеспечения и предлагает ограниченный доступ к аппаратному обеспечению, особенно в его первых версиях.
В вашем случае проблема заключается в невозможности доступа к NVIDIA GeForce GTX 1070 из-под Ubuntu внутри WSL. Это связано с архитектурными ограничениями WSL, который до недавнего времени не поддерживал прямой доступ к аппаратным устройствам, таким как графические процессоры.
Пример
Ваша проблема с lspci
и lshw
в Ubuntu объясняется тем, что WSL (особенно первая версия, WSL1) не предоставляет доступа к шине PCI, что делает невозможным выполнение стандартных команд проверки оборудования в Linux. В отличие от полноценной Ubuntu, установленной на железо, WSL использует виртуализированное окружение, где аппаратные ресурсы изолированы от процесса с использованием дополнительного уровня абстракции.
Применение
Однако с появлением WSL2 ситуация в некоторой степени изменилась. WSL2 перешел на использование виртуальной машины на базе Hyper-V, что дало возможность более эффективного управления ресурсами. Хотя все еще существуют ограничения по доступу к аппаратному обеспечению, Microsoft в сотрудничестве с NVIDIA и другими производителями теперь предлагает поддержку графических операций и вычислений на GPU.
Для использования этих возможностей вам потребуется обновить WSL до версии 2, а также убедиться, что используете версию Windows 10 21H2 или Windows 11, которые поддерживают эти возможности. WSLg также позволяет запускать графические Linux-приложения непосредственно из WSL, при этом, во многих случаях, обеспечивается поддержка аппаратного ускорения.
Чтобы воспользоваться этими технологиями:
-
Обновите WSL: Убедитесь, что вы используете последнюю версию WSL. Введите в командной строке Windows:
wsl --update
-
Проверьте версию Windows: Убедитесь, что ваша система обновлена до Windows 10 версии 21H2 или Windows 11. Это можно сделать через настройки обновлений.
-
Настройка WSL2: Если вы еще не перешли на WSL2, в командной строке выполните:
wsl --set-version Ubuntu-18.04 2
-
Установка драйверов для GPU: Поскольку теперь поддерживается GPU в WSL, установите соответствующие драйверы для вашей видеокарты NVIDIA в системе Windows и активируйте возможность использования GPU в WSL, следуя инструкциям от Microsoft и NVIDIA относительно WSL2.
Эти шаги помогут вам сделать значительный прогресс в доступе к графическим ресурсам из Ubuntu, работающего в WSL, но полное сравнение с опытом использования графического оборудования в нативной установке Linux все еще будет невозможным из-за некоторых оставшихся ограничений виртуализации.
Понимание того, как поведение системы может адаптироваться к изменениям в WSL, особенно с учетом последних технологических усовершенствований, таких как WSLg, позволяет вам более эффективно использовать ресурсы вашей системы. Следите за обновлениями от Microsoft, которые продолжают развивать WSL и улучшать его возможности в плане взаимодействия с аппаратным обеспечением.