19

I'm trying to build a rootfs for an x86 target, which is all simple enough. However I can't figure out how I configure the kernel that buildroot produces. The first run through came up with menuconfig, but it's cached the .config since then and I can't see where to change it.

~650MB of kernel modules don't do good things to an embedded target :P

Is there an easy way to configure the kernel within buildroot? Something like the uclibc-menuconfig target would be perfect.

Cogsy
  • 5,584
  • 4
  • 35
  • 47

5 Answers5

47

I always do the following:

  1. configure Linux kernel: make linux-menuconfig
  2. After leaving menuconfig your configuration will be stored in file: output/build/linux-XYZ/.config where XYZ is your kernel version.
  3. After that you can copy file output/build/linux-*XYZ*/.config to board/your_kernel_config/.config
  4. later in Buildroot menuconfig you can under kernel settings configure to use custom kernel config file and enter path: board/your_kernel_config/.config
Shawn J. Goff
  • 4,635
  • 8
  • 34
  • 38
Aleksandar
  • 501
  • 5
  • 8
  • 2
    `make linux-xconfig` works as well. It has the added benefit that if you search for something, you can select it in the search window, and it updates the main window to the location of that item. – Shawn J. Goff Apr 29 '12 at 14:34
  • this should be the first answer – Mihai Dec 30 '21 at 13:59
3

Do not forget to set also defconfig to i386 in menuconfig:

  Kernel  —>
  [*] Linux Kernel
  (i386) Defconfig name 
TadejP
  • 912
  • 11
  • 21
3

BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES

Adds extra configs to your existing one.

E.g., if you are using buildroot as a submodule, the directory tree looks like:

.git/
buildroot/
.gitmodules
kernel-config-frag

E.g. to turn on CONFIG_DEBUG_FS, do:

echo 'CONFIG_DEBUG_FS=y' > kernel-config-frag

and then configure buildroot with:

cd buildroot
make qemu_x86_64_defconfig
echo 'BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=../kernel-config-frag' >> buildroot/.config
make

This way you can git track just a diff between qemu_x86_64_defconfig and your extra configs.

I believe this uses scripts/kconfig/merge_config.sh form the kernel as mentioned at: How do you non-interactively turn on features in a Linux kernel .config file?

After you change the config fragment, just remember to do:

rm -rf buildroot/output/build/linux-*.*.*/

before the next build.

Minimal runnable example at: https://github.com/cirosantilli/linux-kernel-module-cheat/blob/bb8f4eb79565c9771356c80e0964c8fefc163e11/kernel-config-frag

BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE

Selects the full .config to be used.

For some reason I have to nuke the kernel's .config for this to take effect? Why when I change BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE and run make linux-reconfigure the kernel .config does not change?

Ciro Santilli OurBigBook.com
  • 347,512
  • 102
  • 1,199
  • 985
2

And the answer is:

make linux26-menuconfig
Cogsy
  • 5,584
  • 4
  • 35
  • 47
0

The steps are as follows:

  1. cd buildroot/

  2. make menuconfig

  3. Kernel -> Linux Kernel -> Kernel version

Greenonline
  • 1,330
  • 8
  • 23
  • 31
Mike
  • 19
  • 3