在构建 Linux 内核之前,我如何知道哪些文件将包含在 Linux 内核中?

在构建 Linux 内核之前,我如何知道哪些文件将包含在 Linux 内核中?

我正在从事一个项目,其中包括构建旧的 Linux 内核版本。这很好,但我仍然需要根据 CVE 修补之前发现的所有安全漏洞的内核。我有 CVE,并提取了其中提到的易受攻击的文件的名称,以及它影响的内核版本。

到目前为止,我已经找到了大约150个潜在的可能会影响我的构建的漏洞,但显然其中一些漏洞会影响与我不使用的图形驱动程序相关的文件。到目前为止,我只是手动浏览了列表,使用make menuconfig和 来检查文件是否包含Kconfig在相关文件夹中。到目前为止,这一切正常,但这些方法不显示实际的文件名(例如 ipc/sem.c),因此需要更多的工作。

理想情况下,我想以某种方式打印将包含在我的构建中的所有文件的列表,然后编写一个脚本来检查是否包含易受攻击的文件。

如何找到将包含在我的构建中的源文件(例如 ipc/sem.c)的名称?

答案1

进行构建,然后列出.o文件。我认为参与构建的每个.c或文件都被编译成具有相应名称的文件。这不会告诉您安全问题是否需要修复构建中包含的头文件。.S.o

make vmlinux modules
find -name '*.o' -exec sh -c '
    for f; do for x in c S; do [ -e "${f%.o}.$x" ] && echo "${f%.o}.$x"; done; done
' _ {} +

更精确的方法是将源放在存储访问时间的文件系统上,然后进行构建。访问时间未由构建更新的文件未在此构建中使用。

touch start.stamp
make vmlinux modules
find -type f -anewer start.stamp

相关内容