A few weeks ago the discussion about considering making some of the things
in the fedora kernel not-a-module came up, but then died out. I'd like
to revisit that discussion with a very specific proposal of things
to turn into built-in.
For me, there are 3 key reasons to make certain things not-a-module:
1) Built-in code is easier to debug/diagnose. This may sound weird, but
really, things inside the vmlinux allow for much better automated
bug diagnostics/analysis.
( and the
www.kerneloops.org site uses these, but can only do the more
advanced automatic analysis on the built-in oopses)
2) Built-in code tends to be smaller and faster; there is a space and TLB
overhead associated with modules (several datastructures get rounded up
to 4K boundaries, and modules are vmalloc'd which has TLB overhead)
3) A system with key functionality not-in-the-vmlinux is more fragile
if something goes wrong
With this in mind, I came up with the list below, I've split it into 4
categories.
I would like to ask feedback on this list, with the goal of getting
these changes made to fedora 10 asap to then get a wider audience input
to see if anything breaks.
Category 1: Always loaded anyway
--------------------------------
Rationale: Since we load these always anyway, why bother making it modules
- ata_generic, pata_acpi
- libata
- sg, sd_mod, scsi_mod
- ext3, jbd, mbcache
Category 2: Always loaded in default install
--------------------------------------------
Rationale: yes you can turn off your firewall.. but nobody should do that.
The others are default-loaded as well
- ip_tables, iptable_filter
- ip6_tables, ip6table_filter
- dm_mod
- ipv6
- battery, ac, button, video, output
Category 3: popular/very common and makes the system more robust
----------------------------------------------------------------
Rationale: having these built in makes the system more robust, also
in case of failure
- ahci (default storage for all new systems; means that there the system
always has the / device driver)
- ehci_hcd (means you have a USB keyboard early)
- cpufreq_ondemand (means the cpu can slow down for power/thermal)
- acpi_cpufreq (means the cpu can slow down for power/thermal)
Category 4: VERY popular
------------------------
Rationale: pretty much always loaded in default installs
- snd_seq_dummy, snd_seq, snd_seq_device,
snd_pcm, snd_timer, snd_page_alloc, snd