1. ./install.sh (всю работу выполнит скрипт)
или
2. make && make install && make load (если хочется руками)
Начал с первого. Получил следующий вывод:
Код: Выделить всё
root@eternity:/var/tmp/ufsd# ./install.sh
configure kernel
scripts/kconfig/conf -s arch/i386/Kconfig
#
# using defaults found in .config
#
CHK include/linux/version.h
ufsd driver can be compiled for kernel 2.6.17.11(2.6.17)
We can build module only for 2.6.x kernels
Ufsd module was't madeНачал ковырять скрипт на предмет того, почему он там was't made. Оказывается скрипт вываливается на команде make, чей вывод был перенаправлен в /dev/null, из-за чего и не видно ошибки. Избавил скрипт от этого недочёта, он выплюнул следующее:
Код: Выделить всё
root@eternity:/var/tmp/ufsd# ./install.sh
configure kernel
scripts/kconfig/conf -s arch/i386/Kconfig
#
# using defaults found in .config
#
CHK include/linux/version.h
ufsd driver can be compiled for kernel 2.6.17.11(2.6.17)
We can build module only for 2.6.x kernels
echo "I'll get kernel includes from /include"
I'll get kernel includes from /include
gcc -DMODULE -fshort-wchar -DUFSD_NTFS2=1 -DUFSD_NTFS_SECURITY -DUFSD_NTFS_OBJECTID -DNDEBUG -DUFSD_DEVICE=ufsd -DUFSD_READONLY=0 -DKBUILD_BASENAME=_ufsdvfs_ -include fs_conf.h -pipe -Wall -fno-exceptions -Wno-multichar -Wstrict-prototypes -Wno-unknown-pragmas -mpreferred-stack-boundary=2 -march=i486 -mregparm=3 -I /usr/src/linux/include/asm/mach-default -g0 -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -c -I /usr/src/linux/include -I "/include" -I/include ufsdvfs.c -o objfre/vfs/ufsdvfs.o
In file included from <command line>:9:
./fs_conf.h:56:1: warning: "UFSD_NTFS_SECURITY" redefined
<command line>:3:1: warning: this is the location of the previous definition
./fs_conf.h:57:1: warning: "UFSD_NTFS_OBJECTID" redefined
<command line>:4:1: warning: this is the location of the previous definition
In file included from /usr/src/linux/include/linux/rwsem.h:27,
from /usr/src/linux/include/asm/semaphore.h:42,
from /usr/src/linux/include/linux/sched.h:20,
from /usr/src/linux/include/linux/module.h:10,
from ufsdvfs.c:31:
/usr/src/linux/include/asm/rwsem.h: In function `__down_read':
/usr/src/linux/include/asm/rwsem.h:105: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/rwsem.h: In function `__down_write':
/usr/src/linux/include/asm/rwsem.h:157: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/rwsem.h: In function `__up_read':
/usr/src/linux/include/asm/rwsem.h:194: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/rwsem.h:188: warning: unused variable `tmp'
/usr/src/linux/include/asm/rwsem.h: In function `__up_write':
/usr/src/linux/include/asm/rwsem.h:220: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/rwsem.h: In function `__downgrade_write':
/usr/src/linux/include/asm/rwsem.h:245: error: syntax error before "_ufsdvfs_"
In file included from /usr/src/linux/include/linux/sched.h:20,
from /usr/src/linux/include/linux/module.h:10,
from ufsdvfs.c:31:
/usr/src/linux/include/asm/semaphore.h: In function `down':
/usr/src/linux/include/asm/semaphore.h:105: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/semaphore.h: In function `down_interruptible':
/usr/src/linux/include/asm/semaphore.h:130: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/semaphore.h: In function `down_trylock':
/usr/src/linux/include/asm/semaphore.h:155: error: syntax error before "_ufsdvfs_"
/usr/src/linux/include/asm/semaphore.h: In function `up':
/usr/src/linux/include/asm/semaphore.h:179: error: syntax error before "_ufsdvfs_"
ufsdvfs.c: In function `ufsd_readdir':
ufsdvfs.c:893: warning: implicit declaration of function `update_atime'
ufsdvfs.c: In function `ufsd_ioctl_probe_buffers':
ufsdvfs.c:960: warning: implicit declaration of function `verify_area'
make: *** [objfre/vfs/ufsdvfs.o] Ошибка 1
Ufsd module was't madeКод: Выделить всё
LOCK_SECTION_START("")Код: Выделить всё
/*
* downgrade write lock to read lock
*/
static inline void __downgrade_write(struct rw_semaphore *sem)
{
__asm__ __volatile__(
"# beginning __downgrade_write\n\t"
LOCK_PREFIX " addl %2,(%%eax)\n\t" /* transitions 0xZZZZ0001 -> 0xYYYY0001 */
" js 2f\n\t" /* jump if the lock is being waited upon */
"1:\n\t"
LOCK_SECTION_START("")
"2:\n\t"
" pushl %%ecx\n\t"
" pushl %%edx\n\t"
" call rwsem_downgrade_wake\n\t"
" popl %%edx\n\t"
" popl %%ecx\n\t"
" jmp 1b\n"
LOCK_SECTION_END
"# ending __downgrade_write\n"
: "=m"(sem->count)
: "a"(sem), "i"(-RWSEM_WAITING_BIAS), "m"(sem->count)
: "memory", "cc");
}Понятно, что ошибка всего одна. Непонятно где она и в чём заключается. Кто-нибудь сталкивался с подобным? Чем не подошли этому драйверу исходники ядра?
ЗЫ: Ядро штатное, шло вместе с системой, я его не пересобирал.