Was ist mdev und wie werden / dev / * Knoten unter Linux erstellt?

11

Unser Linux-Kernel 2.6.31 läuft auf einem eingebetteten MIPS-Prozessor mit Busybox.

Das Initialisierungsskript (rcS) startet mdev mit:

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

Kann mir jemand sagen, was das Linux-Dienstprogramm mdev macht?

Es sieht so aus, als würde es automatisch Hot-Plugging durchführen, da der stbhotplug ein Skript ist, das Ethernet-Schnittstellen handhabt.

Außerdem hat das Rootfs, das wir erhalten haben, nur ein Konsolengerät, dh es /dev/consoleist die einzige Datei in /dev.

Wenn das System ausgeführt wird, ist das /devVerzeichnis jedoch voll mit Gerätedateien (z /dev/mtd. B. usw.).

Der Grund, den ich frage, ist, dass wir gelegentlich einen Fehler erhalten, bei dem gemeldet wird, dass er /dev/ubi_ctrlnicht oder /dev/ubi1nicht gefunden wurde.

Wie oder wann erstellt Linux diese Geräte?

Vielen Dank.

user626201
quelle

Antworten:

6

mdev ist eine leichte Alternative zu udev für die Verwendung in eingebetteten Geräten. Beide übernehmen das Erstellen von Gerätedateien /devund das Starten von Aktionen, wenn bestimmte Ereignisse eintreten.

Daniel Böhmer
quelle
Wenn /devalso keine Geräte erstellt werden, kann dies ein Problem mdevoder ein Zeitproblem sein?
Ja, soweit ich verstehe, könnten beide wahr sein. Aber ich habe die Antwort nur geschrieben, weil ich gestern in einem Nachrichtenartikel über mdev gelesen hatte. Generell habe ich keine Erfahrung damit und kann keine weitere Hilfe geben. Deshalb habe ich meine Antwort als Kick-Start für eine Community-Wiki-Antwort veröffentlicht.
1

mdevmknoderfordert grundsätzlich eine Reihe vorkonfigurierter Gerätedateien.

Wenn Sie eine Wahl haben, verwenden Sie stattdessen:

CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y

Dadurch wird das spezielle Dateisystem devtmpfs automatisch unter bereitgestellt /dev, und Module können automatisch ihre eigenen Gerätedateien erstellen insmod, wie unter /programming/5970595/how-to-create-a-device-node-from gezeigt -der-Init-Modul-Code-eines-Linux-Kernel-Moduls / 45531867 # 45531867

Dies ist, was Buildroot und die meisten Distributionen derzeit standardmäßig tun.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
quelle