Сборка Paragon ntfs driver (Непонятная ошибка при компиляции)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
vdv
Сообщения: 133

Сборка Paragon ntfs driver

Сообщение vdv »

Стоит Mops5 с ядром 2.6.17.11. Задача собрать под него драйвер от Paragon. В readme к драйверу описано 2 возможных пути:
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
После этого поглядел в файлы rwsem.h и semaphore.h. Во всех указанных в выводе make ошибочных строках находится одна и таже строка:

Код: Выделить всё

LOCK_SECTION_START("")
Для примера приведу код одной из функций (файл rwsem.h) чтобы видно было контекст, в котором употребляется 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");
}
Все "ошибочные" функции в этом месте с точки зрения синтаксиса одинаковые
Понятно, что ошибка всего одна. Непонятно где она и в чём заключается. Кто-нибудь сталкивался с подобным? Чем не подошли этому драйверу исходники ядра?
ЗЫ: Ядро штатное, шло вместе с системой, я его не пересобирал.
[Work: MOPSLinux 6.0] [Home: MOPSLinux 6.0]
Спасибо сказали:
Аватара пользователя
*Sasha*
Сообщения: 2519
Статус: Мимо шёл
ОС: Debian

Re: Сборка Paragon ntfs driver

Сообщение *Sasha* »

(vdv @ Jan 27 2007, в 21:42) писал(а):Задача собрать под него драйвер от Paragon

Может лучше будет ntfs-3g :)
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: Сборка Paragon ntfs driver

Сообщение DaemonTux »

*Sasha* писал(а):
27.01.2007 23:17
(vdv @ Jan 27 2007, в 21:42) писал(а):
Задача собрать под него драйвер от Paragon

Может лучше будет ntfs-3g :)


Поддерживаю. Я на работе 2 дня назад собрал при сборке траблов небыло. :)
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
vdv
Сообщения: 133

Re: Сборка Paragon ntfs driver

Сообщение vdv »

*Sasha* писал(а):
27.01.2007 23:17
Может лучше будет ntfs-3g :)

Может и лучше, никто не спорит, однако сейчас требуется собрать драйвер парагона.

Модераторам: перенесите наверное этот топик в Slackware, может тамошние хакеры подскажут чего... :)

Добавлено: решение найдено. Тему можно закрывать.
Если кому интересно, делается следующее: в файле /usr/src/linux-2.6.x.x/include/linux/spinlock.h строку

Код: Выделить всё

#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
заменяем на

Код: Выделить всё

#define LOCK_SECTION_NAME \
 ".text.lock." __stringify(KBUILD_BASENAME)
после чего компиляция проходит успешно. Вроде бы как даже ядерный патч существует для этого дела, но проще руками поправить, чем патч искать...
[Work: MOPSLinux 6.0] [Home: MOPSLinux 6.0]
Спасибо сказали: