Что такое 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 и большинство дистрибутивов в настоящее время делают по умолчанию.