我的 FreeBSD 故事

由于 Roman Zolotarev 邀请我为他的 Tell Your BSD Story(讲述你的 BSD 故事) 页面撰写一篇文章,我实在无法拒绝。该页面原本位于 https://www.bsdjobs.com/people/hi.html,但很遗憾,Roman 后来放弃了 bsdjobs.com 这个域名。我本想尽量简短,但看来还是不够直白 :🙂:

最近也被添加到了页面 cybersynapse.ro

我记得的第一批设备/电脑/游戏机(不是同时拥有的)是 Atari 2600Pegasus 游戏机,后者是 Nintendo NES 的硬件克隆版。

那时我甚至不知道它是 Atari 2600,我只称它为 Video Computer System …… 当时我也完全不懂英语。花了大约二十年,我才偶然发现这个 Video Computer System 实际上是 Atari 2600 :🙂:

这台设备只用来玩电子游戏。

后来我拥有了 AMIGA 600 电脑(或者说是父母为我买的),这次它不仅可以玩游戏,还能干其他事。AMIGA 对我影响最大,因为这是我第一次学习 Amiga Workbench 操作系统的书籍,并在 Amiga Shell 终端学习命令。我特别喜欢桌面上 Ram Disk 图标/目录的概念,它能让我透明地将任何东西放入系统内存。如今的桌面系统中仍然没有这个概念,我仍然记得看到 Amiga Deathbed Vigil 电影时的那份落寞。

1998 年底,我拥有了第一台 PC,当然预装了 Windows,它既是游戏机,也是日常工具。有一次我深入研究 Windows 注册表(它的概念和实现让我感到厌恶)以及由 CMD.EXE 提供的有限命令行界面。我记得,这台机器的核心并不是 CPU 和主板,而是图形加速器——传奇的 3Dfx Voodoo 显卡。这个公司(3Dfx)的态度和理念,也像 AMIGA 一样,对我影响深远。

因此,我现在的笔记本外观也是这种风格 :🙂:

有些游戏甚至以支持 3Dfx Glide 驱动为唯一特点发行特别版,比如 Need for Speed II: Special Edition(极品飞车 II:特殊版)

AMIGA 迁移到 PC 后,它再也没有“感觉对了”。游戏很酷,但 Windows 系统烂完了。随着时间推移,不同版本的 Windows 和硬件改进不断出现。当时 Windows XP 已经很沉重,更别提硬件要求更高的 Windows 2000。至于大家对 Windows ME 的所有抱怨,我并不完全理解。它的崩溃频率与 Windows 98Windows 98 Second Edition 相当,也许只是我的硬件不同 :🙂:

那段时间,我没有保存任何“自己的”截图,因为在用 Partition Magic 移动/调整分区以从较空的 C: 盘获取更多空间时,我整个 40 GB(当时很大)数据盘都丢了。那天,我深刻领悟到:“有些人会备份数据,有些人将会备份数据”。自那以后,我再也没有丢过数据,因为我拥有多份备份,但就像 Netheril 帝国(《龙与地下城》中已毁灭的古老帝国)的覆灭一样,丢失的数据永远消失了。

我一直在尝试各种替代方案,这也促使我在 2003 年尝试 Linux。在阅读了各种发行版的理念后,我决定用 Slackware LinuxKDE 3。当时我的朋友使用 Aurox Linux(波兰少数几个 Linux 发行版之一),并建议我也这样做——特别是在解决潜在问题时,因为他已经熟悉这个系统,而且他最近刚放弃了 Windows。但 Slackware 听起来更合适,所以我选择了这条路径。一开始,我在用 Windows XPSlackware Linux 双系统,因为我在 Windows 世界里一切都运作正常,而在 Linux 世界里常常感到无助,所以如果需要玩游戏或解决 Linux 问题,我就会重启回 Windows。我还记得当时对双剪贴板(PRIMARY 和 SECONDARY)的概念感到非常陌生。我很惊讶,为什么 Linux 这个“更优秀”的系统(至少宣传如此)需要一个系统托盘程序来管理剪贴板。在 Windows 上很直观,[CTRL]+[C] 复制,[CTRL]+[V] 粘贴就完成了,但在 Linux(现在我知道这是 X11 的特性)中,有两个剪贴板,需要由 KDE 3 的这个小托盘程序同步。我也难以接受,如果关闭了进行复制操作的应用程序,最后一次 [CTRL]+[C] 的内容就会“丢失”。我在 Slackware 上稍微安定了一段时间,但不久就不适应了。我真的不喜欢手动管理软件包依赖,而且 KDE 3 非常丑陋,尽管尝试了各种可能的方案,我仍无法将它调成好看的界面。

