【问题标题】:How can I compile the mainline Linux Kernel with the same compile flags Debian uses for hardening?如何使用 Debian 用于加固的相同编译标志来编译主线 Linux 内核?
【发布时间】:2016-12-24 16:06:50
【问题描述】:
据我了解,Debian 在构建软件包时使用了几个强化选项。但是我如何找出哪些编译标志用于 Debian 中的 Linux 内核和特定架构?
我经常从上游主线源 (kernel.org) 构建我自己的内核包,我希望应用与 Debian 用于其内核构建的相同或至少相似的强化。目标架构是 arm(或 Debian 术语中的 armhf),我正在 x86-64 上进行交叉编译(如果这有什么不同的话)。
【问题讨论】:
标签:
linux
build
compilation
kernel
【解决方案1】:
获取内核的 Debian 源代码包并在其内核源代码根目录中获取 .config 文件。或者,如果你有一个正在运行的系统,你可以在运行时通过使用cat /proc/config 或zcat /proc/config.gz 来获取它的配置,如果内核支持的话。或者,使用 /boot/config-x-y-z
一旦你有了配置(这告诉内核 Makefile 哪些组件要构建到内核中以及要构建哪些模块),将它放在你正在构建的内核源代码的根目录中,将其命名为“.config”,然后运行make old config 在该目录中。然后运行make menuconfig 进行必要的调整
您可以使用apt-get source linux-source 或通过从 Debian HTTP 或 FTP 存储库手动下载 .deb 文件来获取内核源代码包(检查 /etc/apt/sources.list 中的内容)
如果您获得原始 .deb 文件,则可以使用工具将 .deb 转换为 tar 球,然后您可以提取这些文件,或者 .deb 实际上可能已经是一个 tgz 格式文件(我不记得了),您可以使用它来提取tar xvzf linux-image-x-y-z.deb
如果您使用apt-get source,您将在apt-get 完成后在您的工作目录中找到压缩包。这些可以用tar 相同的方式提取
这将为您提供配置选项。要获得编译时标志,您应该使用相同的提取 .deb 源包或 tarball 并查看纯文本文件以在执行构建的文件中找到 CFLAGS 和 LDFLAGS。试试find . -type f -exec grep -Hn CFLAGS {} \;