Gentoo Linux
大多数 LJ 读者都熟悉各种可用于桌面和服务器系统的商业 Linux 发行版。当人们想到这些商业版本的 Linux 时,自然而然地会想到 Red Hat、SuSE 或 Mandrake 等名称。有些人甚至可能会想到 UnitedLinux,或者,我敢说,SCO Linux。当然,还有您的非商业社区支持的发行版,包括 Debian 和 Slackware。当我向一位朋友提到我打算在系统上安装 Debian 以便更多地了解 Linux 时,他建议我尝试 Gentoo 发行版。
根据 Gentoo 的架构师和开发人员的说法,Gentoo Linux 是“一种特殊的 Linux 版本,可以针对几乎任何应用程序或需求进行自动优化和自定义”。根据您希望系统自定义的深度,这种自定义可以像仅选择您希望在系统上安装的应用程序和服务一样简单。在另一方面,您可以像指示编译器指令利用指令集一样复杂,这些指令集呈现专门为您的处理器编译的可执行代码。这种自定义发生的容易程度是 Gentoo 优势的一部分。修改一个文件 (/etc/make.conf),其中包含您希望使用的处理器指令,让 Gentoo 的 Portage 系统构建针对您的确切需求优化的可执行文件。
Gentoo 灵活性的另一个可能更重要的标志是,您可以根据您的确切需求构建系统。您在包级别确定系统需要执行的操作。例如,如果您正在构建一个桌面系统,而您不希望在其上运行 Web 或邮件服务器,则可以仅安装您希望在系统上安装的那些软件包。如果您想要 GNOME,您就安装 GNOME。如果您想要 KDE,您就安装 KDE。如果您想要带有 twm 的普通 Free86 窗口系统,您就安装带有 twm 的普通 Free86 窗口系统。使 Gentoo 成为执行此类自定义系统构建的最佳发行版的原因可能是该发行版的基础:Portage,即底层软件包管理系统。
根据 Gentoo 的主页,Portage “是 Gentoo Linux 的核心,并执行许多关键功能”。Portage 充当软件分发系统;它还充当集成的软件包构建和安装系统以及系统更新程序。在这些方面,它类似于 Red Hat 的 RPM 和 Debian 的 apt-get 功能,但它比两者都更强大。这种力量体现在 Portage 树的使用中,Portage 树是一组下载到机器的脚本,用于控制各种基于源代码的软件包(上次统计超过 4,000 个)的依赖关系需求和编译选项。
安装 Gentoo Linux 比安装商业发行版更手动;但是,Gentoo 论坛中有人谈论构建图形化安装程序,这将自动化许多任务。目前,为了安装 Gentoo 发行版,您需要决定希望对系统进行多少自定义,然后从 Gentoo 网站下载相应的 ISO 镜像或从 Gentoo 商店购买 CD。
您可以选择基于编译器指令和内置依赖项完全优化您的系统,这包括设置优化,然后构建用于编译其余软件的编译器。或者,您可以选择使用 Gentoo 组的预构建软件。使用您自己的设置优化编译代码的优势在于,如果您针对处理器的特定指令集对其进行优化,则代码在您的系统上通常运行得更快。此选项的缺点是花费在编译过程上的时间,即使考虑到现代芯片架构的进步,编译过程也可能非常耗时。对于我的安装,我选择使用 Stage 1 tarball 安装。这意味着我正在从头开始构建我的系统,编译将用于编译将安装在我的机器上的其余软件的编译器。
从本质上讲,安装过程与几乎所有其他操作系统安装一样简单和相似。唯一的区别是各个步骤的手动性质,Gentoo 工作人员在网站上对此进行了充分的文档记录。我首先下载了我想要使用的 Live CD ISO 镜像,然后将其刻录到 CD 中。使用 Live CD,我将目标机器启动到 CD 镜像中包含的独立 Gentoo 环境中。我在我的硬盘驱动器上启用了 DMA,并允许网络由 DHCP 配置。在此之后,我使用 fdisk 对我的驱动器进行分区。我创建了我的文件系统并格式化了它们;我为我的启动分区选择了 ext3,并为我的根分区和 home 分区使用了 ReiserFS。磁盘设置完成后,真正的乐趣就开始了。
下一步是提取我选择开始使用的 Stage 1 Tarball。之后,我想确保我使用的是最新的 Portage 树,因此我执行了 emerge sync。然后,为了确保我使用适当的编译器指令编译我的软件,我使用 nano 编辑了一个文件 /etc/make.conf。在确保我的配置文件中包含我想要的所有自定义项后,我启动了引导过程,Gentoo 的脚本由此重新编译了 GCC 编译器。完成此步骤后,我进入了 Stage 2,它主要包括更多基本系统组件的编译。这在使用 Portage 系统和命令 emerge system 时自动发生。
在编译花费了几个小时之后,我必须手动修改 /etc/fstab 以指示我的分区在哪里。我还必须下载我的内核的源代码并编译它。在此之后,我下载并编译了一个系统日志记录器、一个 cron 守护程序,设置了我的 root 密码并配置了一个引导加载程序。然后,我通过卸载我为安装过程挂载的各种文件系统、弹出 CD 并重新启动我的机器来清理。此时,我的机器是一个干净的 shell,等待我的命令以使用 Portage 系统安装软件。当一切都完成时,我从开始到完成大约花了 24 小时才拥有一个功能齐全、完全自定义的桌面系统。
我应该解决的第一个问题是,我认为关于 24 小时系统设置时间的公认“缺点”。虽然有些人可能认为这个编译时间过长,但这并不是 24 个工作小时。总共,我花了大约三个小时在机器前,而大部分时间都花在观看 Portage 做它的事情上。
关于时间的第二件我想说的是,我的情况是一种极端情况,如果您选择使用 Gentoo 系统,则不必经历这种情况。只有当您想引导您的系统并从头开始编译所有内容时,才需要执行这些步骤。您可以(并且许多人选择)从 Stage 2 或 Stage 3 tarball 安装,其中包含许多使用标准指令预编译的软件包。在使用我为我的处理器选择的编译器指令时,我注意到速度提高了大约 10% 到 15%。我选择 Stage 1 tarball 的主要原因是为了深入了解从头开始构建 Gentoo 系统。此外,Gentoo 组确实提供了 ISO 镜像,其中包含使用针对特定处理器系列分支(例如,Athlon/Duron、奔腾 4、Athlon-XP)的编译器指令预编译的软件。这些提供了优化,而无需等待编译的麻烦。
让我坚持使用 Gentoo 系统的一个巨大优势是我可以轻松地向我的系统添加软件包、从我的系统删除软件包以及更新安装在我的系统上的软件包。基本上,所有这些都是使用 emerge 命令完成的。例如,为了在我的机器上安装 OpenOffice,我进入 shell 并输入 emerge openoffice。经过两个小时的优化编译时间,我和我的用户(我的妻子)可以使用 OpenOffice 了。当为 OpenSSL 提供安全补丁时,为了更新它和我的整个系统,我只需输入 emerge -u world。然后更新了我系统上安装的所有有可用更新的软件包。
我发现的另一个巨大优势与 Gentoo 发行版本身无关,而是支持社区和 Gentoo 网站。Gentoo 的文档出乎意料地达到了商业级水平,甚至比某些商业发行版的文档还要好。Gentoo 组对其网站的 XML 和 CSS 的依赖赋予了它统一的外观、感觉和实现。它干净、健壮且功能实用。
就支持而言,我提出的任何问题都在发布到邮件列表后几分钟内得到了解答。总的来说,我遇到的用户对新手很热情,他们似乎有兴趣为该产品培养庞大的用户群。在技术社区中,很少能找到经验丰富的用户,他们既能熟练地回答像我这样的新手的问题,又能帮助其他经验丰富的用户解决技术问题。
最后但并非最不重要的一点是,没有应用程序支持的操作系统不是一件好事。使用 Gentoo,无需担心。Gentoo 社区已经以 Portage/ebuild 格式制作了 4,000 多个应用程序(从完全免费的软件(如 Ximian 的 Evolution)到专有软件(如 VMware)),并且该库还在不断增长。如果您找不到特定产品的 ebuild,您始终可以下载源代码并像在任何其他 Linux 发行版上一样安装它。
Gentoo Linux 为想要一个易于使用且高度可定制的系统,并且可以轻松保持最新的用户提供了一个选择。如果您是这样的人,我强烈建议您了解一下这个元发行版。
Sean Bossinger 管理着佛罗里达国际大学的大学技术服务支持中心。在他充裕的空闲时间里,他喜欢和他的妻子 Tracy 以及两个吵闹的儿子 Donovan 和 Logan 在公园里玩耍。