在使用 Slackware 半年以后,我再次查看 Linux 发行版,并决定尝试 Gentoo Linux。我完全赞同下面的形象,它形象地展示了首次安装 Gentoo Linux 的体验 :🙂:

当然,我选择了最硬核的版本——自建 Stage 1(编译器和工具链),当时这是个坏主意,因为在缓慢的单核机器上编译几乎耗时无穷……但经过若干小时,我终于安装好了 Gentoo。接下来我必须决定使用哪个桌面环境。当时我读到很多关于 Fluxbox 的好评,所以我尝试了它。这是一次非常奇特的体验(从零在 GUI 中创建一切),但也很愉快。这让我回想起 AMIGA 的时光……但 Linux 经常让事情变得复杂。越深入 Gentoo Linux,我越发现很多 Gentoo 特性都是基于 FreeBSD 的解决方案。Gentoo Portage 就是 FreeBSD Ports 的仿制品。而那个“中央”的 ·/etc/rc.conf· 系统配置文件概念也是从 FreeBSD 借鉴而来。所以我开始收集关于 FreeBSD 的信息。那个时候的 FreeBSD 网站或 FreeBSD Ports 网站(至今)显得有些过时,但这并没有让我气馁。

大约在 2005 年,我在电脑上安装了 FreeBSD 5.4。起步维艰,就像之前使用 Gentoo 时一样,但同样像 GentooFreeBSD 项目提供了大量优秀的文档。Gentoo 的文档主要集中在各种 Gentoo Wiki 网站上,而 FreeBSD 项目提供了“官方”文档,如 手册FAQ。我还记得在现已不存在的 BSDForums.org 网站上提的第一个问题——例如其中一个最早的问题是如何在普通终端中滚动输出。现在我知道需要按 Scroll Lock 键,但对我来说那完全是新鲜事物。

BSDForums.org 当年的样子。

这是我从那个时期获得的最早截图,Gentoo 的安装界面看起来非常相似。

为什么选择 FreeBSD 而不是 OpenBSDNetBSD?可能是因为 Gentoo 的许多概念都是基于 FreeBSD 的解决方案,这也引导我选择了 FreeBSD 而非其他 BSD 操作系统。目前我仍在使用 FreeBSD,但我一直关注 OpenBSDHardenedBSDDragonFly BSD 的解决方案及改进。

由于从 Linux 迁移到 FreeBSD 的路径非常简单——/home 下的所有配置文件都可以直接复制——迁移过程非常快速且容易。我再次使用了在 Gentoo 上的 Fluxbox 配置。现在在 FreeBSD 上,它甚至更让我回想起 AMIGA 的那些日子。一切都是经过深思熟虑的,每个功能都有其位置和意义。文档完备,而 FreeBSD 社区 更是无与伦比。

我甚至决定升级硬件,尝试一些更“特别”的配置。我入手了服务器主板 Gigabyte-GA-7DPXDW ,搭载了双 CPU 插槽——而由于 Athlon XP(桌面)处理器可以很容易地改装为 Athlon MP(服务器)处理器,我也获得了第二颗 CPU,以及 1 GB ECC 内存。

这套双 CPU 配置在当时不常见,但对我来说非常适合。我从 nvidia 的闭源驱动换成了开源的 nv 驱动,因为 nvidia 驱动会每隔几天就打断我的系统运行时间 :🙂:

我在这台桌面机器上累计达到了 30 天的正常运行时间,对于没有应急 UPS 的系统来说还不错 :🙂:

这是我最后一次在 FreeBSD 上(至少在我的机器上)使用 ECC 内存,当时 FreeBSD 上还没有 ZFS:🙂: 光阴荏苒,我开始感受到对更快硬件的需求。同时,我也对 Intel 显卡产生了兴趣,于是换上了新主板和当时最快的 Intel X3000 GMA 显卡——虽然听起来很愚蠢——使用 Asus P5B-V……这是个烂的主意,因为 FreeBSD 的图形栈尚不支持这款 Intel 显卡。最初我使用软件 VESA 驱动,但问题不在于驱动性能(我当时还有四核 Intel Q6600 CPU),而是在屏幕分辨率上。当时我有 1280 x 1024 的显示器,但只能使用 1024 x 768,体验极差。我决定暂时尝试其他方案,等待 FreeBSDIntel X3000 的支持到来。我需要尽快解决,因为当时我还需要撰写我的 硕士论文

