如何找到我的机器上当前运行的内核的源代码?

如何找到我的机器上当前运行的内核的源代码?

我的机器上有一个Linux 3.14.0 kernel(CentOS 6.2)正在运行的程序,但源代码不在/usr/src/.

有什么办法可以找出它的编译源吗?

源代码肯定在机器上的某个地方,它是由我的一位同事编译的。此外,这些是未连接到互联网的实验室机器,因此必须手动复制和安装源代码。

我只需要根据当前的内核镜像来定位它。

答案1

/lib/modules/$(uname -r)/source应该是到内核源代码树的符号链接(如果它是以合理的方式安装的)。

除此之外

find / -type d -name "linux-3.14.0"

将查找 3.14.0 Linux 内核的分发目录 - 这是解压 tarball 时得到的目录。如果失败的话,

find / -type d -name "linux-*"
find / -type f -name "Kbuild"

不应该给你太多误报。

如果您需要编译它,那么您可以将源代码传输到机器并从头开始,前提是他使用嵌入式.configCONFIG_IKCONFIG选项)编译它。您可以从/proc/config.gz(如果内核支持 - 请参阅选项CONFIG_IKCONFIG_PROC)或使用scripts/extract-ikconfig内核源目录中的脚本来提取它。

除此之外,问你的同事完全不可能吗?

相关内容