This post is a copy/modify from the original post on the old FOG forums on sourceforge. I believe it has value for any one that may need help compiling a custom kernel.
The original issue I had was with the Acer Iconia Tab w500p tablets. Running FOG 0.32 and Ubuntu 10.04 LTS, I could not get them to boot the fog kernel, they just crashed with a video problem. Also, they lan port on the docking station was actually an integrated USB to LAN adapter from Asix, and it didn’t work in any of the linux based cloning solutions (novell zenworks or FOG).
I loaded Ubuntu 11.04 onto one of these devices and the Video works. Unfortunately, the Asix 88772B usb nic is not detected. I downloaded the driver from Asix at [url]http://www.asix.com.tw/FrootAttach/driver/AX88772B_772A_760_772_178_LINUX_Driver_v4.1.0_Source.tar.bz2[/url] and I ran through this ( [url]http://dinomite.net/blog/2007/setting-up-ubuntu-for-building-kernel-modules/[/url] ) before trying to compile. I didn’t follow exactly though, I found the linux-source-XXXXXX package manually by looking at the output of [CODE]uname -r[/CODE] and [CODE]apt-cache search linux-source*[/CODE] The rest of it I was able to do, including updating the Makefile with the “-8-generic” instead of leaving it at “.8”.
After I followed those instructions, I went back to my folder that had the new Asix driver source and ran [code]make[/code]. It compiled in a few seconds and left me with a asix.ko file. I ran “modinfo” and verified the vermagic matched my running kernel. I then ran: [CODE]insmod ./asix.ko[/CODE] to make sure it loaded the new version that I just built instead of the version that came with the distribution. It worked. My Asix AX88772B usb nic showed up and I was able to get an IP address. I disabled the wireless that I was using and was able to ping the internet.
Now that I knew the kernel module worked, I had to figure out a way to get it into FOG during the Host Registration and of course imaging. I loaded up another machine with Ubuntu 11.04 using kernel 2.6.38-8-generic. I downloaded the source files using [code]apt-get install linux-source-2.6.38[/code] and ran through the procedures again outlined in [url]http://dinomite.net/blog/2007/setting-up-ubuntu-for-building-kernel-modules/[/url], but I don’t know if it was necessary.
As part of the FOG Installation prep, I updated my system and that took me to kernel 2.6.38-11-generic and gave me new directories in /usr/src. At this point, I still have /usr/src/linux soft linked to /usr/src/linux-source-2.6.38. I installed FOG 0.32 per the instructions at [url]http://www.fogproject.org/wiki/index.php?title=Ubuntu_10.04[/url] since they are the same with regards to 11.04. I did not make FOG accessible at the root of my web server: there was no immediate need.
So now FOG 0.32 is installed and setup, the kernel source is downloaded and my test fog server is setup for compiling kernel modules. I followed the instructions for [url]http://www.fogproject.org/wiki/index.php?title=Building_a_Custom_Kernel[/url] except for steps 2 and 3 of the Build Process section because I already had the correct sources. Since I knew the Asix driver that came with the Ubuntu source did not work, I made a copy of the /usr/src/linux-source-2.6.38/drivers/net/usb/asix.c file for backup.
Then I took the asix.c, asix.h, axusbnet.c, axusbnet.h files from the driver I downloaded, and put them in the /usr/src/linux-source- 2.6.38/drivers/net/usb, overwriting the original asix.c file.
In Step 4 of [url]http://www.fogproject.org/wiki/index.php?title=Building_a_Custom_Kernel[/url], I originally tried the kitchensink.config, but could not get it to work later on, so I used the core.config file as a base. In Step 5, I ran the [code]make xconfig[/code] and made sure to select the “Device Drivers - Network Device Support - USB Network Adapters - Multipurpose USB Networking Framework - Asix AX88xxx USB 2.0 Ethernet Adapters”.
Because the video on these devices is ATI Radeon HD 6250 (PCI Express based) I also deselected the “Device Drivers - Graphics Support - AGPGART (AGP Support)” and selected “Device Drivers - Graphics Support - Direct Rendering Manage (XFree86 4.1.0 and Higher DRI Support) - ATI Radeon”.
I deselected the option under ATI Radeon for: “Enable modesetting on radeon by default - NEW DRIVER”.
I saved my config and closed xconfig, and from /usr/src/linux, I ran [code]make bzImage[/code]. After a long wait, I was greeted with a ndiswrapper error about undefined pointers relating to CONFIG_WEXT_PRIV, which doesn’t seem to be defined in the config files provided with FOG. After looking this up using google, I found that it’s related to the ndis wrapper for windows drivers, specifecally the section of the code dealing with wireless.
I ran [code]make xconfig[/code] again and deselected: “Networking Support - Wireless”, and also “Ubuntu Supplied Third-Part Device Drivers - Wrapper for Windows NDIS network drivers”. I saved the config and closed xconfig and from /usr/src/linux I ran: [code]make bzImage[/code] again. After a long wait, the process finished.
I made a copy of the /tftpboot/fog/kernel/bzImage for backup using: [CODE]cp /tftpboot/fog/kernel/bzImage /tftpboot/fog/kernel/bzImage.YYYYMMDDHHMM[/CODE] I then copied the /usr/src/linux/arch/x86/boot/bzImage to /tftpboot/fog/kernel using:[code]cp /usr/src/linux/arch/x86/boot/bzImage /tftpboot/fog/kernel/bzImage[/code]
When I PXE-booted my Acer Iconia Tab w500p and selected Full host registration… I was greeted with the “Enter a hostname for this computer” prompt instead of crashing with grey speckles on the screen. So far, I have successfully registered 4 devices and uploaded 2 images and deployed back to 3 devices.
some additional references for support and feature request trackers. Support tracker about video crashes during host registration: [url]https://sourceforge.net/tracker/?func=detail&aid=3414110&group_id=201099&atid=976200[/url] Feature Request tracker for updated Asix driver: [url]https://sourceforge.net/tracker/?func=detail&aid=3414106&group_id=201099&atid=976202[/url]