I have a hp pavilion dm3t with intel HD graphics running ubuntu 10.10 64 bit. I'm trying to compile and install a patched kernel according to this,
https://launchpad.net/~kamalmostafa/+archive/linux-kamal-mjgbacklight
So I downloaded the tarball from here (linked to from the page above): http://kernel.ubuntu.com/git?p=kamal/ubuntu-maverick.git;a=shortlog;h=refs/heads/mjg-backlight
I untar'd it to a directory, entered the directory and did:
make defconfig
I'm not sure if that's what I should have done but it was successful, so I did:
make
which seemed to work fine until it gave these errors:
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
How can I compile and install this kernel successfully? I'm new to this and would appreciate any help.
Considering your last question about your laptop backlight, you don't need to compile the kernel to use the patch. You just need to add the PPA to your system's Software Sources.
htorque explained how to proceed in his comment :
The whole process is already detailed at the bottom of the page you linked.
The num_private and num_private_args fields are only defined when CONFIG_WEXT_PRIV is defined during kernel compilation hence you need to add the #ifdef/#endif lines here to iw_ndis.c:
However, that's not all. You'll also then get an error compiling wrapndis.c
so you need to find the lines with the following if statement (at approx line 1820) and wrap that up in an #ifdef/#endif.#ifdef CONFIG_WEXT_PRIVif (wnd->physical_medium == NdisPhysicalMediumWirelessLan) { net_dev->wireless_handlers = &ndis_handler_def; }#endif
Should add that I am trying to compile this myself and have not tested ndiswrapper having done this so YMMV.The above for wrapndis is wrong, it seems that CONFIG_WIRELESS_EXT is not set in (my) kernel configuration. If it was then I shouldn't get this error.