Ошибка компиляции ядра с iw_ndis.c

У меня есть hp pavilion dm3t с Intel HD Graphics рабочая человечность 10.10 64 бита. Я пытаюсь скомпилировать и установить исправленное ядро согласно этому,
https://launchpad.net / ~ kamalmostafa / + archive/linux-kamal-mjgbacklight

Таким образом, я загрузил tarball отсюда (связанный с от страницы выше): http://kernel.ubuntu.com/git?p=kamal/ubuntu-maverick.git;a=shortlog;h=refs/heads/mjg-backlight

Я untar'd это к каталогу, вводимому каталог и, сделал:

make defconfig

Я не уверен, является ли это тем, что я должен был сделать, но это было успешно, таким образом, я сделал:

make

который, казалось, хорошо работал, пока это не дало эти ошибки:

ubuntu/ndiswrapper/iw_ndis.c:1966: error: unknown field ‘num_private’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1966: warning: initialization makes pointer from integer without a cast
ubuntu/ndiswrapper/iw_ndis.c:1967: error: unknown field ‘num_private_args’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1967: warning: excess elements in struct initializer
ubuntu/ndiswrapper/iw_ndis.c:1967: warning: (near initialization for ‘ndis_handler_def’)
ubuntu/ndiswrapper/iw_ndis.c:1970: error: unknown field ‘private’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1970: warning: initialization makes integer from pointer without a cast
ubuntu/ndiswrapper/iw_ndis.c:1970: error: initializer element is not computable at load time
ubuntu/ndiswrapper/iw_ndis.c:1970: error: (near initialization for ‘ndis_handler_def.num_standard’)
ubuntu/ndiswrapper/iw_ndis.c:1971: error: unknown field ‘private_args’ specified in initializer
ubuntu/ndiswrapper/iw_ndis.c:1971: warning: initialization from incompatible pointer type
make[2]: *** [ubuntu/ndiswrapper/iw_ndis.o] Error 1
make[1]: *** [ubuntu/ndiswrapper] Error 2
make: *** [ubuntu] Error 2

Как я могу скомпилировать и установить это ядро успешно? Я плохо знаком с этим и ценил бы любую справку.

1
задан 31 December 2010 в 01:12

2 ответа

Поля num_private и num_private_args определяются только тогда, когда при компиляции ядра определено значение CONFIG_WEXT_PRIV, поэтому здесь необходимо добавить строки #ifdef/#endif в iw_ndis.c:

const struct iw_handler_def ndis_handler_def = {
    .num_standard   = sizeof(ndis_handler) / sizeof(ndis_handler[0]),
#ifdef CONFIG_WEXT_PRIV 
    .num_private    = sizeof(priv_handler) / sizeof(priv_handler[0]),
    .num_private_args = sizeof(priv_args) / sizeof(priv_args[0]),
#endif
    .standard   = (iw_handler *)ndis_handler,
#ifdef CONFIG_WEXT_PRIV 
    .private    = (iw_handler *)priv_handler,
    .private_args   = (struct iw_priv_args *)priv_args,
#endif  
    .get_wireless_stats = get_iw_stats,
};

Тем не менее, это еще не все. Вы также получите ошибку, компилируя wrapndis.c, поэтому вам нужно найти строки со следующим выражением if (примерно на 1820 строке) и обернуть их в #ifdef/#endif.

#ifdef CONFIG_WEXT_PRIV
если (wnd->physical_medium == NdisPhysicalMediumWirelessLan) { net_dev->wireless_handlers = &ndis_handler_def; }#endif

Должен добавить, что я пытаюсь скомпилировать это сам и не тестировал ndiswrapper, делая это так YMMV.

Выше для wrapndis неправильно, кажется, что CONFIG_WIRELESS_EXT не установлен в (моей) конфигурации ядра. Если это так, то я не должен получить эту ошибку.

0
ответ дан 31 December 2010 в 01:12

Учитывая ваш последний вопрос о ноутбуке подсветка , вам не нужно компилировать ядро, чтобы использовать патч. Вам просто нужно добавить PPA в Источники Программного Обеспечения вашей системы.

htorque объяснил, как это сделать в своем комментарии :

Просто добавьте PPA в вашу систему. Запустите терминал и запустите sudo apt-add-repository ppa:kamalmostafa/linux-kamal-mjgbacklight, затем sudo apt-get update и, наконец, запустите обновление с помощью sudo apt-get upgrade. Как вы можете прочитать в приведенной выше ссылке на PPA, вам может понадобиться добавить acpi_backlight=vendor в строку linux записи grub для нового ядра (см. комментарии в этом ответе о том, как добавлять параметры в ядро при загрузке).

Весь процесс уже подробно описан в нижней части страницы, на которую вы установили связь .

2
ответ дан 31 December 2010 в 01:12

Другие вопросы по тегам:

Похожие вопросы: