Linux 操作系统如何能“基于”另一个 Linux 操作系统?

Linux 操作系统如何能“基于”另一个 Linux 操作系统?

最近,我浏览了相当多的 Linux 发行版,以了解其周边的情况,其中不断出现的一句话是“[此操作系统] 基于 [另一个操作系统]”。例如:

  • Fedora 基于 Red Hat
  • Ubuntu 基于 Debian
  • Linux Mint 基于 Ubuntu

对于来自 Mac 环境的人来说,我理解“OS X 基于 Darwin”,然而当我查看 Linux 发行版时,我发现自己在问“它们不都是基于 Linux 吗......?”

在这种情况下,一个 Linux 操作系统到底意味着什么基于另一个 Linux 操作系统?

答案1

Linux 是一个核心,Debian 是一个分配该内核和一组软件实际上与系统交互。

我现在可以使用 Debian,并将启动屏幕上的徽标更改为我自己的徽标,然后我的发行版就基于 Debian(以一种非常原始的方式)。通常,在派生发行版中所做的调整更为实质性。

重点是,如果您想更改某个发行版,那么您只需采用它,根据自己的喜好进行修改,然后基于现有发行版发布您自己的发行版(只要遵守所有许可证)。

答案2

Linux 是一个核心— 一种(复杂的)软件,可与硬件协同工作并导出特定的应用程序编程接口(API)以及如何精确使用它的二进制约定(应用程序二进制接口,ABI),以供“用户空间”应用程序使用。

Debian、RedHat 和其他公司操作系统— 由内核和一组用户空间程序组成的完整软件环境,这些程序使计算机在执行合理的任务(发送/接收邮件、允许您浏览互联网、驱动机器人等)时变得有用。

现在每个这样的操作系统,虽然提供大多数相同的软件(例如,没有那么多免费的邮件服务器程序或互联网浏览器或桌面环境)在实现此目的的方法以及其既定目标和发布周期上也有所不同。

这些操作系统通常被称为“发行版”。在我看来,这是一个不太正确的术语,因为从技术上讲,你可以手动构建所有必需的软件并将其安装在目标机器上,所以这些操作系统分发打包的软件,因此您无需构建它(Debian、RedHat),或者它们有助于构建它(Gentoo)。它们通常还提供安装程序,帮助将操作系统安装到目标机器上。

制作和支持操作系统是一项非常复杂的任务需要复杂而复杂的基础设施(上传队列、构建服务器、错误跟踪器和存档服务器、邮件列表软件等等)和人员。这显然为创建一个新的、从头开始的操作系统设置了很高的门槛。例如,Debian 为大约五种硬件架构提供了大约 37k 个软件包——想想看,支持这些东西需要付出多少努力。

尽管如此,如果有人认为他们需要无论出于什么原因,创建新的操作系统,使用现存的基础。而这正是操作系统基于在其他操作系统上也出现了。例如,Ubuntu 以 Debian 为基础,只导入了 Debian 的大部分软件包,然后重新打包其中的一小部分,并打包了自己的软件包,提供了自己的图片、默认设置、文档等。

请注意,这种“基于”的事物存在变化。例如,Debian 鼓励创建其自身的“纯混合”:直接使用 Debian 的发行版,只添加一堆软件包和其他仅对一小部分用户(例如从事教育、医学或音乐行业等的用户)有用的内容。

另一个转折是全部这些操作系统都是基于Linux的。例如,Debian也提供FreeBSD和Hurd内核。它们的用户群非常小,但无论如何。

答案3

Red Hat、Debian 等都是 Linux 的发行版(“distros”)。

请记住,Linux 从技术上来说只是内核,它是一个可运行且有用的系统的一部分。

您需要基本的实用程序、有关系统中事物所在位置的决策、安装和更新软件的机制以及约定/标准(例如程序所在的目录)来将它们结合在一起。

许多发行版通常将大多数经典实用程序的 GNU 版本视为基础版本,这就是为什么 Debian 等将其称为 GNU/Linux。但对于几乎所有其他东西,都有很多选择。而且由于 Linux、GNU 实用程序和许多在 Linux 下运行的东西都是免费软件,任何人都可以随时创建新的发行版。包括从现有发行版派生,如果该发行版未包含任何受版权保护或专有的内容。

图像和徽标通常是受商标/版权保护的,通常不能直接用于衍生发行版,除非您遵守所有者的条款和条件。如果软件是 GPL 或类似 GPL 许可的,则通常可以。

通常与发行版相关的一个主要问题是软件包管理器或维护、测试和分发软件的方法。派生的发行版通常与其“上游”软件包管理器兼容。不过,没有什么可以阻止您在任何 Linux 发行版上手动安装程序。

通常,这意味着您将使用相同的包管理器以相同的方式安装软件,并且可执行文件和配置文件的位置将位于同一位置。

答案4

扩展上述答案。Linux 只是内核,大多数系统级命令(gcc、grep、bison)最初是由 GNU 项目编写的,大多数用户级应用程序(XFCE、Apache、XMMS)都是由第三方编写的。

在早期,发行版通常将内核与系统级命令以及用户应用程序和服务器组件的子集捆绑在一起。今天仍然如此,但许多新发行版不想重复努力让所有东西协同工作,因此他们采用 Debian、CentOS、Slackware 等基础发行版,并添加或删除用户应用程序,如 GNOME、KDE、LXDE 等。他们还可能编写自定义菜单并将自己的徽标和背景注入发行版(SUSE、PCLinux 等)。他们可能会走得更远,创建特定于发行版的应用程序,如包管理器或自定义前端。

因此,当您说 Ubuntu 基于 Debian 时,从技术上来说您是正确的,但是现在最好这样说,特别是在 Ubuntu 的情况下,它源自 Debian,因为对 Debian 的更改可能会也可能不会进入 Ubuntu。

这应该有助于稍微形象化我所说的内容,它显示了几个已建立的发行版如何分叉成其他发行版。虽然不是 100% 准确,但它给出了一个想法。

http://photos1.blogger.com/blogger/3370/2500/1600/GNULinuxupdatedw4.0.jpg

据我所知,这幅图 100% 准确,它是所有 Linux 发行版的时间表,并显示了它们的起源。如今,只有极少数(不到六个)发行版可以追溯到其起源。根据这张地图,只有两个,Redhat 和 Debian,甚至我心爱的 Slackware 也不是原创的。

http://www.techjini.com/blog/wp-content/uploads/2011/10/linuxdistrotimeline-7.2.png

相关内容