从头开始编译 Ubuntu 最干净的方法?

从头开始编译 Ubuntu 最干净的方法?

介绍: 我听说 Ubuntu 很安全,因为它是开源的,我们可以看到我们的机器上运行着什么代码。虽然有 Linux 内核的源代码和许多开源模块,但我们如何才能确信 ubuntu 映像的原始来源与我们访问的源代码相同?

问题: 因此,问题来了:我们如何从头开始重新编译构建https://ubuntu.com/download/desktop/thank-you?version=20.04.2.0&architecture=amd64文件名为 ubuntu-20.04.2.0-desktop-amd64.iso,大小为 2.8GB?

满足以下部分要求:

  1. 构建过程中最小化二进制文件
  2. 最小化黑盒过程
  3. 理想情况下,SHA-256 校验和与原始版本相同

答案1

如果您喜欢自行编译所有内容,那么 Gentoo 可能是更好的选择。

我已经在一家 Linux 发行商工作了 16 年(并且还在继续),我可以向你保证,编译一个完整的 Linux 发行版绝非易事。从事这项工作的公司的商业价值在于其专业知识、基础设施和工作流程(及其自动化)。这些都不是可以在家里轻松复制的。

你可以在家里轻松地构建一个或几个软件包,但当涉及到完整的分发时,这是一项艰巨的任务。你愿意花多少人力年?

话虽如此,Gentoo Linux 的理念是让每个用户都能在家中做到这一点;但是,您仍然需要对提供源码包和所有补丁的人抱有一定信任。如果您有疑虑,可以深入研究其中一个或几个,检查他们在做什么,但对整个发行版的任何有意义的百分比都这样做是不现实的。

此外,我怀疑您是否能够比那些多年来一直以此为生的人更好地(至少以任何有意义的方式)优化生成的二进制文件。

不过,如果你觉得必须这么做,那就去做吧。;-)

答案2

首先,您将学习如何构建单个包,了解如何查找和使用相同的编译器环境和标志,了解如何使用完全相同的源代码修订版等 - 并比较它的校验和。

然后,您将学习如何构建安装程序映像上的数千个包(有些非常复杂) - 并比较每个校验和。

然后,您将学习如何对您构建的系统进行快照、将其压缩为 squashfs 映像并使其成为可启动的 .iso。

无需构建农场来从源代码编译每个软件包,已经熟练构建这些复杂软件包的专家只需花费数小时就可以在自己的高端工作站上完成这项工作。而初学者则可能需要花费数年时间。

...最后,你的校验和将是错误的你构建的每个包。每个包都经过签名,并且您没有私钥。

但是我们先把这个放在一边——其他一切都会匹配。您的构建日志将与 Ubuntu 构建日志(可在 Launchpad 上找到)逐行匹配。您的软件包将与 Ubuntu 软件包大小相同。它们的功能完全相同。它们将具有相同的错误。它们将具有相同的网络使用情况。它们将通过您能想到的所有其他测试,以检测软件包是否被篡改或更改。

这就是你验证 Ubuntu 的方法安装程序(这就是您链接的),而不是安装程序创建的完成的系统。

相关内容