module autoloading doesn't work: modprobe PATH problem (yes, another one)
Ignacio García Pérez
iggarpe at terra.es
Thu May 17 06:44:34 UTC 2007
Hi,
I'm debugging some problems that have arised when I upgraded the busybox
and kernel versions of my system. Yesterday I struggled with a PATH
problem in udev, and today I stumbled upon another PATH problem, this
time with modprobe, which completely clobbers the module autoloading
feature of the kernel.
When the kernel wants to load a module, it executes
/proc/sys/kernel/modprobe, which by default points to /sbin/modprobe.
The "real" modprobe does everything by itself (resolve dependencies and
load modules), but busybox's modprobe makes external calls to insmod,
relying on the PATH to find the insmod executable.
The problem is obvious: the kernel does not set up a PATH variable when
calling /sbin/modprobe, and thus modprobe fails miserably.
I've done a quick fix by setting the absolute path of insmod and rmmod
inside modprobe.c, but I'm not sure if this is the best solution.
On one hand, setting the absolute path breaks the freedom of the use to
choose where to put his binaries.
On the other hand, we are trying to replicate the functionality of the
"real" modprobe, and it does its work without using external binaries,
thus with the "real" modprobe the user has no freedom to choose which
insmod executable to use anyway.
Any suggestions?
Regards.
Nacho.
More information about the busybox
mailing list