The day before yesterday I wanted to finally get auto-loading of modules to work on my laptop. I use usb-storage from time to time and also use my sound card less than one third of the times the unit is turned on. These modules should load when there's a demand for accessing the devices devfsd manages on their behalf. After a few false starts I think I got a good grip on how it's supposed to work. But I never successfully got a lookup in /dev to trigger any loading.
When I discussed the matter with SpaceNuts over at #archlinux we came to the conclusion that MODLOAD doesn't work with 2.6 kernels on Arch. This was after alot of experimenting, and since apparently none of us have too much knowledge about the devfsd/modprobe combination we'd very much like to hear other people's opinions on this. SpaceNuts is on a stock 2.6.5 kernel delivered by pacman, while my 2.6.4 kernel was built through ABS, customized with make menuconfig and has the bootsplash patch applied.
After we gave up on MODLOAD we tried 'EXECUTE /sbin/modprobe' as a substitute. This is not really the way to go, and devfsd even tries to prevent you from doing it. It will complain if you as much as thinks about running a command with modprobe anywhere in the name and says something like "don't use EXECUTE modprobe, use MODLOAD". The only way we could make it work was by creating what we call a foobar link. By having a link to /sbin/modprobe from somewhere, say /root/foo, you can use
LOOKUP .* EXECUTE /root/foo $devpath
This will have the exact same effect as the default and desired 'LOOKUP .* MODLOAD' because they both result in a call to 'modprobe /dev/sda1' whenever /dev/sda1 is accessed while nonexistent. (That's just an example, the line will do the same for any nonexistent entry under /dev that you access.)
So, does anybody have auto-loading working for any kind of module using MODLOAD on 2.6?
My aliases for my ethernet devices works (these modules are NOT in rc.conf)
alias eth0 tg3
alias ndiswrapper wlan0
but I can't get nvidia or alsa modules to load using it.
Hobbes : Shouldn't we read the instructions?
Calvin : Do I look like a sissy?
My ne2k-pci also works correctly from modprobe.conf and kernel 2.6.6 but maybe it has something to do with the boot process (eth0 device is accessed with /etc/rc.d/network script at startup)? Maybe I'll try to experiment with snd modules when I get back home.
Loading of network modules doesn't have anything to do with devfs. When ifconfig is bringing up eth0 it asks modprobe to load eth0, which is resolved to some nic driver by an alias like 'alias eth0 8139too' in modprobe.conf.
When you try to access for example /dev/sda1 and that device node doesn't exist, devfsd is supposed to ask modload to load /dev/sda1, which is resolved to whatever if you have an alias like 'alias /dev/sda* whatever'. This only happens if you have the line 'LOOKUP .* MODLOAD' in devfsd.conf, but that's how it is configured by default. The problem is that the whole MODLOAD business doesn't seem to work on 2.6. The EXECUTE hack mentioned in my original post works like charm, but is obviously not the right way.
devfsd .... modload .... coment out if you do not use it ???
Nobody said on this thread that they didn't want to use MODLOAD. Actually, like I said on this thread, the reason why nvidia's driver doesn't load the way they want it to is because MODLOAD doesn't do what it should. If it did, the driver would probably load fine using the setup made by the install script.
Well I could not get nvidia to work if I used pacman to say install kernel...
I had to use ABS which is not the best way (rolling own would be better )
Which I was talked out of doing by yourself :-)
if nvidia is installed & you want to upgrade then try removing old install first (--uninstall)