Kernel Building!
Okay, building the kernels did eventually become a bit tedious given the problems I was having. Initially the 3.5.5 kernel I built worked, but was shortly followed by intermittent kernel crashes; no panics, no core dumps (disabled). So I immediately looked to the 3.4.X kernel, which would appear to be more stable. At this point I had opted for the cross compiling approach, given 7 hours to wait for a build was a bit tedious. To hopefully make the process of building kernels for the NAS more portable and easier, I created a script to do the job for me. It automates the job of installing the appropriate build tools (cross compilers, utilities and libraries) as well as keeping these up-to-date by running through the install process on each invocation.
After some playing, I found a base configuration that worked well, based on my 2.6 kernel config. At this point, I snap shot it and placed it with the script. The script now snap shots according to kernel versions built out of the same directory. I have the compilation time on my i7 down to 4 minutes. That's incredible given it took 7 hours on a 200 MHz ARM CPU. I supposed the biggest difference is the amount of memory available to me on the i7 and how many processes can be spawned. I am running make with unlimited parallel processes, limited only by the system load. I have this set to a load average of around 5. So initially, there is a surge in memory usage and CPU usage, before it all settles down, with all 8 cores working at an average capacity of about 80%. But to get an image and modules out in under 5 minutes is still astonishing!
Download the build-ukernel script
Stay tuned for more...
No comments:
Post a Comment