Где хранятся драйверы в Linux
Обновлено: 21.11.2024
Драйверы используются для обеспечения взаимодействия аппаратных устройств с операционной системой. В Windows все устройства и драйверы сгруппированы в одной консоли, называемой диспетчером устройств. В Linux даже аппаратные устройства обрабатываются как обычные файлы, что упрощает взаимодействие программного обеспечения с драйверами устройств. Когда устройство подключается к системе, в каталоге /dev создается файл устройства.
- Символьные устройства. Эти устройства передают данные по символам, например мышь или клавиатура.
- Блочные устройства. Эти устройства передают единицу хранения данных, называемую блоком, USB-накопителями, жесткими дисками и компакт-дисками.
Чтобы получить список всех файлов устройств, используйте приведенную ниже команду.
В приведенном выше выводе мы видим некоторые другие типы файлов, некоторые из них имеют B для блочного устройства, C для символьного устройства, некоторые устройства начинаются с /dev/sda или /sdb. В Linux имена дисков расположены в алфавитном порядке. Например, dev/sda — это первый жесткий диск, dev/sdb — второй жесткий диск и так далее. Эти устройства являются запоминающими устройствами, такими как карты памяти, жесткие диски и т. д. Следовательно, sda означает, что это устройство было обнаружено компьютером первым. Пример символьного устройства: /dev/consoles или /dev/ttyS0. Доступ к этим устройствам осуществляется как к потоку байтов. Пример блочного устройства: /dev/sdxn. Блочные устройства позволяют программисту читать и записывать блоки любого размера. Псевдоустройства действуют как драйверы устройств без реального устройства. Примерами псевдоустройств являются /dev/null, /dev/zero, /dev/pf и т. д.
Команды диска и драйвера
1. fdisk — форматирование диска. Эта команда используется для отображения разделов на диске и других сведений, связанных с файловой системой.
<р>2. sfdisk — эта команда отображает разделы на диске, размер каждого раздела в МБ и т. д.
<р>3. parted — эта команда помогает вывести список и изменить разделы диска.<р>4. df — отображает сведения о файловой системе. С помощью grep мы можем фильтровать реальные файлы на жестком диске.
<р>5. lsblk — список сведений о блочных устройствах.<р>6. inxi — содержит сведения об аппаратных компонентах в файловой системе.
Ядро — это монолитная часть программного обеспечения, но оно также отвечает за поддержку оборудования. Большинство устройств имеют встроенные модули ядра, поэтому при подключении они начинают работать автоматически.
Программирование драйвера устройства для Linux требует глубокого понимания операционной системы и сильных навыков разработки. Чтобы помочь вам освоить эту сложную область, эксперты по разработке драйверов Apriorit создали это руководство.
Мы покажем вам, как написать драйвер устройства для Linux (версия ядра 5.3.0). При этом мы обсудим систему логирования ядра, принципы работы с модулями ядра, символьные устройства, структуру file_operations и доступ к пользовательской памяти из ядра. Вы также получите код простого драйвера для Linux, который можно дополнить любой необходимой вам функциональностью.
Эта статья будет полезна разработчикам, изучающим разработку драйверов для Linux.
Команда разработчиков драйверов
Содержание:
Начало работы с модулем ядра Linux
Ядро Linux написано на языках программирования C и Ассемблер. C реализует основную часть ядра, а Assembler реализует части, зависящие от архитектуры. Вот почему мы можем использовать только эти два языка для разработки драйверов устройств Linux. Мы не можем использовать C++, который используется для ядра Microsoft Windows, потому что некоторые части исходного кода ядра Linux (например, заголовочные файлы) могут включать ключевые слова из C++ (например, delete или new), а в ассемблере мы можем встретить такие лексемы, как как ' : : ' .
Существует два способа программирования драйвера устройства Linux:
- Скомпилируйте драйвер вместе с ядром, которое является монолитным в Linux.
- Реализуйте драйвер как модуль ядра, и в этом случае вам не нужно будет перекомпилировать ядро.
В этом руководстве мы разработаем драйвер в виде модуля ядра. Модуль — это специально разработанный объектный файл. При работе с модулями Linux связывает их с ядром, загружая в адресное пространство ядра.
Код модуля должен работать в контексте ядра. Это требует от разработчика очень внимательного отношения. Если разработчик допустит ошибку при реализации пользовательского приложения, в большинстве случаев это не вызовет проблем за пределами пользовательского приложения. Но ошибки в реализации модуля ядра приведут к проблемам на уровне системы.
К счастью для нас, ядро Linux устойчиво к некритическим ошибкам в коде модуля. Когда ядро сталкивается с такими ошибками (например, разыменование нулевого указателя), оно выводит сообщение oops — индикатор незначительных сбоев в работе Linux. После этого неисправный модуль выгружается, позволяя ядру и другим модулям работать в обычном режиме. Кроме того, вы можете анализировать журналы, которые точно описывают некритические ошибки. Имейте в виду, что продолжение выполнения драйвера после сообщения об ошибке может привести к нестабильности и панике ядра.
Ядро и его модули представляют собой единый программный модуль и используют единое глобальное пространство имен. Чтобы минимизировать пространство имен, вы должны контролировать то, что экспортируется модулем. Экспортируемые глобальные символы должны иметь уникальные имена и быть сведены к минимуму. Обычно используемый обходной путь — просто использовать имя модуля, экспортирующего символы, в качестве префикса для глобального имени персонажа.
Помня об этой базовой информации, давайте начнем писать наш драйвер для Linux.
Создание модуля ядра
Мы начнем с создания простого прототипа модуля ядра, который можно загружать и выгружать. Мы можем сделать это с помощью следующего кода:
Функция my_init является точкой входа для инициализации драйвера и вызывается во время запуска системы (если драйвер статически компилируется в ядро) или когда модуль вставляется в ядро. Функция my_exit — это точка выхода драйвера. Вызывается при выгрузке модуля из ядра Linux. Эта функция не работает, если драйвер статически скомпилирован в ядро.
Эти функции объявлены в заголовочном файле linux/module.h. Функции my_init и my_exit должны иметь одинаковые подписи, например следующие:
Теперь наш простой модуль готов. Давайте научим его логиниться в ядро и взаимодействовать с файлами устройства. Эти операции будут полезны при разработке драйверов ядра Linux.
Регистрация символьного устройства
Файлы устройств обычно хранятся в папке /dev. Они облегчают взаимодействие между пользовательским пространством и кодом ядра. Чтобы ядро получало что-либо, вы можете просто записать это в файл устройства, чтобы передать его модулю, обслуживающему этот файл. Все, что считывается из файла устройства, исходит из обслуживающего его модуля.
Существует две группы файлов устройств:
- Символьные файлы — небуферизованные файлы, которые позволяют считывать и записывать данные посимвольно. В этом руководстве мы сосредоточимся на этом типе файлов.
- Блочные файлы – буферизованные файлы, которые позволяют читать и записывать только целые блоки данных.
В системах Linux есть два способа идентификации файлов устройств:
- Основные номера устройств определяют модули, обслуживающие файлы устройств или группы устройств.
- Второстепенные номера устройств определяют определенные устройства среди группы устройств, определяемой старшим номером устройства.
Мы можем определить эти номера в коде драйвера или выделить их динамически. Если число, определенное как константа, уже использовалось, система вернет ошибку. Когда номер назначается динамически, функция резервирует этот номер, чтобы предотвратить его использование другими файлами устройств.
Чтобы зарегистрировать символьное устройство, нам нужно использовать функцию register_chrdev:
Здесь мы указываем имя и старший номер устройства для его регистрации. После этого устройство и структура file_operations будут связаны. Если мы присвоим 0 основному параметру, функция сама присвоит основной номер устройства. Если возвращаемое значение равно 0, это указывает на успех, а отрицательное число указывает на ошибку. Оба номера устройств указаны в диапазоне от 0 до 255.
Имя устройства — это строковое значение параметра name. Эта строка может передавать имя модуля, если он регистрирует одно устройство.Мы используем эту строку для идентификации устройства в файле /sys/devices. Операции с файлами устройств, такие как чтение, запись и сохранение, обрабатываются указателями функций, хранящимися в структуре file_operations. Эти функции реализуются модулем, и указатель на структуру модуля, идентифицирующую этот модуль, также хранится в структуре file_operations (подробнее об этой структуре в следующем разделе).
Структура файловых операций
В ядре Linux 5.3.0 структура file_operations выглядит следующим образом:
Если эта структура содержит функции, которые не требуются для вашего драйвера, вы все равно можете использовать файл устройства без их реализации. Указатель на нереализованную функцию можно просто установить в 0. После этого система позаботится о реализации функции и заставит ее вести себя нормально. В нашем случае мы просто реализуем функцию чтения.
Поскольку мы собираемся обеспечить работу только одного типа устройств с помощью нашего драйвера для Linux, наша структура file_operations будет глобальной и статической. После того, как он будет создан, нам нужно будет заполнить его статически следующим образом:
Объявление макроса THIS_MODULE содержится в заголовочном файле linux/export.h. Превратим макрос в указатель на модульную структуру нужного модуля. Позже мы напишем тело функции с прототипом, а пока у нас есть только указатель на него device_file_read:
Структура file_operations позволяет нам разработать несколько функций, которые будут регистрировать и отменять регистрацию файла устройства. Чтобы зарегистрировать файл устройства, мы используем следующий код:
device_file_major_number – это глобальная переменная, содержащая основной номер устройства. Когда срок службы драйвера истечет, эта глобальная переменная будет использоваться для отмены регистрации файла устройства.
В приведенном выше коде мы добавили функцию printk, которая регистрирует сообщения ядра. Обратите внимание на префиксы KERN_NOTICE и KERN_WARNING во всех перечисленных строках формата printk. УВЕДОМЛЕНИЕ и ПРЕДУПРЕЖДЕНИЕ указывают уровень приоритета сообщения. Уровни варьируются от незначительных (KERN_DEBUG) до критических (KERN_EMERG), предупреждающих о нестабильности ядра. Это единственное различие между функцией printk и библиотечной функцией printf.
Функция printk
Функция printk формирует строку, которую мы добавляем в циклический буфер. Оттуда демон klog читает его и отправляет в системный журнал. Реализация printk позволяет нам вызывать эту функцию из любой точки ядра. Используйте эту функцию осторожно, так как она может привести к переполнению кольцевого буфера, что означает, что самое старое сообщение не будет зарегистрировано.
Следующим шагом будет написание функции для отмены регистрации файла устройства. Если файл устройства успешно зарегистрирован, значение device_file_major_number не будет равно 0. Это значение позволяет нам отменить регистрацию файла с помощью функции unregister_chrdev, которую мы объявляем в файле linux/fs.h. Старший номер устройства — это первый параметр этой функции, за которым следует строка, содержащая имя устройства. Функции register_chrdev и unresister_chrdev имеют одинаковое содержимое.
Чтобы отменить регистрацию устройства, мы используем следующий код:
Следующим шагом в реализации функций для нашего модуля является выделение и использование памяти в пользовательском режиме. Давайте посмотрим, как это делается.
Использование памяти, выделенной в пользовательском режиме
Давайте посмотрим на параметр filep — указатель на файловую структуру. Эта файловая структура позволяет нам получить необходимую информацию о файле, с которым мы работаем, данные, связанные с этим файлом, и многое другое. Прочитанные данные размещаются в пользовательском пространстве по адресу, указанному вторым параметром — буфер. Количество байтов для чтения определяется в параметре len, и мы начинаем чтение байтов с определенного смещения, определенного в параметре смещения. После выполнения функции должно быть возвращено количество успешно прочитанных байтов. Затем мы должны обновить смещение.
Для работы с информацией из файла устройства пользователь выделяет специальный буфер в адресном пространстве пользовательского режима. Затем функция чтения копирует информацию в этот буфер. Адрес, на который указывает указатель из пользовательского пространства, и адрес в адресном пространстве ядра могут иметь разные значения. Вот почему мы не можем просто разыменовать указатель.
При работе с этими указателями у нас есть набор определенных макросов и функций, которые мы объявляем в файле linux/uaccess.h. Наиболее подходящая функция в нашем случае — это copy_to_user. Его название говорит само за себя: он копирует определенные данные из буфера ядра в буфер, выделенный в пространстве пользователя. Он также проверяет, действителен ли указатель и достаточно ли велик размер буфера. Вот код прототипа copy_to_user:
Прежде всего, эта функция должна получить три параметра:
- Указатель на буфер
- Указатель на источник данных
- Количество копируемых байтов
Если при выполнении есть какие-либо ошибки, функция вернет значение, отличное от 0. В случае успешного выполнения значение будет равно 0. Функция copy_to_user содержит макрос _user, который документирует процесс. Также эта функция позволяет узнать, правильно ли код использует указатели из адресного пространства. Это делается с помощью Sparse, анализатора статического кода. Чтобы убедиться, что он работает правильно, всегда помечайте указатели адресного пространства пользователя как _user.
Вот код для реализации функции чтения:
С этой функцией код для нашего драйвера готов. Теперь пришло время собрать модуль ядра и посмотреть, работает ли он должным образом.
Сборка модуля ядра
В современных версиях ядра makefile делает большую часть сборки за разработчика. Он запускает систему сборки ядра и предоставляет ядру информацию о компонентах, необходимых для сборки модуля.
Для модуля, созданного из одного исходного файла, требуется одна строка в make-файле. После создания этого файла вам нужно только инициировать систему сборки ядра с помощью команды obj-m := имя_исходного_файла.o. Как видите, здесь мы присвоили модулю имя исходного файла — файл *.ko.
При наличии нескольких исходных файлов для сборки ядра требуются только две строки:
Чтобы инициализировать систему сборки ядра и собрать модуль, нам нужно использовать команду make –C KERNEL_MODULE_BUILD_SYSTEM_FOLDER M=`pwd` modules. Чтобы очистить папку сборки, мы используем команду make –C KERNEL_MODULES_BUILD_SYSTEM_FOLDER M=`pwd` clean.
Система сборки модулей обычно находится в /lib/modules/`uname -r`/build. Теперь пришло время подготовить систему сборки модуля. Чтобы собрать наш первый модуль, выполните команду make modules_prepare из папки, где находится система сборки.
Наконец, мы объединим все, чему научились, в один make-файл:
Цель load загружает модуль сборки, а цель unload удаляет его из ядра.
В нашем руководстве мы использовали код из main.c и device_file.c для компиляции драйвера. Полученный драйвер называется simple-module.ko. Давайте посмотрим, как его использовать.
Загрузка и использование модуля
Чтобы загрузить модуль, мы должны выполнить команду make load из папки с исходным файлом. После этого в файл /proc/modules добавляется имя драйвера, а в файл /proc/devices добавляется устройство, которое регистрирует модуль. Добавленные записи выглядят следующим образом:
Первые три записи содержат имя добавленного устройства и основной номер устройства, с которым оно связано. Младший диапазон номеров (0–255) позволяет создавать файлы устройств в виртуальной файловой системе /dev.
Затем нам нужно создать файл специальных символов для нашего старшего номера с помощью команды mknod /dev/simple-driver c 250 0.
После того как мы создали файл устройства, нам нужно выполнить окончательную проверку, чтобы убедиться, что то, что мы сделали, работает должным образом. Для проверки мы можем использовать команду cat для отображения содержимого файла устройства:
Если мы видим содержимое нашего драйвера, значит он работает корректно!
Заключение
В этом руководстве мы показали, как написать простой драйвер для Linux. Вы можете найти полный исходный код этого драйвера в репозитории Apriorit GitHub. Если вам нужен более сложный драйвер устройства, вы можете взять это руководство за основу и добавить к нему дополнительные функции и контекст.
В Apriorit мы специализируемся на разработке ядра и драйверов Linux. Наши разработчики успешно поставили сотни сложных драйверов для Linux, Unix, macOS и Windows. Свяжитесь с нашей опытной командой, чтобы начать работу над вашим следующим проектом по разработке драйверов для Linux!
Одной из самых сложных задач для тех, кто переходит с привычной системы Windows или MacOS на Linux, является установка и настройка драйвера. Это понятно, поскольку в Windows и MacOS есть механизмы, которые делают этот процесс удобным для пользователя. Например, когда вы подключаете новое оборудование, Windows автоматически обнаруживает его и показывает всплывающее окно с вопросом, хотите ли вы продолжить установку драйвера. Вы также можете загрузить драйвер из Интернета, а затем просто дважды щелкнуть его, чтобы запустить мастер, или импортировать драйвер через диспетчер устройств.
Дополнительные ресурсы по Linux
Этот процесс не так прост в операционной системе Linux. По одной причине, Linux — это операционная система с открытым исходным кодом, поэтому существуют сотни вариантов дистрибутива Linux. Это означает, что невозможно создать одно практическое руководство, которое работало бы для всех дистрибутивов Linux. Каждая операционная система Linux обрабатывает процесс установки драйвера по-своему.
Во-вторых, большинство драйверов Linux по умолчанию имеют открытый исходный код и интегрированы в систему, что делает установку любых драйверов, которые не включены, довольно сложной задачей, даже несмотря на то, что большинство аппаратных устройств могут быть обнаружены автоматически. В-третьих, политика лицензирования различается в разных дистрибутивах Linux. Например, Fedora запрещает включение проприетарных драйверов, юридически обремененных или нарушающих законы США. А Ubuntu просит пользователей избегать использования проприетарного или закрытого оборудования.
Чтобы узнать больше о том, как работают драйверы Linux, я рекомендую прочитать Введение в драйверы устройств в книге Драйверы устройств Linux.
Два подхода к поиску драйверов
1. Пользовательские интерфейсы
Если вы новичок в Linux и пришли из мира Windows или MacOS, вы будете рады узнать, что Linux предлагает способы узнать, доступен ли драйвер с помощью программ, подобных мастеру. Ubuntu предлагает опцию «Дополнительные драйверы». В других дистрибутивах Linux есть вспомогательные программы, такие как диспетчер пакетов для GNOME, которые можно проверить на наличие доступных драйверов.
2. Командная строка
Что делать, если вы не можете найти драйвер с помощью удобного приложения с пользовательским интерфейсом? Или у вас есть доступ только через оболочку без какого-либо графического интерфейса? Возможно, вы даже решили расширить свои навыки с помощью консоли. У вас есть два варианта:
Проверьте, установлен ли уже драйвер
Прежде чем перейти к установке драйвера в Linux, давайте рассмотрим некоторые команды, которые определяют, доступен ли драйвер в вашей системе.
Команда lspci показывает подробную информацию обо всех шинах PCI и устройствах в системе:
Или с помощью grep:
Например, вы можете ввести lspci | grep SAMSUNG, если вы хотите узнать, установлен ли драйвер Samsung.
Команда dmesg показывает все драйверы устройств, распознаваемые ядром:
Или с помощью grep:
Все распознанные драйверы будут показаны в результатах.
Если команды dmesg или lscpi ничего не распознают, попробуйте эти две команды, чтобы убедиться, что драйвер хотя бы загружен на диск:
Совет. Как и в случае с lspci или dmesg, добавьте | grep к любой команде выше, чтобы отфильтровать результаты.
Если драйвер распознается этими командами, но не lscpi или dmesg, это означает, что драйвер находится на диске, а не в ядре. В этом случае загрузите модуль командой modprobe:
Запустите эту команду от имени sudo, так как этот модуль должен быть установлен от имени пользователя root.
Добавить репозиторий и установить
Существуют разные способы добавления репозитория с помощью yum, dnf и apt-get; описание их всех выходит за рамки данной статьи. Для простоты в этом примере будет использоваться apt-get, но идея аналогична для других параметров.
<р>1. Удалите существующий репозиторий, если он существует.где NAME_OF_DRIVER — вероятное имя вашего водителя. Вы также можете добавить соответствие шаблону к регулярному выражению для дальнейшей фильтрации.
<р>2. Добавьте репозиторий в реполист, который должен быть указан в руководстве по драйверу.где REPOLIST_OF_DRIVER должен быть указан из документации драйвера (например, epel-list).
<р>3. Обновите список репозиториев. <р>4. Установите пакет. <р>5. Проверьте установку.Выполните команду lscpi (как указано выше), чтобы убедиться, что драйвер был успешно установлен.
[closed] где я могу найти информацию обо всех установленных драйверах.
Правила форума
Не бывает глупых вопросов. Однако, если вы считаете свой вопрос немного глупым, то это подходящее место для вас, чтобы опубликовать его. Пожалуйста, придерживайтесь простых вопросов, на которые, по вашему мнению, люди смогут быстро ответить. Для длинных и сложных вопросов предпочитайте другие форумы в разделе поддержки.
Перед публикацией прочтите, как получить помощь
[closed] где я могу найти информацию обо всех установленных драйверах.
в Windows это очень просто: нужно зайти в диспетчер устройств и там есть список установленных и удаленных драйверов. Но я изо всех сил пытаюсь найти это на мяте с корицей 18.3.
inxi — это команда, -Fxz — параметры, которые нужно передать команде. Откройте терминал и введите man inxi для получения полного списка и описания параметров.
"Если бы правительство пришло за вашими телевизорами и автомобилями, вы бы расстроились. Но пока они идут только за вашими сыновьями. - Дэниел Берриган
catweazel Уровень 19
Сообщений: 9848 Присоединился: Пт, 12 октября 2012 г., 21:44 Местоположение: Австралийская антарктическая территория
"В конечном итоге существует только одна истина — cogito, ergo sum — все остальное является предположением". - Я, моя лебединая песня.
Согласен, попробуйте вместо этого lsmod в терминале.
Кстати, в Linux нет драйверов устройств, как в WIndows. Все драйверы являются модулями ядра и поэтому работают в защищенном режиме.
Все ваши драйверы содержатся в ядре Linux, так что вам не о чем беспокоиться. По сути, очень упрощенно, когда выпускается новое оборудование, необходимые драйверы добавляются в ядро Linux. Иногда действительно старые «устаревшие» аппаратные драйверы удаляются. Вам НЕ обязательно запускать самое последнее и лучшее ядро Linux, и вы должны устанавливать ТОЛЬКО обновленные версии, которые рекомендуются в программе обновления программного обеспечения. Linux и Linux Mint знают, что делают, доверяйте ему, доверяйте диспетчеру обновлений.
Единственными исключениями для драйверов ядра Linux являются проприетарные драйверы дисплея, обычно от nivida или AMD, а также драйверы микрокода процессора.
Вы найдете их в диспетчере драйверов. Обратите внимание на разницу между «менеджером обновлений» и «диспетчером драйверов». Снова доверяйте Linux, доверяйте Mint, устанавливайте эти драйверы только из диспетчера драйверов. Он найдет лучшую версию для вашей машины.
Итак, вы можете увидеть установленные драйверы дисплея и процессора в диспетчере драйверов, и это действительно все, о чем вам нужно «беспокоиться».
<р>? звучит немного для мальчика-фаната. если вы не используете драйверы ядра, такие как я. Причина этого в том, что параметры ядра lm отстой.inxi — это команда, -Fxz — параметры, которые нужно передать команде. Откройте терминал и введите man inxi для получения полного списка и описания параметров.
С этим согласен. Дело в том, что большинство новых пользователей Unix-подобных операционных систем не знакомы с чудесами команды «man». Чтобы получить настоящее удовольствие, откройте терминал и введите «man man». Справочные страницы могут дать вам способы использования команды ls, о которых вы никогда не знали.
В любом случае, пользователи, примите это к сведению. Команда «мужчина» — ваш друг! Используйте его всякий раз, когда вам нужна помощь. Ищете команду? Попробуйте кстати или man -k. Надеюсь, я не зашла слишком далеко. Не хотел украсть ответ.
<р>.С этим согласен. Дело в том, что большинство новых пользователей Unix-подобных операционных систем не знакомы с чудесами команды «man». Чтобы получить настоящее удовольствие, откройте терминал и введите «man man». Страницы руководства могут дать вам способы использования команды ls, о которых вы никогда не знали.
.
Я чувствовал себя настолько подавленным, когда использовал mswindows, что создал команду bat для эмуляции linux man и многих других. Также созданы псевдонимы для less (больше $*), ls (dir $*), cat (тип $*), mv (ren $*) и т. д.
man-вывод направляется на пейджер, обычно меньше . Он похож на команду more из Windows, которая также доступна в Linux. Вы также можете использовать man -H, чтобы направить вывод в ваш веб-браузер. Они также появляются в Интернете во многих местах.
Чтобы добавить к другим ответам.
Подходящие команды: lspci -v, lsmod, modinfo
Мне также нравится hwinfo и скрипт inxi.
В LM, Системные настройки есть Диспетчер драйверов.
KDE имеет графический интерфейс kinfocenter. Я не знаю, есть ли что-то подобное в Cinnamon/gnome. Хотя, если оглянуться вокруг, hardinfo — это часто встречающийся графический интерфейс.
Все ваши драйверы содержатся в ядре Linux, так что вам не о чем беспокоиться. По сути, очень упрощенно, когда выпускается новое оборудование, необходимые драйверы добавляются в ядро Linux. Иногда действительно старые «устаревшие» аппаратные драйверы удаляются. Вам НЕ обязательно запускать самое последнее и лучшее ядро Linux, и вы должны устанавливать ТОЛЬКО обновленные версии, которые рекомендуются в программе обновления программного обеспечения. Linux и Linux Mint знают, что делают, доверяйте ему, доверяйте диспетчеру обновлений.
Единственными исключениями для драйверов ядра Linux являются проприетарные драйверы дисплея, обычно от nivida или AMD, а также драйверы микрокода процессора.
Вы найдете их в диспетчере драйверов. Обратите внимание на разницу между «менеджером обновлений» и «диспетчером драйверов». Снова доверяйте Linux, доверяйте Mint, устанавливайте эти драйверы только из диспетчера драйверов. Он найдет лучшую версию для вашей машины.
Итак, вы можете увидеть установленные драйверы дисплея и процессора в диспетчере драйверов, и это действительно все, о чем вам нужно «беспокоиться».
Существуют ядра с долгосрочной поддержкой, известные как LTS (хорошая идея использовать их, Mint 19 использует одно). ограничено.
Дистрибутивы обычно строятся на основе определенной серии ядер, для работы с которыми они предназначены.
Mint 18 основан на 4.13
Mint 19 4.15 LTS
Например, версия 4.17 отсутствует, и вам может потребоваться запустить ее, если у вас есть передовое оборудование, для которого требуется поддержка драйверов только в этом ядре. Посмотрите на его качели и карусели. Вы устанавливаете 4.17, чтобы ваш комплект заработал, но, поскольку Mint 19 не был построен вокруг него, это может нарушить некоторые или все функции в ОС. То же самое и с графическими драйверами: как правило, люди, пришедшие из среды Windows, думают, поскольку они были обучены таким образом, что им нужна самая новая версия программного обеспечения.. Ударьте вперед и установите ее, а затем плачьте, потому что она сломана, они ее сломали.
Всегда запускайте поддерживаемые в настоящее время ядра в режиме «прокат» или «LTS» и доверяйте ОС, она знает, что делает, она разработана таким образом, и поэтому диспетчер драйверов и диспетчер обновлений — это единственные места, куда вы должны устанавливать новое программное обеспечение, будь то драйверы дисплея или ядра.
Такие дистрибутивы, как Ubuntu и Mint, считаются «стабильными» и, как правило, поддерживают аппаратное обеспечение примерно через шесть месяцев после первого выпуска. Если вы хотите, чтобы дистрибутив поддерживал абсолютно новейшее оборудование с первого дня (не совсем, но почти), то вы, вероятно, будете использовать что-то вроде Arch, но будьте готовы к высокому обслуживанию.
Читайте также: