我正在尝试为x86目标构建rootfs,这很简单。但我无法弄清如何配置buildroot生成的内核。第一次运行时,使用的是menuconfig,但此后它已经缓存了.config文件,我找不到在哪里更改。
大约650MB的内核模块对嵌入式目标不是好事:P
在buildroot中有没有轻松的方法来配置内核?类似于uclibc-menuconfig这样的目标将是完美的。
我正在尝试为x86目标构建rootfs,这很简单。但我无法弄清如何配置buildroot生成的内核。第一次运行时,使用的是menuconfig,但此后它已经缓存了.config文件,我找不到在哪里更改。
大约650MB的内核模块对嵌入式目标不是好事:P
在buildroot中有没有轻松的方法来配置内核?类似于uclibc-menuconfig这样的目标将是完美的。
我总是做以下操作:
make linux-menuconfig
output/build/linux-XYZ/.config
中,其中XYZ是你的内核版本。output/build/linux-*XYZ*/.config
复制到board/your_kernel_config/.config
中。board/your_kernel_config/.config
make linux-xconfig
也可以。它的附加好处是,如果您搜索某些内容,您可以在搜索窗口中选择它,然后它会更新主窗口以显示该项的位置。 - Shawn J. Goff不要忘记在menuconfig中也将defconfig设置为i386:
Kernel —>
[*] Linux Kernel
(i386) Defconfig name
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不会改变?
答案是:
make linux26-menuconfig
步骤如下:
cd buildroot/
make menuconfig
Kernel -> Linux Kernel -> Kernel version