我想为树莓派 3 配置和构建内核。但是当我读取配置文件时,我不知道linux-kernel
配置文件中的代码是什么意思。我尝试搜索它,但我找不到它。
前任:
CONFIG_SYSVIPC=y
-> 什么CONFIG_SYSVIPC
意思?
CONFIG_POSIX_MQUEUE=y
-> 什么CONFIG_POSIX_MQUEUE
意思?
我想为树莓派 3 配置和构建内核。但是当我读取配置文件时,我不知道linux-kernel
配置文件中的代码是什么意思。我尝试搜索它,但我找不到它。
前任:
CONFIG_SYSVIPC=y
-> 什么CONFIG_SYSVIPC
意思?
CONFIG_POSIX_MQUEUE=y
-> 什么CONFIG_POSIX_MQUEUE
意思?
我尝试搜索它,但我找不到它。
使用find
pipedgrep
在内核源代码的 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 -> CONFIG_SYSVIPC 是什么意思?
使用搜索方法产生
/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$
除了依赖于架构的条目之外,init子系统在init/Kconfig中有主要的配置条目。
如果幸运的话,“帮助”部分有一个不错的解释。
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 -> CONFIG_POSIX_MQUEUE 是什么意思?
使用搜索方法产生
/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
)确保满足所有依赖关系并且启用所有自动选择。
用于配置内核的内核配置文件,例如启用/禁用驱动程序。
CONFIG_PCI=y 表示,内核源代码中的 PCI 部分将被包含在编译中。如果 PCI 接口在硬件中可用,我们将在配置文件中启用 PCI。
CONFIG_SYSVIPC=y 在内核中启用消息队列、信号量集和共享内存段。
CONFIG_POSIX_MQUEUE=y 在内核中启用 posix 消息队列。
请参阅以下链接以获得更好的理解, http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO/kconfig.html