Skip to content

Instantly share code, notes, and snippets.

Created August 27, 2017 04:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/79c1f29c4be0cd24c121c4bcf8b96104 to your computer and use it in GitHub Desktop.
Save anonymous/79c1f29c4be0cd24c121c4bcf8b96104 to your computer and use it in GitHub Desktop.
Драйвера для линукс

Драйвера для линукс



Под linux, вне зависимости от аппаратной архитектуры драйвера пишутся очень просто. Для написания драйвера необходимы базовые знания языка си, представление о работе ОС линукс базовые , понимание того, что мы хотим получить, желание чтения документации и исходных кодов, ну и усидчивость. Лёгкость написания драйверов объясняется тем, что исходный код linux великолепно задокументирован и доступен в исходниках, в сети множество примеров и куча литературы. А для создания драйвера вам нужен только любимый дистрибутив и исходники ядра, ну и компилятор под нужную вам архитектуру. Свой первый, не учебный, драйвер я писал для процессора PowerPC , он взаимодействовал с микросхемой ПЛИС и осуществлял сброс настроек по умолчанию. Как это ни странно звучит, я его сделал, немного переписав драйвер SPI для этой архитектуры. Я это говорю к тому, что единая стандартизация написания программ в ядре Linux позволяет проводить такие штуки. Книжка является исчерпывающим руководством по разработке и если что-то не хватает в книге, то это точно можно найти самостоятельно в исходниках ядра. Разумеется, данный пост не претендует на то, чтобы заменить эту замечательную книгу. Более того, написан он по мотивам прочтения оных трудов, но всё же не является кратким пересказом данной книги. Автор этих строк ставит собой цель заинтересовать читателя простотой и изяществом ОС Linux, и понизить порог вхождения людей в разработку драйверов. Поверьте — это очень просто! Поскольку основная цель данной статьи — написание драйверов, железу мы уделим минимум внимания. Я надеюсь все дружат с паяльником, а те кто не дружат — настало время начать дружить, я кратко расскажу, что и как делалось. Мы будем писать драйвер для дисплея семейства HD подключённого через LPT-порт к компьютеру. Знаю, что порт древний, а типу дисплеев лет не меньше, чем мне, но всё же — это красивый и простой пример написания драйверов под linux, не углубляясь в аппаратные подробности. И тем более, что переделать этот драйвер для этого экрана для других архитектур будет делом замены одной строчки! Итак, нам понадобится LPT-порт; шнурок для старого принтера и опционально разъём CENTRONICS на 36 контактов, хотя можно просто распатронить кабель; разумеется экран семейства HD, самое лучшее — это минимум 4х40 символов, хотя подойдут даже самые маленькие; ну и переменный резистор на 10 кОм, для регулировки контраста. Поскольку LPT-порта у меня нет уже давным-давно, я прикупил первую попавшуюся плату на PCI можно и PCI-E. Причём плата попалась на столько китайская, что я даже не смог найти никакой документации по напаянному чипу на ней. Ничего, будем ещё и реверсить её: Будем считать, что достать эти компоненты не составило труда, и ваши руки горят от нетерпения всё сделать. Хочу обозначить, что мы работаем в самых тяжёлых условиях, с железом, да ещё и будем работать на уровне ядра. Живём, так сказать, внутри пациента. Любая ошибка в программе и ядро падает. Обратите внимание, что вы запустили драйвер, выгрузили его, и вдруг начались неявные глюки — всё, ваш путь — перезагрузка. Если система жива, то командой reboot. Если уже нет, то аппаратный reset. Хотя при тяжёлых случаях иногда система может сама себя перезагрузить. Плюс, если вы не знаете что делаете пишете в порт, обращаетесь к областям памяти и т. Ибо всё это в лучшем случае может сбить настройки записанное неверное значение в порт 70h раньше сбрасывало BIOS в х86 или даже попортить оборудование например посадив ножку GPIO на землю. Поэтому чётко понимайте что вы делаете, как на аппаратном, так на программном уровне! Для счастливых обладателей встроенного lpt-порта в своём компьютере скажу, что в вашем случае порт живёт по стандартному адресу h. Меня можно среди ночи разбудить и я скажу эту цифру, столько с ней связанно. Но ныне нам дали вражескую плату, и нам предстоит её победить! Вставляем плату в слот PCI или PCI-E, загружаемся и смотрим что у нас происходит на шине PCI следующей коммандой:. Как видим линух нашёл что-то на шине PCI, и даже попытался дать ему какой-то левый, явно неправильный драйвер. Но нас более всего интересует адреса, на которых сидит данный порт. Нам теперь нужно найти какие же адреса за что отвечают. Для этого к порту вывода подключим светодиоды с резисторами примерно по такой схеме резисторы примерно Ом, или больше или меньше, не важно. Поскольку у меня уже есть заготовка светодиодов для теста такого рода, то я вставлял провода прямо в разъем CENTRONICS и у меня не влезло все 8 штук проводов, поэтому вставил только 6 первые 4 и последние два. Для работы с портом я взял пример отсюда www. Единственное, что надо исправить строку:. Дефайн define BASEPORT меняем на порт 0xc Компилируем, запускаем из под рута: Меняем на другую цифру — 0xc — але оп:. LPT-порт данной платы живёт по адресу. Хочу обратить внимание программистов-жестянщиков на магическое число 0xAA — это последовательность единиц и нулей. Это очень удобно для всяких отладок. А вообще всякий кто работает с железом должен легко в уме переводить двоичное, десятичное, шестнадцатеричное туда-сюда-обратно. Барабанная дробь, настало время собрать железку воедино! Для этого нам осталось всё спаять вместе. Всё собираем по следующей схеме. Для питания экрана я распатронил провод USB, и сейчас у меня к экрану идут два провода. Есть хитрый вариант, просто до него никак не доходят руки — это пустить питание USB прямо в проводе LPT, отпаяв один из многочисленных земляных проводов. Как дойдут руки — обязательно сделаю. Допишу только эту статью: В результате, после подачи питания, мы должны получить что-то вроде этого. Подрегулируйте яркость резистором, чтобы появились две полоски. Они свидетельствуют нам о том, что дисплей не проинициализирован. В качестве готовой либы для работы с дисплеем использовал код от Arduino взятый отсюда. Я тоже не люблю эту платформу, но код годный для дисплеев, подключаемых по I2C. Если последнее слово вам ни о чём не говорит, не пугайтесь. Суть такова, что тот же самый дисплей подключён по двум проводам как следует из названия шины , а далее там стоит регистр, который снова преобразует переданный байт в параллельную шину, прям как у нашего LPT-порта. В результате выкинув часть работы с I2C, получим годную либу. Для чистоты переписал на сях, добавил парочку нужных функций, переименовал некоторые конфликтные, сделал ещё какие-то изменения не помню, много воды утекло и получил конфетку. К слову сказать код использовался на STM32, так же с дисплеями подключающимися по I2C. А теперь мы его портируем уже на х86 да под linux. Вот она — великая сила переносимости кода! Потратив всего 10 минут, чтобы код адаптировать уже под новую платформу. Работа с портом осуществляется в одной единственной функции — это непереносимый узел, и в зависимости от платформы способ вывода следует менять. Тут был вывод по I2C:. Уже знакомый нам вывод в порт. Дефайн порта определяем в хедере lcd. Всё, теперь можно попробовать сделать вывод. Программа стала ещё проще и нагляднее. Первый параметр номер столбца от нуля до 19 , второй номер строки от нуля до трёх , третий — указатель на символьную строку и последний — длинна строки. В результате попробуем дисплейчик:. Не пугайтесь этой порнографии. Этот экран был списан за битые пиксели, точнее там просто погиб контроллер от статики их там несколько. Для работы он не годится, а для всяких подобных опытов — самое оно. Такие хреновые экраны делают китайцы! На этом можно было бы остановиться, так как с данным примером можно выводить любые символы, загружать шрифты и т. Но, не в качестве драйвера. Хотя можно переделать в демон или как-то ещё, насколько позволит фантазия. Чтобы приступить к написанию драйвера, надо поставить необходимый инструментарий. Как подготовить инструментарий для Ubuntu и Debian хорошо рассказывается вот в этой статье blog. Лишь кратко скажу, что если вам не нужно собирать debian-пакеты, а вы пишете модуль только для себя, то достаточно будет установить необходимые компоненты следующей командой:. Всячески рекомендую так же скачать исходные тексты своего ядра. Есть два варианта это сделать. Первый, и очевидный, но возможно слегка геморройный — это узнать версию своего ядра командой:. Я же лентяй лазать по ссылкам и искать версию ядра, доверю это дело автоматике. Тут вопрос спорный быть или не быть, решайте сами. Теперь вы имеете у себя настоящее сокровище: Настоятельнейше рекомендую лазать в папочку Documents, drivers и прочие, просматривать исходные тексты — это невероятно полезно! Если вы думаете, что мы сейчас просто поправим makefile и получим готовый драйвер, то вы глубоко заблуждаетесь. Всё, теперь мы находимся в другом мире: И тут действуют совсем другие правила. Чтобы осознать всю бедовость ситуации, то вы должны понимать, что ядро — это одна большая-пребольшая программа. А это означает, что глобальные переменные, функции и т. Поэтому ВСЕ глобальные переменные их следует избегать по максимуму должны быть объявлены как static! Мы не будем пересобирать ядро, встраивая в него драйвер, и каждый раз перезапускаться, пробуя его. Это конечно забавно, но очень долго. Вместо этого, мы сделаем модуль ядра, который мы будем загружать и выгружать прямо во время работы. В нашем будущем модуле, по сравнении с программой для пространства пользователя, изменения будут не очень значительные. Во первых, перенесём все сишные файлы в один, чтобы не иметь проблем с компиляцией ну или инклудим сишники в друг друга. Хедер оставляем, но чётко определяем все параметры функций если никаких параметров, то надо прописать void. Вспоминаем, что мы в пространстве ядра, и все библиотеки у нас другие. Меняем все хидеры на ядерные:. В качестве первичной основы драйвера возьмём модуль hello world. Здесь всё практически без изменений. Меняется у нас функция работы с железом самая платформозависимая , так как будет работать уже с ядерной функцией вывода в порт:. И, как это ни странно, функция задержек. Вообще задержки — отдельная песня, которой можно посвятить целую статью. У нас же должно быть всё быстро, и как можно меньше занимать ядро на всякую ерунду. Объяснение такой махинации простое: Чтобы избежать казусов, необходима такая заглушка. Если мы всё сделали правильно, то нам не будет выведено ошибок, а экран верно проинициализируется и dmesg покажет последней строкой сообщение вашего модуля:. Вообще, чтобы не жать постоянно dmesg существует скрипт существует решение, которое мне подсказал камрад Jtu:. Или, если вы используете дистрибутив отличный от Ubuntu, то следует исполнять это под root, и убрать sudo. Если вы всё это увидели — поздравляю, это ваш первый рабочий бесполезный модуль ядра, который выводит надпись на экран! Это конечно занимательно, но надо таки превращать наши эксперименты в нормальный драйвер, с которым можно работать. А для этого всё же придётся рассказать о матчасти, хоть немного. Как ни крути, но без знания некой матчасти далеко не удешь. Есть символьные, блочные и сетевые устройства. Также у каждого устройства есть старший и младший номер устройства. Давайте взглянем на некоторые файлы устройств. Ниже перечислены те из них, которые представляют первые три раздела на первичном жестком диске:. Обратили внимание на столбец с числами, разделенными запятой? Старший номер говорит о том, какой драйвер используется для обслуживания аппаратного обеспечения. Каждый драйвер имеет свой уникальный старший номер. Все файлы устройств с одинаковым старшим номером управляются одним и тем же драйвером. Все из выше перечисленных файлов устройств имеют старший номер, равный 3, потому что все они управляются одним и тем же драйвером. Младший номер используется драйвером, для различения аппаратных средств, которыми он управляет. Устройства подразделяются на две большие группы — блочные и символьные. Основное различие блочных и символьных устройств состоит в том, что обмен данными с блочным устройством производится порциями байт — блоками. Они имеют внутренний буфер, благодаря чему повышается скорость обмена. В большинстве Unix-систем размер одного блока равен 1 килобайту или другому числу, являющемуся степенью числа 2. Символьные же устройства — это лишь каналы передачи информации, по которым данные следуют последовательно, байт за байтом. Большинство устройств относятся к классу символьных, поскольку они не ограничены размером блока и не нуждаются в буферизации. Устройства, которые были приведены в примере выше — блочные. Ниже приводится список некоторых символьных устройств последовательные порты:. Все файлы устройств создаются в процессе установки системы с помощью утилиты mknod. Однако, при разработке драйвера устройства, на период отладки, размещать файл устройства в своем домашнем каталоге — наверное не такая уж и плохая идея. Единственное — не забудьте исправить место для размещения файла устройства после того, как отладка будет закончена. Еще несколько замечаний, которые явно не касаются обсуждаемой темы, но которые мне хотелось бы сделать. Когда происходит обращение к файлу устройства, ядро использует старший номер файла, для определения драйвера, который должен обработать это обращение. Это означает, что ядро в действительности не использует и даже ничего не знает о младшем номере. Единственный, кто обеспокоен этим — это сам драйвер. Он использует младший номер, чтобы отличить разные физические устройства. Взгляните на эти два файла устройств:. К настоящему моменту вы можете сказать об этих файлах устройств, что оба они — блочные устройства, что обслуживаются одним и тем же драйвером старший номер 2. Вы можете даже заявить, что они оба представляют ваш дисковод для гибких дисков, несмотря на то, что у вас стоит только один дисковод. Но почему два файла? А дело вот в чем, один из них представляет дисковод для дискет, емкостью 1. Другой — тот же самый дисковод, но для дискет емкостью 1. Такие дискеты могут хранить больший объем данных, чем стандартно-отформатированная дискета. Вот тот случай, когда два файла устройства, с различным младшими номерами, фактически представляют одно и то же физическое устройство. Мы будем использовать файл-драйвер символьного устройства. Чтобы не заниматься пересказом книги Linux Device Driver, а так же упростить себе жизнь, то я взял готовый пример регистрации символьного драйвера из этой статьи. В данной статье не занимаются поиском свободного фиксированного минора, а используется динамический минор. Для нас — это самое то. Итак, модуль теперь будет выглядеть следующем образом: Здесь ещё можно, да наверное и нужно добавить указатели. Код настолько очевидный, что в комментариях, надеюсь, не нуждается. На мой взгляд, не добавить и не убрать. Надеюсь тут всё понятно. Компилируем, добавляем модуль в ядро и смотрим, что у нас появился файл:. Всё, мы теперь имеем полностью рабочий драйвер вместе с отвечающим взаимностью устройством! Поздравляю, можно бежать в лабаз за шампанским, и потом в юзерспейсе под волшебные пузырьки писать программы, работающие с этим девайсом. Итак, сейчас мы написали вполне рабочий драйвер, который уже можно использовать в повседневной практике. Выводить на него любой текст, даже текст из файла, использовать в своих программах. Но есть ощущение незавершённости, несовершенства. Если вы возьмёте и почитаете любую документацию на экран, например статью, которую написал DIHALT о инициализации дисплея для AVR , то будете удивлены богатством возможностей. Хороший пример применения возможности загрузки шрифтов я нашёл на кофейном автомате на работе, в котором как раз установлен аналогичный экран, только русифицированный. В общем фишек у дисплея полно, так много, что мне уже лениво читать в документации. Но, как мы видим, всего этого мы делать пока не можем. И в этот чудесный момент настало время достать мой рояль из кустов, который уже давным-давно там стоит. Прежде, чем я приступил к реализации данной идеи даже до того, как начал покупать детали , я погуглил, а делал ли кто-то подобное. Его написал Michael McLellan и обитает драйвер на http: Честно скажу, данный драйвер на меня произвёл смешанное впечатление. Скажем так, он стал ценным пособием, как НЕ надо писать драйвера — переписать его под другую схему включения будет нетривиальной задачей, поскольку идёт тупая запись байтов, а каких, куда и зачем — непонятно. Переносимость отсутствует как класс. А куча define-ов для разных ядер выносят моск. Плюс, изначально драйвер задумывался под полную схему включения 8 бит на порт данных, см. Она хоть и медленнее примерно в два раза, так как байт посылается двумя посылками , но во-первых, будет меньше паять, а во-вторых — не потребуется отыскивать другие порты. Ну и в третьих, у меня уже был отличный и логичный код для 4-х битной шины. В результате я решил таки написать свой драйвер сам и с нуля, попутно рассказывая как это сделать. Ладно, к чёрту лирику. В том драйвере есть бесценная штука — это обработка управляющих или ESC-последовательностей. Так же на офсайте есть фак. Чтобы вам не пришлось лазать по этим всем данным, я решил собрать всё в одну кучу и на русском языке. Такая же петрушка лежит в управлении данным дисплеем. К слову, все эти последовательности чудесно работают в обычной консоли, ими можно пользоваться при выводе текста. Кто ещё не понял, что это и зачем, то более подробно у него описанно тут lcd-mod. Чтобы не мучаться, я вольно перевёл его и заботливо положил в спойлер с картинками. Экран будет вести себя почти так же, как vtтерминал ru. Если вы хотите просто вывести текст на экран, вам следует послать его в формате ASCII на устройство. Вы должны так же послать на экран символ перевода на новую строку и перевод каретки. Почему, когда я пишу более, чем n линий на мой n-строчный эран, я вижу только n-1 линий, а последняя линия пустая? Необходимо использовать аргумент -n, как я говорил выше. Вы можете установить курсор где хотите с помощью специальной управляющей последовательности: Контроллер экрана HD поддерживат до восьми символов определённых пользователем и наш модуль ядра поддерживает это, но это может быть довольной сложной операцией. Я собираюсь написать красивую GUI делающее это для вас, когда я вернусь к ней или когда вы сможете написать об этом мне. Готов поспорить, что это предложение прочтут сущие единицы. Трололо, проверка на внимательность. Вы можете установить один символ, отправив в устройство следующую комманду: Esc-R[позиция шрифта][8 байт, определяющих битовую маску символа]. Символ определяет только последние пять бит во всём байте, поскольку в символе используется всего 5 столбцов. Я уже говорил об этом выше. Устанавливает символпо адресу 1, представляющую собой полностью закрашенный блок. Такой же, как я выше приводил у кофейного автомата в полосе готовности. А всю грязную работу по разбору полётов на себя взяла функция handleInput. Код данной функции монструозен, поэтому я его приводить тут не буду. В общем, в результате мы получили кошерный экран, который можно использовать для вывода разной полезной и бесполезной информации. Вот, например на него можно выводить текущее время. Разумеется, написал — поделись с народом! Просто так экранчик на столе мало понятно зачем нужен, это правда. Тем более в век планшетов и прочей техники. Когда всё можно перенаправить на ваш смартфон. Другое дело, что скоро грядёт Новый Год, и вспоминается один замечательный новогодний девайс — ёлочка на процессоре lpc Не стоит гуглить этот дейвас, все упоминания о нём убраны даже с официального сайта, а редкие упоминания о нём сложно найти даже на просторах интернета. Кроме весёлого мигания огоньками у этого забавного устройства была крутая особенность — можно было вести переписку с другими владельцами таких ёлочек. Был некий сервант, куда через специальную форму можно было вбить сообщение и оно рассылалось по ёлочкам и выводилось на экран. Это было очень и очень круто и весело. Данным постом я ставил цель не сделать пересказ книги Linux Device Drivers, а просто показать, что написание дров это тривиальная задача. Я умышленно ушёл от USB, так как там достаточно много теории, подводных камней и прочего геморроя. Но вы вполне можете переписать данный модуль для USB-LPT-шнурков, типа таких. Поверьте — это просто. А данный драйвер, поменяв всего ОДНУ!!! Точно, что написать я вам не скажу, но всё решается чтением даташита на используемый проц и занимает всего несколько минут. Отличная библиотека статей по программированию на русском от IBM обитает тут. Конкретно по разработке модулей ядра. Описание дисплея HD для AVR, но в целом оно универсально easyelectronics. Программы для дисплея модуль ядра и спектральный анализатор для этого модуля от Michael McLellan linux.


Совет 1: Как установить драйвера на linux


Драйвера в Linux называются - модулями ядра modules kernel , но не все модули являются драйверами. Некоторые модули создают виртуальные устройства, обслуживают файловые системы, обеспечивают шифрование на уровне ядра и т. Эта статья не ставит целью спор о терминологии, просто я хочу описать, что делать когда ваше устройство не работает под Linux. Для начала стоит сказать, что не стоит искать драйверы для Linux на диске производителя. Если они там и есть , то слишком старые и наверняка уже не совместимы с вашей системой. Было бы неплохо при покупке устройства проверить его по списку совместимых устройств который есть для Linux, также как и для Windows. Но я так ни когда не делал, всегда надеялся на русский авось. И в общем все устройства работали. Правда вполне вероятно, что какая нибудь программная кнопочка на вашем сканере, для молниеносной отправки по электронной почте отсканированного изображения, не будет работать. Но кто пользуется этими кнопочками? И так, вы поставили Linux,но у вас что-то не работает. Не стоит паниковать, все будет хорошо. Великий и могучи Интернет нам поможет, там полно драйверов и описаний. Но вот найти все это не так просто. Запрос в поисковой системе вида: Драйвера для Linux , как правило ни к чему не приводит. Для начала необходимо собрать информацию о нашем устройстве. Надписи на коробке и плате могут быть полезными, но не всегда. Торговая марка устройства часто ни чего ни говорит о том какой Linux драйвер нужен для его работы. Гораздо надежнее опираться на вывод специальных утилит опрашивающих оборудование. Мне приходилось использовать две: Как правило в системе они уже установлены. Но вы можете установить самостоятельно пакеты usbutils и pciutil , соответственно. Команды необходимо запускать с правами администратора root. Пример запуска команды lspci:. В выводе этих команд ищем строку соответствующую нашему устройству. Как правило это не составляет труда. Можно сориентироваться по названию устройства или названию чипа. Или по тому какая строка появляется при подключении USB устройства. Вот эту строку и нужно вводить в поисковую систему, Google или Yandex. Google предложит вам англоязычные сайты, и если вы способный понимать, что там написано, Google конечно предпочтительнее. Например для поиска информации по Wi-Fi адаптеру из примера нужно ввести в поиск: Если по все строке не чего не нашлось, то нужно попробовать поискать по идентификатору устройства. Наша цель поиска в поиске источника драйвера и краткого алгоритма его установки. Но главное конечно сам Linux драйвер. Установка из двоичного пакета становится все более распростроненной в Linux. Но это не всегда возможно, хотя и проходит в 99 случаев из Даже если не нашли двоичного пакета не стоит растраиваться. Linux предоставляет гораздо больше возможностей , чем другие, устаревшие ОС. И так средствами вашего дистрибутива устанавливаем пакет с именем типа kernel-hiders или kernel-source уточнить по вариантам версия пакета должна соответствовать версии ядра. Если в ходе установки модуля ядра вы получаете сообщение о невозможности обнаружить хидер файлы, значит одно из этих условий не выполняется. В идеале для того чтобы установить драйвер нужно в каталоге с исходниками просто выполнить команды: И от имени root: Или от имени root запустить скрипт установки. Многие устройства поддерживаются как драйверами в составе ядра , так и отдельными пакетами драйверов. Если включена поддержка в ядре, то нельзя ставить дополнительные пакеты драйверов. Устройство работать не будет. Но идеал в этой жизни очень редок. По этому рассмотрим некоторые проблемы. В подавляющем большинстве случаев информация приведенная дальше вам не пригодится. Но Linux располагает к экспериментам. Не принуждает, а именно располагает дает возможность. Поэтому рано или поздно вы захотите экспериментов и в каком нибудь редком и заумном дистрибутиве вы можете натолкнуться на проблемы. В этом случае необходима поддержка alsa в ядре. Драйвер вашего устройства из состава ядра или из пакета: Остановитесь на чем то одном. Необходимы пакеты alsa-utils , alsa-lib, драйверы устройства. Системный сервис alsa должен запускаться при старте системы. Используйте программу alsamixer для первоначального включения звука и опытов. Необходимо передать модулю звуковой карты параметр, определяющий модель чипсета, а их для данного драйвера очень много. Чипсет можно узнать из соответствующей строки в alsamixer. Где 3stack - строчка, выцепленная из файла документации для конкретного чипа. Для полноценной работы видеокарт в Linux необходима поддержка DRM. Поддержка DRM в Linux может быть включена или через ядро, или через библиотеку libdrm. Если этот файл удалить то видео система Linux сейчас это Xorg попытается настроиться автоматический. Если у вас что-то не получается с драйверами ATI в Linux , то попробуйте прочитать следующие рекомендации. Во-первых, выясните не только модель своей карты, но и её поколение по таблице в Википедии R, R и т. Далее, существует два пакета с драйверами для ATI:. Открытые драйвера имеют меньше проблем, поэтому рекомендую их. Перейти к основному содержанию. Linux , сайты , электроника. Загрузка модулей в Linux. Как поставить Linux на один диск с Windows. Файлы устройств, модули ядра, конфигурирование программы modprobe и hdparm. Как называются драйвера для Linux? Где не стоит искать и брать драйвера для Linux. Ни каких файлообменников, особенно платных. Драйвера для Linux есть, но их надо првильно искать! Пример запуска команды lspci: ATI Technologies Inc RS Host Bridge ATI Technologies Inc RS PCI to PCI Bridge Internal gfx ATI Technologies Inc Device ATI Technologies Inc RS PCI to PCI Bridge PCI Express Port 1 ATI Technologies Inc SB Non-Raid-5 SATA ATI Technologies Inc SB USB OHCI0 ATI Technologies Inc SB USB OHCI1 ATI Technologies Inc SB USB OHCI2 ATI Technologies Inc SB USB OHCI3 ATI Technologies Inc SB USB OHCI4 ATI Technologies Inc SB USB Controller EHCI ATI Technologies Inc SBx00 SMBus Controller rev 14 ATI Technologies Inc SB IDE ATI Technologies Inc SBx00 Azalia Intel HDA ATI Technologies Inc SB PCI to LPC Bridge ATI Technologies Inc SBx00 PCI to PCI Bridge ATI Technologies Inc RSM [Radeon X Series] Bus Device Mini Optical Mouse Bus Device RTLB Wireless Adapter Bus Device Обзор способов установки драйверов для Linux. Установка драйвера для Linux из исходного кода. Некоторые тонкости при установке драйверов для Linux. Установка драйвера звуковых карт. Далее, существует два пакета с драйверами для ATI: В свободных драйверах реализована и очень неплохо поддержка двухмерного ускорения, Xrandr работа с несколькими мониторами , Xvideo ускорение вывода видео , поддержка трёхмерного ускорения в процессе разработки для r необходима mesa 7. Вверх Загрузка модулей в Linux. Блог пользователя - admin.


Похожие записи
https://gist.github.com/803531d45febfa347fbd2c694555326f
https://gist.github.com/d9216fc9c6508159965934e8576a376a
https://gist.github.com/d73ade382adfca008ce02fd231093563
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment