На днях я пытался запустить мультизагрузку Windows 8, Xubuntu и просто старой Ubuntu, когда столкнулся с проблемой. Я использую EVGA 750 TI SC, и я думаю, что Linux не поддерживает драйверы Nvidia "из коробки" из-за юридических проблем. Я не знал этого в то время, и я даже не мог установить ОС (у меня уже была установлена Windows 8, и я пробовал Ubuntu дальше).

Я продолжал получать черный экран после загрузочного меню GRUB, но я понял, что это, вероятно, проблема с драйвером видео. Поэтому я подключил монитор к встроенному графическому порту моей материнской платы и вынул 750 TI. Это сработало, и я смог установить Ubuntu и загрузился во все хорошо. Я установил драйверы Nvidia на Ubuntu и Xubuntu, но пока я не включаю "nomodeset" в своих параметрах загрузки, моя карта Nvidia не работает. Я думал, что все в порядке, пока я не попробовал бенчмаркинг, когда увидел, что Linux думал, что я использую VMware, и что даже игра Minecraft на самых низких настройках давала мне 10-15 кадров в секунду.

Так как мне это исправить?

2 ответа2

5

вздор

Прояснение заблуждений

Linux не поддерживает драйверы Nvidia "из коробки" из-за юридических проблем

Хотя это технически верно для совершенно разных причин, Ubuntu (не только Linux является, это Linux плюс много других (отдельно) вещей затираемых вместе) делает корабль проприетарные Nvidia и AMD графических драйверов как часть по умолчанию их распределения. На самом деле, установить их довольно просто, и вам не нужно делать ничего слишком технического, чтобы успешно это сделать. Я не уверен, какие шаги вы предприняли, чтобы попытаться установить графические драйверы Nvidia, но, похоже, вы не использовали официально поддерживаемый метод.

Linux думал, что я использовал VMware

Нету. VMware вносит большой объем кода в графический стек с открытым исходным кодом (для краткости OSGS). Поскольку создатель Mesa является сотрудником VMware (он не был, когда он запустил Mesa, но сейчас он есть), имя "VMware" часто встречается в строке поставщика OpenGL, если вы используете OSGS. OSGS фактически состоит из следующих компонентов:

  • Mesa - реализация OpenGL в пользовательском пространстве, содержащая как программные, так и аппаратные реализации OpenGL. Также недавно реализованы некоторые другие API, такие как OpenCL, возможно Direct3D 9, OpenVG и т.д. По сути, Mesa - это то, что берет открытое аппаратное обеспечение драйвера ядра с открытым исходным кодом и заставляет его рисовать трехмерные объекты. В Mesa есть аппаратные реализации OpenGL, которые либо основаны на классической Mesa (в настоящее время только драйвер Intel GPU основан на классической Mesa), либо на Gallium3D, которая является частью Mesa, которая предоставляет много общего код, который можно использовать для относительно быстрого запуска поддержки OpenGL для нового оборудования.

  • Ядро Linux - ядро содержит Direct Rendering Manager (сокращение DRM, но не имеет отношения к управлению цифровыми ограничениями), которое содержит компоненты OSGS "на стороне ядра" для всех поддерживаемых аппаратных средств.

  • Сервер дисплея Xorg - также известный как "X", "X11" или организация, стоящая за ним, «X.Org», это компонент пользовательского пространства, обеспечивающий базовый ввод (мышь / клавиатура / джойстик) и инфраструктуру дисплея. Программы подключаются к серверу отображения Xorg с помощью доменных сокетов TCP или UNIX и отправляют на сервер команды рисования . Затем сервер использует расширения устройства отображения (DDX) для передачи команд рисования на видеооборудование.

  • DDX - DDX реализуют фактический "бэкэнд" команд рисования, которые отправляются на сервер Xorg. DDX могут использовать либо общий (не ускоренный) интерфейс VESA (который объединяет все видеокарты), либо аппаратно ускоренный, такой как nouveau , intel или radeon , который поддерживает графические процессоры Nvidia, Intel и AMD, соответственно, через компонент пользовательского пространства Direct Rendering Infrastructure (DRI). DRI в основном общается с DRM ядра, чтобы передавать аппаратные команды ускоренного рисования. Неускоренные DDX-файлы мучительно медленны, поэтому вы всегда должны использовать ускоренный, если можете.

  • libdrm - компонент пользовательского пространства, который представляет собой тонкую оболочку вокруг DRM API ядра Linux. Аппаратно-ускоренные DDX и Mesa используют libdrm.

Так что нет, "Linux" (что бы это ни значило; Mesa не является частью ядра Linux) на самом деле не думал, что вы работаете под VMware. Скорее всего, наиболее вероятный сценарий состоит в том, что неправильная конфигурация проприетарных графических драйверов Nvidia заставила операционную систему переключиться на бэкэнд llvmpipe Mesa, что является наилучшей попыткой рендеринга программного обеспечения на процессоре (но она по-прежнему мучительно медленная по сравнению с к аппаратно-ускоренным драйверам). Без публикации полной версии OpenGL невозможно понять, что именно вы видели. Вы можете отобразить строку версии OpenGL с помощью команды glxinfo (возможно, вам придется сначала установить пакет).

до тех пор, пока я не включаю "nomodeset" в настройках загрузки, моя карта nvidia не работает.

Позвольте мне попытаться разобрать это запутанное предложение, переписав его:

Если я включить "nomodeset" в моих вариантах загрузки, тогда моя Nvidia карта работает.

Это верно для вашего случая, или вы имели в виду что-то еще?

Если это правда, вы должны знать, что nomodeset самом деле говорит драйверу OSGS включить настройку пользовательского режима, что в основном просто нарушает 3D-ускорение.

