linux-内核配置文件中代码的含义

Meaning of the code in the linux-kernel config file

我想为 raspberry pi 3 配置和构建内核。但是当我读取配置文件时,我不知道 linux-kernel 配置文件中的代码是什么意思。我尝试搜索它,但找不到它。

EX:

CONFIG_SYSVIPC=y -> CONFIG_SYSVIPC 是什么意思?

CONFIG_POSIX_MQUEUE=y -> CONFIG_POSIX_MQUEUE 是什么意思?

用于配置内核的内核配置文件,如enable/disable驱动程序。

CONFIG_PCI=y表示,内核源码中的PCI部分会被编译。如果 PCI 接口在硬件中可用,我们将在配置文件中启用 PCI。

CONFIG_SYSVIPC=y 在内核中启用消息队列、信号量集和共享内存段。

CONFIG_POSIX_MQUEUE=y 在内核中启用 posix 消息队列。

参考下面的link以便更好地理解, http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO/kconfig.html

I try search it but I can't find it.

使用 find 管道传输到 grep 以在内核源代码的 Kconfig* 文件中找到配置参数的定义:

find . -name "Kconfig*" | xargs grep "config PARM"

其中 PARM 是 CONFIG_PARM 的文本。

Kconfig* 文件的树结构和整个菜单记录在 https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt


CONFIG_SYSVIPC=y -> what does CONFIG_SYSVIPC mean?

使用搜索方法产生

/home/test/linux-4.4.1$ find . -name "Kconfig*" | xargs grep "config SYSVIPC"
./arch/x86/Kconfig:config SYSVIPC_COMPAT
./arch/mips/Kconfig:config SYSVIPC_COMPAT
./arch/powerpc/Kconfig:config SYSVIPC_COMPAT
./arch/parisc/Kconfig:config SYSVIPC_COMPAT
./arch/s390/Kconfig:config SYSVIPC_COMPAT
./arch/ia64/Kconfig.debug:config SYSVIPC_COMPAT
./arch/sparc/Kconfig:config SYSVIPC_COMPAT
./arch/tile/Kconfig:config SYSVIPC_COMPAT
./arch/arm64/Kconfig:config SYSVIPC_COMPAT
./init/Kconfig:config SYSVIPC
./init/Kconfig:config SYSVIPC_SYSCTL
/home/test/linux-4.4.1$

除了 arch 相关的条目之外,init 子系统在 init/Kconfig.[=45 中具有主要配置条目=] 如果幸运的话,"help" 部分中有一个不错的解释。

config SYSVIPC
        bool "System V IPC"
        ---help---
          Inter Process Communication is a suite of library functions and
          system calls which let processes (running programs) synchronize and
          exchange information. It is generally considered to be a good thing,
          and some programs won't run unless you say Y here. In particular, if
          you want to run the DOS emulator dosemu under Linux (read the
          DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
          you'll need to say Y here.

          You can find documentation about IPC with "info ipc" and also in
          section 6.4 of the Linux Programmer's Guide, available from
          <http://www.tldp.org/guides.html>.

CONFIG_POSIX_MQUEUE=y -> what does CONFIG_POSIX_MQUEUE mean?

使用搜索方法产生

/home/test/linux-4.4.1$ find . -name "Kconfig*" | xargs grep "config POSIX_MQUEUE"
./init/Kconfig:config POSIX_MQUEUE
./init/Kconfig:config POSIX_MQUEUE_SYSCTL
/home/test/linux-4.4.1$ 

检查 init/Kconfig 发现此配置条目:

config POSIX_MQUEUE
        bool "POSIX Message Queues"
        depends on NET
        ---help---
          POSIX variant of message queues is a part of IPC. In POSIX message
          queues every message has a priority which decides about succession
          of receiving it by a process. If you want to compile and run
          programs written e.g. for Solaris with use of its POSIX message
          queues (functions mq_*) say Y here.

          POSIX message queues are visible as a filesystem called 'mqueue'
          and can be mounted somewhere if you want to do filesystem
          operations on message queues.

          If unsure, say Y.

当然你不应该直接编辑 .config 文件。
使用 menuconfig(或类似的)make 目标(例如 make menuconfig)以确保满足所有依赖项并且所有自动选择将被启用。