Ok, finally I managed to compile the FUSE and NTFS-3G drivers for the N5200... and... I can mount NTFS partitions read/write
Here are my experiences on how to get a build environment for compiling kernel modules for the N5200:
1) Get and compile GCC 3.3.6
# wget
ftp.gwdg.de/pub/misc/gcc/releases/gcc-3.3.6/gcc-3.3.6.tar.bz2# tar xjf gcc-3.3.6.tar.bz2
# mkdir gcc-build && cd gcc-build
# ../gcc-3.3.6/configure --prefix=/opt/gcc336 --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++
# make && make install
Now you have a 3.3.6 GCC installed in /opt/gcc336.
In order to use the GCC 3.3.6, make sure that the folder containing its binaries comes first in the PATH environment variable:
# export PATH=/opt/gcc336/bin:$PATH
2) Get the 2.6.13.5 kernel from kernel.org and unpack it in /usr/src.
As an alternative get the Thecus GPL tar file and copy the kernel to /usr/src. At least you need the .config file from the GPL code so that you have the same kernel configuration.
Then
# cd linux-2.6.13.5
# make prepare
That's all!
I've downloaded the actual version of FUSE and NTFS-3G and compiled them.
FUSE:
# ./configure --prefix=/opt/fuse --exec-prefix=/ --enable-kernel-module --cache-file=/dev/null --srcdir=. --with-kernel=/usr/src/linux-2.6.13.5 --with-kernel-build=/usr/src/linux-2.6.13.5
# make && make install
NTFS-3G:
# ./configure --prefix=/opt/ntfs3g
# make && make install
Some notes on the previous posts:
- The error message "Invalid module format (-1): exec format error." comes when the kernel configuration doesn't match. Check the error messages with the dmesg command. The kernel version string NEEDS to be "2.6.13N5200 PENTIUM4 gcc-3.3".
- The unresolved symbols I've got were due to wrong kernel configuration settings (they didn't match the one Thceus used for the N5200). Either use the .config kernel configuration file from the GPL source code archive or make sure, that at least the following kernel settings are defined/not defined:
CONFIG_NOHIGHMEM=y
CONFIG_SECURITY is not set
CONFIG_HUGETLBFS is not set
CONFIG_HUGETLB_PAGE is not set
CONFIG_MPENTIUM4=y
CONFIG_LOCALVERSION=N5200
Check the kernel Makefile so that in line 4 the variable EXTRAVERSION is not set!
- The binutils version doesn't make a difference (at least not for me): I'm using binutils 2.16.91.0.2 without any problems.
- fajo: using the "preinstalled" kernel means that I've installed the SuSE source kernel RPM and used that one. But at least for the function register_filesystem() vs. __register_filesystem() there is a difference between the SuSE 2.6.13 and the vanilla 2.6.13 kernel source. Therefore I recommend to use the vanilla 2.6.13.5 kernel.
Hope that helps a little, mates....
For the final question which might come up: at the moment I don't know when I'll have time to create a NTFS3G module for the N5200. I'll be on a business trip quite soon.....
Andreas