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. (Note that in most cases you'll want to compile out the underlying kernel functionality exposed by those syscalls; if that functionality is not already optional, this will likely turn into a large project.)
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
Make SRCU optional; make portions of the kernel that define an srcu_struct
depend on the resulting new Kconfig symbol.
Compile out printks below a certain priority level.
Only include mm/highmem.c if CONFIG_HIGHMEM
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".
Compile out support for non-root users. When disabled, UID and GID effectively always equal 0, and all the syscalls involving UIDs and GIDs go away.
Compile out support for xattrs, and all the corresponding syscalls.
Compile out support for sockets and all the socket-related syscalls.
Support nommu on x86.