Hallo,
ich habe einen Treiber für ein embedded Linux gebaut.
Bisher muss ich den recht umständlich über Konsole laden:
1
insmod driver.ko
2
mknod /dev/driver0 c 10 200
Wie erreiche ich es, dass der Treiber dauerhaft, dh. auf nach einem
Reboot geladen wird, so dass ich die beiden oben genannten Befehle nicht
mehr ausführen muss?
wie wäres es mit eintragen in die /etc/modules und erstellen von
passenden udev rules? ein kleines googlen von "linux treiber automatisch
laden" sollte dir auch sagen wie das geht.
Wenn die Antwort flapsig war, dann überdenke den Informationsgehalt
deines Posts.
olpo schrieb:> Bei diesem embedded Linux...
Ja, welches ist denn das eine embedded Linux?
Nutzt du udev, oder noch was älteres?
Hast du ein Verzeichnis /etc/modprobe.d/?
Entweder Du trägst die Befehle in eines der Startscripte deines
ungekannten Embedded Linux ein. Auch das kleinste Linux hat ein
/etc/rc.local oder so was.
Oder Du erstellt einen neuen Kernel mit Deinem Driver fix drin.
Wenn Du einen Driver erstellen kannst, findest Du sicher auch die
Information, wie man das tut.
olpo schrieb:> Eine flapsige Antwort, wie es in diesem Forum nicht anders zu erwarten> war...
Auf eine Frage, der mal wieder die zur Beantwortung nötigen
Informationen fehlen, was auch nicht anders zu erwarten war...
> Bei diesem embedded Linux gibt es kein /etc/modules.
Ach bei "diesem". Ja, das hätte man natürlich wissen müssen.
Dann gilt das hier:
Daniel B. schrieb:> Entweder Du trägst die Befehle in eines der Startscripte deines> ungekannten Embedded Linux ein.
Mangels weiterer Infos kann man es nicht genauer angeben.
olpo schrieb:> Eine flapsige Antwort, wie es in diesem Forum nicht anders zu erwarten> war...
Wenn dir die Antwort zu flapsig ist, gib uns mehr Informationen. du
sagst nur du hast ein kernel Module und lädst es mit mknod -c 10 200
(welches ein tun/tap device sein könnte, nach der Major/Minor Nummer,
aber selbst das sagst du nicht)
du sagts nichts über den Userspace und nicht über dein Enviorment und
dann erwartest du das wir dir genau sagen wo dein Schuh dich drückt.
Wie stellst du dir das Vor?
olpo schrieb:> Eine flapsige Antwort, wie es in diesem Forum nicht anders zu erwarten> war...
nein, das war die richtige antwort.
wenn es kein "vollständiges sysV" ist, dann hättest du das mitteilen
müssen, inklusive was du alles versucht hast, und wo du hängst.
um das formulieren zu können, hättest du dich allerdings schon
eigenständig einlesen müssen, was du anscheinend nicht gemacht hast.
wie sieht dein embedded linux aus? ist es eventuell nur ein
kernel+initrd?
olpo schrieb:> ich habe einen Treiber für ein embedded Linux gebaut.
Für was für ein Gerät ist dieser Treiber?
An was für einem Bus hängt das Gerät?
Hat das embedded Linux Device Tree oder ACPI?
Normalerweise versucht man nämlich, daß der Kernel das Gerät beim
Enumerieren der Busse erkennt und dann über udev automatisch der
passende Treiber dazu gefunden und geladen wird.
Daniel B. schrieb:> Entweder Du trägst die Befehle in eines der Startscripte deines> ungekannten Embedded Linux ein. Auch das kleinste Linux hat ein> /etc/rc.local oder so was.
So ein Blödsinn. Linux IST der Kernel, sonst nix. Alles andere ist dann
Zusatzsoftware wie SysVInit oder SystemD.
Ergo: In einem embedded-Linux muss zwangsläufig nix davon vorhanden
sein.
Die /etc/rc.local gibt es nur auf Debiansystemen und selbst da ist sie
nicht immer Aktiv.
Alternative wehre da es etwas mehr als nur das Modul laden ist sich ein
Start script zu basteln ist auch nicht so wild wie es aussieht.
Und was debian noch kann ist der @boot Parameter in der Crontab der ein
script einmalig beim Booten läd aber das ist Debian Onley.
Udev Rules wehre auch ne Möglichkeit sofern es vorhanden ist.
Module als Autoload:
https://www.thomas-krenn.com/de/wiki/Automatisches_Laden_von_Linux_Kernel_Modulen_beim_Booten
K. J. schrieb:> Die /etc/rc.local gibt es nur auf Debiansystemen und selbst da ist sie> nicht immer Aktiv.
Das ist Quatsch. Die rc.local ist Standard, kann allerdings bei einigen
Distributionen auch in /etc/init.d liegen.
> Alternative wehre da es etwas mehr als nur das Modul laden ist sich ein> Start script zu basteln ist auch nicht so wild wie es aussieht.
Meinst du ein init-Skript? Das wäre eine Möglichkeit.
> Udev Rules wehre auch ne Möglichkeit sofern es vorhanden ist.
Ich halte es für sehr unwahrscheinlich, dass es auf dem System zwar udev
gibt, aber keine rc.local oder vergleichbare Datei.
> Und was debian noch kann ist der @boot Parameter in der Crontab der ein> script einmalig beim Booten läd aber das ist Debian Onley.
Du meinst @reboot, und das ist überhaupt nicht Debian-spezifisch,
sondern Teil von Vixie Cron bzw. ISC Cron, was nicht mal auf Linux
beschränkt ist, sondern auch noch auf allerhand anderen Unix-Derivaten
standardmäßig zum Einsatz kommst.
Nur bei den ganz kompakten Distros, die auf Busybox basieren, gibt's das
nicht, da der cron aus Busybox das nicht implementiert.
Aber ohne jegliche Infos über "dieses embedded Linux" ist das alles nur
Gestocher im Nebel. Auf den großen Linux-Distributionen funktionieren
alle bisher genannten Wege. Embedded-Linuxe sind aber meist viel kleiner
ausgelegt und gezielt an einen bestimmten Anwendungsfall angepasst,
deshalb kann es sein, dass einzelne (oder im Extremfall alle) Vorschläge
nicht funktionieren.
Bernd K. schrieb:> LongDon schrieb:>> oder SystemD.>> Systemd schreibt man mit kleinem "d" am Ende,
und mit kleinem "s" am Anfang.
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.