为什么不可能标记所需的内核模块进行编译,隐藏依赖关系



我想重新编译linux内核,以便在其中添加一些新模块。

但是:
无法在xconfig中检查它们以将其标记为模块或内置。

我的方法:

1/"编辑->查找"在搜索框中键入CX331XX->找到模块选项。所有四个模块都列在搜索窗口中:

  • Conexant cx231xx USB视频捕获支持(video_cx231xx)
  • Conexant Cx231xx ALSA音频模块(VIDEO_Cx231xx_ALSA)
  • DVB/ATSC支持基于Cx231xx的电视卡(VIDEO_Cx231xx_DVB)
  • Conexant cx231xx远程控制器附加支持(VIDEO_cx231xx_RC)

2/但是。它们不会出现在配置窗口中。

3/当我切换"选项->显示所有选项"时,它们出现在模块列表中,我可以在那里看到它们,但它们无法将状态更改为M或Y。它们仍然处于未选中状态。

可能存在一些依赖性问题,但如果假设这种事情是自动解决的,我错了?

如何将cx231xx支持编译到我的内核plz中??

(4.4.26-gentoo x86_64 Intel(R)Core(TM)2 Duo CPU E4600@2.40GHz GNU/Linux)

我似乎已经解决了CONFIG_VIDEO_CX231XX帮助文本中提到的所有依赖关系:

Symbol: VIDEO_CX231XX [=n]
Type : tristate
Prompt: Conexant cx231xx USB video capture support
Location:
-> Device Drivers
-> Multimedia support (MEDIA_SUPPORT [=m])
-> Media USB Adapters (MEDIA_USB_SUPPORT [=y])
Defined at drivers/media/usb/cx231xx/Kconfig:1
Depends on: USB [=y] && MEDIA_SUPPORT [=m] && MEDIA_USB_SUPPORT [=y] && (MEDIA_ANALOG_TV_SUPPORT [=y] || MEDIA_DIGITAL_TV_SUPPORT [=y]) && VIDEO_DEV [=m] && I2C [=m] && RC_CORE [=n]
Selects: VIDEO_TUNER [=m] && VIDEO_TVEEPROM [=m] && VIDEOBUF_VMALLOC [=m] && VIDEO_CX25840 [=m] && VIDEO_CX2341X [=m] && I2C_MUX [=m]

和我的内核:

alnagon ~ % zcat /proc/config.gz |grep MEDIA_SUPPORT
CONFIG_MEDIA_SUPPORT=m
alnagon ~ % zcat /proc/config.gz |grep MEDIA_USB_SUPPORT
CONFIG_MEDIA_USB_SUPPORT=y
alnagon ~ % zcat /proc/config.gz |grep CONFIG_USB=
CONFIG_USB=y
alnagon ~ % zcat /proc/config.gz |grep CONFIG_MEDIA_SUPPORT            
CONFIG_MEDIA_SUPPORT=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_MEDIA_USB_SUPPORT
CONFIG_MEDIA_USB_SUPPORT=y
alnagon ~ % zcat /proc/config.gz |grep CONFIG_MEDIA_ANALOG_TV_SUPPORT
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
alnagon ~ % zcat /proc/config.gz |grep CONFIG_MEDIA_DIGITAL_TV_SUPPORT
CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
alnagon ~ % zcat /proc/config.gz |grep CONFIG_VIDEO_DEV               
CONFIG_VIDEO_DEV=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_I2C=     
CONFIG_I2C=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_VIDEO_TUNER
CONFIG_VIDEO_TUNER=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_VIDEO_TVEEPROM
CONFIG_VIDEO_TVEEPROM=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_VIDEOBUF_VMALLOC
CONFIG_VIDEOBUF_VMALLOC=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_VIDEO_CX25840   
CONFIG_VIDEO_CX25840=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_VIDEO_CX2341X
CONFIG_VIDEO_CX2341X=m
alnagon ~ % zcat /proc/config.gz |grep CONFIG_I2C_MUX=
CONFIG_I2C_MUX=m

只有RC_CORE选项有一些问题,因为缺少:

alnagon ~ % zcat /proc/config.gz |grep CONFIG_RC_CORE
alnagon ~ % zcat /proc/config.gz |grep RC_CORE
alnagon ~ % zcat /proc/config.gz |grep CONFIG_RC     
# CONFIG_RCU_EXPERT is not set
CONFIG_RCU_STALL_COMMON=y
# CONFIG_RCU_EXPEDITE_BOOT is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
# CONFIG_RCU_TRACE is not set
# CONFIG_RCU_EQS_DEBUG is not set
alnagon ~ % 

CONFIG_RC_CORE不在内核中,但必须解决,那么。。?

背景:
RC_CORE是内核中一个特殊的、奇怪的选项RC_CORE是辅助选项,不能手动切换。它不能在xconfig或menuconfig中找到,但有一个工具,它知道这一点。正如前面提到的,非常感谢,它是make nconfigF8(SymSearch)在配置中查找RC_CORE及其相关性

Symbol: RC_CORE [=m]
Type  : tristate
Defined at drivers/media/rc/Kconfig:1
Depends on: MEDIA_SUPPORT [=m] && MEDIA_RC_SUPPORT [=y] && INPUT [=y]

它就在这里。隐藏的依赖是:MEDIA_RC_SUPPORT!!!

所以答案是:
如果你想编译VIDEO_CX231XX,你必须同时打开MEDIA_RC_SUPPORT。

此外,"makemenuconfig"和搜索显示了阻止构建模块的原因。

Rami Rosen

最新更新