那是 2007 年中期。我想尝试 Linux 发行版光谱的另一端——Ubuntu。我不能再更“桌面化”了 :🙂: 它当然顺利安装了 GNOME 2 桌面环境,但不幸的是 pulseaudio 已经存在。当时我喜欢长时间开机(不花电费),有几件事让我非常烦恼。例如前面提到的 pulseaudio——使用一两天后声音就会冻结(即使我没有播放音乐或视频),且一直保持冻结状态。可以重启 pulseaudio 或重新加载 ALSA 模块,但状态仍然保持 SUSFU(Situation Unchanged Still Fucked Up, 情况没有改变还是一团糟),必须重启才行。由于我要写 硕士论文,没时间重装其他系统,因为 pulseaudio 在其他 Linux 发行版上可能同样会出问题,而 FreeBSD 还不支持 Intel X3000 GMA。总体来说 GNOME 2 体验还行,但我非常怀念所有自定义设置、快捷键以及自定义行为。我在 Ubuntu 上忍受了两个月,直到完成了我的关于 操作系统虚拟化硕士论文(PDF 为波兰语,可用翻译工具阅读) :🙂:

那时的 Ubuntu 长这样。

我也曾短暂遨游过 Mac 世界,当时有机会使用了一年的 MacBook ProMac OS X Leopard。这让我真正感受了 Mac 的生态系统和硬件(以及理念),因此不会像很多反苹果的人那样重复陈词滥调。但在工作中切回 FreeBSD 系统后,感觉更自然。我在 Mac 上大量使用 Terminal.app,但 FreeBSD 的 xterm(1) 更符合我的习惯。

有趣的是,多年来我设计了 Mac 风格的 Fluxbox 主题,直到真正使用 Mac 时,我仍然喜欢 Leopard 时代的 Mac OS X 外观。

我还曾尝试过 Solaris(后来是 OpenSolaris)。必须承认,当时 Solaris 的所谓 Java Desktop 基于 GNOME 2,外观确实很棒,仅次于 Mac OS X

我非常喜欢 Solaris 的概念和解决方案,例如 ZonesZFSCrossbowComstarIPS(当时 FreeBSD 还没有 PNGng)。但桌面软件始终是问题所在。虽然我在 FreeBSD Ports 中几乎找到了和 Linux 一样多的应用,但在 Solaris 世界中总是缺少一些应用。

这段 Solaris 体验也影响了我的灵感,所以我的 Fluxbox 主题也改成了 Solaris 风格 :🙂:

Ubuntu 体验失败之后,我换了另一块主板,因为 FreeBSD 当时仍不支持 Intel GMA X3000,再次回到 FreeBSD 世界。摆脱 pulseaudio 的困扰后,我终于松了口气。同时,我看到很多关于 Openbox 的好评,决定尝试它来代替 Fluxbox。刚开始编辑 XML 配置文件时感觉很奇怪,但熟悉后将 rc.xml 和 menu.xml 文件整理好就不成问题了。从那以后,我在不同机器上使用 FreeBSD,包括物理服务器、虚拟机和笔记本。我学到,在 FreeBSD 生态中,硬件支持是最重要的因素。

我至今仍在使用 OpenboxFreeBSD,我的桌面如今如下所示:

经过 15 年使用各种 WindowsUNIXmacOS/AIX/HP-UX/Solaris/OpenSolaris/Illumos/FreeBSD/OpenBSD/NetBSD)及类 UNIX(Linux)系统,我始终得出结论:FreeBSD 是“出错最少”的系统。而且每次发布更新,它表现得越来越好。某一天我会详细写为什么 FreeBSD 是如此出色的操作系统……如果我还没写的话 :🙂:

更新 1

正如 Roman Zolotarev 所做,他将我的故事添加到他的 Tell Your BSD Story 页面。该页面原本在 https://www.bsdjobs.com/people/,但 Roman 后来似乎放弃了 bsdjobs.com 域名。

感谢 Roman!

你可以查看 Slawomir Wojciech Wojtczak (vermaden) 的 FreeBSD 页面

最后更新于

这有帮助吗?