- Мониторы для Линукс? Как обстоят дела с драйверами?
- Unix драйверы
- Русские Блоги
- Как написать драйвер ЖК-дисплея для Linux
- Установка драйверов в Linux
- Как драйвера устройств работают в Windows
- Как работают драйвера Linux
- Установка проприетарных драйверов Linux
- Установка прошивок в Linux
- Как установить драйверы для принтера в Linux
- Как заставить работать другое программное обеспечение
- Выводы
Мониторы для Линукс? Как обстоят дела с драйверами?
Выбираю дешёвый монитор 27 дюймов, IPS до 12килорублей, чтобы подключить к стационарному компьютеру Core i5 9400, NVIDIA GeForce GT710, под убунтой или свободной осью (если заведется в будущем).
В отзывах на мониторы в магазинах пишут про драйвера: кто-то не нашёл драйвер для lg, кто-то на amd качает драйвера для поддержки free-sync.
Пишутся ли драйвера под линукс? Можно ли обойтись без драйверов или есть риск получить недоэкран?
Что посоведуете для работы в Gimp, Openshot, Audacity и просмотра ютуба?
Сколько на ней видеопамяти?
под убунтой или свободной осью (если заведется в будущем).
Ладно SUSE до версии 10.0 можно было назвать проприетарной ОСью (там даже YAST был закрытым кодом), но убунта чем тебе несвободна? То, что она давно отправляет телеметрию, это можно предъявить, но несвободность?
Пишутся ли драйвера под линукс?
Для видеокарты, или для монитора?
Для видеокарты есть два драйвера: драйвер nvidia и драйвер nouveau. Первый имеет закрытый код, его пишет сама компания NVIDIA, он имеет единую кодовую базу с драйвером для Windows (во всяком случае, OpenGL). Второй пишется сообществом на основе реверс-инжиниринга закрытого драйвера.
Что касается выставления разрешения, то ни с одним из этих драйверов не должно быть проблем. Что касается производительности OpenGL, то закрытый драйвер лучше
Для мониторов драйверы не нужны. Разве что цветовые профили ICC
Что посоведуете для работы в Gimp, Openshot, Audacity и просмотра ютуба?
Источник
Unix драйверы
ССЫЛКИ ПО ТЕМЕ
Download Drivers
Linux x86_64/AMD64/EM64T
Последняя версия для ветки Production: 470.74
Последняя версия для ветки New Feature: 465.31
Последняя версия для существующих GPU (серия 390.xx ): 390.144
Последняя версия для существующих GPU (серия 340.xx ): 340.108
Последняя версия для существующих GPU (серия 304.xx ): 304.137
Последняя версия для существующих GPU (серия 71.86.xx): 71.86.15
Последняя версия для существующих GPU (серия 96.43.xx): 96.43.23
Последняя версия для существующих GPU (серия 173.14.xx): 173.14.39
Архив
Linux x86/IA32
Последняя версия для существующих GPU (серия 390.xx ): 390.144
Последняя версия для существующих GPU (серия 340.xx ): 340.108
Последняя версия для существующих GPU (серия 304.xx ): 304.137
Последняя версия для существующих GPU (серия 71.86.xx): 71.86.15
Последняя версия для существующих GPU (серия 96.43.xx): 96.43.23
Последняя версия для существующих GPU (серия 173.14.xx ): 173.14.39
Архив
Linux aarch64
Последняя версия для ветки Production: 470.74
Последняя версия для ветки New Feature: 465.31
Архив
Linux 32-bit ARM
Последняя версия для существующих GPU (серия 390.xx ): 390.144
Архив
FreeBSD x86
Последняя версия для существующих GPU (серия 390.xx ): 390.144
Последняя версия для существующих GPU (серия 340.xx ): 340.108
Последняя версия для существующих GPU (серия 304.xx ): 304.137
Последняя версия для существующих GPU (серия 71.86.xx): 71.86.15
Последняя версия для существующих GPU (серия 96.43.xx): 96.43.23
Последняя версия для существующих GPU (серия 173.14.xx): 173.14.39
Архив
FreeBSD x64
Последняя версия для ветки Production: 470.74
Последняя версия для ветки New Feature: 465.31
Последняя версия для существующих GPU (серия 390.xx ): 390.144
Последняя версия для существующих GPU (серия 340.xx ): 340.108
Последняя версия для существующих GPU (серия 304.xx ): 304.137
Архив
Solaris x64/x86
Последняя версия для ветки Production: 470.74
Последняя версия для ветки New Feature: 465.31
Последняя версия для существующих GPU (серия 390.xx ): 390.144
Последняя версия для существующих GPU (серия 340.xx ): 340.108
Последняя версия для существующих GPU (серия 304.xx ): 304.137
Последняя версия для существующих GPU (серия 96.43.xx): 96.43.23
Последняя версия для существующих GPU (серия 173.14.xx): 173.14.39
Архив
Драйверы NVIDIA nForce
Драйверы с открытым кодом для решений NVIDIA nForce включены в стандартное ядро Linux и ведущие дистрибутивы Linux. На данной странице содержится информация по драйверам с открытым кодом и дискам с драйверами для более ранних дистрибутивов Linux, включая 32-битные и 64-битные версии Linux.
Источник
Русские Блоги
Как написать драйвер ЖК-дисплея для Linux
В этой статье анализируется основная структура данных драйвера устройства буфера кадра, и на этой основе знакомится с разработкой драйвера ЖК-дисплея.
- Через буфер кадра приложение использует mmap для отображения видеопамяти в виртуальное адресное пространство приложения, и отображаемые данные могут отображаться на экране путем записи данных в это пространство памяти;
- Драйвер выделяет системную память как видеопамять; реализует интерфейс в структуре file_operations для обслуживания прикладных программ; реализует интерфейс в структуре fb_ops для управления контроллером LDC и работы с ним;
- Драйвер передает начальный адрес и длину видеопамяти в регистр ЖК-контроллера (обычно завершается с помощью fb_set_var), а контроллер LDC автоматически отображает данные из видеопамяти на ЖК-экране.
Что писать драйвер фреймбуфера
- Проще говоря, функция драйвера фреймбуфера состоит в том, чтобы выделить часть памяти для памяти дисплея, а затем выполнить некоторые настройки для регистров ЖК-контроллера.
- В частности:
- Заполните структуру fbinfo
- Зарегистрируйте структуру fbinfo в ядре с помощью reigster_framebuffer (fbinfo *)
- Для структуры fbinfo самым важным является ее член fs_ops, который должен реализовать интерфейс в fs_ops для конкретных устройств.
- Подумайте, стоит ли использовать обработку прерываний
- Рассмотрим метод доступа к памяти
- Если видеокарта не имеет собственной видеопамяти, выделите системную память как видеопамять.
- Если видеокарта поставляется с видеопамятью, используйте для доступа интерфейс памяти ввода-вывода (request_mem_region / ioremap),
- Справочные материалы о том, как писать драйверы, вы можете найти в «Linux Frame buffer Driver Writing HOWTO» на веб-сайте http: /linux-fbdev.sourceforge.net/HOWTO/index.html
ЖК-модуль \ драйвер \ контроллер
Для получения информации об устройствах с ЖК-дисплеем, пожалуйста, обратитесь к следующей информации:
- Datasheet of LCD device
- Книга: Технология жидкокристаллических дисплеев
- Книга: Устройство жидкокристаллического дисплея
Что такое устройство буфера кадра
Устройство кадрового буфера — это абстракция графического оборудования. Оно представляет собой буфер обнаружения графического оборудования, позволяющий приложениям получать доступ к графическому оборудованию через указанный интерфейс. Следовательно, приложению не нужно заботиться об основных деталях оборудования.
Доступ к устройству осуществляется через определенный узел устройства, обычно в каталоге / dev, например / dev / fb *.
Более подробную информацию об устройстве буфера кадра можно найти в следующих двух файлах: linux /Documentation/fb/framebuffer.txt и linux / Documentation / fb /interal.txt, но содержания этих материалов не так много, вам нужно посмотреть код комбинации подробный анализ.
Иерархия драйверов кадрового буфера Linux
Драйвер устройства Frame Buffer можно просматривать на трех уровнях:
- Приложения и системные вызовы;
- Универсальный код, применимый ко всем устройствам, чтобы избежать дублирования, включая структуру file_operations, интерфейс регистрации / отмены регистрации буфера кадра и т.
- Код для работы с конкретным оборудованием — это в основном структура fs_ops.
В ядре Linux исходный код драйвера устройства кадрового буфера находится в основном в следующих двух файлах, которые находятся на среднем уровне архитектуры драйвера кадрового буфера. Он предоставляет системные вызовы для верхних пользовательских программ и интерфейсы для конкретных драйверов оборудования внизу:
Заголовочный файл fb.h определяет все структуры данных:
- fb_var_screeninfo: описывает всю информацию о режиме отображения видеокарты, такую как ширина, высота, глубина цвета и т. д. Различные режимы отображения соответствуют разной информации;
- fb_fix_screeninfo: определяет информацию о видеокарте, такую как начальный адрес памяти фреймбуфера, длину адреса и т. д .;
- fb_cmap: информация о цветовой карте, не зависящая от устройства, цветовую карту можно установить с помощью команд FBIOGETCMAP и FBIOPUTCMAP ioctl;
- fb_info: содержит информацию о статусе текущей видеокарты, ядру видна только fb_info;
- fb_ops: приложение использует системный вызов ioctl для работы с аппаратным ЖК-дисплеем, а методы, определенные в структуре fb_ops, используются для поддержки этих операций;
- Взаимосвязь между этими структурами следующая:
Основная структура данных драйвера фреймбуфера
fbmem.c реализует общий код, используемый всеми драйверами, избегая дублирования.
Эти две переменные используются для записи используемого экземпляра структуры fb_info. fb_info представляет текущее состояние видеокарты, а все структуры fb_info помещаются в массив. Когда буфер кадра регистрируется в ядре, к массиву добавляется новая структура fb_info, а num_registered_fb увеличивается на 1.
Если драйвер буфера кадра статически связан с ядром, в эту таблицу необходимо добавить новую запись. Если драйвер динамически загружается в ядро с помощью insmod / rmmod, вам не нужно заботиться об этой структуре.
Это интерфейс пользовательского приложения, fbmem.c реализует эти функции.
Это интерфейс нижележащего драйвера устройства буфера кадра. Драйвер использует эту пару функций для выполнения операций регистрации и отмены. Работа нижележащего драйвера заключается в том, чтобы заполнить структуру fb_info и затем зарегистрировать ее.
Есть два основных шага для реализации драйвера ЖК-контроллера:
- Выделить системную память для видеопамяти
- Согласно конкретным характеристикам оборудования реализовать интерфейс fb_ops
- В linux / drivers / fb / skeletonfb.c есть структура драйвера буфера кадра, которая показывает, как реализовать драйвер буфера кадра с очень небольшим количеством кода.
Выделить системную память как видеопамять
Поскольку большинство контроллеров LDC не имеют собственной видеопамяти, часть системной памяти должна быть выделена как видеопамять. Начальный адрес и длина этой системной памяти будут затем сохранены в полях smem_start и smem_len файла fb_fix_screeninfo. Память должна быть физически непрерывной.
Для видеокарт с независимой видеопамятью используйте request_mem_region и ioremap для сопоставления периферийной памяти графической карты с виртуальным адресным пространством процессора.
Реализуйте структуру fb_ops
Метод file_operations, который еще не обсуждался, называется ioctl (). Пользовательское приложение использует системный вызов ioctrl для управления оборудованием ЖКД. Методы, определенные в структуре fb_ops, обеспечивают поддержку этих операций. Обратите внимание, что структура fb_ops не является структурой file_operations. fb_ops — это абстракция низкоуровневых операций, а file_operations обеспечивает поддержку интерфейса системных вызовов верхнего уровня.
Затем подумайте, какие методы необходимо реализовать. Связь между командой ioctl и интерфейсами в структуре fb_ops следующая:
Пока мы реализуем эти функции fb_XXX, пользовательские приложения могут использовать макросы FBIOXXXX для работы с оборудованием LDC. Как реализовать эти интерфейсы? Вы можете обратиться к драйверам в каталоге linux / drivers / video.
Среди множества интерфейсов наиболее важным является fb_set_var. Он используется для установки видеорежима и другой информации. Ниже приведены общие шаги по реализации функции fb_set_var:
- Проверить, нужно ли устанавливать режим
- Установить режим
- Установить цветовую карту
- Перенастройте регистр контроллера ЖК-дисплея в соответствии с указанными выше настройками.
Четвертый шаг — это базовая аппаратная операция.
Источник
Установка драйверов в Linux
В Windows мы привыкли, что перед тем, как новое оборудование будет работать, для него необходимо установить драйвера. Не важно будет ли это USB устройство, веб-камера или видеокарта. Драйвера в Windows выпускаются производителями и распространяются через интернет или на диске в комплекте с оборудованием.
В Linux, драйвера тоже необходимы, но ситуация состоит с ними немного по-другому. Здесь все свободные драйвера Linux встроены в ядро и если ваше оборудование будет работать с этой операционной системой, то, скорее всего, оно будет работать из коробки. Свободные драйвера разрабатываются производителями оборудования или же независимыми разработчиками. Также производители могут не открывать код своих драйверов, тогда они считаются проприетарными и не включаются в ядро, а доустанавливаются вручную.
Давайте рассмотрим подробнее работу с драйверами linux и Windows.
Как драйвера устройств работают в Windows
После установки Windows вам необходимо установить драйвера устройств, предоставляемые производителями — драйверы материнской платы, набора микросхем, драйверы видеокарты, звука, сети, wifi и многое другое.
Windows может немного в этом помочь и установить большинство драйверов от производителей через центр обновления Windows. При подключении устройства к компьютеру Windows вы увидите сообщение «Установка драйвера». Windows определяет производителя, ищет драйвер на серверах Microsoft и загружает его на ваш компьютер. Microsoft не пишут драйвера самостоятельно, они получают их от производителей и предоставляют вам, как только они понадобятся.
Если оборудование не работает в WIndows, то обычно вы можете найти драйвер чтобы заставить его работать. Обычно достаточно подыскать подходящий драйвер на просторах сети.
Как работают драйвера Linux
В Linux ситуация с драйверами очень сильно отличается. Большинство драйверов для вашего оборудования распространяются в виде открытого программного обеспечения и интегрированы в дистрибутив Linux. Эти драйверы linux, как правило, являются частью ядра Linux, но здесь есть исключение — драйверы видеокарты являются частью программного обеспечения Xorg, а драйверы принтера включены в набор CUPS (система печати).
Это значит, что большинство доступных для linux драйверов уже установлены на вашем компьютере, включены вместе с ядром, в виде модулей ядра или вместе с графическим сервером или сервером печати. Установка драйверов Linux почти не нужна. Драйвера в Linux разработаны, в основном, энтузиастами, но иногда их выпускают сами производители оборудования, которые вносят свой вклад в развитие ядра Linux и других проектов, например, это Intel, AMD, а также другие, более мелкие производители.
Все драйвера установлены из коробки, а значит вам не придется искать драйвера для каждого устройства в вашей системе и вручную их устанавливать. Система автоматически определит ваше оборудование и сама загрузит нужные драйвера в linux. Но здесь есть одно исключение — это проприетарные драйвера ядра linux и прошивки.
Установка проприетарных драйверов Linux
Некоторые производители не хотят открывать исходный код своих драйверов, поэтому для поддержки оборудования выпускают проприетарные драйвера в Linux с закрытым исходным кодом. Большинство дистрибутивов Linux не включают такие драйвера в свой состав, а значит они не смогут их автоматически определить и загрузить.
Чаще всего нам приходится сталкиваться с проприетарными драйверами для видеокарт, например, для NVIDIA, которые обеспечивают лучшую производительность в играх на Linux. Конечно, есть драйверы ядра Linux с открытым исходным кодом, которые заставят вашу видеокарту работать, но они не могут обеспечить достаточный уровень производительности в 3D играх. Некоторые драйвера wifi по прежнему закрыты, поэтому ваше оборудование не будет работать пока вы их не установите.
Установка драйверов в Linux зависит от вашего дистрибутива. В Ubuntu и основанных на ней дистрибутивах есть специальный инструмент — Дополнительные драйверы.
Программа определит, какие проприетраные драйверы устройств Linux можно установить и предложит скачать и установить их. В Linux Mint тоже есть инструмент менеджер драйверов, он работает аналогично инструменту в Ubuntu. Fedora — против проприетарных драйверов Linux и здесь нет никакого способа их установить. Во многих дистрибутивах проприетарные драйверы устройств linux можно найти в неофициальных репозиториях. Каждый дистрибутив решает эту проблему по-разному.
Установка прошивок в Linux
Не все могут делать драйвера с открытым кодом или проприетарные драйвера. Некоторым драйверам необходимы прошивки, чтобы правильно работать с устройствами. Например, прошивки нужны для работы некоторых модулей wifi или сетевых интерфейсов.
Чтобы установить прошивки в Linux необходимо скачать и установить пакет linux-firmware, это можно сделать с помощью следующей команды в Ubuntu:
sudo apt install linux-firmware
А в RPM дистрибутивах:
sudo yum install linux-firmware
Также возможно придется установить другие прошивки. Чтобы посмотреть подробнее, что нужно, и как установить, посмотрите лог ядра dmesg.
Как установить драйверы для принтера в Linux
Возможно, вам понадобится поставить драйвера linux для принтера. Однако при использовании инструмента для конфигурации принтеров — CUPS вы можете выбрать нужный драйвер из баз данных. Как правило, программа определяет производителя вашего принтера, а в списке вы можете выбрать точную модель принтера.
Вы также можете попытаться определить принтер по описанию PostScript или PPD файла. Эти файлы часто входят в состав драйвера принтера для Windows и вы можете найти PPD файл, который сделает работу вашего принтера лучше. Файл PPD можно выбрать в процессе работы CUPS.
Принтер может стать головной болью в Linux и многие из них могут не работать должным образом или даже вообще не работать. Так что при выборе принтера лучше сразу смотреть только те, которые точно будут работать с Linux.
Как заставить работать другое программное обеспечение
Иногда вам может понадобиться поставить драйвера linux для другого оборудования, которые не предоставляются автоматически. Например, NVIDIA предоставляет собственный инсталлятор для своего драйвера. Но тем не менее лучше использовать драйвера упакованные для вашего дистрибутива, они будут работать лучше.
В общем, если в Linux что-то не работает из коробки, и если оно все еще не работает после установки драйвера или прошивки, то, скорее всего, оно уже не будет работать вообще. Если вы используете старую версию Linux, может помочь обновление до самой новой версии. Это обеспечит лучшую аппаратную поддержку и обновления. Но если что-то все еще не работает, то , скорее всего, оно уже работать не будет.
Найти подробную информацию, как настроить работу того или иного оборудования в вашем дистрибутиве можно на различных форумах. Обычно, если у вас не очень новое устройство, другие пользователи уже сталкивались с этими проблемами, но они их уже решили, и вы можете найти эти ответы.
Выводы
Вы не должны возиться с драйверами слишком много. Драйвера в Linux с открытым исходным кодом и они интегрированы в ядро. В большинстве случаев вам не нужно устанавливать их или изменять, система автоматически определит оборудование и загрузит автоматические драйверы. Когда вы установили Linux, ваше оборудование должно работать либо сразу, либо после установки нескольких проприетарных драйверов.
Вы можете устанавливать и драйвера linux, размещенные на официальных сайтах производителей, но проприетарные драйвера могут работать не настолько хорошо, как подготовленные для вашей системы.
Источник