Michael Hilgers hat geschrieben:Habe ich das richtig verstanden, dass hierbei RTC als Modul gesetzt ist und der Kernel der entsprechenden Major/Minor kein Modul zuweisen kann? Sprich, es fehlt lediglich der Alias-Eintrag in der /etc/modules.conf?
Ich versuche das mit einem Beispiel zu erklären:
Hinzufügen muß ich noch, daß beim Kernel 2.6, statt der modules.conf das Verzeichnis /etc/modprobe.d verwendet werden sollte
Code: Alles auswählen
root@gms4:/etc/modprobe.d# # es gibt keinen alias für char-major-10-135:
root@gms4:/etc/modprobe.d# grep -R 10-135 *
root@gms4:/etc/modprobe.d# # es gibt zwei Module für das Gerät char-major-10-135:
root@gms4:/etc/modprobe.d# grep 10-135 /lib/modules/`uname -r`/modules*
/lib/modules/2.6.18-3-686/modules.alias:alias char-major-10-135 rtc
/lib/modules/2.6.18-3-686/modules.alias:alias char-major-10-135 genrtc
root@gms4:/etc/modprobe.d# # keines davon wurde geladen:
root@gms4:/etc/modprobe.d#:~# lsmod | grep rtc
root@gms4:/etc/modprobe.d#
root@gms4:/etc/modprobe.d# modprobe char-major-10-135
WARNING: Error inserting genrtc (/lib/modules/2.6.18-3-686/kernel/drivers/char/genrtc.ko): Device or resource busy
root@gms4:/etc/modprobe.d#:~# lsmod | grep rtc
rtc 12372 0
root@gms4:/etc/modprobe.d# # es wurde versucht beide Module zu laden, das zweite (genrtc) hat einen Fehler geliefert
root@gms4:/etc/modprobe.d# # wir entladen das Modul
root@gms4:/etc/modprobe.d#:~# rmmod rtc
root@gms4:/etc/modprobe.d# # und vertauschen die zwei Zeilen in module.alias
root@gms4:/etc/modprobe.d# vi /lib/modules/2.6.18-3-686/modules.alias
root@gms4:/etc/modprobe.d# modprobe char-major-10-135
WARNING: Error inserting rtc (/lib/modules/2.6.18-3-686/kernel/drivers/char/rtc.ko): No such device
root@gms4:/etc/modprobe.d#:~# lsmod | grep rtc
genrtc 8608 0
root@gms4:/etc/modprobe.d# # es wurde versucht beide Module zu laden, das zweite (rtc) hat einen Fehler geliefert
root@gms4:/etc/modprobe.d# # jetzt fügen wir einen alias für ein nicht vorhandenes Modul ein:
root@gms4:/etc/modprobe.d# echo "alias char-major-10-135 xxxx" >local
root@gms4:/etc/modprobe.d# modprobe char-major-10-135
FATAL: Module xxxx not found.
root@gms4:/etc/modprobe.d# # keines davon wurde geladen:
root@gms4:/etc/modprobe.d#:~# lsmod | grep rtc
root@gms4:/etc/modprobe.d#
Daher wenn deine obige Fehlermeldung auftaucht, müssen beide Bedingungen erfüllt sein. Es darf kein Alias definiert sein und es darf kein Module für dieses Gerät vorhanden sein
Wurde kein Alias definiert und es gibt mehrere Module, werden beide versucht zu laden.
Michael Hilgers hat geschrieben:
Noch ne generelle Frage: Wenn ich aus den Kernelquellen mehrmals einen Kernel bastle, beim 1. Mal als Modul, beim 2. Mal einkompiliert: wird dann das entsprechende Modul in /lib/modules/ gelöscht oder müllt das Verzeichnis mit der Zeit zu?
Wenn du dich nicht als Kernelhacker versuchst, solltest du das möglichst vermeiden (EXTRAVERSION im Makefile setzen, oder bei make-kpkg die append-to-version Option verwenden)
Gruß
gms