I am currently trying to build the FUSE filesystem as an kernel module, but in order to do so I need to prepare the kernel source.
I've downloaded the kernel source from WD and created the symbolic links /lib/modules/build /lib/modules/source to the extracted vendor/linux-kernel directory.

Right now I need to copy the running kernel's config (usually found in /boot/config-X.Y.Z) to .config at the top of the source tree.

Does anyone know where i can find the running kernel config?? e.g. config-X.Y.Z?

The problem I have now, and I assume you will have, is that the toolchain is currently GCC 3.4 but the actual kernel on the mybook appears to have been compiled with GCC 4.1, so insmod refuses to load my compile module. Let me know if you hit the same problem.

It's def 4.1.0, just cat /proc/versions to see it. I'm building the 4.1.0 toolchain right now. I have a kernel config I'm working with but I have no idea if the modules will accept to be insmoded until I get a clean 4.1.0 build. I'll report back.

I just compiled xfs and jfs and I was able to modprobe both successfully. Don't know if they really work, since I didn't had success building the userspace tools.
Did you add an entry in /lib/modules/2.6.17.14/modules.dep ? I was getting the same error until I add manually the two modules in modules.dep.

Any chances you could toss that xfs module my way? The ext3 module doesn't support xattr and I was hoping that the xfs module did. There's mkfs.xfs on the MBWE already but no mount support without that module.

I've just apparently successfully built a scsi tape module to use with
a scsi-usb adapter - that is, I can use the tape drive!

There were quite a few gotchas en route, some of which people have
already mentioned, but some I haven't seen. Here's my summary of what
went wrong; ask for more details if you want.

I have the old firmware, with gcc installed.

The kernel is built with gcc 4.1, so I first tried to build that
directly on the Mybook, bootstrapping from the installed gcc-3.2.
Initially, this failed early on, because it tried (which it shouldn't
in a release) to build documentation, and makeinfo isn't installed.
This problem can be worked round by making with
make MAKEINFO=/bin/true

This still failed, because of some problem about mismatch when linking
between object files compiled for hardware floating-point and for
software floating point. Googling suggested that at some point this
was a problem in gcc, probably in the specs file, but I couldn't face
understanding this. I found the suggestion that passing
—no-warn-mismatch to ld would ignore this error; but I couldn't find
a gcc configure option that would pass this option to ld whenever it
was called (setting LDFLAGS doesn't work everywhere). I eventually
gave up and replaced ld by a script that passes its argument to ld
with the —no-warn-mismatch option prepended.
I then configured with
../gcc-4.1.0/configure —enable-languages=c -enable-softfloat —disable-hardfloat
and made as above.

This still didn't work, because for some reason the automatic
configuration is not picking up that this is a uClibc system, and is
building executables that rely on ld-linux.so instead of ld-uclibc.so.
I'm sure there's an option to fix that, but again I was fed up, so I
just linked /lib/ld-uclibc.so.0 to the /lib/ld-linux.so.2 that the
compiler was putting in the executables. I guess this may mess up
normal programs in subtle ways, but I reckoned that kernel modules
don't depend on any of this stuff, so it shouldn't matter.

At this point, make install worked and gave me a 4.1 gcc in
/usr/local/bin.

I then unpacked the 2.6.17.14 kernel sources from the mybook package.
I did a manual configure, trying to do the easiest thing at every
stage.
Building modules was fairly straightforward - just remembering (since
I was building natively) to run with make CROSS_COMPILE= or
alternatively to edit the arm-linux-gnu out of the Makefile.

I then ran into the problems above about inserting the modules.
Firstly, to use modprobe one needs an up-to-date modules.dep .
One can edit by hand; but I decided to grab and install the depmod
utility (look for module-init-tools source).

Then I got version mismatch. My modules looked like locos' . However,
the pre-existing modules have version string
2.6.17.14 preempt mod_unload ARMv4 gcc-4.1

which gave the clue that:

essential kernel config: enable PREEMPT

After reconfiguring and remaking, I got an st module that loaded ok,
and attached itself to the scsi tape drive.
However…whenever I tried to open the drive, the open failed, with a
kernel message from st.o that it couldn't allocate a one page buffer.

This took me three days to understand: I traced that alloc_pages was
failing in a place where it says it should never fail, and by
exploring some data structures via code my module, I found that indeed a
pointer was NULL that (supposedly) shouldn't have been. Very odd,
since obviously kernel memory allocation is working in the rest of the
kernel.
I tried tweaking the most obviously related kernel config: switch on
support for EMBEDDED, and disable full-size core data structures.
No joy.
Eventually a light went on, and I enabled the "optimize for size, not
speed" CC_OPTIMIZE_FOR_SIZE config option.

Success!

So, to repeat the key gotcha:

enable CONFIG_CC_OPTIMIZE_FOR_SIZE in your kernel configuration.

I'd be happy to hear the correct way of doing all the horrible hacks I
did just to get things working.

hi,
I know its an old post…but could you explain how to patch the two makefiles to get the libintl_gettext errors out?
Maybe the files are stored somewhere :) …
I've tried it but without success, only causing other errors. :(
My target would be to get fuse running and adding wlan to my box.