John-Paul Smith wrote:
> Now here's a problem which I've always wanted to know the answer to.
> Whenever I try to compile a kernel with modules, it never works properly.
> Basically, none of the modules will load due to unresolved symbols, e.g.:
>
> # modprobe 3c59x
> /lib/modules/2.2.15-4mdk/net/3c59x.o: unresolved symbol __global_cli
> /lib/modules/2.2.15-4mdk/net/3c59x.o: unresolved symbol __global_save_flags
> /lib/modules/2.2.15-4mdk/net/3c59x.o: unresolved symbol
> __global_restore_flags
>
> I've looked around on mailing list archives, etc, and this problem has been
> reported by quite a few different ppl, in various situations, and I have not
> seen any definitive solution.
>
> My compile procedure is:
>
> rm -fr /lib/modules/*
> make clean
> make dep
> make bzImage
> make modules
> make modules_install
>
> This is straight from the Mandrake book. I've also tried using make mrproper
> instead of make clean, and that makes no difference.
I don't know whether this is Mandrake-specific, but it seems to me
that modprobe needs _something_ to resolve "external" symbols.
The "something" could be the new kernel (if already booted)
but I rather think it is the System.map file (created in the
top kernel source directory).
Also, "make bzImage" does NOT _install_ the new kernel, it just
compiles it ... and it's very possible that your new module
_needs_ the new kernel already active ...
Personally I always do this after compilation of a new kernel:
1. cp bzImage /boot/vmlinuz-new
2. rdev -R /boot/vmlinuz-new 1 (this to make it read-only)
3. cp System.map /boot/System.map-new
4. cd /boot;ln -sf System.map-new System.map
5. add new entry to lilo.conf, pointing to new kernel
6. lilo -v -v
7. reboot and select label for new kernel
Now, if you don't want to reboot, I'm not sure that the new module
_can_ work with your previous kernel. If it can, I guess you could
try to replace the System.map under /boot for modprobe to use.
--
Jean-Louis Debert [EMAIL PROTECTED]
74 Annemasse France
old Linux fan