Что такое mdev и как узлы /dev/* создаются в Linux?

Наше ядро ​​Linux 2.6.31 работает на встроенном процессоре MIPS с busybox.

Сценарий инициализации (rcS) запускает mdev с:

echo "/sbin/stbhotplug" > /proc/sys/kernel/hotplug
mdev -s

Может кто-нибудь сказать мне, что делает утилита Linux mdev?

Похоже, он выполняет автоматическое горячее подключение, так как stbhotplug - это скрипт, который обрабатывает интерфейсы Ethernet.

Кроме того, у rootfs, который нам дали, есть только консольное устройство, т.е. /dev/console это единственный файл в /dev,

Тем не менее, когда система работает, /dev каталог полон файлов устройств (например, /dev/mtd, так далее.).

Причина, по которой я спрашиваю, состоит в том, что иногда мы получаем сообщение об ошибке, согласно которому /dev/ubi_ctrl не найден или /dev/ubi1 не найден.

Как или когда Linux создает эти устройства?

Благодарю.

3 ответа

Решение

mdev - это легкая альтернатива udev для использования во встроенных устройствах. Оба обрабатывают создание файлов устройств в /dev и начало действий, когда происходят определенные события.

mdev в основном звонки mknod для набора предварительно настроенных файлов устройства.

Если у вас есть выбор, используйте вместо этого:

CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

которая автоматически монтирует специальную файловую систему devtmpfs под /devи позволяет модулям автоматически создавать свои собственные файлы устройств на insmod, как показано на: https://stackoverflow.com/questions/5970595/how-to-create-a-device-node-from-the-init-module-code-of-a-linux-kernel-module/45531867

Это то, что Buildroot и большинство дистрибутивов в настоящее время делают по умолчанию.

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