[SOLVED] "unionfs.ko needs unknown symbol __rcuref_hash
With the latest 2.6.14.x kernels there is a problem compiling the unionfs.ko module in that it produces a warning message regarding "__rcuref_hash" not being a valid symbol. In fact with closer inspection it also cripples the nfsd modules as well as one of the generic usbe modules. I have been churning over this the last few days and alas have finally found a solution.
With your newer 2.6.14.x kernel you will need to edit kernel/rcupdate.c in the linux tree, with the two lines prefixed with a "+" below.
Code:
--- linux-2.6.14.3/kernel/rcupdate.c 2005-11-29 14:53:02.000000000 +1100
+++ linux-2.6.14.x-unionfs/kernel/rcupdate.c 2005-11-29 14:51:39.000000000 +1100
@@ -84,6 +84,8 @@
spinlock_t __rcuref_hash[RCUREF_HASH_SIZE] = {
[0 ... (RCUREF_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED
};
+
+EXPORT_SYMBOL(__rcuref_hash);
#endif
/**
Alternatively if you hadn't guess you could build a patch file with the above text and use it that way. That being said I can't provide any guarantee for damage it may cause, the howto will be updated pending further tests.
Enjoy.
Re: HOWTO: Customising/Upgrading the Kernel - An Evolving Ho
Quote:
Originally Posted by firnsy
<snip>
At this point I will apply any patches I want to use in the kernel, for example squashfs, gensplash, etc. Once the kernel is patched to your liking it is time to configure it. To ensure the new kernel is baselined from the Knoppix kernel I use the Knoppix config as the baseline. Taking Knoppix version 3.8.1/2 as an example, and using the default options that popup:
Code:
cp /boot/config-2.6.11 .config
make oldconfig
make menuconfig
make modules
make modules_install
<snip>
I don't do a 'make install' cause I find it simpler to just copy what I need.
Code:
cp arch/i386/boot/bzImage /boot/vmlinuz-2.X.YY
cp System.map /boot/System.map-2.X.YY
cp .config /boot/config-2.X.YY
In this section you never actually make the kernel, which could be confusing to someone who hasn't ever done it before.