Привет всем.
Неожиданная грабля в RFRemix'е-14. Не могу найти ndiswrapper для этой федоры. Пакеты, скачанные с официального сайта - не компилируются. Порождают при компиляции массу ошибок. Как быть?
Где найти ndiswrapper?
Порождают при компиляции массу ошибок. Как быть?
а телепатов расстреляли. Какие ошибки?
(ответ "хорошие" приравнивается к бану ;) )
PS: /me подключает телепатический модуль...
Гляжу в хрустальный шар - похоже вы не установили исходники и заголовочные файлы ядра. Либо они не той версии.
[quote=Cruiser78]Порождают при компиляции массу ошибок. Как быть?
а телепатов расстреляли. Какие ошибки?
(ответ "хорошие" приравнивается к бану ;) )
PS: /me подключает телепатический модуль...
Гляжу в хрустальный шар - похоже вы не установили исходники и заголовочные файлы ядра. Либо они не той версии.[/quote]
Замутим чистый хрусталь...
Про исходники ядра:
файл INSTALL об этом намекает прямо:
The command
ls /lib/modules/`uname -r`/build
should have at least 'include' directory and '.config' file.
Итак:
[console]$ ls -a /lib/modules/`uname -r`/build
. .config fs kernel Module.symvers security usr
.. crypto include lib net sound virt
arch drivers init Makefile samples System.map vmlinux.id
block firmware ipc mm scripts tools
[/console]
То есть явно видим и каталог include (он не пуст, заголовков там масса), и .config тоже в наличии.
Что подтверждает и
[console]$ yum list kernel*
Установленные пакеты
kernel-PAE.i686 2.6.35.6-48.fc14 @anaconda-InstallationRepo-201010312321.i386
kernel-PAE-devel.i686 2.6.35.6-48.fc14 @anaconda-InstallationRepo-201010312321.i386
kernel-headers.i686 2.6.35.6-48.fc14 @anaconda-InstallationRepo-201010312321.i386
Доступные пакеты
kernel.i686 2.6.35.6-48.fc14 updates
kernel-PAEdebug.i686 2.6.35.6-48.fc14 updates
kernel-PAEdebug-devel.i686 2.6.35.6-48.fc14 updates
kernel-debug.i686 2.6.35.6-48.fc14 updates
kernel-debug-devel.i686 2.6.35.6-48.fc14 updates
kernel-devel.i686 2.6.35.6-48.fc14 updates
kernel-doc.noarch 2.6.35.6-48.fc14 updates
[/console]
Качает с офичиального сайта (в репах федориных нет) ndiswraper-1.56 (последний стабильный).
и имеем:
[console]# make
make -C driver
make[1]: Вход в каталог `/usr/src/ndiswrapper-1.56/driver'
make -C /usr/src/kernels/2.6.35.6-48.fc14.i686.PAE M=/usr/src/ndiswrapper-1.56/driver
make[2]: Вход в каталог `/usr/src/kernels/2.6.35.6-48.fc14.i686.PAE'
CC [M] /usr/src/ndiswrapper-1.56/driver/wrapndis.o
/usr/src/ndiswrapper-1.56/driver/wrapndis.c: В функции ‘set_multicast_list’:
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:953:13: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_count’
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:956:20: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_count’
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:960:86: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_count’
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:960:98: предупреждение: type defaults to ‘int’ in declaration of ‘_min2’
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:960:114: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_count’
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:967:19: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_list’
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:968:50: ошибка: доступ по указателю на неполный тип
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:969:14: ошибка: доступ по указателю на неполный тип
/usr/src/ndiswrapper-1.56/driver/wrapndis.c:971:40: ошибка: доступ по указателю на неполный тип
make[3]: *** [/usr/src/ndiswrapper-1.56/driver/wrapndis.o] Ошибка 1
make[2]: *** [_module_/usr/src/ndiswrapper-1.56/driver] Ошибка 2
make[2]: Выход из каталога `/usr/src/kernels/2.6.35.6-48.fc14.i686.PAE'
make[1]: *** [modules] Ошибка 2
make[1]: Выход из каталога `/usr/src/ndiswrapper-1.56/driver'
make: *** [all] Ошибка 2
[/console]
Если компилировать ndiswrapper-1.55, то
[console]# make
make -C driver
make[1]: Вход в каталог `/usr/src/ndiswrapper-1.55/driver'
make -C /usr/src/kernels/2.6.35.6-48.fc14.i686.PAE M=/usr/src/ndiswrapper-1.55/driver
make[2]: Вход в каталог `/usr/src/kernels/2.6.35.6-48.fc14.i686.PAE'
CC [M] /usr/src/ndiswrapper-1.55/driver/crt.o
In file included from /usr/src/ndiswrapper-1.55/driver/crt.c:16:0:
/usr/src/ndiswrapper-1.55/driver/ntoskernel.h: В функции ‘PushEntrySList’:
/usr/src/ndiswrapper-1.55/driver/ntoskernel.h:905:2: ошибка: неявная декларация функции ‘cmpxchg8b’
make[3]: *** [/usr/src/ndiswrapper-1.55/driver/crt.o] Ошибка 1
make[2]: *** [_module_/usr/src/ndiswrapper-1.55/driver] Ошибка 2
make[2]: Выход из каталога `/usr/src/kernels/2.6.35.6-48.fc14.i686.PAE'
make[1]: *** [modules] Ошибка 2
make[1]: Выход из каталога `/usr/src/ndiswrapper-1.55/driver'
make: *** [all] Ошибка 2
[/console]
Такие вот ошибки...
[console]uname -a[/console]
покажите.
[console]uname -a[/console]
покажите.
[console]# uname -a
Linux acer 2.6.35.6-48.fc14.i686.PAE #1 SMP Fri Oct 22 15:27:53 UTC 2010 i686 i686 i386 GNU/Linux
[/console]
И доролнение - всё это я сейчас тренирую на _своем_ ноуте. А применять надо - минимум - на RoverBook'е. Чуть позже. И у меня и там - ось одна и таже, RF Remix 14. Задача - запустить WiFi. То, что есть сейчас,
1. RoverBook - сеть WiFi, поднятую роутером, видят, но законнектится в ней не может.
2. Мой Acer работает без проблем...
По ошибкам версии 1.56.
[console]# /usr/src/ndiswrapper-1.56/driver/wrapndis.c:953:13: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_count’
[/console]
Посмотрел глазами исходник заголовка. Действительно нет там в той структуре такого элемента. Оопс.
А если компилировать ndiswrapper-1.55, то
[console]
/usr/src/ndiswrapper-1.55/driver/ntoskernel.h: В функции ‘PushEntrySList’:
/usr/src/ndiswrapper-1.55/driver/ntoskernel.h:905:2: ошибка: неявная декларация функции ‘cmpxchg8b’
[/console]
А это - совсем непонятно. Так как эта функция была определена явно чуть выше. Но только для ядер младше, чем 2.6.31. А для более старших - увы, не определена, но вызов её есть...
Такие вот дела.
------------------------------------
Закомментарил проверку версии ядра в 1.55 (при этом этот кусок кода становится версией 1.56, в ней нет такой проверки препроцессором).
Запустил make и уперся в отсутствие элемента mc_count... Точно так же, как упираюсь в него же в версии 1.56. Но эта структура уже не от ndisdriver'а, где её можно подправить малой кровью (или вообще бескровно), а ядра. А там править - себе дороже...
Что делать?
Что делать?
откатится на старое ядро? больше никаких мыслей у меня...
Я хотел предложить именно это, т.к. в Debian в 2.6.32 в net_device этот элемент есть.
Пётр.
Я хотел предложить именно это, т.к. в Debian в 2.6.32 в net_device этот элемент есть.
Добрался до RFRemix13 (ядро 2.6.34). Версия 1.56 скомпилировалась без ошибок.
Таким образом собака зарылась в RFRemix-14 (ядро 2.6.35). Пока ndiswrapper под неё не заточат - обломайся...
Но мне надо именно под 14-ю...