Ich habe ein benutzerdefiniertes Kernelmodul (unter ArchLinux), das ich manuell laden und mit dem ich interagieren kann. Was ich tun möchte, ist, es beim Booten laden zu lassen. Bisher habe ich es geschafft, dass das Gerät /proc/devices
beim Booten angezeigt wird .
Wie man beim Booten einen Knoten daraus macht, verfolgt mich. Nachdem udev
ich mir die meisten Beispiele angesehen habe, verwenden Sie USB-Laufwerke als Leitfaden, was bei mir nicht der Fall ist. Das eigentliche Gerät ist eine maßgeschneiderte E / A-Karte. Es ist ein Charaktergerät.
Unten finden Sie das Skript zum Laden des Geräts aus der Shell (was funktioniert):
#!/bin/sh
sudo insmod ./robsio.ko
DEV=`cat /proc/devices | grep robsio | awk '{print $1}'`
sudo mknod /dev/proc/robsio c $DEV 0
boot
arch-linux
udev
Rob Sloot
quelle
quelle
Antworten:
Alle Geräteknoten, in denen Sie erstellen
/lib/udev/devices
, werden/dev/
beim Systemstart kopiert :Wenn Sie Ihren Benutzern jedoch etwas Bequemeres bieten möchten, können Sie zwei Ansätze verfolgen:
Sie können den Treibercode ändern, um einen Geräteknoten zu erstellen:
drivers/base/core.c::device_add(struct device *dev)
Ermöglicht das Erstellen von Geräteknoten , wenn Ihrstruct device
devt
Feld nicht Null ist:Da dies nur funktioniert, wenn Sie ein statisches Dur / Moll auswählen, ist dies möglicherweise nicht der beste Weg, aber in der gesamten Dokumentation werden diese "statischen Geräteknoten" häufig erwähnt, sodass möglicherweise noch Platz für die Erstellung statischer Geräteknoten vorhanden ist .
Sie können udev-Regeln für Ihre Geräte angeben. Daniel Drake hat ein nettes Tutorial geschrieben , das vielleicht aufschlussreicher ist als die
udev(7)
offizielle Dokumentation.quelle
Sie können damit beginnen, dass Sie
robsio
in/etc/modules
oder überall dort, wo Ihre Distribution nach Modulen sucht, die beim Booten geladen werden sollen (normalerweise nach der automatischen Erkennung). Möglicherweise befindet es sich/etc/modules.d/_____
auf Ihrem System.Danach können Sie im Modulcode nach einem Proc-Eintrag fragen, aber das liegt außerhalb meines Fachgebiets, also überlasse ich es den Gurus.
quelle