Linux 发行版入门指南(三)

原文:Introducing linux distros

协议:CC BY-NC-SA 4.0

十三、Slackware

Slackware 是现存的最古老的发行版。它比 Debian 早几个月诞生,看着两者的演变,这似乎很难相信。很多人认为 Debian 太保守了;这些人会称 Slackware 为恐龙。是的,Slackware 这些年来没有太大的变化,但是 Slackware 社区非但没有感到羞耻,反而为此感到自豪。Slackware 号称是最“像 Unix”的 Linux 发行版。

历史

Slackware 和 Debian 不仅仅分享了作为 Linux 发行版的悠久历史;它们还有一个共同的起源:SLS(软着陆 Linux 系统)发行版。虽然 Debian 是作为 SLS 的一个更好的替代品而创建的,但是 Slackware 是它的一个发展。

1993 年,Patrick Volkerding 是明尼苏达州立大学 MSUM 分校的一名学生,当时他的人工智能教授让他在计算机实验室安装 SLS,以便从其更好的 LISP 解释器中受益。Volkerding 照做了,然后他改进了发行版本身,修复了 bug,并在实验室为将来的安装做了修改。后来,看到 SLS 发行版没有任何新的发布,错误仍未修复,互联网上对好产品的需求很大,他问是否有人对他的工作感兴趣。在许多积极的回应和大学朋友的鼓励下,他在 1993 年 7 月 17 日上传了第一个 Slackware 1.00 版本到大学的一个匿名 FTP 服务器上。

时至今日,Volkerding 仍然是 Slackware 的主要开发者;他被称为“男人”或 Slackware 的 BDFL(仁慈的终身独裁者)。Slackware 仍然是一个小而流行的发行版。

Note

Slackware 名称的起源来自一个与 slack 术语相关的内部笑话,以此向 SubGenius 教会(当时在互联网亚文化中非常流行的模仿宗教)的名义领袖 J.R. “Bob” Dobbs 致敬。它从来没有打算成为发行版的最终名称;当他第一次发布这个发行版时,他保留了这个名字,目的是没有人会把它看得太重。

哲学

如果没有 UNIX 和 Linux 本身的历史知识,Slackware 的哲学是很难理解的。虽然该发行版声称在简单性、稳定性和功能(以及用户友好性)方面是保守的,但来自友好的操作系统/发行版的新用户可能会对此有非常不同的看法。首先,大多数人不会认为 Slackware 是一个友好的发行版;事实上,恰恰相反。他们会发现很难认为它简单而强大,因为它缺乏跟踪包的依赖性。但如果从 Slackware 的作者和社区的角度来看,似乎更容易理解。他们不想像当前的 BSD 那样偏离最初的 UNIX 设计太远,原因很简单,也很有说服力。一个有经验的 UNIX 用户会觉得使用 Slackware 就像在家里一样,而且她很容易就能使用它。不管你是否同意这个观点,你必须认识到时间支持他们的决定;其他友好的发行版早就消失了。

因此,Slackware 试图遵循 KISS 原则(在第十一章中解释),在其核心设计中保持保守,并且不在其包中引入变化。广义地说,Slackware 是一个带有 Linux 内核的 BSD。在追求简单和纯粹过程中,每个包都是独立配置的;没有全局配置。大部分配置是通过简单的文本文件完成的。默认情况下,没有预定义任何内容;你应该知道你在做什么,你想要什么。

不要误会我;对其核心设计持保守态度并不意味着它缺乏创新或必要的改变(比如对 64 位架构的支持)。Slackware 试图与时代同步,并支持“最近”的创新,如 UEFI 或 Btrfs 文件系统,当新版本出现时,软件包都是非常新的。但是通常 Slackware 遵循“如果它没有坏,就不要修理它”的座右铭

发行版选择标准

现在你已经了解了一些 Slackware 的历史,让我们来看看这个特殊的发行版在第二章的选择标准上表现如何。

目的和环境

Slackware 是一个通用发行版,有一个适用于所有用途和环境的独特版本。尽管如此,您仍然可以安装两个不同的风格分支:稳定版本和“当前”版本,后者是发行版的开发树。

支持

虽然 Slackware(和 Volkerding 本人)是由商店的销售支持的,并且它曾经有一个商业发行版(很短的一段时间),但它不是一个纯粹的商业发行版(你仍然可以免费获得),它根本没有商业支持。支持只来自它的开发者和它的小而忠诚的社区。获得社区支持的方式如下:

用户友好性

Slackware 不适合初学者。虽然它比 Arch 或 Gentoo 更容易,但它不是一个用户友好的发行版。您仍然需要了解很多关于命令行和 Linux 本身的东西,并且您应该对 Slackware 如何管理其包感到满意。传统上,Slackware 用户被定型为典型的“长胡子”系统管理员等。虽然 Slackware 用户通常在技术上很精通,但这并不像描绘的那样困难。例如,许多用户在使用 Gentoo 时付出了更多的努力。

稳定性

Slackware,由于其固有的简单性、成熟的设计和频繁的发布,是一个非常稳定的发行版。它遵循标准的发布模型,没有固定的时间表;当一个新的版本准备好了,测试好了,足够稳定了,它就出现了(这是众所周知的)。因此,当前的版本 14.1 是 2013 年发布的,软件包已经过时。未来 14.2 版本的测试版目前正在开发中,它将会有新的软件包。一些人更喜欢使用“当前”开发版本作为他们的日常系统,因为这一点。而对于扶持部分,官方没有政策;有时,老版本会突然停止支持。

硬件支持

与 Arch 和 Gentoo 一样,您必须愿意学习如何支持不包含在内核或官方包/驱动程序中的硬件,并且非常依赖第三方维护的构建/二进制文件。

美学

除了休闲服商店的 DVD 包装和商品销售之外,没有对美学的关注。

桌面环境

Slackware 事实上的官方桌面是 KDE,但它也给你提供了安装 Xfce 和几个窗口管理器(Fluxbox,Blackbox,WindowMaker,FVM2 和 TWM)的选项。

初始化系统

Slackware 使用的 init 系统是一个基于 rc 文件的 BSD 风格的系统,它也与传统的 System V (sysv)脚本兼容。未来没有迁移到 systemd 的计划;社区中很大一部分人反对将来在发行版中实现 systemd。

包装管理系统

Slackware 有一种非常特别的管理软件包的方式。这些包是简单的 tarballs(压缩或未压缩),其中的文件通常被简单地提取到它们各自的路径中,然后执行几个doinst.sh脚本。根本没有对依赖关系的管理;你应该照顾它。Slackware 中有两个管理包的官方工具:pkgtoolsslackpkg。后者是最新的一个,它可以管理网络包,而不仅仅是像pkgtools这样的本地包。

有几个非官方的 Slackware 软件包库;SlackBuilds.org 在 http://slackbuilds.org 可能是最受欢迎的。还有几个非官方的工具来管理包,像swaretslapt-get,它们都有依赖解析。这些存储库中的包可以从源代码构建;编译它们,并允许您创建自己的包。事实上,这些包附带了一个构建它们的方法(类似于 Gentoo 的 ebuilds 或 Arch 的 pkgbuild),SlackBuilds 库就是基于此。

体系结构

Slackware 正式支持 32/64 位的 Intel/AMD 架构,但也有到 ARM 和 S/390 架构的端口。

安全性/匿名性

与 Arch 或 Gentoo 一样,与其他发行版相比,安全性更多地取决于用户(尽管用户总是任何操作系统中最薄弱的环节),但官方软件包基数小,软件包的稳定性和年龄有助于控制漏洞。此外,软件包总是更新,以修复安全漏洞;它们是通过安全邮件列表公布的。Slackware 社区的很大一部分在技术上是内行,所以他们可以比大多数人更好地处理这些问题。

原则和道德

没有任何关于原则和道德的书面记录;你应该按照自己的意愿来管理它们。内核中有非自由二进制 blobs,一些非自由软件,没有什么可以阻止你在你的发行版中安装第三方软件包。

现场 CD

这个发行版没有官方的 Live CD 镜像,但是 Eric Hameelers(也称为 AlienBOB,Slackware 最伟大的贡献者之一)目前正在致力于一个项目,希望有一个 Slackware Live CD 版本。它可能会与 Slackware 14.2 一起发布,目前处于测试状态。

专业认证

Slackware 没有具体的专业认证。

装置

安装 Slackware 有点尴尬。它不像 Debian 或 Ubuntu 这样友好的发行版,也不像 Arch 或 Gentoo。它处于两种经历的中间。它使用了一个安装工具,有助于简化大部分安装过程,但是它需要在开始和结束时使用命令行。当它使用 ncurses 工具(一个基于文本的图形环境)来安装它时,它让我想起了 Arch 安装。当然,这让我想起了以前,几乎所有的 Linux 发行版都有非常相似的安装方式。换句话说,Slackware 比 Gentoo 或 Arch 更容易安装,但它仍然是一种老式的体验,而且对初学者来说很苛刻。

首先获取 ISO 镜像文件来安装发行版。在 www.slackware.com/getslack/ 访问 Slackware 网站的“获取松弛”部分(见图 13-1 )。在这里,你必须选择是去商店还是购买物理 DVD/CD 来安装发行版,或者通过 BitTorrent 或 Slackware mirror 下载 ISO 映像。我一般会选择走最流行的路径,就是从镜像下载一个 ISO 镜像。这样做,并点击镜像链接重定向到镜像页面(如图 13-2 所示)。

A367684_1_En_13_Fig2_HTML.jpg

图 13-2。

The mirrors section of the Slackware web site

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13-1。

The section of the Slackware web site where you can obtain the ISO image

在这里,您可以从“可用镜像”中选择一个镜像,或者直接从“ISO 镜像”中获取 ISO 镜像这两个链接都显示在侧边菜单中。如果你跟随后一个链接,你会在主镜像的目录树中结束,如图 13-3 所示。最新版本是 2013 年 11 月的 z4.1,有 32 位和 64 位版本。转到 64 位版本所在的最后一个文件夹,下载其中的 DVD ISO 映像文件。

A367684_1_En_13_Fig3_HTML.jpg

图 13-3。

The directory tree in the main Slackware mirror

当你第一次从 ISO 镜像启动时,你会看到如图 13-4 所示的屏幕。这是一个简单的文本屏幕,上面有如何启动系统的说明。如果您不想使用任何选项,您必须按 Enter 键并等待两分钟才能启动。

A367684_1_En_13_Fig4_HTML.jpg

图 13-4。

The first screen after the boot from the Slackware ISO image

几秒钟后,它会询问你键盘布局(如图 13-5 )。如果您使用不同于 US ANSI 的布局,请按 1 并按照说明操作(它将显示一个菜单,您可以在其中从各种选项中选择布局)。只需按回车键并继续。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13-5。

The option to select a different keyboard layout

