为什么不可能将所需的内核模块标记为编译隐藏的依赖?

时间:2017-01-03 16:24:21

标签: linux linux-kernel

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

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

我的方法:

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

  • 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)

2 个答案:

答案 0 :(得分:0)

看来,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中解决,但有工具,它知道它。如上所述0andriy - 非常感谢 - 它是make nconfig。 nconfig中的 F8(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。

答案 1 :(得分:-1)

另外" make menuconfig"并在那里搜索显示阻止构建模块的内容。

拉米罗森