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)
由于它没有像其他人一样的tristate
或bool
行,这表明它没有出现在菜单中。
在同一个文件中搜索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 的驱动程序将自动启用它。