如何在Buildroot中配置Linux内核?

19

我正在尝试为x86目标构建rootfs,这很简单。但我无法弄清如何配置buildroot生成的内核。第一次运行时,使用的是menuconfig,但此后它已经缓存了.config文件,我找不到在哪里更改。

大约650MB的内核模块对嵌入式目标不是好事:P

在buildroot中有没有轻松的方法来配置内核?类似于uclibc-menuconfig这样的目标将是完美的。


这个问题可能在http://ServerFault.com/或http://SuperUser.com/上得到更好的回答。 - mctylr
5个回答

47

我总是做以下操作:

  1. 配置Linux内核:make linux-menuconfig
  2. 离开menuconfig后,你的配置将保存在文件output/build/linux-XYZ/.config中,其中XYZ是你的内核版本。
  3. 然后,你可以将文件output/build/linux-*XYZ*/.config复制到board/your_kernel_config/.config中。
  4. 稍后,在Buildroot menuconfig下,你可以在内核设置中配置使用自定义内核配置文件,并输入路径:board/your_kernel_config/.config

2
make linux-xconfig 也可以。它的附加好处是,如果您搜索某些内容,您可以在搜索窗口中选择它,然后它会更新主窗口以显示该项的位置。 - Shawn J. Goff
这是程序设计相关的内容,请将其从英语翻译成中文。只需返回翻译后的文本。 - Mihai

3

不要忘记在menuconfig中也将defconfig设置为i386:

  Kernel  —>
  [*] Linux Kernel
  (i386) Defconfig name 

3

BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES

该选项可以添加额外的配置到你已经存在的内核配置中。

例如,如果你正在使用 buildroot 作为子模块,那么目录树看起来像这样:

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

例如,要启用CONFIG_DEBUG_FS,请执行以下操作:
echo 'CONFIG_DEBUG_FS=y' > kernel-config-frag

然后使用以下命令配置Buildroot:

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

这样你就可以仅追踪qemu_x86_64_defconfig和额外配置之间的差异。我相信这是使用内核中提到的scripts/kconfig/merge_config.sh来完成的,详情请参考:如何在Linux内核配置文件中非交互式地打开功能?更改配置片段后,请记得执行以下操作:
rm -rf buildroot/output/build/linux-*.*.*/

在下一次构建之前,请使用GitHub上的最小可运行示例

BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE

选择要使用的完整.config

由于某种原因,我必须删除内核的.config才能使其生效? 为什么当我更改BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE并运行make linux-reconfigure时内核的.config不会改变?


2

答案是:

make linux26-menuconfig

7
2019年的答案已经不正确了,正确应该是:使用命令make linux-menuconfig。 - Jeremiah Rose

0

步骤如下:

  1. cd buildroot/

  2. make menuconfig

  3. Kernel -> Linux Kernel -> Kernel version


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接