构建用于调试旧版 Linux 内核的舒适工作流

发布日期:2026-05-25 10:01:48   浏览量 :2
发布日期:2026-05-25 10:01:48  
2

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

当您想要研究 Linux 内核时,例如观察漏洞利用程序的行为(如针对内核 4.7 的 Dirty COW 漏洞),您需要构建一个舒适的工作环境。

我使用:

  • Docker:用于在其原始版本环境中编译源代码(使用与源代码时代相对应的 GCC/LD 版本)。
  • QEMU:用于在虚拟机中运行可执行文件。
  • VS Code:作为调试器。

通过本文,我将向您展示如何配置我的环境以实现高效的设置。

1) 编译源代码

第一步是获取内核源代码。

对于较新的版本(5.10 以上),最简单的方法是从 kernel.org 下载 tar 文件。对于较旧的版本,最好的解决方案是通过 git 获取。

例如,对于 4.7 版本,我们首先检索标签:

git ls-remote --tags git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git | grep "v4.7"

然后我们克隆它以获取该版本,而无需下载整个历史记录:

git clone --depth 1 --branch v4.7 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4.7

几分钟后,您将拥有一个包含 4.7 内核源代码工作版本的 4.7/ 目录。

然而,这些源代码无法直接编译。使用现代编译器(GCC 13+)编译 4.7 内核(于 2016 年发布)会因 C 语言标准或安全属性处理的变化而产生编译错误。这就是为什么您需要加载与这些源代码兼容的 GCC 和 LD 版本(见下表),而实现这一点的最简单方法是通过 Docker。

内核版本 Ubuntu 版本 代号 发布日期 默认 GCC
v2.6.x 6.06 Dapper Drake 2006 年 6 月 GCC 4.0
v3.2 12.04 Precise Pangolin 2012 年 4 月 GCC 4.6
v3.13 14.04 Trusty Tahr 2014 年 4 月 GCC 4.8
v4.4 16.04 Xenial Xerus 2016 年 4 月 GCC 5.4
v4.15 18.04 Bionic Beaver 2018 年 4 月 GCC 7.3
v5.4 20.04 Focal Fossa 2020 年 4 月 GCC 9.3
v5.15 22.04 Jammy Jellyfish 2022 年 4 月 GCC 11.2
v6.8 24.04 Noble Numbat 2024 年 4 月 GCC 13.2

我们需要检索与我们感兴趣的内核版本相对应的 Docker 容器。对于 4.7 版本,它是 Ubuntu 16.04。

要搜索可用的容器,有两种解决方案:
a) 运行命令:

skopeo list-tags docker://docker.io/library/ubuntu

您应该会看到类似以下内容

{
"Repository": "docker.io/library/ubuntu",
"Tags": [
"10.04",
"12.04",
"12.04.5",
"12.10",
"13.04",
"13.10",
"14.04",
"14.04.1",
...

...然后运行命令:

sudo docker pull ubuntu:16.04

b) 前往 Docker Hub

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部