Как ядро Linux имеет дело с драйверами?

Я просто читал о способе, которым Linux имеет дело с драйверами оборудования. По-видимому, большинство драйверов оборудования, прибывших предварительно скомпилированный в Ядро Linux. У меня есть некоторые вопросы об этом...

Если ядро Linux содержит драйверы оборудования почти для каждого устройства там, И если ноутбук, который работает на Linux, имеет только определенное число устройств, То что относительно всех избыточных драйверов оборудования, которые имеет Ядро Linux? Разве это не трата ресурсов, чтобы сохранить все эти драйверы в ядре и продолжить его и работающий в системе даже, в то время как мы не используем их?

5
задан 4 February 2017 в 21:54

1 ответ

Сначала некоторая история. В более ранние дни Linux драйверы устройств были действительно скомпилированы непосредственно в ядро. На самом деле возможно все еще скомпилировать драйверы непосредственно в, и много ядер могут все еще иметь некоторые очень общие драйверы, включал этот путь. Путем это работало, было универсальное ядро, поставленное с ранними дистрибутивами как SLS, или Slackware имел фактически каждый драйвер ядро, поддерживаемое скомпилированный непосредственно в него так, это будет работать над самым широким разнообразием возможных аппаратных средств. Даже затем не было возможно поместить их всех в то, потому что некоторые из них являются взаимно несовместимыми. Затем после того, как Вы установили свою систему, Вы создадите свое собственное ядро, тщательно проходя конфигурацию, чтобы удостовериться, что Вы включали корректные драйверы для всего, что Ваш компьютер имел. Иногда необходимо было вручную отредактировать заголовочные файлы в драйвере для включения поддержки чудных аппаратных средств - плата Ethernet, которая использовала конкретный чипсет, использовал драйверы того чипсета, но иногда были забавные способы, которыми это было реализовано. Затем Вы скомпилировали бы, установили бы, и надо надеяться после перезагрузки, Вам затем создали пользовательское ядро для просто Вашего компьютера. Наклон и оптимизированный. В действительности Вы обычно несколько раз повторяли этот процесс включая вещи, которые Вы пропустили, добавив поддержку файловой системы, которую Вы забыли, или тонкая настройка настроек в некотором роде. Промывка и повторение.

В те дни, к счастью, долго мимо. Ядро, в течение очень долгого времени, поддерживало загружаемые модули. Это драйверы ядра, скомпилированные, чтобы стать типом общей библиотеки, которая может быть загружена или разгружена по требованию. Теперь способ, которым загружается ядро, является Вами, имеют сам файл ядра и маленькую сжатую файловую систему (взгляд initramfs на Википедию), который имеет во всем этом модули ядра то ядро поддержки. Загрузки ядра, это находит свою начальную файловую систему, и затем это может начать загружать все драйверы, в которых требуется.

, Который немного истории пропускает большую работу и пот по пути. Промежуточное использование всех скомпилированных - в драйверах в одном огромном монолитном ядре и наличии полностью автоматизированной загрузочной системы драйвера, которую мы имеем сегодня, было всеми шагами вдоль того пути, где у нас были модули, которые должны были быть явно загружены, полуавтоматическая загрузка для некоторых, и т.д. и т.д.

Так, так как современный спрос на ядра загружает подавляющее большинство драйверов, в которых они нуждаются, нет никакого существенного количества избыточных драйверов оборудования, поднимающих ресурсы в ядре никакого современного дистрибутива Linux.

9
ответ дан 23 November 2019 в 08:54

Другие вопросы по тегам:

Похожие вопросы: