My dailyuse laptop kernel which is extramely functional, but in my optinion, fairly stripped down is 3.5M compressed or 5.5M uncompressed.
What can I compare this to. is this kernel small medium large?
I've hunted around on the internet and while there are plenty of guides on how to shrink your kernel. none really give a target.

I used xz compression because it seemed to be a good balance of speed and compression ratio.
At this point it's pretty os specific. The only other changes I could see making would be to remove some of the kernel hacking options like printk

or to internalize certain modules. such as ath9k, udf. Does that actually improve kernel size if you are able to turn off loadable modules?

Does that actually improve kernel size if you are able to turn off loadable modules?

The kernel module loading code is only needed if you support loadable modules, so in theory, yes, disabling module support can reduce the size of the kernel binary. It may not be reduced by a large amount, and it could be a net loss if disabling module support forces you to include rarely used code in the core image instead of placing it in an unloaded module.

Just to see what would happen I updated my kernel config, adjusted every module I could find to compile in to the kernel

I've been running on it for a few hours. lsmod confirms I have no modules loaded. wireless seems to be fine.
The only problem I've noticed is that 1-wire functionality seems to have stopped since I switched it to a module (battery monitor)
I'll have to play with that one.

anyway, my kernel size increased from compressed 3.5 to 3.7. If I removed loadable modules would it drop my kernel size be more than .2M or would it be better to just go back to a couple loadable modules.

if you're dealing with wireless, i would lean heavily towards at the very least having wireless handled via modules

as kernel releases go, wireless seems to regularly shit the bed from one release to the next. In my case, with iwlwifi, I run into situations where iwlwifi segfaults, and my only recourse is to either reboot the machine, or, much more desirable, rmmod and modprobe (trying out different parameters/args from modinfo, some of which seem to have help).

sound cards are another one. Being able to pass args to modprobe is much easier than having to specify a bunch of crap on the kernel command line.

becomes almost a philosophical discussion of "to module, or not to module". For laptops, i lean module. For servers, i tend to have everything built in.

Yep, for now I've decided leaving some drivers such as wireless and video is definitely the best.
I did some more tweaking and I'm down to 3.4 compressed or 5.4 uncompressed. Removing loadable modules and building in my wifi and video cards pushes the uncompressed size up to 6.8megs

I'm running an almost-monolithic kernel on my venerable-but-oh-so-reliable ThinkPad and since the upgrade from 3.3.8 to 3.5.7 I have to say it seems just a little snappier. I did notice a moderate size increase between the versions: it's gone up around 300K but I still think it is a reasonable size given very nearly everything is compiled-in (including WiFi firmware):-

My kernel is set up to be entirely monolithic (no modules loaded), and right now the kernel is 4MB, XZ compressed (version 3.6.6). I am going to tweak it some more, as I know I haven't done all the optimization I can. It's almost there, though.

Boot up is very quick (<10 seconds) and it's very snappy, although I have a SATA3 SSD in my computer so that's most of it there, I am sure.

My kernel is set up to be entirely monolithic (no modules loaded), and right now the kernel is 4MB, XZ compressed (version 3.6.6). I am going to tweak it some more, as I know I haven't done all the optimization I can. It's almost there, though.

Boot up is very quick (<10 seconds) and it's very snappy, although I have a SATA3 SSD in my computer so that's most of it there, I am sure.

Impressive. I'm curious to know what you have removed. I'm not really sure what I could remove without sacrificing daily performance. What if any kernel hacking have you done?

I think the kernel may have shrunk somewhere around 3.7.x or 3.8.x because after that it became easier to keep it small. I gave up on a monolithic kernel because certain programs seem to require a module. Here's what I am down to now

Code:

-rw-r--r-- 1 root root 3.1M Aug 30 20:18 kernel-3.10.9-gentoo-r00

Of course I do load a lot of modules these days. Still boots really fast.

I've always leaned towards a more modular kernel. I used kernel-seeds and "make localmodconfig" along with my own script that 'merged' multiple ".config" files to come up with my .config file.

All my human interface devices are USB so built in enough USB such that Keyboards, mice and thumb drives can be read w/o any modules loaded. I compile a single kernel to run all my computers. They run on single core, but the most intense computing I do is play youtube and mp3.

I can't exactly statically link fglrx unfortunately. I'm not entirely sure why radeon is being used though... I should get rid of that (probably for KMS, not sure if fgrlx needs it?) And I don't necessarily need kvm on all machines (and may run this build of kernel as a VM under the same kernel on this machine :D)_________________Intel Core i7 2700K@ 4.1GHz/HD3000 graphics/8GB DDR3/180GB SSDWhat am I supposed to be advocating?

/me saw a steady increase in kernel size since 3.6, only partially due to additional needed options:

Code:

4,6M /boot/kernel-3.11_rc7
6,5M /lib/modules/3.11.0-rc7+

@dmpogo: 32/64 bit aside, it also heavily depends on your choice of compression. I could use xz and reduce kernel size quite a lot, but would need to wait longer for decompression._________________backend.cpp:92:2: warning: #warning TODO - this error message is about as useful as a cooling unit in the arctic

i915, atl1c, snd... as a modules, really?
What's the benefit of that besides artificially smaller kernel?

ps. My vanilla 3.10.9 with LZO compression has 4.4M.

My theory was that the kernel should just contain core components needed to boot and repair the system in case of an emergency. I Can do without sound, wireless and graphics in that case.

besides that I actually was having trouble with some of the stuff when it was built in such as wireless.
I guess if I wanted I could build a monolithic kernel. I've done it before but I seem to get better performance this way.

/me saw a steady increase in kernel size since 3.6, only partially due to additional needed options:

It's been increasing since Linux was first released...

I still remember the kernels that could fit on a 5.25" DD floppy when I first started using Linux..._________________Intel Core i7 2700K@ 4.1GHz/HD3000 graphics/8GB DDR3/180GB SSDWhat am I supposed to be advocating?

I configure with the rule that if a feature is likely to be loaded all or almost all of the time, then it is built-in. Thus, I include sound and graphics in the core, because both of them are difficult to unload and likely to be loaded as soon as I start using the system.