У меня есть 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
Как я могу скомпилировать и установить это ядро успешно? Я плохо знаком с этим и ценил бы любую справку.
Поля 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 не установлен в (моей) конфигурации ядра. Если это так, то я не должен получить эту ошибку.
Учитывая ваш последний вопрос о ноутбуке подсветка , вам не нужно компилировать ядро, чтобы использовать патч. Вам просто нужно добавить 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 для нового ядра (см. комментарии в этом ответе о том, как добавлять параметры в ядро при загрузке).
Весь процесс уже подробно описан в нижней части страницы, на которую вы установили связь .