搜索内核 make menuconfig 配置菜单项

col*_*mik 4 search menu linux-kernel

当我在 /usr/src/linux 目录中运行 make menuconfig 时,会出现内核配置向导。如何在 make menuconfig 向导中搜索菜单项?我已经测试过 /,但是 / 似乎只通过 .config 文件进行搜索。即当我搜索“pci dma”时,没有结果,但是存在一个合适的内核菜单条目来为 PCI 设备启用 DMA。

我能够在 Kconfig 文件中找到菜单项的文本。Kconfig 文件位于 /usr/src/linux 目录的许多子目录中。尽管如此,搜索 Kconfig 文件并没有给我想要找到的选项的实际“树”视图。我用来找出那个的命令:

grep -i --directories=recurse 'kprobes' /usr/src/linux --color=always | less

如何在 make menuconfig 向导中搜索菜单项?

在此处输入图片说明

//编辑:一个有效的解决方案:

find /usr/src/linux/ -name 'Kconfig' -exec egrep -i -B 1 '(tristate|bool|menu)' '{}' \; | grep -i -B 1 --color=always 'Device Drivers'

这将显示,内核 .config 名称包含指定的 .config 标签。我现在要做的就是在 make menuconfig 中查找配置名称(使用 /)。

Mik*_*kel 10

当你按下时/,它说

Enter CONFIG_ (sub)string to search for (with or without "CONFIG_") 
Run Code Online (Sandbox Code Playgroud)

这意味着它正在寻找选项的名称,而不是选项的标签。

在 Linux 3.3 中,我使用 grep 找到了您的选项...

$ find . -name Kconfig -exec grep 'config.*PCI' {} + | grep DMA
./drivers/ide/Kconfig:config BLK_DEV_IDEDMA_PCI
Run Code Online (Sandbox Code Playgroud)

然后打开文件./drivers/ide/Kconfig查看更多信息

config BLK_DEV_IDEDMA_PCI
    bool
    select BLK_DEV_IDEPCI
    select BLK_DEV_IDEDMA_SFF
Run Code Online (Sandbox Code Playgroud)

由于它没有像其他人一样的tristatebool行,这表明它没有出现在菜单中。

在同一个文件中搜索BLK_DEV_IDEDMA_PCI,您可以看到很多引用它的条目,例如

config BLK_DEV_AMD74XX
    tristate "AMD and nVidia IDE support"
    depends on !ARM
    select IDE_TIMINGS
    select BLK_DEV_IDEDMA_PCI
Run Code Online (Sandbox Code Playgroud)

因此,您似乎不应该显式启用 DMA:需要 DMA 的驱动程序将自动启用它。