2013-11-19 2 views
1

Мне немного сложно понять, как ядро ​​запускается в Linux. Я - разработчик, и теперь наша компания решила работать с Linux.Просмотрите драйверы ядра Linux, встроенные в ядро, и как они становятся привязанными/смонтированными/запущенными

Мы передали на аутсорсинг все доски платы, и полученный мной пакет немного отличается от платы прототипа, которую мы сравнили с используемым нами азотом6x.

Прежде чем приступить к перечислению различий для созданного нами дистрибутива, ядра идентичны. В дистрибутиве мы использовали систему busybox. Тот, который мы получили от продавца, является sysvinit. Я удалил mdev из busybox, и мы используем только udev.

Когда я использую ядро ​​на нашей сборке, вы можете отключить драйвер сенсорного экрана или не запускать или делать что-то совершенно волшебное. Я не уверен, что ... есть устройство/dev/input/event0, которое при запуске на стороне sysvinit является сенсорным устройством. Является ли ядром не механизм, который связывает встроенные драйверы с узлом устройства? Я думал, что udev был для более динамичных событий в системе.

С другой стороны, я не могу сказать, что было загружено на моем устройстве. Есть ли способ перечислить запущенные драйверы, встроенные в ядро? моя сенсорная панель поднята? Это довольно простой процесс просмотра реестра, чтобы узнать, какие устройства были загружены.

Я думаю, что я действительно пытаюсь обнаружить, это не так много, как добавить драйвер в ядро, его все, что происходит, связано. Я нашел много документов о создании модулей ядра, но я не нашел хорошего ресурса о том, как собрать все вместе с нуля, чтобы вы могли фактически использовать указанные модули. Возвращаясь к примеру драйвера сенсорного экрана, встроенного в ядро, как он подключается к/dev/input/event0 ??

Мне очень сложно найти хорошие ресурсы в основном из-за поиска google для разметки linux/drivers/device nodes/piles в тоннах случайного дерьма со всех сторон.

+1

Попробуйте 'initcall_debug' в командной строке ядра. Немного больше информации [здесь] (http://stackoverflow.com/questions/12865054/init-function-invocation-of-drivers-compiled-into-kernel/12869195#12869195) Другим ресурсом для использования является ** системный журнал **, извлекаемый с помощью команды ** dmesg **. – sawdust

ответ

2

Возможно, вы сейчас захотите использовать evtest. Это позволит вам узнать, какие устройства ввода присутствуют и готовы к использованию в вашей системе.

Чтобы получить дополнительную информацию о входной подсистеме и более общую информацию о том, как работает ядро, я могу направить вас на наш training materials. Материалы могут свободно загружаться, использоваться и распространяться.

2

Общий ответ: нет единого места для поиска того, какие драйверы были загружены ядром, если они скомпилированы. Конечно, lsmod будет отображать любые драйверы, которые были динамически загружены после загрузки ядра.

Ядро не создает узлы устройства. То есть, чтобы указать ваш вопрос, ядро ​​не «связывает» драйвер с узлом устройства. Связь между драйвером ядра и узлом устройства содержится в основных и младших числах, зарегистрированных при инициализации драйвера. У вас может быть узел устройства в вашей файловой системе, для которого нет соответствующего драйвера (особенно в старых устройствах, где узлы устройств были созданы в файловой системе статически), и вы также можете установить драйвер, для которого нет узла устройства.

Современные дистрибутивы Linux имеют динамически создаваемые узлы устройств, созданные в точке монтирования/dev, и обычно это файловая система tmpfs, что означает ее неустойчивость - она ​​уничтожается при каждой загрузке и динамически воссоздается при каждой новой загрузке.

udev - это магия, которая создает большинство узлов устройства на основе событий, которые он получает от ядра при обнаружении нового устройства (это может быть после загрузки на плагине устройства, например, на USB-диске) или при запуске, когда udev читает событий в очереди и действует на них. Как вы отметили, busybox имеет ограниченную реализацию udev, называемую mdev.

Изучите udev, и вы получите гораздо лучшее понимание процесса. Надеюсь, это немного поможет.

+0

Это помогает, я думаю, что встроенный дистрибутив, который мы используем, имеет новый метод и создает папку/dev при запуске. Я не получаю все устройства ввода, которые мне нужны, хотя. Мне не хватает драйвера клавиатуры, я думаю, в списке узлов устройства. Итак, я начну изучать udev, это то, что мы будем использовать, даже если мы решим переключиться на занятый ящик. – Kevin

+0

У меня есть еще один быстрый вопрос: есть ли какие-нибудь учебники/платформы, которые делятся вокруг ходьбы, чтобы получить созданный драйвер и переполнены udev? http://www.linuxfromscratch.org/lfs/view/development/chapter07/udev.html http://www.linux.com/news/hardware/peripherals/180950-udev Чтение это весело и все но я до сих пор не понимаю, почему мой сенсорный экран не монтируется в/dev/input/event0 при использовании udev + busybox vs udev + sysvinit, – Kevin

+0

. Лучший учебник для udev - это глава 19 Embedded Linux Primer (http: // www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0137017839) от шарикана. В частности, это «Использование udev с busybox». –

Смежные вопросы