- Добавление драйвера устройства в Linux
- Способы установки драйверов
- Ручная установка драйвера
- Использование нового драйвера
- Установка драйверов
- Установка и настройка Arduino IDE на Linux Ubuntu
- Установка
- Настройка
- Linux перестанет работать на ПК со старыми жесткими дисками
- «Зачистка» ядра Linux
- Не конец для PATA-дисков под Linux
- Другие изменения в Linux 5.14
Добавление драйвера устройства в Linux
Обычно в системах Unix и Linux установка драйверов для новых устройств не вызывает трудностей. Даже для неопытных пользователей этих систем. Но это в том случае, если производители устройства (и/или разработчики драйверов) позаботились об этом. И оснастили пакет драйвера специальными установочными и конфигурационными скриптами. А также протестировали всё это в нескольких системах. Однако бывают случаи, когда «удобной» возможности установить драйвер устройства нет, но есть исходные коды драйвера. В таком случае можно попытаться собрать драйвер самостоятельно. Конечно, это далеко не так просто, нужно поэкспериментировать. Но успешный результат возможен с высокой вероятностью. И главное, что для этого требуется — это знать и понимать общий порядок действий в случае ручной сборки драйвера. С такими задачами часто сталкиваются администраторы систем, обслуживающих технологические процессы на производствах, хостинг-площадки и т. д.
Способы установки драйверов
Для Linux-систем установка драйверов устройств происходит тремя основными способами:
- установка патча для определённых версий ядра;
- использование специальных сценариев для установки и конфигурации драйвера;
- с помощью загружаемого модуля ядра.
Надо признать, что для Linux ручная установка драйверов представляет собой довольно сложную и трудоёмкую работу. Поэтому разработчики стремятся всё чаще обеспечивать автоматическую установку и настройку для своих драйверов/устройств. Ведь они заинтересованы в максимально эффективном распространении своих разработок. По этой причине самым распространённым способом установки драйверов является использование сценариев установки. Для самых популярных типов устройств, например для видеокарт, аудиоустройств и даже для сетевого оборудования в настоящее время трудно найти драйверы без автоматической установки.Установка таких драйверов ничем не отличается от установки обычных пакетов. Вся инструкция описана в файле README, подробнее об установке из исходников читайте здесь.
Но есть оборудование (всевозможные адаптеры, преобразователи интерфейсов) и ситуации, для которых есть только исходные коды драйвера (часто не официальные) и необходимость интеграции его с ядром.
Если в качестве драйвера используются патчи ядра, то установить их (собственно и сам драйвер) можно выполнив следующие команды:
Расположение «каталог_исходных_кодов_ядра» зависит от системы, в CentOS это /usr/lib/modules/ /kernel, Например
В случае с ручной установкой, необходимо для начала интегрировать драйвер некоего устройства (исходные коды) в дерево каталогов исходных кодов ядра.
Ручная установка драйвера
Для примера, пусть требуется добавить в ядро драйвер некоего сетевого устройства netdevice. Драйвер этого устройства нужно (как уже известно) поместить в один из каталогов с исходными кодами ядра. А именно — в каталог drivers, внутри которого может быть следующее содержимое:
Драйверы чаще всего помещаются в подкаталоги scsi, char, block, net, а также sound и usb. Эти подкаталоги отражают схему размещения драйверов в зависимости от их типа: блочные — для дисков IDE, символьные — для последовательных портов например, для сетевых устройств, звуковых плат и USB-устройств — USB-адаптеры, USB-модемы и т. д. Другие подкаталоги служат для размещения драйверов других категорий, в частности для системных и разного рода шин (pci, pcie, nubus, zorro), а также для платформенно-зависимых драйверов — acorn, macintosh.
Таким образом, драйверы для сетевого устройства netdevice следует поместить в следующий каталог:
Исходные коды драйвера представляют собой набор файлов *.c, *.cpp и *.h, которые могут быть объединены в дерево каталогов, в зависимости от того, как составлен проект «исходников» драйвера.
Теперь необходимо включить исходные коды драйвера netdevice в процесс компиляции ядра. Для этого нужно отредактировать следующие файлы:
- /drivers/net/Makefile – для сборки самого драйвера;
- /drivers/net/Kconfig – для того, чтобы имя нового устройства было доступно для конфигурирования.
Файлы Makefile и Kconfig содержатся в каждом каталоге дерева каталогов с исходными кодами ядра Linux. Это необходимо для организации универсальной разработки и расширения функционала и возможностей ядра при его сборке из исходных кодов путём независимого дополнения новым кодом. В данном случае кодом драйвера для устройства netdevice.
В файл Makefile следует добавить следующий код:
Таким образом, при сборке ядра в его составе будет собран и сам драйвер netdevice. После дополнения файла Kconfig следующим кодом:
устройство netdevice будет доступно для использования конфигурационным макросом (необходимо на этапе конфигурирования сборки ядра). Здесь команда config использует ключевое слово NETDEVICE_DEV, которое обязательно должно совпадать с фразой, следующей после CONFIG, которое ранее было указано в файле Makefile.
Команда tristate указывает, что драйвер может быть собран как загружаемый модуль, если это поддерживается. Если нет, то вместо tristate следует указать bool – драйвер будет частью ядра. Фраза ‘Netdevice support’ будет отображаться в выводе конфигурационного скрипта на этапе конфигурирования сборки ядра. Это может быть любой текст, идентифицирующий устройство, для которого добавляется драйвер.
Использование нового драйвера
В современных версиях ядра Linux задействование новых драйверов существенно упрощено. В отличие версий, выпущенных раньше 2.6. Тогда это было настоящей головоломкой и требовало знаний в программировании. Но архитектурные изменения в модели драйверов и устройств, пришедшие в версии 2.6 позволяют теперь связывать драйверы с ядром на более высоком «общепользовательском» уровне. Для этого используется специальный конфигурационный макрос MODULE_DEVICE_TABLE. Он создаёт соответствия, которые позволяют утилите modprobe (и ей подобным) задействовать новые драйверы ядра.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Установка драйверов
В набор входит “китайская” Ардуино-совместимая плата, у которой для подключения по USB используется контроллер CH340/CH341. Чтобы он распознавался компьютером, нужно установить драйвер.
Скачать драйвер можно по ссылке:
Распаковываем архив и запускаем файл
- SETUP.EXE (для 32-х разрядной системы)
- DRVSETUP64/SETUP64.EXE (для 64-х разрядной системы).
В появившемся окошке нажимаем INSTALL. Готово!
Если во время установки Arduino IDE вы по какой-то причине пропустили установку драйверов, то их можно установить вручную из папки с программой, расположенной по пути
- C/Program Files/Arduino/drivers (для 32-х разрядной системы)
- C/Program Files (x86)/Arduino/drivers (для 64-х разрядной системы).
- dpinst-x86.exe (для 32-х разрядной системы)
- dpinst-amd64.exe (для 64-х разрядной системы)
Драйвер CH341 для Mac можно скачать по ссылке с моего сайта , либо со страницы источника . Если у вас будут какие-то проблемы с OSX Sierra и выше, читайте вот эту статью .
В Linux уже встроен необходимый драйвер, но Arduino IDE может отказаться с ним работать: Linux определяет ардуинку как устройство ttyUSB*, обычно это ttyUSB0 (это можно узнать командой dmesg в терминале), то есть в системе появляется интерфейс /dev/ttyUSB0. Чтобы с ним работать, нужны права доступа. Читать и писать на устройство /dev/ttyUSB0 имеет пользователь root и пользователи группы dialout. Работы с правами суперпользователя лучше избегать, поэтому следует занести своего пользователя в группу dialout. Это можно сделать следующей командой (обратите внимание, команда whoami в обратных кавычках)
sudo usermod -a -G dialout `whoami`
После этого нужно перелогиниться. Дальше запускаем Arduino IDE и в меню «Инструменты/Порт» ставим галочку напротив /dev/ttyUSB0.
Вся информация по работе с IDE на данной ОСи есть вот в этой статье
Источник
Установка и настройка Arduino IDE на Linux Ubuntu
ОкМне очень часто поступают вопросы по поводу установки и настройки Arduino IDE под Ubuntu. И когда мне в сотый раз задали этот вопрос, я решил таки написать заметку по этому поводу, дабы в следующий раз просто кидать ссылкой в вопрошающего. По сути в установке и настройке IDE нет ничего сложного, все довольно элементарно, но видимо так думаю только я.
Установка
Для установки нам необходимо скачать собственно саму IDE, это можно сделать на этой странице.
Нам нужно скачать программу по ссылке Linux 64 bits если у Вас 64-битная система, и Linux 32 bits если у Вас 32битная система. Но скачивания не произойдет, поскольку мы просто попадем на другую страницу. Нам надо кликнуть по ссылке «JUST DOWNLOAD».
И только после этого начнется скачивание. Проходим в полученную папку и запускаем файл «arduino». Вот и все, программа запущена, нам осталось внести некоторые изменения. При желании после запуска можно закрепить ярлык программы для быстрого доступа.
Настройка
К сожалению свежеустановленная IDE не начнет работать с платой Arduino. Для того, чтобы IDE смогла работать с нашим контроллером, нам необходимо произвести ряд не хитрых действий как с IDE, так и с системой. Первым делом настроим IDE, для этого кликаем «Инструменты» и выбираем модель нашей платы, модель контроллера и порт, на котором висит наш контроллер.
Вроде бы все хорошо, можно приступать к написанию скетча, но проблемы начнутся когда мы захотим загрузить скетч в плату. Выскочит ошибка доступа к COM-порту. И это не удивительно, ведь у порта права суперпользователя. Просто поменяв права командой chmod, мы изменим сутуацию ненадолго, до следующего подключения платы.
Для устранения проблемы нам надо внести коррективы в правила монтирования порта. В этом нет ничего сложного, для этого нам потребуется всего лишь создать файл с правилом в папке /etc/udev/rules.d. Но прежде нам необдхимо узнать некоторую информацию, это пара цифробуквенных значений. Их можно узнать выполнив команду lsusb. После выполнения мы увидим список устройств подключенных к компьютеру. В моем случае моя плата отобразилась как:
Bus 002 Device 009: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Определить как именно называется наша плата можно простым способом, выполнив команду не подключая плату и выполнив команду после подключения.
Теперь нам необходимо создать файл с правилами, для этого нам потребуется выполнить следующую команду:
sudo nano /etc/udev/rules.d/10-arduino.rules
Добавим в него следующий текст:
SUBSYSTEMS==»usb», ATTRS
MODE:=»0666″, GROUP:=»users»
Я отметил красным места, куда необходимо воткнуть значения, не забудьте поменять эти значения на свои и поменять GROUP:=»users», где «users» нужно заменить на свое, как правило группа соответствует имени пользователя в системе. Если сомневаетесь, то можете выполнить команду groups и самой первой будет та, которая нам нужна. Сохраняем изменения и выполняем ещё одну команду:
sudo udevadm control —reload-rules
Этим самым мы перезагружаем правила. На этом собственно и все, теперь при подключении нашей платы, её COM-порт будет доступен нам для записи. До того как я перешел на Ubuntu 17.10, я просто запускал IDE под sudo, но в 17.10 у меня вылезла ошибка «Can’t connect to X11 window server using ‘:0’ as the value of the DISPLAY variable» и я решил таки заморочиться с правилами монтирования порта.
Источник
Linux перестанет работать на ПК со старыми жесткими дисками
«Зачистка» ядра Linux
Глава команды разработчиков Linux Линус Торвальдс (Linus Torvalds) объявил о выпуске первого кандидата в релизы (rc1) ядра Linux версии 5.14. Одним из наиболее заметных изменений в нем стало исключение устаревшего драйвера, который обеспечивает поддержку устройств с интерфейсом IDE/PATA (legacy IDE driver support).
PATA (ATA или IDE) – параллельный интерфейс подключения накопителей информации – жестких дисков, дисководов гибких дисков и оптических приводов – к компьютеру. Интерфейс PATA являлся стандартом де-факто для IBM PC и совместимых машин в 90-е годы XX века. Первоначальная версия стандарта была разработана в 1986 г. американской компанией Western Digital, которая и по сей день занимается производством твердотельных накопителей и жестких дисков.
В 2000 г. был представлен более совершенный, последовательный интерфейс SATA. Стандарт SATA предусматривает более высокую скорость обмена информацией с подключаемыми устройствами и их «горячую замену», то есть отключение или подключение накопителя во время работы компьютера. SATA-шлейфы (кабели) более компактны и долговечны в сравнении с PATA-вариантами – используют семиконтактный разъем вместо 34- или 40-контактного у последнего.
К настоящему моменту устройства на базе SATA в значительной степени вытеснили PATA-аналоги. Тем не менее, последние по-прежнему можно приобрести в розницу, хоть обойдутся они и недешево.
Стоит отметить, что о готовящейся «зачистке» ядра Linux от устаревшего кода было известно достаточно давно. В мае 2019 г. соответствующий драйвер в Linux 5.2 был помечен разработчиками как deprecated, то есть его развитие было прекращено и дальнейшее использование не рекомендовалось.
В январе 2021 г. CNews сообщил о том, что из ядра Linux может пропасть поддержка старых процессоров, давно не получавших апдейты от своих разработчиков. В списке на удаление значилось более 20 чипов, преимущественно ARM, но были и представители других архитектур, в том числе MIPS.
Не конец для PATA-дисков под Linux
Важно отметить, что под «зачистку» попал только устаревший драйвер IDE. Поддержка IDE-устройств будет по-прежнему доступна в современных версиях Linux через специализированную библиотеку libata. Она присутствует в ядре более десяти лет и давно используется по умолчанию в большинстве популярных дистрибутивов.
По словам Кристофа Хелвига (Christoph Hellwig), разработчика ядра Linux, libata поддерживает практически все «железо», для работы с которым предназначался устаревший IDE-драйвер. Исключением являются три драйвера для архитектуры MIPS, действующих пользователей которых разработчикам найти не удалось, а также два драйвера для платформы m68k – семейства процессоров Motorola 68000, которое конкурировало с x86-чипами Intel в 1980-е и в течение первой половины 1990-х гг.
В марте 2021 г. Хелвиг отмечал, что разработчики ядра ищут пользователей Linux на m68k и рассчитывают на помощь с их стороны.
Таким образом, несмотря на возможные проблемы, которые патч Linux 5.14 может доставить сравнительно небольшой группе пользователей устаревшего оборудования, по мнению специалистов Phoronix, удаление legacy-драйвера оправдано и принесет явную пользу проекту. Во-первых, ядро изрядно «похудеет» – по оценке ресурса, чистка помогла избавиться от примерно 41 тыс. строк кода. Во-вторых, она подготовит фундамент для дальнейшей оптимизации кода блочного слоя ядра.
Другие изменения в Linux 5.14
Среди других заметных новшеств, которые, как ожидается, попадут в стабильную ветку Linux 5.14 – поддержка языка программирования Rust в качестве средства разработки ядра наравне с языком C.
Кроме того, предусмотрена поддержка настольного ПК Raspberry Pi 400, выпущенного Raspberry Pi Foundation в ноябре 2020 г. на основе одноплатного компьютера Raspberry Pi 4.
Наконец, как отмечает The Register, в состав Linux 5.14 попадет код, подготовленный Microsoft, который улучшает производительность гостевых Linux-систем при использовании системы виртуализации Hyper-V, а также реализация NVMe поверх TCP (NVMe/TCP).
Источник