Добавление драйвера устройства в Linux
Обычно в системах Unix и Linux установка драйверов для новых устройств не вызывает трудностей. Даже для неопытных пользователей этих систем. Но это в том случае, если производители устройства (и/или разработчики драйверов) позаботились об этом. И оснастили пакет драйвера специальными установочными и конфигурационными скриптами. А также протестировали всё это в нескольких системах. Однако бывают случаи, когда «удобной» возможности установить драйвер устройства нет, но есть исходные коды драйвера. В таком случае можно попытаться собрать драйвер самостоятельно. Конечно, это далеко не так просто, нужно поэкспериментировать. Но успешный результат возможен с высокой вероятностью. И главное, что для этого требуется — это знать и понимать общий порядок действий в случае ручной сборки драйвера. С такими задачами часто сталкиваются администраторы систем, обслуживающих технологические процессы на производствах, хостинг-площадки и т. д.
Способы установки драйверов
Для Linux-систем установка драйверов устройств происходит тремя основными способами:
- установка патча для определённых версий ядра;
- использование специальных сценариев для установки и конфигурации драйвера;
- с помощью загружаемого модуля ядра.
Надо признать, что для Linux ручная установка драйверов представляет собой довольно сложную и трудоёмкую работу. Поэтому разработчики стремятся всё чаще обеспечивать автоматическую установку и настройку для своих драйверов/устройств. Ведь они заинтересованы в максимально эффективном распространении своих разработок. По этой причине самым распространённым способом установки драйверов является использование сценариев установки. Для самых популярных типов устройств, например для видеокарт, аудиоустройств и даже для сетевого оборудования в настоящее время трудно найти драйверы без автоматической установки.Установка таких драйверов ничем не отличается от установки обычных пакетов. Вся инструкция описана в файле README, подробнее об установке из исходников читайте здесь.
Но есть оборудование (всевозможные адаптеры, преобразователи интерфейсов) и ситуации, для которых есть только исходные коды драйвера (часто не официальные) и необходимость интеграции его с ядром.
Если в качестве драйвера используются патчи ядра, то установить их (собственно и сам драйвер) можно выполнив следующие команды:
$ cd каталог_исходных_кодов_ядра $ patch -p1 < файл_патча
Расположение «каталог_исходных_кодов_ядра» зависит от системы, в CentOS это /usr/lib/modules//kernel, Например
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel
В случае с ручной установкой, необходимо для начала интегрировать драйвер некоего устройства (исходные коды) в дерево каталогов исходных кодов ядра.
Ручная установка драйвера
Для примера, пусть требуется добавить в ядро драйвер некоего сетевого устройства netdevice. Драйвер этого устройства нужно (как уже известно) поместить в один из каталогов с исходными кодами ядра. А именно — в каталог drivers, внутри которого может быть следующее содержимое:
$ ls -F каталог_исходных_кодов_ядра/drivers
Драйверы чаще всего помещаются в подкаталоги scsi, char, block, net, а также sound и usb. Эти подкаталоги отражают схему размещения драйверов в зависимости от их типа: блочные — для дисков IDE, символьные — для последовательных портов например, для сетевых устройств, звуковых плат и USB-устройств — USB-адаптеры, USB-модемы и т. д. Другие подкаталоги служат для размещения драйверов других категорий, в частности для системных и разного рода шин (pci, pcie, nubus, zorro), а также для платформенно-зависимых драйверов — acorn, macintosh.
Таким образом, драйверы для сетевого устройства netdevice следует поместить в следующий каталог:
каталог_исходных_кодов_ядра/drivers/net/netdevice
Исходные коды драйвера представляют собой набор файлов *.c, *.cpp и *.h, которые могут быть объединены в дерево каталогов, в зависимости от того, как составлен проект «исходников» драйвера.
Теперь необходимо включить исходные коды драйвера netdevice в процесс компиляции ядра. Для этого нужно отредактировать следующие файлы:
- /drivers/net/Makefile – для сборки самого драйвера;
- /drivers/net/Kconfig – для того, чтобы имя нового устройства было доступно для конфигурирования.
Файлы Makefile и Kconfig содержатся в каждом каталоге дерева каталогов с исходными кодами ядра Linux. Это необходимо для организации универсальной разработки и расширения функционала и возможностей ядра при его сборке из исходных кодов путём независимого дополнения новым кодом. В данном случае кодом драйвера для устройства netdevice.
В файл Makefile следует добавить следующий код:
obj-$(CONFIG_NETDEVICE_DEV) += netdevice/
Таким образом, при сборке ядра в его составе будет собран и сам драйвер netdevice. После дополнения файла Kconfig следующим кодом:
config NETDEVICE_DEV tristate 'Netdevice support'
устройство netdevice будет доступно для использования конфигурационным макросом (необходимо на этапе конфигурирования сборки ядра). Здесь команда config использует ключевое слово NETDEVICE_DEV, которое обязательно должно совпадать с фразой, следующей после CONFIG, которое ранее было указано в файле Makefile.
Команда tristate указывает, что драйвер может быть собран как загружаемый модуль, если это поддерживается. Если нет, то вместо tristate следует указать bool – драйвер будет частью ядра. Фраза ‘Netdevice support’ будет отображаться в выводе конфигурационного скрипта на этапе конфигурирования сборки ядра. Это может быть любой текст, идентифицирующий устройство, для которого добавляется драйвер.
Использование нового драйвера
В современных версиях ядра Linux задействование новых драйверов существенно упрощено. В отличие версий, выпущенных раньше 2.6. Тогда это было настоящей головоломкой и требовало знаний в программировании. Но архитектурные изменения в модели драйверов и устройств, пришедшие в версии 2.6 позволяют теперь связывать драйверы с ядром на более высоком «общепользовательском» уровне. Для этого используется специальный конфигурационный макрос MODULE_DEVICE_TABLE. Он создаёт соответствия, которые позволяют утилите modprobe (и ей подобным) задействовать новые драйверы ядра.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Похожие записи:
Есть ли универсальный USB Android драйвер?
Есть ли под Линукс универсальный драйвер модема.роутера для использования андроид телефона по USB подключению?Я использую лубунту и не в свободных не пропиреатных драйверах ничего такого не обнаружил а телефон по подключению система не видит.
lsusb и dmesg в студию.
Режим модема еа телкфоне включён? Что за телефон? Кто тебя так учил задавать вопросы?
Пробуй на новом ядре - это же линукс.
Я не знаю что такое lsusb и dmesg На телефоне все включено. Телефон LG e405
Спасибо но кажеться мне что на новом ядре не лучше будит.
Чувак, если ты хочешь чтобы тебе помогли, то изучай непонятные для себя вещи, которые предлагают другие.
Похоже, что ты совсем не понимаешь ситуацию.
Дело не в дровах. Современный телефон — это по сути компьютер. Когда ты подключаешь его к ПК, телефон, как правило, транслирует сигналы с радиомодуля, карты памяти и внутренней памяти так, как будто они подключены к ПК напрямую. Если эти сигналы не обрабатываются ПК, это значит, что он либо не понимает конкретный радиомодуль или модуль памяти, что маловероятно; либо, что скорее всего, сам телефон в целях безопасности не транслирует эти сигналы на ПК, либо использует для трансляции собственное проприетарное API.
- Какая модель телефона?
- Какой номер версии Lubuntu? 32 или 64 бита?
- Зачем ты хочешь подключить телефон: чтобы считать с него данные или чтобы выйти в интернет? Какой именно интернет: WiFi, 3G, 4G?
- Как это происходит на Windows: просто втыкаешь и работает или нужно ставить дополнительное ПО?
Android - открытая ОС. Linux - Открытая ОС. Все подобные вещи работают через драйвер и в Windows тоже. У меня 386 с ядром 6 какимто там,телефон LG E405 для выхода в интернет. 3G модемы на нем работают потому как есть драйвера а для этого нет.Читал что все драйвера для Линукс привязаны к ядру.Думал может есть какойто пакет установив который все заработает.
Дрова в линуксе и в винде — очень разные. Еще раз: как это работает в винде, программу или драйвер ставить надо или можно просто воткнуть? Если нужно что-то ставить, то не факт, что этот драйвер есть под линукс, то что у андроида открыто ядро, не означает, что у него открытые драйвера.
Есс честно то я не знаю как это в винде но думаю что надо ставить драйвер который скачиваеться с сайта LG.Когда то давно я с телефона именно так выходил но не с этого.Принцип работы устройств один во всех платформах а тебе хватит муру графоманскую писать,если есть что по делу сказать - помоги.
Принцип работы устройств один во всех платформах
Где скачать драйвера для линукс?
Где скачать драйвера для линукс? Такой вопрос возникает у всех, кто переходит с Windows на Linux, ведь там дополнительные драйвера всегда приходилось где-то искать. Linux не загружает некоторые драйверы автоматически, потому что они представляют собой патентованное (proprietary) программное обеспечение, которое не подлежит свободному распространению. Патентованные драйвера для линукс предоставляют открыто исходный код и, следовательно, не проходят полной проверки Linux-сообществом.
Иногда у компаний есть законные причины скрывать исходный код — например, них есть лицензия на применение фрагмента кода, предоставленная другой компанией. При этом права на раскрытие этого исходного кода у компании отсутствуют, но патентованные драйверы, которые вы можете загружать, применяя процедуру, описанную в данном разделе, были проверены командой Linux, поэтому вы можете считать их достаточно безопасными.
Таким образом, если вы установили Linux как единственную операционную систему или как часть системы с двумя или несколькими ОС, у вас есть возможность установить для вашего оборудования патентованные драйверы. Их нужно загрузить с Web-сайтов разработчиков, поэтому ваша система должна быть подключена к Интернету. С интернета можно также загрузить 1с, жалко 1С не работает напрямую в Linux.
Если вы запускаете Linux прямо с DVD-носителя, вы не сможете выбирать разрешения кроме тех, которые отображаются в окне Параметры монитора (Display Preferences). Поэтому, если вы все еще не готовы выполнить полную установку Linux, я советую либо применить программу Wubi для установки Linux рядом с ОС Windows, либо установить Linux на виртуальной машине VirtualBox. В любом из этих случаев вы сохраните на компьютере свою исходную операционную систему.
Чтобы выяснить, есть ли какие-нибудь подходящие драйверы на вашем компьютере, выберите из меню команды Система | Администрирование | Драйверы устройств (System | Administration | Hardware Drivers), и вы увидите окно, выглядящее примерно так.
В нем будут перечислены все патентованные драйверы, имеющиеся на вашем компьютере. В системе, которую я использовал для получения дополнительных функций и более широкого набора разрешений экрана, можно подключить некоторые графические драйверы NVIDIA.
Начиная с версии Ubuntu 10.04, самые свежие Linux драйверы приводятся с пометкой текущей версии, что облегчает выбор наилучшего варианта. Если вы увидите в этом окне какие-нибудь драйверы, можно попытаться задействовать один из них, выделив его и щелкнув мышью по кнопке Активировать (Activate).
При этом система запрашивает ваш пароль Linux, после чего загружает и устанавливает выбранные вами драйверы. После завершения установки следует перезагрузить Linux, чтобы внесенные изменения вступили в силу. Обычно после перезагрузки вы увидите, что список допустимых экранных разрешений пополнился.
Если есть несколько драйверов, можно испытать их по очереди, определив, какой из них лучше подходит для вашего монитора. Сделать это можно, проверив три варианта: Без эффектов: (No extra features), Стандарт: (Normal) и Экстра: (Extra), которые можно выбрать с помощью последовательности Система | Параметры | Внешний вид | Визуальные эффекты (System | Preferences | Appearance | Visual Effects).
После установки патентованного драйвера вам, возможно, будет предложено использовать утилиту настройки разрешений от производителя патентованного драйвера. Если вы выберете кнопку Нет (No), то на экране появится стандартное окно настройки экрана, которое может обеспечить нужные вам разрешения, но может их и не обеспечить. Если же вы дадите утвердительный ответ, нажав кнопку Да (Yes), то на экране появится нестандартное окно.
Поскольку существует множество патентованных драйверов, то, начиная с этого момента, вы остаетесь с ними «один на один», так как их подробное описание не включено в статью. Тем не менее вы, как правило, найдете интуитивно понятные программные средства, легкие в применении и сравнимые (если не более многофункциональные) со стандартными средствами Linux.
Вот так вы можете установить Linux драйверы (патентованные) в свою систему. Я это делал уже не раз, и хотя не всегда всё получалось, но это дало бесценный опыт.