Наше ядро 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 создает эти устройства?
Спасибо.
mdev - это легкая альтернатива udev для использования во встроенных устройствах. Оба обрабатывают создание файлов устройств в /dev
и запуск действий при наступлении определенных событий.
Вот это ссылка на учебник по mdev.
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#45531867
Это то, что Buildroot и большинство дистрибутивов в настоящее время делают по умолчанию.