此后,您将直接进入终端会话,在这里您必须以 root 用户身份登录,无需密码(如图 13-6 所示)。在此过程中,在登录之前和之后,将为您提供基本说明和您应该遵循的步骤。首先要做的是在启动安装工具之前准备好磁盘。说明书建议使用像fdiskgdisk这样的经典工具,但我将使用parted。我喜欢使用这个工具,因为它可能是最通用的工具,因为它支持 MBR 和 GPT 分区。同样,我使用 2TB 的磁盘,并使用 MBR 分区表创建一个简单的分区方案(//home)。注意内核版本太旧了(3.10.17 ),同样的情况也发生在一些工具上,比如不能使用选项--pathslsblk

A367684_1_En_13_Fig6_HTML.jpg

图 13-6。

The terminal login prompt where you end up after boot up

# parted /dev/sda
(parted) mklabel msdos
(parted) mkpart pri ext4 1MB 50GB
(parted) mkpart pri ext4 50GB 100%
(parted) set 1 boot on
(parted) u GiB
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 2199GB
Sector size (logical/physical): 512B/512B
Partition table: msdos
Disk Flags:

Number   Start   End     Size    Type     File system  Flags
 1       1049kB  50.0GB  50.0GB  primary  ext4         boot
 2       50.0GB  2199GB  2149GB  primary  ext4
(parted) q
# lsblk
NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda          8:0    0     2T  0 disk
!─sda1       8:1    0    50G  0 part
`sda2        8:2    0     2T  0 part
sr0         11:0    1   2.3G  0 rom

完成磁盘分区后,您可以运行setup程序,这将帮助您几乎完成安装的其余部分。一个基于文本的界面(使用 ncurses 库)将会出现,如图 13-7 所示。

A367684_1_En_13_Fig7_HTML.jpg

图 13-7。

The setup tool to help you with the installation

这是一个有多个选项的菜单,帮助条目是第一个。此帮助主要为您提供安装的第一部分(准备磁盘)的说明,您已经完成了安装。如果您已经设置了键盘布局,并且没有使用交换分区,您可以放心地忽略下面两个选项,就像本例一样。所以直接去目标入口,按回车键。在这里你可以看到可用的分区(如图 13-8 )。选择它们中的每一个,工具将要求你格式化它(图 13-9 ),然后选择一个可用的文件系统(图 13-10 )。为两个分区选择 quick format 和 ext4 文件系统。对于第一个分区,该工具将假设它是/分区,对于最后一个分区,您必须输入挂载点(在本例中是/home)。最后,它显示了磁盘分区如何格式化和挂载的摘要,如图 13-11 所示。

A367684_1_En_13_Fig11_HTML.jpg

图 13-11。

The summary of the current status of the disk partitions

A367684_1_En_13_Fig10_HTML.jpg

图 13-10。

Select the file system of the partition

A367684_1_En_13_Fig9_HTML.jpg

图 13-9。

Choose the type of formatting

A367684_1_En_13_Fig8_HTML.jpg

图 13-8。

The current partition on the disk

下一步,该工具将询问您使用什么介质来安装 Slackware(图 13-12 )。在这种情况下,选择第一个选项。选择后,它会要求您自动或手动扫描介质;选择自动。这需要一些时间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13-12。

Select the installation media

一旦它扫描了介质并知道了您可以安装的软件包,就会要求您选择要安装的软件包。如果你有疑问,最好使用默认选中的或者全选。无论如何,分区足够大,你不需要太担心这个。你可以在图 13-13 中看到这一点。按确定。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13-13。

Select the packages that you want to install

下一个屏幕要求您选择想要如何安装软件包(图 13-14 )。前两个条目是完全自动的,不需要您的干预;其余的用于选择你想要安装的软件包。如果你不确定安装哪些包,我建议你选择第一个选项,这也是最快的一个。然后按确定。软件包的安装需要几分钟时间(在我的系统中大约需要 9 分钟)。

A367684_1_En_13_Fig14_HTML.jpg

图 13-14。

The packages installation mode selection

安装完所有软件包后,它会建议您创建一个 u 盘来引导系统(如果您的系统能够这样做的话)。参见图 13-15 。如果将引导加载程序写入磁盘的过程失败,或者如果您不想在磁盘上安装引导加载程序,而想从 u 盘引导,这将非常有用。这是你的选择;在我的例子中,我跳过了这一步。

A367684_1_En_13_Fig15_HTML.jpg

图 13-15。

Create an optional USB stick to boot the system

下一步是在您的硬盘上安装引导加载程序(图 13-16 )。要安装的工具是 LILO,这是一个传统的旧引导加载程序,现在已经停产;几乎没有其他发行版继续使用它。(但我们必须考虑到 Slackware 14.1 是 2013 年的,而 LILO 是在 2015 年 12 月停产的,所以鉴于 Slackware 的保守性质,这是可以理解的。)无论如何,LILO 毫不费力地完成了它的工作,所以让我们把它安装到硬盘上。我选择自动方法,因为它在大多数时候都很有效。接下来,你可以在几个屏幕分辨率之间进行选择(图 13-17);在几乎所有的现代系统中,最后一个 1024x768x256 应该可以很好地工作。它将询问您关于 LILO 的另一个问题,即您是否希望添加任何可选参数,以便在引导时传递给内核,但是将其留空并继续。

A367684_1_En_13_Fig17_HTML.jpg

图 13-17。

Choose a screen resolution to use with LILO

A367684_1_En_13_Fig16_HTML.jpg

图 13-16。

The LILO boot loader installation step

接下来,它将询问您是否想在文本控制台(命令行)中使用 UTF-8 模式,并警告您可能的冲突。如果您不确定,请选择“否”,但是我用 UTF-8 测试过,到目前为止没有发现任何问题。因此选择是并继续(图 13-18 )。

A367684_1_En_13_Fig18_HTML.jpg

图 13-18。

Choose if you want to use UTF-8 in the text console

最后,它会问你在哪里安装 LILO。选择 MBR 将其安装在硬盘的主引导记录中,然后继续。下一个屏幕设置您将要使用的鼠标。大多数人都有 USB 鼠标,所以这是一个安全的选择;如果您仍在使用 PS/2 鼠标,并且您的鼠标不在列表中(这很有可能),则“ps2”条目在这里是一个安全的选项。我选择“usb”(见图 13-19 )并按下 OK。现在它会问你是否要安装gpm程序才能用鼠标在控制台中复制粘贴;选择是并继续。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13-19。

Select which mouse type you want to use

然后它会问你是否要配置你的网络。选择是,它会要求你设置一个主机名(图 13-20 和一个域名(图 13-21 )。输入您希望用作系统名称的主机名,如果您不想设置域(您可能不想设置),请输入一个空格。

A367684_1_En_13_Fig21_HTML.jpg

图 13-21。

Set the domain of your system

A367684_1_En_13_Fig20_HTML.jpg

图 13-20。

Set the hostname of your system

现在是时候在网络上设置系统的 IP 地址了(见图 13-22 )。如果您想要一个固定的 IP 地址,请使用第一个选项。如果您有 DHCP 服务器,请使用第二台服务器(默认)。最后,如果你有无线适配器,使用最后一个。我选择默认。然后它会问你一个 DHCP 主机名;您通常不需要这个,所以将其留空并继续。

A367684_1_En_13_Fig22_HTML.jpg

图 13-22。

Configure the IP address of your system

最后,它会显示您的网络配置摘要(参见图 13-23 )。如果一切正常,进行下一步。

A367684_1_En_13_Fig23_HTML.jpg

图 13-23。

The network configuration summary

现在你必须选择你想在启动时启动的服务(见图 13-24 )。通常,如果您不想在您的系统中使用任何服务器(比如桌面系统),默认选择就可以了。但是如果你想启动bind拥有一个本地 DNS 服务器作为本地缓存来更快的导航或者一个用于打印机的 CUPS 服务器等等。,在此做出选择。如果您不确定,请使用默认设置;您可以稍后再设置。对于询问您是否要设置控制台字体配置的问题,选择否并继续。

A367684_1_En_13_Fig24_HTML.jpg

图 13-24。

Select what services to start at boot time

现在你必须配置时钟(图 13-25 )和时区设置(图 13-26 )。我要给你一个建议,但首先你要知道你的系统中有两个时钟:硬件时钟和软件时钟。这些在很久很久以前是一样的东西,但是现在它们是分开的。第一个在 BIOS/UEFI 中设置(也可以从操作系统中设置),第二个在您的操作系统中设置。硬件时钟是系统启动时操作系统采用的基准,然后操作系统使用时区信息为您提供正确的本地时间。如果您的操作系统配置正确,它还会定期与互联网服务器上的时间同步(通过 NTP,网络时间协议)。因此,您可以将硬件时钟设置为本地时间或 UTC(协调世界时)。我的建议是,你总是把你的硬件时钟设置成 UTC 时间,然后把你的 OS 时间函数设置成你所在的时区。这样做可以在将来为您省去一些麻烦(比如一年两次忘记为夏令时事件更改时钟),或者如果您在同一台机器上使用多个非 Window 操作系统或发行版。Windows 对这个话题非常挑剔,它遵循一种与几乎所有其他操作系统不同的方法;Windows 总是假设您的 BIOS 设置为您的本地时间。如果是这种情况,即你的 PC 上同时安装了 Windows 和 Linux,我建议你使用本地时间作为硬件时钟。

A367684_1_En_13_Fig26_HTML.jpg

图 13-26。

Select your time zone

A367684_1_En_13_Fig25_HTML.jpg

图 13-25。

The clock setting (use UTC)

下一步是选择桌面环境或窗口管理器作为默认图形环境(图 13-27 )。你可能想选择 KDE 桌面环境,但我将选择 Fluxbox 来展示一个窗口管理器,它不同于你在本书中已经看到的其他窗口管理器。

A367684_1_En_13_Fig27_HTML.jpg

图 13-27。

Select a default DE or WM as your graphic environment

您现在必须设置 root 密码。请记住,始终为该帐户创建一个非常强的密码。如图 13-28 所示。

A367684_1_En_13_Fig28_HTML.jpg

图 13-28。

Set a strong password for the root account

就这样!您已经使用安装工具完成了工作。该工具将显示一条消息告诉您这一点。按 OK,将带您进入工具的主菜单(如图 13-7 所示)。选择 Exit,按 OK,然后在控制台中输入正确的命令来重新启动系统:

# reboot

首次启动新的 Slackware 系统时,您将看到如图 13-29 所示的屏幕。

A367684_1_En_13_Fig29_HTML.jpg

图 13-29。

The LILO boot loader of your new Slackware system

您可以等待两分钟自动引导,也可以按 Enter 键开始引导系统。无论哪种方式,您都将进入一个终端会话,您必须以 root 用户身份登录。在给你看了一个 cookie fortune 消息(很久以前很多 Linux 发行版默认安装的一个包)后,你会得到一个 root 提示(图 13-30 )。请注意,默认情况下,您不会在 windows 环境中启动;你现在可以用命令startx来做这件事,但是你应该先做别的事情。也许你注意到你从来没有被要求创建一个用户帐户。您应该现在创建一个用户帐户,这样您就不必在默认情况下使用 root 帐户(永远不要这样做)。使用adduser脚本来实现这一点:

A367684_1_En_13_Fig31_HTML.jpg

图 13-31。

The Fluxbox window manger with Firefox and Emacs

A367684_1_En_13_Fig30_HTML.jpg

图 13-30。

The first prompt in a fresh installed Slackware system Notice that you do not start in your windows environment by default; you could do it now with the command

# adduser
Login name for new user []: johndoe
User ID ('UID') [defaults to next available]:
Initial group [users]:
Additional UNIX groups:
...
Press ENTER to continue without adding any additional groups
Or press the UP arrow to add/select/edit additional groups
: audio cdrom plugdev video power
Home directory [ /home/johndoe]:
Shell [/bin/bash]:
Expiry date (YYYY-MM-DD) []:
...
Creating new account:
...
Full Name []: John Doe
Room Number []:
Work Phone []:
Home Phone []:
Other []:

...
New password:
Re-enter new password:
...
Account setup complete
# exit
myslack login: johndoe
password:
$

最后,在您使用新用户帐户登录后,您可以使用命令$ startx启动窗口管理器。Fluxbox 是一个非常简单的窗口管理器,但它可以用于 Firefox 等现代应用程序或 Emacs 等旧应用程序(见图 13-31 )。当然,您可以对其进行配置,使其更加优雅。

这是一个非常基本的系统,你可能仍然需要安装一些软件包和做一些配置,以拥有一个合理的系统每天工作。

保持

像 Slackware 这样的发行版中的维护任务是通过命令行完成的。基本上你使用相同的工具来执行所有的操作:pkgtools或者slackpkg

管理应用和更新

三是管理软件包的两个官方工具。我会告诉你如何用slackpkg来做。传统工具pkgtool也可以通过交互式菜单(见图 13-32 )或通过命令使用。

A367684_1_En_13_Fig32_HTML.jpg

图 13-32。

The pkgtool interactive menu

要安装一个包,使用以下代码(不要忘记通过在/etc/slackpkg/mirrors中取消注释来选择一个镜像):

# slackpkg update
# slackpkg search firefox
# slackpkg install mozilla-firefox-24.1.0esr-x86_64_1

要删除它:

# slackpkg remove mozilla-firefox-24.1.0esr-x86_64_1

要更新软件包:

# slackpkg upgrade mozilla-firefox-24.1.0esr-x86_64_1

不要忘记,这个工具不管理依赖项,在使用一个已安装的包之前,由您来确保它们已安装。

升级

Slackware 需要在每次发布新版本时进行升级(使用当前分支或选择全新安装),因为它不遵循滚动发布方案。您可以使用slackpkg进行此操作:

# slackpkg update
# slackpkg install-new
# slackpkg upgrade-all
# slackpkg clean-system

升级软件可能因版本而异,因此执行此操作的最佳方式是遵循每张 DVD/CD 中的文件升级说明。根目录下的 TXT。这里有一系列的命令可以帮助你轻松地做到这一点。我建议你在另一个控制台中完成它。按 CTRL+ALT+F2 可以在第一个控制台中执行步骤时进行观察。

# mkdir /mnt/cdrom
# mnt /dev/sr0 /mnt/cdrom
# cd /mnt/cdrom
# less UPGRADE.txt

利弊

以下是我个人认为 Slackware 发行版的利与弊。在这个问题上总是有讨论的余地,但是我已经尽可能地保持客观。

赞成的意见

  • Slackware 是一个非常稳定的发行版。
  • 它提供了一个非常简单的类似 UNIX 的设计。
  • 这是一个原始发行版。
  • 它是高度可配置的。
  • 它通过脚本和文本文件提供非常简单的配置。
  • 包几乎是纯上游的,没有修改。

骗局

  • 包管理器不解析依赖关系。
  • 这不是一个用户友好的发行版。
  • 两次发布之间有很长时间,所以它有过时的软件包。
  • 如果你想要额外的包,你必须使用第三方仓库。
  • 它没有商业支持,社区也很小。
  • 它的文档很差,而且已经过时了。
  • 没有 Gnome 支持。
  • 只有过时的 LILO 作为引导加载程序。

摘要

Slackware 是最后一个适合高级用户的发行版,至少在传统意义上是这样。Slackware 是一个老牌发行版:保守,有点苛刻,然而经过这么长时间,尽管困难重重,仍然存活并吸引了新用户,同时保持了一批非常热情和忠诚的用户。

在下一章,你将会看到一个引入新范例的发行版。它可能是 Linux 发行版的未来。NixOS 为发行版的发展提供了一些有趣的新想法,这是 Linux 发行版前沿设计的一个例子。

十四、NixOS 操作系统

NixOS 是一个非常不同的 Linux 发行版,与你现在所看到的不同。事实上,这是最先进的发行方式,领先于一切。它仍然不成熟,它还在继续发展,它仍然有它的怪癖,没有人能说它最前沿的技术是否会被采用作为 Linux 的未来。还有一些其他的提议(如 GuixSD、GoboLinux 和 Qubes)也试图有所作为,探索新的领域。我包括 NixOS,因为它有非常有趣的概念。它已经被大约 5000 名专业人员采用,作为他们的日常工作发行版;但是,在和别人比较的时候,给它一个宽。

历史

2003 年,Eelco Dolstra 是乌得勒支大学的一名荷兰学生,他在 TraCE(透明配置环境)项目上进行合作,这是他博士研究的一部分。他开始开发 Nix 包管理器,这后来成为他博士论文 1 的核心,也是 NixOS 发行版本身的核心。在同一个 TraCE 项目下,另一个合作者和学生 Armijn Hemel 后来开发了 NixOS 的第一个原型,基于 Nix 包管理器的 Linux 发行版,作为他硕士论文 2 的一部分。

因此,Nix 是作为学术研究的一部分而创建的,而 NixOS 是作为 Nix 可以用来管理整个 Linux 发行版的概念证明而创建的。Dolstra 还将开发其他工具,如 Hydra,这是一个基于 Nix 的持续集成工具,以及 NixOps,这是一个用于供应和部署 NixOS 机器的工具。

2015 年,作为支持 NixOS 发展的战略,基础设施的成本(Hydra 硬件,AWS 成本)和另一个相关项目,创建了 NixOS 基金会。这个基金会主要由个人捐款支持。

今天,一些开发人员、研究人员、用户和专业人员是 NixOS 发行版的一部分,但它正在稳步增长。也许最容易接受的用户是 Haskell(一种纯函数式编程语言)开发人员;他们也喜欢功能驱动的 Linux 发行版的想法。

哲学

NixOS 是围绕其包管理器 Nix 构建的发行版,它是如何实现纯功能软件部署模型的概念证明。这是什么意思?解释它的最好方式是使用作者自己的话:

Existing packages and system configuration management tools are influenced by imperative model, in which system management actions such as package upgrade or changes to system configuration files are stateful: they destructively update the state of the system. This will lead to many problems, such as the inability to roll back changes easily, the inability to deploy multiple versions of packages in parallel, the inability to replicate the configuration definitively on another machine, or the inability to upgrade the system reliably. In this paper, we show that we can overcome these problems by moving to a purely functional system configuration model. This means that all static parts of the system (such as software packages, configuration files and system startup scripts) are built by pure functions and immutable, and are stored in a way similar to the heap in pure function language. We have implemented this model in NixOS, an important Linux distribution, which uses Nix package manager to build the whole system configuration from a modular and purely functional specification. —Eelco Dolstra, Andres Loh and Nicolas Pierron, “NixOS: A Linux distribution with pure functions”, Cambridge University Press, 2010.

因此,NixOS 的理念是证明这个目标是可以实现的,成为 Nix 开发和概念的活实验室。Nix 带来的一系列优势也定义了这种分布,并使其独一无二;这将在“包管理系统”一节中进一步解释。

发行版选择标准

现在你已经了解了一些历史,让我们看看 NixOS 在第二章列出的选择标准上表现如何。

目的和环境

NixOS 是一个通用版本,适用于所有环境。这个版本有两个分支,“稳定”和“不稳定”,后者用于开发。还有针对虚拟化/云环境的 ISO 映像,特别是针对 VirtualBox 和 Amazon EC2。

支持

尽管 NixOS 的社区非常小,但您可以通过多种渠道获得支持:

关于 NixOS 发行版的一点是高级 Linux 用户和专业开发人员的比例比其他发行版社区高得多,主要是因为这些人通常是新技术的早期采用者,就像这个发行版中提供的一样。由于发行版的不成熟,最好的帮助应该来自邮件列表和 IRC 文档和 wiki 中并没有涵盖所有内容,也没有更新所有内容。

用户友好性

NixOS 不是一个用户友好的发行版;您必须知道如何处理命令行及其软件包管理器的特性,并且您必须学习如何编写声明性配置文件来安装它。事实上,许多新用户通过复制和修改另一个用户的另一个配置文件开始使用这个发行版。我将更进一步:我认为它甚至不是一个对高级 Linux 用户友好的发行版,因为他们必须改变他们对 Linux 的看法,并学习如何遵循 NixOS 指南。

稳定性

NixOS 到底稳定不稳定?这个问题很难回答。一方面,它是一个不成熟的、仍在发展的发行版,有一些缺陷,一个小社区远远没有达到必要的临界质量,这意味着主要开发人员承担了太多的工作。另一方面,它是一个允许多种配置、多种包版本和回滚能力的发行版,所以如果更新或设置出现问题,您总是可以回到更安全和稳定的先前配置。此外,您只能在您的用户环境中更新或安装软件包,而不会影响全局环境(由 root 管理)。因此,除了不可避免的错误和一些不便之处,您有很大的灵活性来实现一个非常稳定的系统。最后,你甚至可以在稳定分支和不稳定分支之间选择。

NixOS 遵循一个标准的发布模型,新版本通常在经过测试并且足够稳定时出现,没有固定的时间表。然而,现在的目标是遵循一个更类似于 Ubuntu 的发布模式:每六个月发布一个新版本。目前,NixOS 已经发布了五个稳定的版本,它们遵循类似于 Ubuntu 的编号方案:year.month codename。上一次发布是 16.03 动车组。

硬件支持

NixOS 提供硬件检测。它支持内核支持的硬件,它支持一些无线网卡,你可以用 CUPS 做打印机,但是其他的东西可能不支持。NixOS 相对较新,还在开发中,而且它的社区很小(安装基数也很小),所以当涉及到某些硬件支持时,用户需要自己保护自己。

美学

考虑到围绕这个发行版的社区的规模及其空白的本质,除了 Grub、桌面管理器和桌面环境中常见的徽标和背景之外,没有努力关注发行版的美学是可以理解的。

桌面环境

像 Arch 或 Gentoo 一样,当涉及到桌面环境时,您有很多选择。你可以选择传统的桌面环境,如 KDE、Gnome 或 Xfce,或者窗口管理器,如 Awesome、Xmonad、i3、IceWM 等。默认的“官方”版本是 KDE,因为和 Nix 一样,它是跨平台的。

初始化系统

NixOS 从 2014 年 12 月开始使用 systemd 作为它的 init 系统。此前,它使用的是 System V。

包装管理系统

在像这样的发行版中,它只是作为包管理器的试验场而构建的,一切都以 Nix 开始和结束。而 Nix 是一个非常特殊的包管理器,是一个非常独特的概念。外面没有类似的东西(最接近的一个,GNU Guix,其实是基于 Nix 的)。Nix 引入的新范式有许多优点,但也有一些缺点,所以你必须改变对一些事情的思考方式,否则你会多次碰壁,最终会感到沮丧。

首先,在 NixOS 中,一切都由 Nix 管理:内核、系统包、用户包、系统范围的配置文件等等。Nix 使用一种专为它设计的懒惰的纯函数式语言,这种语言基于定义系统构建方式的配置文件以声明方式使用。无论您使用相同的配置构建系统多少次,您总是获得相同的系统状态。

NixOS 在 Nix 存储(/nix/store/)中使用一个加密散列(从用于构建它的输入中获得)作为存储路径和内部引用中使用的唯一标识符来存储每个与其他包隔离的包。用于构建包的 Nix 表达式中的每次变化都会生成另一个散列,因此存储在另一个不同的路径中;这允许同一个包的不同发布和定制版本共存。包/服务的配置文件也是如此,因此您可以在同一台机器上同时保存几个系统配置或状态。

Nix 存储库称为通道,它们包含构建包的方法,称为 nix 表达式(通常是一个. nix 文件、一些脚本和一些辅助文件)和二进制文件(然而,一些包是从源代码构建的)。Nixpkgs 本质上是一个 git 存储库,包含了构建所有官方包的所有 nix 表达式。通道中的预构建包是由 Hydra 生成的,Hydra 是一个基于 Nix 的连续构建系统,当一个包的新版本可用时,它会构建、测试它,如果通过,就发布它。(实际上,并不完全是这样,因为所有的新软件包都必须通过测试才能发布新的渠道版本)。有一个机器场来托管这项服务。官方渠道通常是 Nixpkgs git 存储库的一个标签或分支。稳定通道称为 Nixpkgs 头后几周),不稳定通道称为 nixos-不稳定(延迟几天)。您可以订阅想要使用的频道。

由于这种包/系统管理模型,Nix 为 NixOS 提供了一系列优于普通 Linux 发行版的优势:

  • 可靠的升级:虽然配置保持不变,但您可以安全地升级您的系统,以始终获得相同的结果,就像是全新安装一样。
  • 原子升级:配置中的更改是以事务的方式进行的,因此它们是原子的,并且只有当事务完成时,更改才会被应用。例如,如果升级中断或失败,以前的状态将继续工作。如果您在系统上保留一个有效的配置(比如初始配置),您的系统将总是能够启动。
  • 回滚:您可以随时返回(回滚)到以前的状态,进行全局配置更改或本地用户更改,安装/删除软件包,等等。这是可能的,因为新的配置不会覆盖以前的配置。事实上,您可以在引导系统时从 Grub 菜单中选择想要使用的配置(当然,您也可以在不引导的情况下这样做)。因为配置同时保存在磁盘上,所以这几乎是瞬间完成的,不需要从磁盘上恢复任何东西或者覆盖任何东西。粗略的比较是,它们作为快照而不是备份工作(实际上,它们使用符号链接)。
  • 安全地测试更改:由于回滚功能和同步配置,NixOS 允许您测试(作为一个选项)一个配置,如果不起作用,它不会使它成为默认配置。更好的是,NixOS 有一个选项,允许您在一个虚拟机上测试这个配置,该虚拟机作为一个沙箱工作,包含您以前的系统状态和您想要测试的新更改。这个过程非常高效(它使用 QEMU,但是不在磁盘映像中克隆您当前的系统)。唯一的缺点是,您的数据(您的主分区)不在这个 VM 中。这也有助于您避免在 Grub 条目中进行大量微小的修改。
  • 可复制的系统配置:您可以从一台类似的机器上复制一个配置,并获得相同的系统(显然,除了用户数据和类似/var内容的“可变状态”)。这对于在生产机器上应用更改之前在测试机器上进行更改或者对于部署来说是非常理想的(事实上,有一个专用工具 NixOps 可以用 NixOS 来做这件事)。
  • 具有源代码和二进制文件的混合模型:默认情况下,Nix 从源代码构建包,但是由于编译是一个缓慢的过程,所以当预构建的二进制文件可用时,可以从缓存服务器(其 URL 包含在通道中)下载它们。在稳定分支中,这让您只构建几个包,因此升级或安装系统已经足够快了。但是在当前的分支中,包是最近的包,经常你必须构建太多的包。
  • 一致性:当一个包或配置发生变化时,所有必需的包或依赖项也会被重新构建。内核和模块也是如此(这不是什么新鲜事;你可以在 DKMS 的其他发行版中使用它)。此外,当一个库被更新时,所有使用它的包都被链接到新版本。
  • 多用户包管理:在 NixOS 中,所有用户都可以使用 root 用户安装的包,但是每个用户也可以在自己的配置文件中安装自己的包。这些包仍然在 Nix store 中存储和管理,不同的用户可以拥有同一个包的不同版本。尽管如此,如果两个用户安装了同一个软件包的同一个版本,只有一个副本被存储并在他们之间共享。此外,还有一些安全措施来避免潜在的漏洞,比如不允许使用setuid二进制文件。

但是 Nix 模型也带来了一些缺点和不足。其中一些与用户适应 NixOS 的意愿有关,这是一个重要的问题。

  • Unix FHS(文件系统层次标准)被破坏。像/bin/sbin/lib/usr,/opt这样的目录要么不存在,要么只包含到/nix/store目录的某个点的链接(只读的)。这使得一些管理任务和问题解决变得更加复杂;你必须依赖 Nix。此外,因为它破坏了与标准 FHS 的兼容性,所以不可能安装任何直接从源代码编译的包(例如用$ make install);你必须先“消除”它。平时也没那么难,就是有点不方便。
  • 破碎的 FHS 有恼人的副作用。应用程序希望在通常的地方找到它们的依赖关系。那些依赖于定义环境的路径变量或者有自己的包管理器的,比如 Python、Ruby 等编程语言。对此有问题。wiki 上有很多由包维护者创造的技巧和变通方法,但是增加了出错的空间。还可以使用 nix-shell,这是一个用于构建沙盒环境的工具。随着发行版基数的增长,这种情况会更频繁地发生,为了让这个发行版被更多的人采用,这是一个需要解决的关键挑战。您可以通过每个项目隔离虚拟机或容器,或者处理不同的 NixOS 配置来避免这些问题,但最终您还必须在其他情况下解决这些问题。例如,我尝试使用我的 Emacs 配置。大部分都能工作,但是需要编译一些扩展才能工作,这不是一个有趣的经历。
  • 散列使得可读性变得困难。在/nix目录层次结构中的每个包/文件名的开头使用散列使得查找/排序您的搜索更加困难。例如,您可以在 nix store 中的/nix/store/5rnfzla9kcx4mj5zdc7nlnv8na1navg-firefox-3.5.4存放一个 Firefox 包。幸运的是,您仍然可以使用whereis, whichlocate命令找到许多东西。但是你只需要运行一个printenv命令来查看环境变量就又开始头疼了。
  • 潜在的大量磁盘使用。拥有许多不同版本的软件包和许多不同的配置的缺点是所使用的磁盘空间的成本,这可能是相当大的,特别是如果系统上有多个用户具有非常不同的配置文件。由于回滚功能,删除或废弃的软件包不会从磁盘上物理删除。您仍然可以手动执行 Nix 的垃圾收集器,或者通过 systemd 服务定期删除旧的、未被引用的包。你也可以选择使用 Nix 优化,对相同的文件使用硬链接;这样节省了很多空间。
  • 更改后的包在可用之前可能会有很长的延迟。构建包的 Hydra farm 只在重建完全完成时更新一个通道(所有需要重建的包)。当一个变更影响到许多包时(比如一个安全包或者一个重要的库,比如 gcc ),这个重建可能需要几天时间。随着时间的推移,这个问题会变得越来越严重。当然,如果您有资源,没有什么可以阻止您创建自己的 Hydra 设置来为您构建软件包。
  • 软件包基础仍然落后于另一个发行版。Nixpkgs 目前有大约 30,000 个可用的包,而其他发行版的库中有大约 50,000 个包。这意味着如果你想使用其中的一些包,你必须为它们制作一个 Nix 配方。好消息是,您可以将该方法提交到 Nixpkgs GitHub 库,并很容易地提供给社区的其他人,从而帮助维护发行版。

总之,如果你能够对所有事情都采用 Nix 的做事方式,你就可以避免前面提到的许多问题,并且可以安全地使用它来完成一些任务。我仍然对 NixOS 作为多用途桌面甚至服务器发行版抱有严重的怀疑。这可能是构建一个具有可靠配置的最小服务器的好方法,但是一旦出现问题,调试这台机器将会很不愉快。不管怎样,我不得不说,我希望看到这个发行版成熟,以便看到它将实现什么。最终,我希望看到所有的包都适应 NixOS 的工作方式,为此,管理一台机器就像编程它的状态一样。在理想情况下,NixOS 范式(或类似的具有相同优势的东西)将是当前许多问题的完美解决方案,这些问题通常用许多变通方法都无法很好地解决。

体系结构

目前,NixOS 仅支持英特尔/AMD 32/64 位架构。也有非官方的港口武装。

安全性/匿名性

由于这个发行版的特殊性质,和 Arch 或 Gentoo 一样,安全性和匿名性在很大程度上依赖于用户。有一些选项可以帮助强化 NixOS,比如使用 grsecurity 内核或 AppArmor,但它们目前非常不稳定,或者太依赖于用户如何配置它们。例如,我在我的 Arch 安装中默认使用 grsecurity 内核,你可以毫无困难地用 Gentoo 做同样的事情,但是如果你现在用 NixOS 尝试,许多包将不能工作,例如一些浏览器。

原则和道德

关于原则和道德,没有什么明确的说法。发行版包含了一些专有软件,比如二进制 blobs 和驱动程序,没有什么可以阻止你从一个专有软件创建(“nixifying”)你自己的二进制包。否则,您必须在配置中明确设置要使用“非自由”软件包,以便能够使用可用的软件包(例如 Nvidia 驱动程序、Adobe Flash)。

现场 CD

NixOS 有一张 KDE 的 Live CD,让你对 NixOS 有一个大概的了解。您也可以使用它来安装发行版。

专业认证

显然,没有专业认证涵盖这种分布。

装置

安装这个发行版是一种独特的体验,维护它也是如此。对于那些刚接触 DevOps 工具的人来说,使用 Ansible、Puppet、Salt 或 vagger 这样的工具来定义没有映像的最终状态,而不是从以前的 VM/Docker Linux 映像中定义最终状态,就像是在没有映像的情况下定义最终状态。因此,你不再需要依赖先前的图像来创造你想要的东西;您从一开始就直接创建了您想要的系统,即使在升级后也是如此。这种操作更加自然,因为您不必依赖不可变的映像(在 DevOps 中,如果您更改您的基本映像,您通常必须更改操作),因为您是在理想的最终状态下创建映像本身。现在想象一下这与像 NixOS 这样的 DevOps 工具相结合的可能性。对此半信半疑;这是一种过于简化和粗略的近似。

第一步是访问 NixOS 网站,在 http://nixos.org/nixos/download.html 获取 ISO 映像。你可以在图 14-1 中看到这个网页。要下载的 ISO 映像有两种格式:最小化和图形化。你也有 VirtualBox 和 Amazon EC2 的图片。对于大多数用户来说,显而易见的选择是图形化的 Live CD(请注意,它仅适用于 64 位架构)。两者之间的主要区别在于,在图形映像中,您可以使用图形工具来完成安装,如分区工具或文本编辑器,而在最小的映像中,您必须使用命令行工具。但是我认为考虑到这个发行版的性质和要执行的操作,无论如何你都需要使用终端;如果您对此感到满意,您应该更喜欢最小安装光盘(您仍然可以选择图形光盘,只需不启动 windows 会话)。因此,请单击图形 live CD 选项下载它。

A367684_1_En_14_Fig1_HTML.jpg

图 14-1。

The downloads section of the NixOS web site

请注意,我使用的是传统的带有 2TB 硬盘的 BIOS 系统。我使用 ISO 镜像来引导系统,所以第一个屏幕是典型的如图 14-2 所示。通常第一种选择应该在大多数系统中起作用;如果您的显卡有问题,请选择第二个。完成引导后,你在终端根提示符下结束,如图 14-3 所示。

A367684_1_En_14_Fig3_HTML.jpg

图 14-3。

The NixOS root console that you get at the end of the boot up

A367684_1_En_14_Fig2_HTML.jpg

图 14-2。

The first screen after booting up from the NixOS ISO image

为了启动图形化会话,您必须输入一个命令,但是正如我前面说过的,如果您对使用命令行没问题,您可以从这里继续安装并使用终端工具。第八个控制台总是提供帮助,如图 14-4 所示,它通过w3m文本浏览器在网络上使用相同的 HTML 手册。我通常以这种方式安装它,但是让我们试试另一种方式:通过键入# start display-manager命令启动图形会话。

A367684_1_En_14_Fig4_HTML.jpg

图 14-4。

The NixOS manual on the terminal

KDE 会议开始;在桌面上的一个文件夹中有三个安装发行版所需的必备工具:一个分区工具(GParted),一个终端(Konsole)和 NixOS 手册(见图 14-5 )。

A367684_1_En_14_Fig5_HTML.jpg

图 14-5。

The default KDE session of the NixOS Live CD

让我们假设网络被很好地检测到并且运行良好。你需要做的第一件事是对磁盘进行分区,为此,使用 GParted 工具(如图 14-6 所示)和一个非常简单的分区方案,只有//home分区。您可以通过选择设备➤创建分区表菜单项来开始创建分区表。默认情况下应选择一个msdos类型,否则,如图 14-7 所示选择并点击应用(忽略警告;在我的情况下,磁盘是空的)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14-7。

Creating the partition table on the disk

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14-6。

The GParted tool to partition the disk

通过单击新建图标创建您的第一个分区。创建一个 ext4 100GiB 分区,标签为 nixos(如图 14-8 )。对于系统文件来说,这似乎是一个非常大的分区,但是在 NixOS 中,您可以存储相同包的几个配置和几个版本,根据包的不同,这可能会占用大量的磁盘空间。在这样的发行版中,在分区上贴标签的想法非常有用,如果设备改变了,可以通过标签重新应用配置。您也可以使用 UUID,但这种方式更容易(在硬件配置文件中,UUID 是在首次自动生成配置文件时通过名称添加到分区中的)。接下来,用磁盘的其余部分以同样的方式创建另一个 ext4 分区,但是使用 home 作为标签。最后,单击应用。你应该有类似于图 14-9 所示的分区方案。

A367684_1_En_14_Fig9_HTML.jpg

图 14-9。

The final partition scheme

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14-8。

Creation of the first partition

下一步是安装分区。为此,请打开 Konsole 终端并输入以下命令。在图 14-10 中,注意分区标签和 UUIDs。

A367684_1_En_14_Fig10_HTML.jpg

图 14-10。

Mounting the partitions

# lsblk -pf
# mount /dev/disk/by-label/nixos /mnt
# mkdir /mnt/home
# mount /dev/disk/by-label/home /mnt/home

现在您必须生成 NixOS 的初始配置文件,然后编辑它以满足您的需要。配置文件将在路径/mnt/etc/nixos/configurations.nix中生成,您将使用图形编辑器 Kate 对其进行编辑。如图 14-11 所示。

A367684_1_En_14_Fig11_HTML.jpg

图 14-11。

Generating the configuration and opening it in Kate

# nixos-generate-config --root /mnt
# kate /mnt/etc/nixos/configuration.nix &>/dev/null

让我们花点时间补充一下。我将告诉您安装 NixOS 并让一个非常简单的系统运行的最简单的方法,例如,非常类似于您在安装 Arch、Gentoo 或 Slackware 时得到的方法。您唯一需要做的事情非常简单:首先,编辑配置文件,取消包含选项boot.loader.grub.device的行的注释,并执行命令# nixos-install。系统将自动安装。最后,它会要求你输入根用户的密码,你只需要重启系统就可以得到一个最低功能的 NixOS 系统。这个过程需要一段时间,因为必须下载和编译某些包(如果你选择不稳定版本,那么很多包将从源代码编译)。然而,这样做意味着您需要创建一个用户,并配置时区、网络设置等。安装完成后。更糟糕的是,之后你必须安装你想要的软件包,就像其他发行版一样。这是对这种分布优势的浪费。例如,请记住,您可以以全局方式安装软件包,以便所有用户都可以使用它们,和/或为每个用户单独安装软件包。一些软件包,如桌面环境或窗口管理器,如果你直接从配置中自动安装它们,应该很容易。

我强烈建议您阅读该手册(通过桌面图标访问,该图标指向位于 http://nixos.org/nixos/manual/index.html )的 web 手册的本地版本),以便对您能做什么和如何做有一个更全面的印象。另外,我强烈建议您在 http://nixos.org/nixos/options.html 查看不同的配置选项。

让我们开始编辑初始文件,以获得最小配置:

# kate /mnt/etc/nixos/configuration.nix &> /dev/null

编辑后的文件内容应该如下所示:

# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running 'nixos-help').

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  # Use the GRUB 2 boot loader.
  boot.loader.grub.enable = true;
  boot.loader.grub.version = 2;
  # Define on which hard drive you want to install Grub.
  boot.loader.grub.device = "/dev/sda";

  networking.hostName = "nixos"; # Define your hostname.
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  # Select internationalisation properties.
  i18n = {
     consoleFont = "Lat2-Terminus16";
     consoleKeyMap = "us";
     defaultLocale = "en_US.UTF-8";
  };

  # Set your time zone.
  time.timeZone = "America/New_York";

  # List packages installed in system profile. To search by name, run:
  # $ nix-env -qaP | grep wget
  environment.systemPackages = with pkgs; [
     wget
     firefox
     htop
  ];

  # List services that you want to enable:

  # Enable the OpenSSH daemon.
  # services.openssh.enable = true;

  # Enable CUPS to print documents.
  services.printing.enable = true;

  # Enable the X11 windowing system.
  services.xserver.enable = true;
  services.xserver.layout = "us";
  # services.xserver.xkbOptions = "eurosign:e";

  # Enable the KDE Desktop Environment.
  #services.xserver.displayManager.kdm.enable = true;
  services.xserver.desktopManager.kde4.enable = true;

  # Define a user account. Don't forget to set a password with 'passwd'.
  users.extraUsers.johndoe = {
    isNormalUser = true;
    uid = 1000;
    description = "John Doe";
    extraGroups = ["wheel" "audio"];
  };

  # The NixOS release to be compatible with for stateful data such as databases.
  system.stateVersion = "16.03";

}

当您准备好配置后,在控制台中引入以下命令来自动安装系统:

# nixos-install

安装完所有软件包后,安装程序会要求您输入根密码,所以请输入一个强密码。程序退出,安装完成。重新引导系统,并为您在配置中指定的用户设置密码,在本例中为 johndoe。为此,nixos-install 程序允许您在新安装的环境中监禁 root 用户(因为显然新用户不存在于 Live CD 环境中)。现在你可以重新启动系统了。

# nixos-install --chroot
# passwd johndoe
# exit
# reboot

当机器重新启动时,您将看到的第一个屏幕是 Grub 菜单(图 14-12 )。请注意,第二个条目是“NixOS -所有配置”在这里,您应该会看到自动存储的配置(那些您没有手动添加到引导菜单中的配置)。

A367684_1_En_14_Fig12_HTML.jpg

图 14-12。

The Grub menu of a fresh installation of NixOS

选择第一个条目来首次引导 NixOS。几秒钟后,你会看到 Slim 桌面管理器,这是 NixOS 中默认使用的(见图 14-13 )。输入您的用户和密码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14-13。

The desktop manager , Slim, is the default one for the NixOS

你又一次进入了 KDE 的环境,就像我在这里展示给你的 Live CD,里面有我告诉你专门安装的应用程序(图 14-14 )。我担心捕获太小而看不清楚,但是如果可以的话,您会看到htop工具中的二进制路径很笨拙,因为它们都在/nix/store directory中。无论如何,你可以看到 KDE 桌面管理器和 htop 以及 Firefox 软件包是如何按照配置文件中的设置安装的。一旦你知道如何去做,这是一个强大的配置和安装系统的方法,但是第一次有点尴尬。如果你想做得更详细,你将不得不浏览 nix 手册,甚至邮件列表和 IRC。这在其他高级发行版中并不少见,但是即使是高级用户,如果想继续使用 NixOS,也必须学习很多东西。就这样!您的系统中安装了 NixOS。

A367684_1_En_14_Fig14_HTML.jpg

图 14-14。

The NixOS KDE with Firefox and htop (inside Konsole) running in the desktop

现在我将向您展示更改您的配置和默认桌面管理器是多么容易。您必须再次编辑现在位于/etc/nixos/configuration.nix的配置文件,取消注释该行(删除前面的#) #services.xserver.displayManager.kdm.enable = true;,然后在 Konsole 终端中执行以下命令:

$ sudo nixos-rebuild test

如果一切顺利,你可以从 KDE 注销,现在 KDM 将成为你的新桌面管理员,如图 14-15 所示。登录。您可以通过运行以下命令将此配置设为默认配置:

A367684_1_En_14_Fig15_HTML.jpg

图 14-15。

You succesfully changed Slim for KDM by changing a line in the configuration

$ sudo nixos-rebuild switch

但是你做了更大的改动,比如用 GDM 和 Gnome 3 代替 KDM 和 KDE,只对文件做了一些改动;对于其他发行版,这可能是一个大问题。您只需更改配置文件的以下部分:

# Enable the KDE Desktop Environment.
# services.xserver.displayManager.kdm.enable = true;
services.xserver.displayManager.gdm.enable = true;
# services.xserver.desktopManager.kde4.enable = true;
services.xserver.desktopManager.gnome3.enable = true;

执行与之前相同的操作。如果你重启系统,你会看到 GDM 作为你的登录管理器,一个功能齐全的 Gnome 3 作为你的桌面管理器(见图 14-16 )。

A367684_1_En_14_Fig16_HTML.jpg

图 14-16。

A Gnome Shell session from changing two lines

我想你可以看到这个发行版有多棒。当然,所有的“可变状态”都是在变化之间保持的;您可以看到您已经在终端中执行的所有操作都出现在历史记录中。

最后,当您重启系统时,如果您选择第二个菜单选项,您将看到类似于图 14-17 的内容,其中显示了您所做的所有配置。没有什么可以阻止你在以前的配置中引导,返回到 KDE,并使用$ sudo nixos-rebuild switch,使它再次成为你的默认配置。如果您想在配置之间频繁切换,您甚至可以给它们一个名称,并将它们作为新的菜单项添加到主 Grub 菜单中。

A367684_1_En_14_Fig17_HTML.jpg

图 14-17。

In the Grub menu, you can choose between all of your previous configurations

许多 Linux 用户真的希望在他们当前的发行版中有这样的东西,包括我自己。我期待看到 NixOS 如何发展。

保持

这个发行版中的所有维护都与 Nix 相关,你应该使用 Nix 工具来执行任务,以确保它们尽可能顺利地进行。

管理应用程序

在 NixOS 中有两种不同的安装/删除应用程序的方式,要么通过配置文件以声明的方式,要么以命令的方式,就像传统的包管理器一样。如果我在管理一个多用户系统,我会使用声明的方式来安装所有用户可用的所有全局包,并且我会让用户以强制的方式安装他们自己的包。在一台单人机器的情况下,我将从配置中安装所有的基础包,并且我将只使用命令行来安装一些包,比如那些我只是暂时需要的包。

在 NixOS 中安装包非常容易。使用这个简单的命令:

$ nix-env -i firefox

要删除它,有两个选项:进行回滚(只有在以后没有其他操作会改变状态时,我才会使用此选项,如修改配置或安装/删除/更新软件包)或删除它。使用此代码:

# This would remove the package (remember, not phisically from disk)
$ nix-env -e firefox

# This would perform a rollback
$ nix-env rollback

更新

同样,在 NixOS 中有两种更新包的方法。您可以使用 Nix 的命令式方法更新它们,或者通过重新构建整个系统来使用声明式方法更新它们。使用第一种方法,您甚至可以单独升级软件包。

要以命令的方式更新某些内容,首先您必须更新通道信息(使用nixos通道):

$ nix-channel --update nixos

现在是时候更新一个包或者所有可用的更新了。首先,下面是如何更新单个软件包:

$ nix-env -u firefox

要更新有新版本可用的所有软件包,请使用以下代码:

$ nix-env -u '*'

为了以声明的方式更新所有的包,您只需重新构建您的配置,它将执行所有需要的更新:

$ nixos-rebuild switch

升级

NixOS 的优势之一恰恰在于此,做可靠的发行版升级。这些升级是通过 NixOS 官方渠道(一种存储库)完成的。当您从当前版本(本例中是 16.03)安装 NixOS 时,您通常订阅了这个频道,并且系统更新是通过这个频道进行的。当一个新版本出现时,你只需要订阅那个发布频道,通过nixos-rebuild进行升级,就可以升级你的整个系统。如果您从不稳定的分支进行安装,或者您将您的系统订阅到不稳定的渠道,那么发行版将遵循滚动发布模型,并且将总是被更新。

让我们看看如何做到这一点。首先,你要知道官方渠道是有的:

$ nix-channel --list | grep nixos

当新版本出现时,您可以切换到新的渠道版本。假设一个新版本在今年九月发布(按计划):

$ nix-channel --list | grep nixos
nixos https://nixos.org/channels/nixos-16.09
$ nix-channel --add https://nixos.org/channels/nixos-16.09 nixos

最后,升级整个系统:

$ nixos-rebuild switch --upgrade

一旦这个过程完成,您将获得一个最终状态,就好像您使用当前配置进行了全新安装一样。

利弊

以下是我个人认为的 NixOS 发行版的利与弊。这件事总有商量的余地,但我尽量做到客观。

赞成的意见

  • 您可以从配置文件自动构建系统,这些配置文件可以用可靠的最终状态进行版本控制。
  • NixOS 提供的尖端技术有很多优点:可靠性、一致性、回滚、原子性、可再现性等。
  • NixOS 提供了一个最先进的包管理器,可以在这个发行版之外使用;它也是多平台的。
  • 与 NixOps 和 Disnix 一起,它为 DevOps 提供了一个非常有前途的工具。
  • 它是一个原始的发行版和软件包管理器,而不是一个分支。

骗局

  • 这不是一个用户友好的发行版。即使是高级 Linux 用户也必须学习 NixOS 的做事方式。
  • 文档是不完整的,有时是过时的,当您试图做一些重要的事情时,您必须依赖其他支持渠道。
  • 它仍在开发中,要成为真正的替代品还需要解决一些挑战。
  • 对于非琐碎的事情,比如构建自己的包,您必须学习 Nix 函数式语言。
  • 如果你试图用 Nix 之外的方式做一些事情,会有严重的缺点和错误。你必须遵循 Nix 的方式做每一件事,即使是你的网络文件,如果你想要一个好的体验。
  • 它的社区很小,要达到成为一个真正的替代品和更快发展所必需的临界质量还有很长的路要走。
  • 它的安装基数很小。
  • Nix 界面可以改进(比如搜索包)。

摘要

在这一章中,您看到了一个可能的、有前途的未来 Linux 场景。虽然它还有很长的路要走,但在目前所有现有的实验性 Linux 发行版中,NixOS 是最先进的,并且有更好的理论基础。已经有相当多的人(大约 5000 人)在使用这个发行版作为他们日常的 Linux OS。和 systemd 一起,这个发行版可以追踪未来的发展方向。

在接下来的章节中,我将介绍更多可选的发行版(比如 Qubes)。不幸的是,我只能给你一个简短的总结,但是我希望它能帮助你对 Linux 发行版全景有一个更广阔的视野。

Footnotes 1

https://nixos.org/∼eelco/pubs/phd-thesis.pdf

2

https://nixos.org/docs/SCR-2005-091.pdf

十五、其他选择

在这一章中,我向您展示了一些我想要详细分析的通用发行版,因为它们要么提供了一个很好的替代方案,要么具有足以吸引您注意的独特性。有像 Red Hat,SUSE 或 CentOS 这样明显的缺席,但选择安装和管理这些面向企业的发行版的用户类型很可能不需要阅读这样的书来做出决定。此外,正因为如此,我把这本书的重点放在桌面发行版上,跳过了像云或服务器这样的环境,其他有趣和有前途的桌面发行版,如 Papyros 和 Apricity OS,也没有在这里讨论。

流行发行版的风格仅仅在桌面环境中有所不同。例如,在 Ubuntu 的情况下,您可以找到 Kubuntu、Xubuntu、Lubuntu、Ubuntu Gnome、Ubuntu MATE、Ubuntu Kylin、Mythbuntu 和 Edubuntu(这些只是官方的)。我不会涵盖这些口味,但也许其中之一会适合你的需要。如果你想探索各种可用的 Linux 发行版,去 http://distrowatch.com 。这个网站尽了很大的努力来跟上高度不稳定的发行版,并提供了最好的编译版本。

佐伦·OS

爱尔兰 Zorin OS(2009 年首次发布)是另一个基于 Ubuntu 的发行版(Linux Mint 和 elementary OS 也是如此)。Zorin 操作系统提供了最接近微软视窗操作系统的体验。为此,它为几个 Windows 版本(或 OS X)提供了相似的外观,并且默认安装 Wine。Wine 是一个允许您在 Linux 中执行原生 Windows 应用程序的工具。但并不是所有的 Windows 应用程序都可以用 Wine 来执行,所以你可能会经常遇到应用程序挂起或某些功能被禁用的情况。

对于因为界面不熟悉而不愿意使用 Linux 的长期 Windows 用户来说,Zorin OS 是一个很好的选择。在既需要运行 Linux 又需要运行一些 Windows 应用程序的混合企业环境中,这也是一个不错的选择。您也可以在其他发行版中安装 Wine(有些发行版甚至默认安装了 Wine,或者安装了它的替代版本 PlayOnLinux),但是 Zorin 是一个现成的解决方案,可以满足这类用户的需求。这是目前流行的发行版,但安装规模较小。

它提供免费和商业版本。后者的附加外观、附加软件和直接来自开发者的更多支持的价格非常低。对商业版本的支持基本上是为了帮助安装发行版,但是我非常怀疑在一个基于 Ubuntu 的发行版中是否需要这种帮助。该发行版有一个默认的基于 Windows 7 的主题,可以针对 Windows XP 或 Gnome 进行更改。商业版本有额外的主题,看起来像 Windows 2000,OS X 和统一。

Zorin OS 的发行版选择标准总结在表 15-1 中。你可以在 http://zorinos.com 了解更多关于 Zorin OS 的信息。

表 15-1。

Distro Selection Criteria for Zorin OS

| 目的和环境 | 两个免费版本:核心版和精简版。两个商业版本:商务版和旗舰版。 | | --- | --- | | 支持 | 商业和社区 | | 用户友好性 | 一个用户友好的发行版,特别是对于以前的 Windows 和 OS X 用户。 | | 稳定性 | 一开始稳如 Ubuntu。与 Ubuntu 的发布方案相同,只是增加了一个延迟。 | | 硬件支持 | 和 Ubuntu 一样。 | | 美学 | Windows 7、Windows XP 和 Gnome。商业广告:视窗 2000,OS X 和统一。 | | 桌面环境 | Gnome 或者 LXDE。商业版增加了统一性。 | | 初始化系统 | 当前版本的 systemd,旧版本的 Upstart。 | | 包装管理系统 | dpkg | | 体系结构 | Intel/AMD 32 位元/64 位元 | | 安全性/匿名性 | 和 Ubuntu 一样。 | | 原则和道德 | 没什么特别的。 | | 现场 CD | 是 | | 专业认证 | 不 |

特丽丝

2007 年发布的 Trisquel 是另一个使用 Ubuntu 作为基础的发行版。在这种情况下,这个西班牙发行版是值得注意的,因为它是少数几个被自由软件基金会承认并认可为自由 GNU/Linux 发行版的发行版之一。在这些公认的发行版中,Trisquel 是最受欢迎和最活跃的。它使用 Linux-libre 内核,并删除了 Ubuntu 最初支持的所有专有软件,以及任何内核固件二进制 blobs 和专有驱动程序。

这是一个社区发行版,仅由捐款和一个小社区支持。因此,即使它是一个友好的发行版,由于只提供免费产品的限制,对硬件的支持是有限的。您可能会遇到图形卡、无线设备等问题,所以我建议在选择这个发行版之前研究一下您的硬件选项。

它有一个名为 Sugar TOAST 的特殊版本,旨在使用为教师和儿童设计的 Sugar 桌面界面的学习环境。这种桌面环境最初是为 OLPC(每个孩子一台笔记本电脑)项目开发的。

Trisquel 是 triskelion 的西班牙语单词,是由三个互锁的螺旋组成的主题;它来自凯尔特文化,这种文化在加利西亚(我和 Trisquel 出生的地方)非常盛行。发行版的标志是一个三叉图标,向 Debian 发行版致敬。

表 15-2 总结了 Trisquel 的发行版选择标准。你可以在 https://trisquel.info 了解更多崔斯凯。

表 15-2。

Distro Selection Criteria for Trisquel

| 目的和环境 | 一个主版本,一个“迷你”版本(只有英语/西班牙语),和一个糖吐司版本 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 一个用户友好的发行版,但是有硬件限制。 | | 稳定性 | 基于 Ubuntu LTS 发布,因此它非常稳定。 | | 硬件支持 | 比普通发行版少,因为它只支持自由软件。 | | 美学 | 除了自定义徽标和主题,别无其他。 | | 桌面环境 | Gnome 或者 LXDE。糖桌面糖吐司版。 | | 初始化系统 | 目前暴发户,因为它是基于 Ubuntu 14.04。将来,它会被系统化。 | | 包装管理系统 | dpkg | | 体系结构 | Intel/AMD 32 位元/64 位元 | | 安全性/匿名性 | 和 Ubuntu 一样,但是提供工具/文档来保护匿名/隐私。 | | 原则和道德 | 只有自由软件。由自由软件基金会认可。 | | 现场 CD | 是 | | 专业认证 | 不 |

PCLinuxOS

美国发行版 PCLinuxOS 是 Mandrake(后来的 Mandriva)的另一个后代,和 Mageia 一样。然而,当 Mageia 试图维护 Mandriva 的遗产时,PCLinuxOS 很久以前就开始走自己的路了。PCLinuxOS 是 2003 年从 Mandrake 派生出来的,这部分解释了与 Mageia 的分歧,因为它是在 8 年前创建的。这个发行版的特点之一是完整的蒙蒂版,它带有大量的预装应用程序来满足多种需求,每个应用程序都有自己预定义的 KDE 虚拟桌面。

与 Mageia 的一个很大的区别是,PCLinuxOS 是一个滚动发布的发行版,不时会有主要的发布。即使是滚动发行版,这些包也不总是最新的版本,而是合并到它们的库中的稳定包。另一个很大的不同是,它是少数几个仍然使用 System V 作为 init 系统的发行版之一,因为它的社区强烈反对对 systemd 的更改。

另一个显著的区别是包管理系统 APT-RPM,它是对最初 Debian app 工具的定制;APT-RPM 使用 RPM 包而不是 dpkg 包。PCLinuxOS 还使用传统的 dpkg 图形工具 Synaptic 作为其默认的图形包管理工具。目前只有少数发行版使用这个包系统。

对于喜欢 Mageia/Mandriva 风格和 rpm、需要友好的发行版、不喜欢 systemd、喜欢滚动发布方案的用户来说,PCLinuxOS 是完美的选择。

表 15-3 总结了 PCLinuxOS 的发行版选择标准。你可以在 www.pclinuxos.com 了解更多关于 PCLinuxOS 的信息。

表 15-3。

Distro Selection Criteria for PCLinuxOS

| 目的和环境 | 每种口味都有独特的 ISO 图像版本:KDE、马黛茶和全蒙蒂。 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 用户友好的发行版 | | 稳定性 | 滚动发布方案,但是包只有在足够稳定的情况下才会发布。 | | 硬件支持 | 和 Mageia 一样:非常好。 | | 美学 | 它自己的布局,定制,和完整的蒙蒂版设计。 | | 桌面环境 | KDE 和马特。光猪六壮士版有一个定制的 KDE。 | | 初始化系统 | 系统 V (sysv),由机构群体决定不切换到系统 d。 | | 包装管理系统 | apt rpm | | 体系结构 | Intel/AMD 32 位元/64 位元 | | 安全性/匿名性 | 开箱即用的合理安全性。 | | 原则和道德 | 务实的方法:将这些决定留给用户。 | | 现场 CD | 是 | | 专业认证 | 不 |

曼哈罗

Manjaro 是一个奥地利/德国/法国发行版,于 2011 年首次发布。这是一个基于 Arch Linux 的友好的选择,适合那些想拥有 Arch 的优点,但又想避免不友好的安装过程的用户。因为它是基于 Arch Linux 的,所以 Manjaro 可以使用它的库和它的包管理器,但是 Manjaro 提供了一个友好的安装程序和工具来管理包、库和基本的系统设置。

默认情况下,Manjaro 有自己的存储库和文档,但是您可以使用 Arch 副本,这是一个额外的优势。一个众所周知的缺点,也是经常受到批评的原因,是它仍然是一个稍微不成熟的发行版,在过去有一些失败(其中一些是严重的安全问题)。尽管这是一个有争议的发行版,有许多批评者,但它仍然是一个非常受欢迎的发行版,可能是因为有许多人喜欢 Arch 的产品,但不喜欢它的问题,Manjaro 对他们来说就像一股清新的空气。

官方的桌面管理器是 KDE 和 Xfce,但是社区也维护类似 Cinnamon、Gnome、MATE、Enlightenment、LXDE、LXQT、Fluxbox、Openbox、Netbook 和 PekWM 的版本。

Manjaro 安装工具 Calamares(几个发行版使用的独立 Linux 安装程序)与 Ubuntu 中使用的工具非常相似。过去曾有过几次开发友好的 Arch Linux 发行版的尝试,Manjaro 似乎是第一个做得很好的。如今,它比 Arch 本身更受欢迎。

表 15-4 总结了 Manjaro 的发行版选择标准。你可以在 https://manjaro.github.io 了解更多关于曼哈罗的信息。

表 15-4。

Distro Selection Criteria for Manjaro

| 目的和环境 | 一个版本有两种口味:KDE 和 Xfce。有网络版。 | | --- | --- | | 支持 | 社区支持。文档不如 Arch 的原始文档好。 | | 用户友好性 | 用户友好的发行版 | | 稳定性 | 滚动发布方案,还是有点不靠谱。 | | 硬件支持 | 比 Arch 好,带硬件自动检测。 | | 美学 | 自定义主题、安装程序和总体外观。 | | 桌面环境 | KDE 和 Xfce。社区支持的其他几个:Gnome、MATE 等。 | | 初始化系统 | 系统 | | 包装管理系统 | Pacman 有自己的存储库,加上使用 Arch 的能力。 | | 体系结构 | Intel/AMD 32 位元/64 位元 | | 安全性/匿名性 | 常规的现成产品。它应该更认真地对待这些话题。 | | 原则和道德 | 和 Arch 一样:用户说了算。 | | 现场 CD | 是 | | 专业认证 | 不 |

安特戈斯

西班牙 Antergos 发行版(最初命名为 Cinnarch,因为 Cinnamon 是发行版的原始桌面环境)是最新的 Arch Linux 衍生版本(大约 2012 年)之一,像 Manjaro 一样面向用户友好。它基本上是在 Arch Linux 基础上添加了一个图形安装工具 Cnchi(最初是从零开始开发的,灵感来自 Ubuntu one ),几乎保持了所有其他东西的完整性。它还提供了一个图形化的包管理器 pamac,这是在 Manjaro 上开发的,它使用了原来的 Arch Linux 存储库和它自己的存储库。简而言之,Antergos 使 Linux 变得简单了。

在安装过程中,您必须从最常用的桌面环境中选择要使用的桌面环境。你可以选择浏览器或办公套件,但任何选择都将安装一些常见的应用程序,与其他用户友好的发行版如 Ubuntu 类似。

Antergos 最近变得非常流行,因为它是一个普通的基于 Arch Linux 的发行版,有一个友好的图形安装程序。一些 Arch 用户选择它来安装一个新的“伪”Arch Linux 系统,而不需要手动操作。

一些公司支持发行版的维护,但是它仍然是一个社区开发的发行版。Antergos 是一个加利西亚词(最初和主要的开发者来自西班牙的加利西亚),意思是祖先;选择这个词意味着向它的祖先阿奇致敬。

表 15-5 总结了安特戈斯的地区选择标准。你可以在 https://antergos.com 了解更多关于安特戈斯的知识。

表 15-5。

Distro Selection Criteria for Antergos

| 目的和环境 | 一个主要版本可作为现场或最小的 ISO。 | | --- | --- | | 支持 | 社区支持,加上使用 Arch Linux 文档的可能性。 | | 用户友好性 | 用户友好的发行版 | | 稳定性 | 滚动发布方案,稳定如 Arch Linux。 | | 硬件支持 | 比 Arch Linux 好,有自动硬件检测。 | | 美学 | 与 Numix 项目合作制作的主题和图标。 | | 桌面环境 | Gnome、Cinnamon、MATE、KDE、Xfce 和 OpenBox | | 初始化系统 | 系统 | | 包装管理系统 | Pacman 使用 Arch Linux 库。 | | 体系结构 | Intel/AMD 32 位元/64 位元 | | 安全性/匿名性 | 和 Arch Linux 一样。 | | 原则和道德 | 实用主义:用户说了算。 | | 现场 CD | 是 | | 专业认证 | 不 |

萨巴永

意大利 Sabayon(大约 2005 年,以前的 RR4 Linux)是 Gentoo 的友好替代品,它是基于 Gentoo 的。这是一个用户友好的发行版,遵循了 Gentoo 的理念,但有一些差异,允许新手用户使用它,就像一个管理二进制文件而不是源代码的图形包管理器。高级用户可以拥有与 Gentoo 几乎相似的体验。它使用与 Manjaro 相同的图形安装程序,Calamares,并通过选择相应的 ISO 映像默认支持几种桌面环境。对于那些想开始使用 Gentoo 但不想一步到位的用户来说,这是一个很好的发行版,他们更喜欢按照自己的进度学习,同时还能享受它的优势。

与 Gentoo 的主要区别是包管理和 init 系统。Sabayon 使用 systemd 而不是 Gentoo 的 OpenRC 作为它的 init 系统。更有趣的是 Sabayon 以一种非常特殊的方式管理包。它有两个包管理器:Entropy 和 Portage。第一个是由 Sabayon 开发的,使用来自它自己的仓库的二进制包;它的目标是新手,它有一个图形界面,Rigo,更友好。高级用户仍然可以使用 Gentoo 的 Portage 从源代码构建包。二进制包通常比源代码更加过时和稳定,在源代码中,您可以使用 Portage 构建您的包。

Sabayon 这个名字来源于法语,是一种传统的意大利甜点,Zabaglione 或 Zabaione。表 15-6 总结了 Sabayon 的发行版选择标准。你可以在 https://sabayon.org 了解更多关于萨巴永的信息。

表 15-6。

Distro Selection Criteria for Sabayon

| 目的和环境 | 桌面版,服务器版,ARM 版,Docker 版,流浪版。 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 用户友好,但适合高级用户。 | | 稳定性 | 滚动发布方案。 | | 硬件支持 | 比 Gentoo 好,因为它支持硬件自动检测。 | | 美学 | 每个桌面环境的默认设置。 | | 桌面环境 | KDE、Gnome、MATE、Xfce 和启示 | | 初始化系统 | 系统 | | 包装管理系统 | 熵和运输 | | 体系结构 | 英特尔/AMD 32/64 位。还有 ARM(目前只有树莓 Pi 2)。 | | 安全性/匿名性 | 正常。不如巴布亚专注。 | | 原则和道德 | 没什么特别的。 | | 现场 CD | 是 | | 专业认证 | 不 |

戈壁人

像 NixOS 一样,巴西的 GoboLinux 发行版试图创新 Linux 发行版的工作方式。始于 2003 年的 GoboLinux 有着不同于 NixOS 的方法;它的重点不是包管理,而是文件系统。GoboLinux 不使用文件系统层次标准(FHS);它使用自己的目录层次结构,将所有程序存储在同一个根目录(/Programs)下,按类别分类,并使用到另一个目录的符号链接作为索引(/System/Index)。其余的根目录是/Users、/Files、/Mount 和/Depot。为了保持与标准 Linux 程序的兼容性,它使用了几个隐藏的(默认)符号链接来重新创建标准的 FHS。这有一些好处,比如可以同时获得同一个包的多个版本。

这些包是通过编译工具使用菜谱(定义如何构建和安装包的脚本)从源代码编译的,它使用其原始的文件系统层次结构作为一种包的本地数据库(由于有了索引)。还可以使用图形工具来管理软件包。GoboLinux 也使用自己的基于几个简单脚本的简单 init 系统。长期以来,根用户被命名为 Gobo,这是这个发行版的另一个特点。

这是一个社区非常小的小发行版,还没有得到太多的认可。此外,不同的根目录结构是有争议的。表 15-7 总结了 GoboLinux 的发行版选择标准。您可以在 www.gobolinux.org 了解更多关于 GoboLinux 的信息。

表 15-7。

Distro Selection Criteria for GoboLinux

| 目的和环境 | 独特的版本可作为一个活的 ISO 图像。 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 相当容易安装和维护,但仍然不是用户友好的。 | | 稳定性 | 滚动发布一样,基于食谱。 | | 硬件支持 | 合理,硬件自动检测。 | | 美学 | 基本上是启蒙的默认。 | | 桌面环境 | 启迪 | | 初始化系统 | 基于几个脚本的简单系统。 | | 包装管理系统 | 编译,但是它也使用文件系统层次结构来管理包。 | | 体系结构 | 比奔腾 IV (i686)更新的英特尔/AMD 32 位处理器 | | 安全性/匿名性 | 合理,加上不同的文件层次结构。 | | 原则和道德 | 没什么特别的。 | | 现场 CD | 是 | | 专业认证 | 不 |

什么事

与 Android 一样,Qubes OS 是否是 Linux 发行版也存在一些争议。Qubes OS 把自己定义为 OS 而不是 Linux 发行版,事实上严格意义上也不是 Linux 发行版。它的共同创建者 Joanna Rutkowska(一位著名的计算机安全研究人员)将其定义为一个 hypervisor 用户,而不是 Linux 发行版或 hypervisor。我在这里介绍它是因为很多人把它称为 Linux 发行版。Qubes OS 是 2012 年发布的美国操作系统,它试图通过“隔离安全”成为最安全的桌面操作系统。为了实现这一点,它使用了几个虚拟机管理程序,其中的进程与其他进程完全隔离。

Qubes OS 在幕后运行一个 Xen hypervisor,它使用一个定制的 Fedora 作为其“dom0”域(管理 hypervisor 的最有特权的域)。用户域(也称为 Qubes)通常是 Fedora、Debian 或 Whonix Linux 发行版,但也可以是 Windows OS。有系统域和用户域;系统域分为安全 GUI 和管理(dom0)、网络和存储。用户域,也称为 AppVMs(它们实际上是轻量级虚拟机),通常由任务或安全级别分隔:个人、工作、不可信、购物、银行等。有一些模板可用作这些用户域的基础,这些用户域具有共同的基础软件,但具有独立的内存、存储和网络。有一种机制可以在这些域之间安全地共享文件和复制粘贴。

为了使用操作系统的所有功能,硬件必须支持某些限制,如 VT-x 和 VT-d CPU 虚拟化功能、TPM 安全平台、UEFI,最好是固态硬盘和英特尔 GPU。该公司提供了硬件兼容性列表,甚至还有 Purism 提供的 Qubes 认证的笔记本电脑。

Qubes 由一家名为无形事物实验室的公司开发,但作为开源和自由软件发布。支持来自公司和社区;换句话说,ITL 支持 Fedora 和 Debian 的官方模板,但社区也支持 Whonix、Ubuntu 和 Arch Linux。

表 15-8 总结了 Qubes 操作系统的发行版选择标准。可以在 www.qubes-os.org 了解更多关于 Qubes OS 的信息。

表 15-8。

Distro Selection Criteria for Qubes OS

| 目的和环境 | 作为 ISO 映像和实时 USB 映像提供的独特版本。 | | --- | --- | | 支持 | 社区和 ITL | | 用户友好性 | 一旦你理解了它的工作原理,它就是一个相当用户友好的操作系统。 | | 稳定性 | 标准发布方案。还是有点不成熟。 | | 硬件支持 | 如果您想使用所有操作系统功能,则受限 | | 美学 | 桌面环境默认值 | | 桌面环境 | KDE 和 Xfce | | 初始化系统 | Fedora 域中的 systemd。实际上,它引导 Xen 管理程序。 | | 包装管理系统 | 每分钟转数 | | 体系结构 | 英特尔/AMD 64 位。最好使用 VT-x、VT-d 和 TPM 技术 | | 安全性/匿名性 | 尖端技术;它非常安全,并提供集成的匿名功能。 | | 原则和道德 | 允许您运行专有操作系统,如 Windows。实用的方法:用户决定。 | | 现场 CD | 是的,一个活的 USB | | 专业认证 | 不 |

索卢斯

Solus 是 2013 年作为 Chrome OS 的替代产品在爱尔兰发行的,后来停产了,后来更名了两次,最后在 2015 年完全重组并以当前形式发布为 Solus。这是一个专注于用户友好的 Linux 的原创发行版。它最近因其名为 Budgie 的原始桌面环境而广受欢迎,该环境不仅优雅、实用、轻便,而且直观、清新。

Solus 也有自己的包管理器 eopkg,它是 PiSi(Pardus 发行版的前包管理器)的一个分支。它有一个小的软件包库,虽然它的内部设计非常简单,但它并不完全是用户友好的(它缺少一个 GUI)。它仍然是一个不成熟的发行版,所以还有改进的空间。

表 15-9 总结了 Solus 的发行版选择标准。你可以在 https://solus-project.com 了解更多关于索路斯的信息。

表 15-9。

Distro Selection Criteria for Solus

| 目的和环境 | 面向桌面的独特版本。 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 对于安装和正常使用,是的。对于维护,没有。 | | 稳定性 | 标准发布方案。一年一个主要版本,两年的支持。 | | 硬件支持 | 常规,带硬件自动检测。 | | 美学 | 作为发行版的核心价值之一,它赏心悦目。 | | 桌面环境 | 相思鹦鹉 | | 初始化系统 | 系统 | | 包装管理系统 | eopkg 和 ypkg | | 体系结构 | 64 位英特尔/AMD | | 安全性/匿名性 | 规则的 | | 原则和道德 | 实用主义方法:用户拥有最终决定权。 | | 现场 CD | 是 | | 专业认证 | 不 |

Void Linux

另一个 2008 年起源于西班牙的独立发行版 Void Linux 受到了 NetBSD(最初的开发者是维护者)的影响。事实上,这个发行版最显著的特性,包管理器,最初是为 BSD 设计的,后来移植到 Linux 上。和 NixOS 一样,Void 是作为 XBPS (X 二进制包系统)包管理器的测试平台而创建的。还有 Xpbx-src 可以在不使用根目录的情况下从容器内部的源代码构建二进制包。

另一个独特的特性是 init 系统 runit,这是一个非常简单的基于目录树的系统。从 BSD 继承的另一个特性是默认情况下替换了 LibreSSL 的 OpenSSL 库,并且从 OpenBSD 移植了更安全可靠的替代库。

表 15-10 总结了 Void Linux 的发行版选择标准。你可以在 http://voidlinux.eu 了解更多关于 Void Linux 的信息。

表 15-10。

Distro Selection Criteria for Void Linux

| 目的和环境 | 一个独特的版本,为每种桌面环境和 ARM 提供多种风格。 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 不是一个用户友好的发行版 | | 稳定性 | 滚动发布方案 | | 硬件支持 | 规则的 | | 美学 | 每个桌面环境的默认设置 | | 桌面环境 | 启蒙,肉桂,LXDE,MATE,Xfce | | 初始化系统 | 跑啊 | | 包装管理系统 | 亮点 | | 体系结构 | 英特尔/AMD 32/64 位和 ARM | | 安全性/匿名性 | 合理的安全性加上使用图书馆 l | | 原则和道德 | 默认情况下,除了内核二进制 blobs,只有自由软件 | | 现场 CD | 是 | | 专业认证 | 不 |

阿尔卑斯山的

Alpine 是一个原始的挪威发行版,宣称自己是一个通用发行版,但几乎没有人以这种方式使用它,它是一个以安全为中心的非常轻量级的发行版,通常用于构建防火墙、路由器、VPN、VoIP、服务器和机顶盒。最近,它作为一个最小的 Docker 映像(只有 5MB)越来越受欢迎。

它是围绕 musl(glibc 的 C 库替代品)和 BusyBox(一个可执行文件中几个 Linux 核心工具的替代品)构建的,两者都是非常轻量级的替代品。安全特性包括一个带有 PaX 和 grsecurity 补丁的 Linux 内核,以及所有软件包中的堆栈粉碎保护(SSP)。此外,Alpine 可以从内存 RAM 加载和运行,这也是它用于嵌入式设备的原因之一。

Alpine 使用它自己的软件包管理器 APK,由于它的轻量级特性,它有一个相当大的软件包库。

表 15-11 总结了 Alpine 的发行版选择标准。你可以在 www.alpinelinux.org 了解更多关于阿尔卑斯山的知识。

表 15-11。

Distro Selection Criteria for Alpine

| 目的和环境 | Xen 和 ARM 平台的几个版本和附加映像。 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 不便于用户使用 | | 稳定性 | 标准发布方案的稳定版本,但滚动发布不稳定。 | | 硬件支持 | 规则的 | | 美学 | 每个桌面环境的默认设置 | | 桌面环境 | gnome xfce 杀了他 | | 初始化系统 | OpenRC | | 包装管理系统 | 应用 | | 体系结构 | 英特尔/AMD 32/64 位和 ARM | | 安全性/匿名性 | 可靠的安全性 | | 原则和道德 | 没什么特别的。 | | 现场 CD | 不 | | 专业认证 | 不 |

斯塔利

Stali 是 2016 年首次发布的德国发行版。它给 Linux 世界带来了另一种激进的方法。该发行版是由 suckless.org 社区开发的,该社区是一个著名的程序员团体,也是一些流行工具的创造者,如窗口管理器 DWM、surf 浏览器和 dmenu。这个社区试图开发注重简单、清晰和节俭的高质量软件。这个群体有很强的原则性;他们的名字清楚地表明了这一点。

这种极简主义在发行版的所有方面都很明显,从它的大小(ISO 只有 34MB)到可用的包(只有少数精心挑选的包)。也没有可用的包管理器;发行版本身是一个 git 库,你只需要做一个# git pull来升级。这也允许您使用# git checkout 0.2.降级到特定版本

作为公认的 systemd 讨厌者,他们没有在 Stali 中实现这个 init 系统。他们开发了自己的 init 系统 sinit(代表 suckless init)。另一个众所周知的区别是,它们不遵循 FHS(文件层次标准);他们使用更简单的文件系统结构。

但是这个发行版的主要特点,也是给它起这个名字的原因(Stali 代表静态 Linux),是所有的二进制文件都是静态链接的,所以根本没有动态库。用的 C 库是 musl,结果不支持内核模块。

Stali 的发行版选择标准总结在表 15-12 中。您可以在 http://sta.li 了解更多关于 Stali 的信息。

表 15-12。

Distro Selection Criteria for Stali

| 目的和环境 | 作为 ISO 映像提供的唯一版本 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 不便于用户使用 | | 稳定性 | 仍处于早期阶段 | | 硬件支持 | 穷人 | | 美学 | 每个桌面环境的默认设置 | | 桌面环境 | 窗口管理器 | | 初始化系统 | 初始化 | | 包装管理系统 | 没有。使用 Git 升级和安装。 | | 体系结构 | 64 位英特尔/AMD | | 安全性/匿名性 | 很好。它的独特性质可能使它不太容易受到常见漏洞的攻击。 | | 原则和道德 | 没什么特别的。 | | 现场 CD | 不 | | 专业认证 | 不 |

逻辑文件系统

虽然它不是很受欢迎,但我认为这个发行版是过去 15 年中许多小发行版的灵感,因为许多 Linux 开发者从这个始于 1999 年的加拿大项目中学到了东西。从零开始的 Linux(LFS)项目不是传统的 Linux 发行版(但它是 Linux 发行版);它由一本书和一组源代码包组成,可以从头开始构建自己的 Linux 系统。显然,这本书是发行版的灵魂,它旨在成为一个学习工具,了解 Linux 内部如何工作,以及构建一个最小但功能强大的 Linux 系统的过程。有几个服务器,您可以在那里下载该书每个版本的软件包集合,这些软件包会不断更新。

如果你按照书上的说明去做,那么用任何旧的、最小的发行版在五分钟内完成的事情将是一个冗长乏味的过程。但是最终你会对 Linux 有更深的了解,这是你使用一个友好的 Linux 发行版如 Ubuntu 10 年所能达到的。作为一个学习工具,LFS 是无价的,但是你需要对 Linux 如何使用这个发行版有真正的兴趣。

这个项目的相对成功启发了具有相同理念的其他项目,例如从零开始超越 Linux(BLFS)以构建更完整的 Linux 系统,从零开始交叉 Linux 以替代硬件架构,从零开始自动化 Linux(ALFS)以自动化该过程,以及从零开始强化 Linux 以构建更安全的 Linux 系统。例如,您可以使用 CLFS(甚至 LFS)构建一个非常小的 Linux 系统(小于 10MB ),或者将其安装在嵌入式系统或过时的平台上。

表 15-13 总结了 LFS 的发行版选择标准。你可以在 www.linuxfromscratch.org 下载这本书,了解更多关于 LFS 的信息。

表 15-13。

Distro Selection Criteria for LFS

| 目的和环境 | 作为书籍和源代码包集合提供的唯一版本 | | --- | --- | | 支持 | 社区 | | 用户友好性 | 显然不是,但同时这也是一次学习经历。 | | 稳定性 | 带有稳定版本和测试版的标准发布方案 | | 硬件支持 | 非常有限和基本 | | 美学 | 这是一个最小的、紧凑的、基于命令行的 Linux 系统。 | | 桌面环境 | 否。KDE、Gnome、Xfce、lxd 和 LXQt 中的 BLFS。 | | 初始化系统 | 系统 V 或系统 d | | 包装管理系统 | 没有。所有包都是从源代码构建的。 | | 体系结构 | 英特尔/AMD 32/64 位。CLFS 覆盖的其他建筑。 | | 安全性/匿名性 | 没什么特别的。HLFS 项目涵盖了这一主题。 | | 原则和道德 | 所有的软件包都是免费软件。 | | 现场 CD | 没有,但有几个版本的老 LFS 版本。 | | 专业认证 | 不 |

摘要

在这一章中,你看到了一些发行版,它们提供了一个更完整的 Linux 发行版的愿景。其中一些是非常新的,最有可能的是将近一半的人永远不会获得巨大的知名度。然而,它们仍然是 Linux 社区动态和活跃本质的一个例子。这些发行版的一些更深奥的创新可能永远不会成为主流的一部分,其中一些可能在不久的将来不会存在,但它们都是自由软件开发新思想的力量的见证。

在下一章中,你将会看到面向任务的发行版的汇编,这些发行版是为专门的工作环境中的一个特定任务或领域而构建的。

十六、面向任务的发行版

开发如此多的通用 Linux 发行版背后的原因也是面向任务发行版激增的原因。Linux 的灵活性和自由软件的优势使得制作一个满足独特目的的 Linux 发行版相当容易。这些发行版是可以定制的,但是所有的发行版都只考虑了一种类型的任务,具体到构建防火墙来保护网络免受安全破坏,或者模糊到科学研究。

在这一章中,我列出了几个利基发行版,并简要介绍了它们。这个列表并不全面,但是很准确。它只包括积极开发的发行版。(为什么要谈已经被放弃或者处于不确定状态的发行版?)

移动性和物联网

这些发行版将安装在移动设备上,如智能手机和平板电脑,或物联网(指的是传统计算概念之外的各种事物通过互联网的互联,如家用电器、车辆等。).在这两种情况下,这些发行版在功能和界面上都适应了这些新环境。

机器人

无处不在的 Android 系统是世界上扩展最多的移动操作系统。它目前在移动设备上拥有超过 50%的市场份额。它是由 Google 开发的,遵循开源模型,带有一些专有组件(主要是驱动程序和固件)。对于 Android 是否真的是 Linux 发行版还存在一些争议,但是 Chris DiBona (Google 的开源主管)、Linux 基金会和一些受欢迎的记者认为它是一个发行版。www.android.com

Ubuntu 手机/平板电脑/物联网

这些基于桌面版 Ubuntu 发行版的 Ubuntu 替代品可以在手机和平板电脑上使用。Ubuntu 的最终目标是成为一个 Linux 系统,让你可以把手机/平板当作 PC 使用。Ubuntu Core(也称为 Snappy)适合物联网。www.ubuntu.com/phonewww.ubuntu.com/tabletandwww.ubuntu.com/internet-of-things

旗鱼操作系统

由 Jolla 开发的 Sailfish 操作系统是由 Maemo 衍生而来的 MeeGo 操作系统(由诺基亚和英特尔开发)演化而来的。它仍在开发中,但其在市场上的存在几乎微乎其微(例如 Fairphone 2)。它与 Android 应用程序和硬件兼容。http://sailfishos.org

Firefox 操作系统

Firefox OS 很快就会停产,至少对于智能手机来说是这样,但它可能会继续为物联网开发(目前可用于智能电视)。它基本上由一个基于 Linux 内核的 Firefox 浏览器和 HTML5 应用组成。和 Android 一样,是否是真正的 Linux 发行版还有讨论的空间。http://mozilla.org/firefox/os

以云为中心的操作系统

这些发行版试图实现 Sun Microsystems 在 20 世纪 90 年代的格言“网络就是计算机”,该格言是由 John Gage 在 1984 年提出的。如今,随着云无处不在,我们只需将这种能力带到桌面上就可以结束这个循环。为此,这些发行版旨在用网络应用程序取代本地应用程序,并将数据存储在云驱动器上,而不是本地硬盘上。

铬操作系统/铬操作系统

Chrome OS 和 chrome OS 基于谷歌云(由谷歌制造),所有的应用程序和存储都驻留在谷歌云中(最近增加了对 Android 应用程序的支持)。它们使用 Linux 内核和 Chrome 浏览器,并且最初是基于 Gentoo 发行版和 Ubuntu 的新贵 init 系统。Chromium OS 是开源版本。Chrome OS 只能作为 OEM 操作系统用于笔记本电脑(通常称为 Chromebooks)或迷你台式电脑(称为 chrome box ),这些电脑由包括谷歌在内的几家制造商生产。http://google.com/chromebook

Linux Cube

Cub Linux 是一个基于 Ubuntu 的发行版,模仿了 Chrome OS 的功能和外观。https://cublinux.com

分散式路由器

路由器发行版安装在网络设备、路由器或 PC 上,作为网络路由器使用。它们可以替换以前制造商的固件,也可以用来用一台简单的 PC 和几块网卡构建路由器。它们通常提供路由器功能之外的多种网络服务,如内置防火墙。

OpenWrt(打开 Wrt)

OpenWrt 是一个面向嵌入式设备的 Linux 发行版,专注于路由器网络流量。它是许多 SoHo 路由器的 OEM 固件的流行和强大的替代品,但它也可以在任何 Linux 兼容的硬件上使用。http://openwrt.org

零 shell

Zeroshell 适合为服务器和嵌入式系统提供网络路由服务。它以 Live CD 或 Compact Flash 映像的形式提供,并通过 web 界面进行管理(因此得名)。www.zeroshell.org

道路交通工具

RouterOS 是基于 Linux 的路由器操作系统,由计算机网络制造商 MikroTik 开发,用于其设备。它也可以安装在常规的 Intel/AMD 计算机中。众所周知,它是一个可靠、强大、安全的操作系统。http://mikrotik.com/software

嵌入式系统和数控系统

我在这里包括了两个著名的 Linux 发行版,它们可以安装在嵌入式设备(范围很广)或 CNC(计算机数字控制)工业机器上。虽然 Linux 在嵌入式设备中很常见,但 Windows 是 CNC 机器中最常见的操作系统。事实上,我在不同领域的行业中工作了几年,这些行业拥有不同种类的数控机床,我从未见过 Linux 安装在任何一台机床上。

凯洛斯

KaeilOS 面向嵌入式设备(工业设备、自动化、医疗设备、汽车等)。).目前它是 Yocto 项目的一部分,Yocto 项目是 Linux 基金会的一个项目,旨在开发适合嵌入式设备的发行版。 www.kaeilos.comwww.yoctoproject.org

LinuxCNC

LinuxCNC 是一个用于控制 CNC 机器的发行版,如铣床、车床、3D 打印机、等离子切割机、激光切割机、机器人手臂等。它可以作为一个普通的软件包安装在 Debian/Ubuntu 中,或者从包含 Debian 发行版的 Live CD 中安装。www.linuxcnc.org

存储/ NAS

这种类型的 Linux 发行版适合于创建 NAS(网络连接存储),通常有几个磁盘在 RAID(独立磁盘冗余阵列)设置中工作。这类任务最著名的免费软件是 FreeNAS,这是一个基于 BSD 的软件,它得益于采用非常可靠和强大的 ZFS 作为其文件系统。由于许可冲突,ZFS 在 Linux 中还不完全可用;相反,这些发行版与 BTRFS 或其他文件系统一起工作来提供合适的解决方案。

摇滚明星

Rockstor 是基于 CentOS 和 BTRFS 的高级 NAS 和云存储解决方案。基本上它是 FreeNAS 的友好替代品,但是它基于 Linux 而不是 BSD。http://rockstor.com

OpenMediaVault

OpenMediaVault 是另一个基于 Debian 的 FreeNAS 替代方案,主要用于构建 NAS 解决方案的 SoHo 环境。它可以很容易地通过插件来扩展。www.openmediavault.org

企业服务器和瘦客户机

其中一些发行版试图在混合的企业环境中用 Active Directory、Outlook 和其他常见的可疑程序来取代 Windows 服务器的功能。瘦客户端发行版是普通硬件的一个很好的软件替代品。

克利罗斯

ClearOS 是一个 web 管理的商业服务器平台,它将许多不同的服务整合到一个系统中(网络、网关、服务器、云、安全、备份、邮件等)。).它是基于红帽的。www.clearos.com

zentyal 服务器

Zentyal Server 的前身是 eBox,它是 Windows Server 系统的商业替代品,与 Outlook 和 Active Directory 兼容。它基于 Ubuntu。www.zentyal.com

大学企业服务器

基于 Debian,Univention Corporate Server 作为分布式异构和虚拟化环境的服务器,与 Windows、OS X 和 Linux 系统一起工作。www.univention.com

网络服务器

NethServer 是一款基于 CentOS 的 Linux 服务器,适用于小型组织,作为一个中央系统运行,其模型基于预先配置的模块。http://nethserver.org

瘦站

Thinstation 是基于 Linux 的瘦客户端,可以连接到 Citrix、NoMachine、2X ThinClient、MS Windows 终端服务、VMWare、Cendio、Tarantella、X window 系统、telnet、VMS、tn5250 和 SSH。它可以从网络(以太网启动/PXE)或从光盘/USB/硬盘启动。http://thinstation.github.io/thinstation

电话

硬件 PBX(专用小交换机),也称为商业电话系统,可能非常昂贵,尤其是如果它具有复杂的功能,如 VoIP、应答机、呼叫计费等。软件 PBX 可以使用基本且更便宜的硬件来实现相同的功能,并且更加灵活和易于管理。Asterisk 是一个公认的软件 PBX,这两个发行版是构建一个完整的 Asterisk 系统以满足您需求的好方法。

阿斯特里斯知道

AsteriskNOW 是一个基于 CentOS 的发行版,可用于构建 Asterisk 系统,这是一个基于软件的 PBX,用于管理语音呼叫、语音邮件、VoIP、自动呼叫分配等。www.asterisk.org/downloads/asterisknow

橡皮筋在哪

基于 CentOS 的发行版可以将所有企业通信统一在一个解决方案中,Elastix 使用 Asterisk 为 PBX 提供传真、即时消息、电子邮件、VoIP 和视频功能。www.elastix.org

系统故障排除

为了让系统管理员和计算机技术人员的生活更轻松,一些发行版专注于计算机的部署、恢复和修复。通常运行一个发行版是可行的,但是如果不行,这些发行版会很有帮助。如果你需要的软件没有安装,也没有可用的网络连接,或者如果你只是想手边有一套救生工具,它们也是一个很好的选择。事实上,这些工具中的一些已经不止一次地拯救了我。

GParted Live

GParted Live 是一个专注于管理磁盘驱动器的 Live CD 发行版,使用流行的图形工具 GParted 和其他相关工具。http://gparted.sourceforge.net

系统资源 c

SystemRescueCD 是一个针对 Gentoo 发行版的工具汇编,旨在拯救一个失败的系统(不管是不是 Linux)。它以实时 ISO 映像的形式提供。www.system-rescue-cd.org

Grml(即时通讯)

系统管理员感兴趣的是,Grml 是一个基于 Debian 的 live CD 发行版,它为救援系统和部署提供了许多工具(2GB 压缩到不到 500MB)。它也可以作为任何 Linux 发行版安装。http://grml.org

Rescatux

Rescatux 是一个基于 Debian 的发行版,它有一个图形界面,通过菜单引导你轻松解决许多常见问题并拯救系统。www.supergrubdisk.org/rescatux

Clonezilla Live

Clonezilla 是另一个基于 Debian 的 Live CD,它是一个类似于 True Image 或 Norton Ghost 的映像/克隆/分区工具。它对于部署、备份和恢复非常有用。www.clonezilla.org

重做备份和恢复

类似于 Clonezilla,但有一个图形界面,使其用户友好,重做备份和恢复是基于 Ubuntu 的。http://redobackup.org

安全性和匿名性

安全是计算中的一个广阔领域,几乎涵盖了你能想到的每一个专业。无论哪里有硬件、软件或网络,安全都很重要,而且随着时间的推移,安全变得更加重要。您可以从不同的角度来实现安全性:通过渗透测试来发现系统的弱点,通过取证来收集证据并进行分析,阻止并分析来自系统外部的攻击,保护您的身份和通信免受潜在的窃听,分析恶意软件以了解其工作原理,等等。这些发行版涵盖了一种或多种计算机安全方法。

Kali Linux

Kali Linux 以前被称为 Backtrack,是一个基于 Debian 的发行版,它提供了一些渗透测试和数字取证工具。它是这类发行版中最受认可的。www.kali.org

BackBox Linux

基于 Ubuntu,BackBox Linux 专注于渗透测试、网络分析和计算机取证。它还提供道德黑客工具。https://backbox.org

Fedora 安全实验室

Fedora 安全实验室是 Fedora 实验室的一个项目,它提供安全审计、系统救援和取证,以及教授安全测试的安全环境。https://labs.fedoraproject.org/en/security

布莱克 Arch

Kali 和 BackBox 的另一个替代方案,Black Arch 基于 Arch Linux。它提供了 1,400 种用于渗透测试和安全研究的工具。http://blackarch.org

Parrot 安全操作系统

Parrot Security OS 是一套提供渗透测试、计算机取证、加密和匿名的工具。它基于 Debian,并为云环境做好了准备。https://parrotsec.org

维菲斯克

Wifislax 是一个基于 Slackware 的发行版,面向网络安全。这是一个非常轻量级的发行版,主要关注无线网络,支持大量的无线适配器。http://wifislax.com

尾部

Tails 代表失忆匿名直播系统,它是一个基于 Debian 的直播 CD,专注于提供完全的互联网匿名。默认情况下,它提供了通过 Tor 或 I2P 导航的工具以及通信加密工具。https://tails.boum.org

无名镇

基于 Debian 的发行版专注于互联网上的隐私、安全和匿名,Whonix 默认使用 Tor 网络,并使用两个虚拟机将桌面与网络分开。www.whonix.org

凯恩

CAINE(计算机辅助调查环境)是一个基于 Ubuntu 的发行版,提供了一套完整的专业数字取证分析工具。www.caine-live.net

灵巧的

DEFT 是一个基于 Debian 的用于计算机取证和事故响应的现场 CD 发行版,代表数字证据和取证工具。http://deftlinux.net

IPFire

IPFire 是一个原始的轻量级发行版,用于构建防火墙以保护网络流量,它基于模块化设计。它还可以作为代理服务器、IDS、病毒扫描程序或 VPN 网关。它有一个易于使用的网络界面。www.ipfire.org

解开防火墙

解开防火墙是一个基于 Debian 的网关发行版。它有一个模块化的设计,可以作为防火墙,入侵检测系统,虚拟专用网,网页过滤器等。它还有一个非常友好的网络界面。www.untangle.com/untangle-ng-firewall

Endian 防火墙

Endian Firewall 是基于 RHEL (Red Hat Enterprise Linux)的防火墙发行版。它可以作为防火墙工作,并提供 IPS、防病毒、web 和电子邮件安全检查。www.endian.com/community/overview

塞尔克斯

SELKS 构建于 Debian 之上,是一个专门的 Live CD 发行版,用于运行基于 Suricata 的一套工具,Suricata 是一个提供网络 IDS、IPS 和 NSM 引擎的工具。其他工具是用于分析警报的 Kibana 和用于配置 Suricata 规则的 Scirius。https://stamus-networks.com/open-source/#selks

演唱会

REMnux 是一个非常专业的基于 Ubuntu 的发行版,它执行 Windows 和 Linux 恶意软件的逆向工程。它还提供了分析 Flash 程序、混淆的 JavaScript、PDF 文件和内存的工具。https://remnux.org

旧电脑

像发展中国家那样资源匮乏的人往往跟不上计算机技术竞赛的步伐,因此他们通常拥有过时的(通常是二手的)硬件。以下发行版是与旧硬件配对的好选择。

小狗 Linux

Puppy Linux 是一个非常受欢迎的 Live CD 发行版,在内存和 CPU 资源都很少的旧计算机上运行良好。这是一个原创发行版,非常非常轻量级;它加载到 RAM 中(它最大需要 256MB,但它只需要 48MB 就可以工作),以提供快速但功能齐全的桌面。http://puppylinux.org

微内核 Linux

Tiny Core Linux 是一个最小的发行版,大约 16MB,但只需要 46MB 的内存。它有一个非常简约的桌面,不是默认安装的,但你可以很容易地安装它。http://tinycorelinux.net

LXLE

LXLE 基于 Ubuntu LTS(另一个轻量级发行版),它使用轻量级 LXDE 桌面管理器。它可以在只有 512MB 内存和 8GB 硬盘空间的情况下工作。www.lxle.net

科学

没有计算,科学是不可想象的。有时你需要适合你的领域的工具,有时你需要计算能力来运行非常消耗资源的复杂算法。以下发行版是由科学家根据科学需要开发的。

科学 Linux

Scientific Linux 是一个基于 Red Hat 的发行版,最初由 Fermilab 和 CERN(现在切换到 CentOS)共同开发,它通过基础设施和研究工具来满足科学计算机的需求。www.scientificlinux.org

生物 Linux

Bio-Linux 是基于 Ubuntu 的,它提供了一个全功能的生物信息学工作站,其中有大量针对该环境的工具。http://environmentalomics.org/bio-linux

Fedora 科技

Fedora Scientific 是 Fedora Labs 的一个项目,它提供了一组默认预装的最常用的开源科学和数值工具。http://labs.fedoraproject.org/en/scientific

教育

这些教育发行版旨在替代世界各地中小学和大学中广泛使用的专有操作系统和软件。这些选择从以更便宜的方式建立计算机实验室到支持教育机构的所有方面。

Edubuntu

Edubuntu 是 ubuntu 专用于教育的特殊版本,它是为课堂使用而创建的。主要目的是帮助计算机技能有限的教师创建一个计算机实验室。www.edubuntu.org

超级学生

UberStudent 是另一个基于 Ubuntu 的用于教育目的的发行版,但它主要面向学生、教师以及中等和高等教育学校。http://uberstudent.org

德比安杜

DebianEdu,也称为 Skolelinux,是一个基于 Debian 的发行版,致力于提供一个自由软件来替代专有的教育软件。https://wiki.debian.org/DebianEdu

家庭影院和音响系统

如果你想为你的客厅建立一个家庭影院系统,或者你想在发烧友的水平上享受你的音乐,这些发行版可以为你做到这一点。他们可以帮助你实现一个更便宜,但非常强大的替代通常的商业。您可以用一个简单的 Raspberry Pi、一个 DAC、一个放大器和一对扬声器创建一个高保真系统。至于家庭影院,以下发行版使这些系统比任何商业替代品都更加灵活。

神话故事

Mythbuntu 是预装了 MythTV 的 Ubuntu 的衍生物,MythTV 是用于构建家庭影院 PC 的媒体中心软件。它可以作为独立系统工作,也可以作为家庭中几个客户端的服务器,或者在混合配置中工作。www.mythbuntu.org

openelec(打开)

OpenELEC 允许你用嵌入式设备或单板计算机(如 Raspberry Pi 系列)制作一个媒体中心。它使用流行和强大的 Kodi 娱乐中心软件作为最小 Linux 系统内的 HTPC。一些制造商将其用作机顶盒、硬件媒体播放器和媒体中心系统中的 OEM 操作系统。http://openelec.tv

奥斯 MC 公司

OSMC,前身是 Raspbmc,是 Raspberry Pi 和 Apple TV 的另一个媒体中心,该发行版也使用 Kodi 娱乐中心软件,下面有一个最小的 Debian 发行版。http://osmc.tv

符文音频

Rune Audio 是安装在 Raspberry Pi 和类似设备中的发行版,可以转换为 HiFi 数字音频播放器(通常连接到 DAC)。它基于 Arch Linux,可以从各种客户端(Android、iOS Web、Windows 和 Linux)进行远程控制。www.runeaudio.com

沃卢米奥

Volumio 是一个面向发烧友的基于 Debian 的发行版,它可以安装在类似 Raspberry Pi 等嵌入式设备上。它可以播放多种来源的音乐,如 Mp3、MPD、Spotify、SoundCloud、Last。FM 等。它可以通过网络界面进行远程控制。https://volumio.org

赌博

以下发行版可以让你的电脑成为一个游戏系统,一个传统上为 Windows 机器和游戏控制台保留的系统。Linux 和那些系统不是一个级别的,但是这些发行版会让你相信在 Linux 中享受游戏是可能的。

我们走吧

SteamOS 是一个基于 Debian 的发行版,作为 Steam Machine 视频游戏的游戏平台。它最初的目的是作为 Stem 机器的 OEM 操作系统,但是你也可以构建自己的系统并安装 Steam 操作系统。http://store.steampowered.com/steamos

Fedora 游戏旋转

Fedora 的一个风格(Spin ),作为游戏平台展示 Fedora 发行版,Fedora Games Spin 包括几个预装的游戏。https://labs.fedoraproject.org/en/games

多媒体和艺术

艺术家和创作者是这些发行版的目标受众,这些发行版提供了适合他们需求的工具。OS X 和 Windows 在这些领域可能有更好的工具,但它们通常也很贵,而 Linux 发行版更便宜或免费,仍然可以让您获得专业的结果。有些工具,比如 Blender,功能非常强大,是工业级的。

Ubuntu Studio

显然,Ubuntu Studio 是基于 Ubuntu 的,但是它增加了用于音频、视频、图形、摄影和出版任务的创造性工具。http://ubuntustudio.org

Fedora 设计套件

默认情况下,Fedora Design Suite 提供了几种多媒体制作和发布工具。https://labs.fedoraproject.org/en/design-suite

摘要

本章涵盖了它们各自的任务和发行版。这个编译可能会更广泛,无论是在任务中还是在发行版中,但是我认为这已经足够让你知道你可以期待什么了。但是,请注意,这些发行版通常比传统发行版更加短暂,它们通常会在几年内被抛弃或被其他发行版取代。如果你对面向任务的发行版感兴趣,你应该在本章提到的发行版和任务之外进行搜索。

在线奖励章等着你!在这篇文章中,我向您展示了几个不是 Linux 的操作系统,但是它们与 Linux 有足够的共同点,值得您关注。如果您愿意了解更多信息,请访问

第一部分:Linux 发行版

Linux Distros

在这本书的第一部分,你对 Linux 发行版有了一个很好的了解,以及在比较各种发行版以选择适合你的发行版时你必须考虑的问题。您还将了解 Linux 发行版的起源,为什么会有这么多发行版,以及它们之间的关系。

在第一章中,你学习了 Linux 发行版的本质。为了做到这一点,您需要理解 Linux 是什么,而完成这一点的最好方法是了解它的起源和一点它的发展历史。基本上,我提供了将 Linux 及其发行版放在上下文中所需的最少量的信息。

第二章是为了比较两个或更多 Linux 发行版的性能和特性而必须考虑的要点的汇编。其中一些观点涵盖了主观问题,比如个人对一种美学的偏好,或者你是否特别喜欢某个桌面环境。尽管如此,你还是会有一份清单作为起点。

这本书的第三章也是最后一章介绍了 Linux 发行版的家族树。提供这些信息是为了让您知道它们之间的关系(至少是更相关的发行版),并了解为什么会有这么多的发行版以及为什么一个特定的发行版会有这么多的衍生版本。

第二部分:通用发行版

General Purpose Distros

在本书的这一部分,我将详细介绍十个 Linux 发行版。所有这些都是通用发行版,这是最常见的类型。这是本书的核心;这些章节让你对每个发行版有了更好的了解,并很好地展示了一个发行版与另一个发行版的比较。这些章节还提供了第二章中关键决策点的真实例子。另外,这些章节为你节省了大量测试发行版的时间,以便为你选择正确的版本。

接下来的章节提供了每个发行版的简要描述以及它们的一些历史和哲学。您还将学习如何安装、维护 Linux 发行版,并了解它的优缺点。最后,我包括了每个特定发行版的所有这些要点的简要汇编。

为什么只有这些特定的发行版?

如果我想让这本书保持一个合理的长度和价格,我不能详细分析所有可用的 Linux 发行版。因此,我必须有所选择:我选择深入介绍主要的发行版,但我也想向您展示可用的广泛内容。为此,我选择了流行的发行版和两个高级发行版,甚至还有一个“实验性”发行版。本书中详细介绍的 Linux 发行版有(按顺序):

Ubuntu   Fedora   Debian   OpenSUSE   Mint   Mageia   elementary OS   Arch   Gentoo   Slackware   NixOS

在介绍完这些发行版之后,我会用另外一章的篇幅简要介绍一些其他的发行版;这里的想法是让您对这些发行版有一个大概的了解,而不去探究其他发行版的细节。

第三部分:面向任务的发行版

Task-Oriented Distros

这是一个简短的章节。这是因为以与通用发行版相同的方式和相同的详细程度介绍面向任务的 Linux 发行版将需要另一本书——不是因为面向任务的发行版与通用发行版一样多,而是因为面向任务的 Linux 发行版涵盖了如此多的不同任务。所以我怎么能选择一个任务和一个发行版而不包括其他的呢?我怎么可能知道你对哪些领域感兴趣呢?

最好的解决方案是将相关的任务按类别分组,然后提供相关 Linux 发行版的列表和描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值