Documenting Kernel Configuration Files and Using the Miniconfig Format
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
miniconfig.sh
,
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
the .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
set the 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.
Marc