Linux:确定特定的驱动程序/功能是否已编译为正在运行的内核
时间:2020-01-09 10:41:41 来源:igfitidea点击:
问题描述:我知道如何找到有关FreeBSD内核下已编译驱动程序的信息。
但是,如何确定特定功能,驱动程序或文件系统支持是否已编译到我正在运行的Linux内核中?
我如何确定DMA支持是否已编译到我的内核中?
A.当前Linux内核配置存储在.config文件或config-$(uname -r)文件中:
/boot/config-$(uname -r)
或/boot/config-$(uname- r)*
:自动生成的内核配置文件。
该文件几乎存在于所有Linux发行版中,包括RHEL/CentOS/Fedora/Debian/Ubuntu Linux。/usr/src/kernels/$(uname -r)-$(uname -m)/。
config或/usr/src/linux-2.6.N/.config
:当前内核配置文件。
如果系统上没有/usr/src/kernels/$(uname -r)-$(uname -m)/目录,则说明尚未安装内核源代码。
使用apt-get或yum命令安装内核源代码。
找出DMA支持是否已编译,请执行:
grep -i DMA .config
或者
grep -i DMA /boot/config-$(uname -r)*
输出示例:
CONFIG_GENERIC_ISA_DMA=y CONFIG_ISA_DMA_API=y CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set CONFIG_IDEDMA_PCI_AUTO=y # CONFIG_IDEDMA_ONLYDISK is not set # CONFIG_HPT34X_AUTODMA is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set CONFIG_IDEDMA_AUTO=y CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_PDC_ADMA=m # CONFIG_PATA_OPTIDMA is not set CONFIG_I2O_EXT_ADAPTEC_DMA64=y CONFIG_BCM43XX_DMA=y CONFIG_BCM43XX_DMA_AND_PIO_MODE=y # CONFIG_BCM43XX_DMA_MODE is not set CONFIG_CARDMAN_4000=m CONFIG_CARDMAN_4040=m # DMA Engine support CONFIG_DMA_ENGINE=y # DMA Clients CONFIG_NET_DMA=y # DMA Devices CONFIG_INTEL_IOATDMA=m CONFIG_HAS_DMA=y
为简单起见,大多数行仅包含一个参数。
跟随a的任何内容均被视为注释,并被忽略。
选项CONFIG_HAS_DMA共有3种可能性:
- CONFIG_HAS_DMA = y:已编译DMA支持。
- CONFIG_HAS_DMA = m:DMA支持编译为可加载内核模块。
- CONFIG_HAS_DMA = n:不支持DMA。