1 (14.11.2010 22:54:55 отредактировано Cruiser78)

Привет всем.

Неожиданная грабля в RFRemix'е-14. Не могу найти ndiswrapper для этой федоры. Пакеты, скачанные с официального сайта - не компилируются. Порождают при компиляции массу ошибок. Как быть?

2 (14.11.2010 08:51:18 отредактировано drBatty)

Cruiser78 пишет:

Порождают при компиляции массу ошибок. Как быть?

а телепатов расстреляли. Какие ошибки?
(ответ "хорошие" приравнивается к бану bx )

PS: /me подключает телепатический модуль...
Гляжу в хрустальный шар - похоже вы не установили исходники и заголовочные файлы ядра. Либо они не той версии.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

3

drBatty пишет:
Cruiser78 пишет:

Порождают при компиляции массу ошибок. Как быть?

а телепатов расстреляли. Какие ошибки?
(ответ "хорошие" приравнивается к бану bx )

PS: /me подключает телепатический модуль...
Гляжу в хрустальный шар - похоже вы не установили исходники и заголовочные файлы ядра. Либо они не той версии.

Замутим чистый хрусталь...
Про исходники ядра:
файл INSTALL об этом намекает прямо:

 The command
  ls /lib/modules/`uname -r`/build
should have at least 'include' directory and '.config' file.

Итак:

 Консоль:
$ 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

То есть явно видим и каталог include (он не пуст, заголовков там масса), и .config тоже в наличии.
Что подтверждает и

 Консоль:
$ 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   

Качает с офичиального сайта (в репах федориных нет) ndiswraper-1.56 (последний стабильный).
и имеем:

 Консоль:
# 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

Если компилировать ndiswrapper-1.55, то

 Консоль:
# 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

Такие вот ошибки...

4

 Консоль:
uname -a

покажите.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

5 (14.11.2010 10:07:10 отредактировано Cruiser78)

drBatty пишет:

 Консоль:
uname -a

покажите.

 Консоль:
# 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

И доролнение - всё это я сейчас тренирую на _своем_ ноуте. А применять надо - минимум - на RoverBook'е. Чуть позже. И у меня и там - ось одна и таже, RF Remix 14. Задача - запустить WiFi. То, что есть сейчас,
1. RoverBook - сеть WiFi, поднятую роутером, видят, но законнектится в ней не может.
2. Мой Acer работает без проблем...

6 (14.11.2010 11:41:43 отредактировано Cruiser78)

По ошибкам версии 1.56.

 Консоль:
# /usr/src/ndiswrapper-1.56/driver/wrapndis.c:953:13: ошибка: ‘struct net_device’ не содержит элемента с именем ‘mc_count’

Посмотрел глазами исходник заголовка. Действительно нет там в той структуре такого элемента. Оопс.

А если компилировать ndiswrapper-1.55, то

 Консоль:

/usr/src/ndiswrapper-1.55/driver/ntoskernel.h: В функции ‘PushEntrySList’:
/usr/src/ndiswrapper-1.55/driver/ntoskernel.h:905:2: ошибка: неявная декларация функции ‘cmpxchg8b’

А это - совсем непонятно. Так как эта функция была определена явно чуть выше. Но только для ядер младше, чем 2.6.31. А для более старших - увы, не определена, но вызов её есть...

Такие вот дела.
------------------------------------
Закомментарил проверку версии ядра в 1.55 (при этом этот кусок кода становится версией 1.56, в ней нет такой проверки препроцессором).
Запустил make и уперся в отсутствие элемента mc_count... Точно так же, как упираюсь в него же в версии 1.56.  Но эта структура уже не от ndisdriver'а, где её можно подправить малой кровью (или вообще бескровно), а ядра. А там править - себе дороже...

Что делать?

7

Cruiser78 пишет:

Что делать?

откатится на старое ядро? больше никаких мыслей у меня...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

8

Я хотел предложить именно это, т.к. в Debian в 2.6.32 в net_device этот элемент есть.

Пётр.

Пётр.

9 (14.11.2010 22:54:10 отредактировано Cruiser78)

Peter пишет:

Я хотел предложить именно это, т.к. в Debian в 2.6.32 в net_device этот элемент есть.

Добрался до RFRemix13 (ядро 2.6.34). Версия 1.56 скомпилировалась без ошибок.

Таким образом собака зарылась в RFRemix-14 (ядро 2.6.35). Пока ndiswrapper под неё не заточат - обломайся...
Но мне надо именно под 14-ю...