如何将 Linux 服务器发行版剥离至核心?

如何将 Linux 服务器发行版剥离至核心?

我终于习惯了管理一个小型的 Ubuntu 服务器 VPS。但是,我知道我肯定安装了一些我不需要的程序。即使它只是 Debian 之上的 Ubuntu 系统的开销。

例如,自从我发现了 Nginx,我就不再使用 Apache。自从我发现了 SSH,我就不再使用 (S)FTP。我可以用 dash 替换 bash,或者用 dropbear 替换 OpenSSH。

所以我想知道是否有一个我可以学习的指南或脚本可以运行,它可以删除系统的所有非核心部分,以便我可以更多地了解实际需要什么以及这些库如何工作。但我必须承认我还远没有准备好开始接触 Linux 核心本身。

我的目标是在大约 50MB 的空间内安装一个完整的 PHP 网络服务器,这样我就可以将剩余的 RAM 分配给 FS 和 memcache。我对 Debian 最感兴趣,因为我已经了解它了 - 但我也听说过 CentOS 的好评。

答案1

看来您的主要目标是充分利用 RAM 来提高性能,而不是存放臃肿或不需要的软件,对吗?如果是这样,只需禁用 Apache(举例来说)就足够了;卸载它不会给您带来任何好处。

因此,最好检查一下ps fax输出。您将看到每个正在运行的包以及它产生的子进程数。很可能您没有运行 FTP,所以您也不必担心这一点。

此外,大多数非性能关键型服务可以从inetd(或很可能xinetd) 运行。在这种情况下,它们不会占用任何 RAM,直到您访问正确的端口。

根据我的经验,Ubuntu 服务器(不带 LAMP)非常接近准系统。我通常只添加 ssh、nginx 和我正在使用的任何后台服务器。

另一方面,如果您想减少磁盘使用量,那么最好使用其他发行版或(在我看来,最好的选择)Linux 从头开始

答案2

当我在一家 VPS 托管公司工作时,我们看到一些巧妙的 Web 服务器实现,设计为在 64MB 内存占用内运行(假设你谈论的是 RAM,而不是磁盘空间)——LowEndBox 上的 Debian+nginx 操作指南成为一个有力的典范。

答案3

您问的是可以删除哪些内容以满足小型服务器的需求。但从您的工作方式来看,您可能对发行版存在误解;Ubuntu 基于 Debian,但它不是 Debian,而是带有自定义软件包的 Ubuntu。您不能按照自己想要的方式删除所有内容。

另外,即使有脚本或打包程序,您也会说自从发现 SSH 后就不需要 FTP 之类的话。好吧,如果您将服务器剥离到“核心”,则可能不一定需要 SSH,因此自动化工具可能也会将其剥离。

本质上,您需要进行干预并弄清楚您需要什么和不需要什么,并删除您不使用的软件包。

我不知道您的 VPS 的条件是什么,但当人们希望将服务器精简到最小占用空间时,我的第一反应是告诉他们寻找适合最小占用空间的发行版。Distrowatch 可能会帮助您。Ubuntu 服务器是一个通用操作系统,并不以小为目标。如果您正在寻找专门的服务器发行版,您可以找到它们,但您会失去一些您可能真正习惯的功能,例如 apt-get 系统或您依赖的其他工具。

更不用说如果您只是剥离部分内容,您最终可能会遇到一个您认为不需要但实际上需要的包,因为一些三次删除的依赖关系。

最终答案是,除了安装时的最小配置外,我不知道还有什么可以自动删除服务器配置的工具,我对任何这样做的工具都很谨慎,因为它可能不知道我在服务器中想要什么,可能会删除我想要的东西。相反,我会寻找一个专门针对我想要的服务器角色的发行版,或者我会使用 apt-get 工具来查看安装了什么,并删除我不想要的东西(因为打包器可能会最大限度地减少我的麻烦)。

答案4

在 Ubuntu 中,你可以使用现有系统来构建JeOS 图像。它们是相当普通的 ubuntu 系统,但几乎精简了所有内容。甚至没有安装手册页。上次我构建 Ubuntu 10.04 LTS x86_64 JeOS 系统时,它压缩后的大小为 124MiB,上面有一些附加软件包(ruby、puppet 及其依赖项,还有其他东西)。

谈到您的目标,如果您没有将整个系统放入无盘硬件的 ramdisk 中,那么您可能误解了一些东西。

相关内容