我不是 Ubuntu 的菜鸟。我在这里已经有一段时间了。我要问的问题基本上需要一个解释性的答案,可能有例子。我的问题很简单。如下:-
每个人都说,Ubuntu 是从 Debian 发展而来的,通过删除很多东西,添加其他东西,提供自定义显示、品牌、图像或背景等。我的问题是他们是如何做到的。是否只是在计算机系统中安装一个最小的 Debian 发行版,添加并更改该系统,将 Ubiquity 安装程序添加到已安装的发行版,然后创建一个 iso 文件?
考虑这两种情况。
场景一
他们挂载 CD ISO 映像
删除不需要的包
添加品牌
进行定制
重新打包 ISO
-或者-
场景二
在 PC 中安装 Debian 发行版
删除不需要的软件包,并在已安装的操作系统上安装新软件包
将自定义品牌应用于已安装的操作系统
在已安装的机器中进行自定义
将安装程序添加到已安装的操作系统
重新打包 ISO
实际发生了什么?
发行版的核心是包存档,因此他们首先创建一个存档 (archive.ubuntu.com),然后将 debian 源包复制到那里并在构建守护程序上构建它们。然后他们继续修改许多包并更新档案,最后宣布它是 Ubuntu 的第一个版本,并从档案中构建新的 cd 映像。
live cd 和 ubiquity 出现在几个版本之后。最初安装 cd 使用 debian-installer:我们现在称之为备用/服务器 cd。
小智 0
Ubuntu 是基于 .deb 的,因此您不能只是 targz 操作系统并将其放入 CD 上。虽然我没有关于 Ubuntu 如何从 Debian 分叉出来的真实信息,但最好的猜测是他们让一些发行版范围内的构建工具可以工作,并从 Debian 的不稳定存储库中提取了他们认为重要的软件包,然后对它们应用了自定义。这些软件包已添加到 APT 存储库和 debootstrap 进程中。
基本上,如果您正在构建发行版,则可以采用两种方法。要么从头开始,在上游维护者的站点上查找想要包含的包,将它们拉出并打包成您自己的格式,然后自己添加依赖项信息,要么从相对稳定的发行版中分叉出来。
重新打包整个系统并不是一个非常易于维护的方法,因为您将无法获得哪个包依赖于哪个包的信息。这很重要,因为 *NIX 世界中的软件是通过跨包的大量依赖项(库和其他文件)进行编译的,因此即使像创建简约的 chroot 这样微不足道的事情也接近于一场噩梦。甚至不谈整个操作系统。