Чтобы уточнить:

Существует два типа стеков графических драйверов, которые широко используются в настольных системах GNU/Linux:

  • Собственные: Nvidia и AMD разработали быстрые графические драйверы, но они не делятся ни с кем исходным кодом. Все вместе они называются проприетарными драйверами, поскольку они имеют схожие характеристики и проблемы интеграции.
  • Открытый исходный код: ОСГ, который я обсуждал выше.

В настольных системах GNU/Linux обычно используются два типа настройки режимов :

  • Настройка режима пользователя: это единственный тип настройки режима, поддерживаемый проприетарными драйверами. В прошлом это был также единственный тип настройки режима, поддерживаемый OSGS. Но в последние годы OSGS все больше продвигается в сторону настройки режима ядра, настолько широко, что общепризнанно, что настройка режима пользователя является неподдерживаемой конфигурацией и может сломаться при использовании OSGS. Тем не менее, настройка режима пользователя по-прежнему хорошо работает с проприетарными драйверами, при условии, что OSGS должным образом ушел.

  • Ядро переключения видеорежима: Поддерживается только OSGS. Если вы намереваетесь использовать проприетарные драйверы, вы не сможете их использовать, если компонент ядра OSGS, Direct Rendering Manager, инициировал установку режима ядра. Вы должны перезагрузить систему, чтобы это исправить.

К сожалению, проприетарные графические драйвера установлены вытаптывание над файлами , которые OSGS состоит. Например, файл /usr/lib/libGL.so (здесь я слишком упрощаю точное имя файла) является реализацией OpenGL системы по умолчанию. При установке по умолчанию этот файл будет "связан" с OSGS - Mesa, если быть точным. После установки проприетарного графического драйвера этот файл вместо этого будет "связан" со специфической реализацией проприетарного драйвера libGL, а не с Mesa.

Другая часть процедуры установки проприетарной графики заключается в изменении некоторых файлов конфигурации, чтобы компонент ядра OSGS не пытался загружаться. Если компонент ядра OSGS загружается, он может попытаться получить контроль над графическим оборудованием, что помешает успешной загрузке собственного модуля ядра проприетарного графического драйвера, и ваша система окажется в "неисправном" состоянии.

Фактически, из-за компонентной архитектуры графического стека (как проприетарная, так и OSGS имеют схожую архитектуру), существует большое количество возможных "сломанных" конфигураций, которые либо вообще не будут обеспечивать вывод на дисплей, либо ограничат Вы подключитесь к текстовому терминалу или загрузите Xorg, но не обеспечите 3D-ускорение.

Вот неполный список некоторых неисправных конфигураций:

  • Вы загрузили ядро DRM из OSGS, но ваш libGL - из проприетарного графического драйвера.

  • Вы загрузили модуль ядра проприетарного графического драйвера и libGL, но ваш Xorg DDX из OSGS.

  • Вы загрузили ядро DRM из OSGS и проприетарного модуля ядра графического драйвера, но DRM ядра OSGS "выигрывает" (получает эксклюзивный контроль над оборудованием). Между тем, ваш DDX и libGL оба из проприетарного графического драйвера.

Эти типы сломанных конфигураций могут возникать, когда:

  • В проприетарном инструменте установки графического драйвера есть ошибка;

  • Запатентованный графический драйвер нуждается в особых настройках для работы с вашим дистрибутивом GNU/Linux, но вы устанавливаете "ванильную" версию драйвера (загруженную с nvidia.com или amd.com в Интернете), а не устанавливаете ее с помощью своего дистрибутива. менеджер пакетов. Дистрибутивная версия будет протестирована вашим дистрибутивом Linux, и практически гарантированно будет функционировать, если вы установите ее правильно.

  • Установка проприетарного графического драйвера выполняется таким образом, который предполагает определенный тип установки OSGS, но ваша OSGS новее / старше, чем ожидалось, поэтому файлы или конфигурации не соответствуют друг другу, что приводит к одному из сломанных сценариев. выше.

  • Вы используете слишком новую или слишком старую версию проприетарного графического драйвера. Как правило, лучше всего использовать версию проприетарного драйвера, выпущенную примерно в то же время (по крайней мере, в течение 6 месяцев) дистрибутива Linux, который вы используете. Например, если вы работаете в Ubuntu 10.04 (с апреля 2010 года), вам не нужно устанавливать драйвер Nvidia, выпущенный в сентябре 2014 года. С другой стороны, вы, вероятно, захотите запустить последнюю версию Ubuntu; очень нежелательно запускать старую версию из-за всех улучшений, которые были сделаны в последние годы.

Убедитесь, что вы используете Ubuntu/Xubuntu 14.10 - это самый последний выпуск (20 14/10 = октябрь) на момент написания этой статьи. По понятной причине любой, кто серьезно относится к 3D-ускорению на (x) Ubuntu, будет запускать последнюю версию. Вещи быстро меняются, и у вас не будет хорошего опыта на старой версии.

Совет

Судя по тому, что я бы воспринимал как ваш вероятный уровень технического опыта, я бы посоветовал вам сделать следующее:

  1. Сотрите Xubuntu и Ubuntu с вашей системы.

  2. Если у вас еще нет Ubuntu 14.10, загрузите его. Получите 64-битную версию. Не заморачивайся с 32-битным.

  3. Установите это. Он должен "Просто работать" и вывести вас на рабочий стол.

  4. Перейдите к апплету "Дополнительные драйверы", как и в другом предложенном ответе, и возьмите проприетарные драйверы Nvidia.

  5. Перезагружать.

-1

Попробуйте использовать последнюю версию Ubuntu и проверьте наличие дополнительных драйверов в настройках.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .