This is an old revision of the document!
Small projects
Make individual syscalls or groups of syscalls optional. See the
syscalls page for a list of syscalls that can't currently be compiled out.
Turn contig_page_data
into .bss since it needs so little of itself initialized.
Configure out writing time to the hardware clock (and in the process, compile out RTC_LIB)
Compile out kernel/time/ntp.c, along with adjtimex and similar syscalls.
Compile out arch/x86/boot/early_serial_console
Remove runtime extable sorting logic if CONFIG_BUILDTIME_EXTABLE_SORT
Rip out the rest of kernel/smpboot.c if !CONFIG_SMP
Large projects
Make ptrace optional.
Modify GCC's __attribute__((section(...)))
to support specifying different sections for initialized (.data
) and uninitialized (.bss
) data. Use that to put uninitialized __initdata
or per-CPU data into .bss
. (This will require very detailed exploration of the toolchain, Linux's linker scripts, and similar.)
Rip out more of the per-CPU infrastructure when CONFIG_SMP=n
Support configuring out kswapd.
Make the kernel's entire random number infrastructure optional.
Compile out mm/vmstat
(need to stub out bits that obtain statistics used by other bits of the kernel)
Compile out signal handling.
Compile out support for capabilities; make capable always return true for root and false for non-root.
Compile out support for "personalities".