我有一个运行 ubuntu 10.10 64 位的带有英特尔高清显卡的 hp pavilion dm3t。我正在尝试根据此编译和安装修补内核,
https://launchpad.net/~kamalmostafa/+archive/linux-kamal-mjgbacklight
所以我从这里下载了压缩包(从上面的页面链接到): http://kernel.ubuntu.com/git?p=kamal/ubuntu-maverick.git;a=shortlog;h=refs/heads/ mjg-背光
我将它解压到一个目录,进入该目录并做了:
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
如何成功编译和安装这个内核?我是新手,希望能提供任何帮助。
考虑到您关于笔记本电脑背光的最后一个问题,您无需编译内核即可使用该补丁。您只需要将 PPA 添加到系统的软件源中。
htorque在他的评论中解释了如何进行:
整个过程已经在您链接的页面底部进行了详细说明。
num_private 和 num_private_args 字段仅在内核编译期间定义 CONFIG_WEXT_PRIV 时定义,因此您需要在 iw_ndis.c 中添加 #ifdef/#endif 行:
然而,这还不是全部。然后,您还会在编译 wrapndis.c 时遇到错误
,因此您需要找到带有以下 if 语句的行(大约在第 1820 行)并将其包装在#ifdef/#endif 中。#ifdef CONFIG_WEXT_PRIVif (wnd->physical_medium == NdisPhysicalMediumWirelessLan) { net_dev->wireless_handlers = &ndis_handler_def; }#万一
应该补充一点,我正在尝试自己编译它,并且没有测试 ndiswrapper 已经这样做了 YMMV。上面的 wrapndis 是错误的,似乎(我的)内核配置中没有设置 CONFIG_WIRELESS_EXT。如果是这样,我不应该得到这个错误。