LinuxForum.Fans
Тема

В линуксе "драйверов" нет. Есть модули.

Автор: drBatty 12 сообщений 587 просмотров
05.09.2014 12:44 #391918

"Vochatrak" написал:
То есть, в линуксе драйвер привязан к ядру напрямую? (я могу поставить два ядра и к одному из них драйвер, потом смогу переключаться между свободным и проприетарным драйверами, просто загружаясь с "нужного"?
в линуксе "драйверов" нет. Есть модули. Модули можно отключать/включать прямо на ходу(в общем случае).

В вашем случае модуль состоит из двух частей:
1. собственно закрытый модуль, он универсальный, подходит ко всем ядрам
2. прокладка между модулем и ядром. Эта прокладка тоже универсальная, но её надо собирать из исходников для каждого конкретного ядра. Если ядро самосборное, то и прокладку вам собирать. Для дистрибутивных ядер прокладку собирает дистрибьютор.

Конечно можно и два ядра поставить, и выбирать нужное при загрузке. Каждое ядро со своим набором модулей.
06.09.2014 08:45 #391993
"drBatty" написал:
в линуксе "драйверов" нет. Есть модули. Модули можно отключать/включать прямо на ходу(в общем случае).
В вашем случае модуль состоит из двух частей:
1. собственно закрытый модуль, он универсальный, подходит ко всем ядрам
2. прокладка между модулем и ядром. Эта прокладка тоже универсальная, но её надо собирать из исходников для каждого конкретного ядра. Если ядро самосборное, то и прокладку вам собирать. Для дистрибутивных ядер прокладку собирает дистрибьютор.
Конечно можно и два ядра поставить, и выбирать нужное при загрузке. Каждое ядро со своим набором модулей.
"drBatty" написал:
в линуксе "драйверов" нет. Есть модули. Модули можно отключать/включать прямо на ходу(в общем случае).

Ошибаешься, драйвер он и в африке драйвер, хоть в Windows, хоть в Linux, FreeBSD или MacOS. Просто этот драйвер может быть включён при сборке ядра в образ ядра или собран модулем и этот модуль будет подгружаться по желанию.

"drBatty" написал:

В вашем случае модуль состоит из двух частей:
1. собственно закрытый модуль, он универсальный, подходит ко всем ядрам

А теперь исправим:
В вашем случае драйвер состоит из двух частей:
1. собственно закрытый драйвер, он универсальный, подходит ко всем ядрам, но тут уже не к ядрам, а к поддерживаемым версиям xorg-server`а.
2. прокладка между драйвером и ядром. Эта прокладка тоже универсальная, но её надо собирать из исходников для каждого конкретного ядра. Если ядро самосборное, то и прокладку вам собирать. Для дистрибутивных ядер прокладку собирает дистрибьютор.
Конечно можно и два ядра поставить, и выбирать нужное при загрузке. Каждое ядро со своим набором модулей.

Так что не надо путать и называть драйвер модулем, модуль - это собранный модульно драйвер, который не включён в образ ядра при его сборке или, в случае проприетарного драйвера Nvidia, модуль - это драйвер, код которого поставляется отдельно от ядра и не может быть включён в ядро ввиду лицензионных ограничений. Даже в случае драйвера Nvidia модуль, хоть и является интерфейсовм между ядром и драйвером для xorg-server`а, так же предоставляет доступ к оборудовнию, видео карте, и так же управляет её работой, в частности управляет частотой графического ядра карты и видео памяти и как следствие режимами работы системы охлаждения, даже без запуска xorg-server`а. Так что модуль Nvidia это тоже драйвер.

06.09.2014 09:29 #391996
"kostik87" написал:
Ошибаешься, драйвер он и в африке драйвер, хоть в Windows, хоть в Linux, FreeBSD или MacOS. Просто этот драйвер может быть включён при сборке ядра в образ ядра или собран модулем и этот модуль будет подгружаться по желанию
не ошибаюсь. Это ворос терминологии, та сущность, что в венде называется "драйвер", у нас называется "модуль".

"kostik87" написал:
Так что не надо путать и называть драйвер модулем

ладно, называйте модули драйверами, я не против.

06.09.2014 09:55 · отредактировано #391998
"drBatty" написал:
не ошибаюсь. Это ворос терминологии, та сущность, что в венде называется "драйвер", у нас называется "модуль".

Ты не понял, смотри, вот ты собрал ядро и включи в нём монолитно поддержку файловой системы, к пример ext4 и сетевых карт Atheros на atl1. Что это по твоему? Так вот ты включил в ядро драйверы ext4 и atl1, это уже ни как нельзя назвать модулем, это драйверы. Если ты их при сборке не стал включать в образ ядра, а включил их сборку внеше, то ты получил модули, в которых содержатся драйверы. Не путай, драйвер это и есть драйвер. Если он при сборке не включён в ядро, а собран отдельно, то это драйвер, собранный как подгружаемый модуль к ядру.

"drBatty" написал:
ладно, называйте модули драйверами, я не против.

Не путай терминологию.

Ну и ещё, ты знаешь что такой major и minor номер у файла устройства и тип b, c и прочее? Так вот major - указывает на драйвер посредством которого ядро будет обменитьваться данными с соответствующим типом файла устройства, а minor указывает на экземпляр этого устройства.

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

text

dmesg | grep -i driver

Ну или запусти

text

lspci -k

Ещё раз, не путай терминогологию.

06.09.2014 12:07 #392006

kostik87, ладно, убедил.

06.09.2014 22:14 #392091
drBatty написал:
kostik87, ладно, убедил.

А строго говоря - нет. Модуль - и есть модуль. Бывает включенным в ядро, бывает динамически (или другим способом) подгружемым. И это не обязательно драйвер железки (хотя, именно про них и разговор.) Да, это такие же модули.

06.09.2014 22:29 #392099
"mvt" написал:
А строго говоря - нет.

В общем случае, конечно, не все модули ядра содержат драйверы, некоторые добавляют прочий функционал, например в NETFILTER к модулем может добавляться поддержка NAT. Но drBatty утверждал, что в Linux нет драйверов, а есть только модули, что в корне неверно.

06.09.2014 22:36 · отредактировано #392104
kostik87 написал:
[quote="mvt"]А строго говоря - нет.

В общем случае, конечно, не все модули ядра содержат драйверы, некоторые добавляют прочий функционал, например в NETFILTER к модулем может добавляться поддержка NAT. Но drBatty утверждал, что в Linux нет драйверов, а есть только модули, что в корне неверно.[/quote]
У вас был просто спор о терминологии :) Док даже согласился с Вами :). Модулем ядра может быть прога, управляющяя железкой? Пусть это будем модуль драйвера :)

06.09.2014 23:04 #392108
"mvt" написал:
Модулем ядра может быть прога, управляющяя железкой?

Модулем ядра может быть всё что угодно, но в данном случае разговор шёл о проприетарном драйвере Nvidia и в частности о его части, которая работает в пространстве ядра.

"mvt" написал:
Пусть это будем модуль драйвера

Теперь вы не правы. Модуль ядра, в данном случае который содержит драйвер.

"mvt" написал:
У вас был просто спор о терминологии

По большей части да, нельзя же всё называть модулем.

"mvt" написал:
Док даже согласился с Вами

Почему Док?

В любом случае я не собираюсь разводить полемику ещё и с вами, просто поставил точки на "И".

07.09.2014 18:11 #392155
kostik87 написал:

[quote="mvt"]У вас был просто спор о терминологии

По большей части да, нельзя же всё называть модулем.
[/quote]
"Всё есть файл", в этом случае - "всё есть модуль". :) На самом деле это так.
А полемика - да иногда полезна, Как-то можно послушать других людей, глянуть со стороны на своё восприятие жизни... :) Нет?

08.09.2014 16:00 #392218
"kostik87" написал:
Док даже согласился с Вами

Почему Док?

В любом случае я не собираюсь разводить полемику ещё и с вами, просто поставил точки на "И".да что спорить о терминологии-то? Это непродуктивно. Ну драйверы? Хорошо, пусть будут драйверы. Я говорил о том, что многие неправильно понимают термин "драйвер", а именно в "маздайном" смысле. Согласитесь, что в Windows™ термином "драйвер" называют несколько другую сущность. Отличие я и подчёркивал.

Т.е. по сути вы правы, но вас поймут неправильно.

08.09.2014 16:20 #392227
"drBatty" написал:
Я говорил о том, что многие неправильно понимают термин "драйвер", а именно в "маздайном" смысле. Согласитесь, что в Windows™ термином "драйвер" называют несколько другую сущность. Отличие я и подчёркивал.
Т.е. по сути вы правы, но вас поймут неправильно.

Согласен.

Войдите или зарегистрируйтесь, чтобы ответить.