[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reducing kernel compilation time



On 9/25/2011 11:02 AM, Camaleón wrote:
On Sun, 25 Sep 2011 10:18:53 -0500, Stan Hoeppner wrote:

On 9/25/2011 9:30 AM, Camaleón wrote:

Fair enough, but I wonder "what" to include in the recipe. If I put too
much salt or leave the oven for many hours at the maximun temperature
I'll get a "pastiche" nobody will be able to eat...

Have you used make-menuconfig?

Nope. I first used the current ".config" located at "/boot", that way I
could not fail.

Simply go through all the hardware and deselect anything that's not
inside that netbook.  Of all the network interface cards you'll only
need one (or two depending on whether that netbook has an RJ45 port in
addition to the wireless NIC).  You'll only need one of the dozens of
IDE/SATA drivers.  You won't need any of the SCSI/RAID or legacy block
drivers, though you will need SCSI disk and SCSI CDROM, as libata needs
those, as Stephen and I recently discussed.

That's easy to say but hard to get and so much for a trial/error test.

It's definitely more difficult for non-hardwarefreaks. But honestly, if one isn't a hardwarefreak s/he really has no business rolling his/her own kernel. The entire concept of an operating system kernel is to abstract the hardware from user applications. This concept is over 40 years old. Some 90+% of the Linux kernel code deals with programming and communicating with the hardware. So you really need to know a bit about hardware if you're going to roll your own kernels.

Do an lspci and write down all the hardware you have in there.  The
strip out all the drivers you don't have.  If you're unsure, ask.

I'm using Sven's advice (in join with Stephen's one), I find it a very
good approach.

Pick your poison. My point is simply that you need to know what hardware is in the machine so you can include the drivers you need and leave out those you don't.

And be patient with yourself.  Nearly everyone who embarks on the "roll
your own" journey trips a few times along the way, and has a steep
learning curve in the beginning.

Over the years, I've never had the need to compile a kernel and this is
my 4 kernel compilation in one month... but now I'm making these tests
"just for fun" because all these compilations were aimed to debug the
staging wifi drivers but the latest kernel (3.1-rc7, which I tried
yesterday) neither worked.

One of the biggest problems I see people having with both wired and wireless ethernet controllers is not getting the firmware loaded. Recall the big row on this list about the Realtek 8111/8168 etc? Debian didn't included the firmware in the Debian kernel tree due to Realtek ambiguity on the source license. Thus I recommend to anyone rolling a kernel to use a vanilla/pristine tarball which includes all the firmware blobs, and to build the blobs into your kernel. Also, build fixed hardware drivers into the kernel, not as modules. Fixed meaning non-removable, as in soldered to the system board, such as SATA, wireless ethernet, USB, etc in your netbook.

The option to build firmware into the kernel is:

CONFIG_FIRMWARE_IN_KERNEL=y
Description:  http://cateee.net/lkddb/web-lkddb/FIRMWARE_IN_KERNEL.html

The only downside is that this adds a few kilobytes to your kernel binary. In my experience this is easier than the "recommended" way to include firmware, and it's foolproof as long as the firmware is in the source tree. Most are.

So I'm afraid I'll wait for your super-customized ".config" file to use
it in my netbook, feel free to send it to my inbox when it's ready>:-)

Don't hold your breath. :)

Ha! I knew it :-)

Not all of us are humor impaired. :)

--
Stan


Reply to: