我想重新编译linux内核,以便添加一些新模块。
但是:
无法在 xconfig 中检查它们以将其标记为模块或内置。
我的方法:
1/“编辑 -> 查找”在搜索框中输入 CX231XX -> 找到模块选项。所有四个模块均列在搜索窗口中:
- Conexant cx231xx USB 视频采集支持 (VIDEO_CX231XX)
- Conexant Cx231xx ALSA 音频模块 (VIDEO_CX231XX_ALSA)
- DVB/ATSC 支持基于 Cx231xx 的电视卡 (VIDEO_CX231XX_DVB)
- Conexant cx231xx Remote 附加支持 (VIDEO_CX231XX_RC)
2/但是。它们不会出现在配置窗口中。
3/当我切换“选项 -> 显示所有选项”时,它们出现在模块列表中,我可以在那里看到它们,但它们无法将状态更改为 M 或 Y。它们仍然保持未选中状态。
可能存在一些依赖性问题,但如果假设这类事情会自动解决,我就错了?
如何将 cx231xx 支持编译到我的内核中,请 ??
(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 中解决,但有工具可以了解它。正如提到的 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。
关于linux - 为什么无法标记所需的内核模块进行编译、隐藏依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41447894/