I was recently compiling a customized 2.6.23 kernel, to get a better overview what I really selected I used the miniconfig format. It only contains the config options which a user would have to select from within menuconfig if he started from an allnoconfig setup.
Rob Landley has written
a script which takes a normal kernel config file and removes all
redundant symbols which are indirectly selected. This has the advantage
that the resulting config file is bloat free and gives a good overview
of the selected features.
First do a
make menuconfig select your config options as needed, copy
.config file to a temporary location and then run the
miniconfig.sh script with the temporary file name as argument. This
will generated a corresponding
mini.config file. Make sure that you
ARCH variable as appropriate. Below is an example:
make ARCH=i386 menuconfig mv .config tempfile ARCH=i386 miniconfig.sh tempfile cat mini.config
To expand a
mini.config back into a full
.config file (to build a
kernel by hand, or for further editing with menuconfig), you can go:
make ARCH=i386 allnoconfig KCONFIG_ALLCONFIG=mini.config
So far so good, I now had a reasonable small config file, but I still wasn’t sure what each config options actually does. Furthermore, I was too lazy to actually look up each symbol in the menuconfig help system, as a consequence I wrote an explain-config.sh script. It takes a kernel config file and documents each option with the help text as found in the various Kconfig files in the kernel source tree. So I finally had a short and documented config file which I could further fine tune.
Hope you find it useful.