# Linux Kernel Module Cheat

#### 38.20.3. Resource tradeoff guidelines

Choosing which features go into our default builds means making tradeoffs, here are our guidelines:

- keep the root filesystem as tiny as possible to make Prebuilt setup small: only add BusyBox to have a small interactive system.

  It is easy to add new packages once you have the toolchain, and if you don’t there are infinitely many packages to cover and we can’t cover them all.

- enable every feature possible on the toolchain (GCC, Binutils), because changes imply Buildroot rebuilds

- runtime is sacred. Faster systems are:

  - easier to understand

  - run faster, which is specially for gem5 which is slow

  Runtime basically just comes down to how we configure the Linux kernel, since in the root filesystem all that matters is `init=`, and that is easy to control.

  One possibility we could play with is to build loadable modules instead of built-in modules to reduce runtime, but make it easier to get started with the modules.

In order to learn how to measure some of those aspects, see: Section 35, “Benchmark this repo”.