How do I configure the Linux kernel within Buildroot?
Asked Answered
C

5

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.

Cowshed answered 12/9, 2009 at 12:9 Comment(1)
This might be better answered at ServerFault.com or SuperUser.com maybe.Hardaway
C
2

And the answer is:

make linux26-menuconfig
Cowshed answered 12/9, 2009 at 14:52 Comment(1)
In 2019 this answer is no longer correct, it should be: make linux-menuconfigLelialelith
C
48

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
Camus answered 1/8, 2011 at 14:11 Comment(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.Whirlabout
this should be the first answerSarson
F
3

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

  Kernel  —>
  [*] Linux Kernel
  (i386) Defconfig name 
Freddafreddi answered 15/10, 2015 at 12:40 Comment(0)
D
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?

Dorsy answered 11/5, 2017 at 12:28 Comment(0)
C
2

And the answer is:

make linux26-menuconfig
Cowshed answered 12/9, 2009 at 14:52 Comment(1)
In 2019 this answer is no longer correct, it should be: make linux-menuconfigLelialelith
L
0

The steps are as follows:

  1. cd buildroot/

  2. make menuconfig

  3. Kernel -> Linux Kernel -> Kernel version

Leonelleonelle answered 5/12, 2018 at 2:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.