FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章
  • 书籍
  • FreeBSD 中文期刊
  • 编辑日志
  • 2025-123 下游项目
    • FreeBSD 发布工程:新主管上任
    • GhostBSD:从易用到挣扎与重生
    • BSD Now 与将来
    • 字符设备驱动教程(第三部分)
    • 学会走路——连接 GPIO 系统
    • FreeBSD 中对 SYN 段的处理
    • FreeBSD 2024 年秋季峰会
  • 2024-1112 虚拟化
    • 字符设备驱动程序教程(第二部分)
    • 面向 Linux 和 Windows 用户的 bhyve
    • Xen 与 FreeBSD
    • Wifibox:一种嵌入式虚拟化无线路由器
    • 嵌入式 FreeBSD:Fabric——起步阶段
    • DGP:一种新的数据包控制方法
    • 会议报告:我在都柏林的 EuroBSDCon 体验
  • 2024-0910 内核开发
    • 字符设备驱动程序教程
    • VPP 移植到了 FreeBSD:基础用法
    • 利用 Kyua 的 Jail 功能提升 FreeBSD 测试套件的并行效率
    • FreeBSD 上的 Valgrind
    • 嵌入式 FreeBSD:探索 bhyve
    • TCP/IP 历险记:FreeBSD TCP 协议栈中的 Pacing
    • 实用软件:实现无纸化(Paperless)
  • 2024-0708 存储与文件系统
    • FreeBSD 中的 NVMe-oF
    • FreeBSD iSCSI 入门
    • 使用 ZFS 原生加密保护数据
    • 嵌入式 FreeBSD:打造自己的镜像
    • TCP LRO 简介
    • 基于 Samba 的时间机器备份
  • 2024-0506 配置管理对决
    • 基本系统中的 mfsBSD
    • rdist
    • Hashicorp Vault
    • 在 GitHub 上向 FreeBSD 提交 PR
    • 悼念 Mike Karels
    • 2024 年 5-6 月来信
    • 嵌入式 FreeBSD 面包板
    • TCP/IP 历险记:TCP BBLog
    • 实用软件:开发定制 Ansible 模块
  • 2024-0304 开发工作流与集成
    • FreeBSD 内核开发工作流程
    • FreeBSD 与 KDE 持续集成(CI)
    • 更现代的内核调试工具
    • 从零开始的 ZFS 镜像及 makefs -t zfs
    • 提升 Git 使用体验
  • 2024-0102 网络(十周年)
    • FreeBSD 中的 RACK 栈和替代 TCP 栈
    • FreeBSD 14 中有关 TCP 的更新
    • if_ovpn 还是 OpenVPN
    • SR-IOV 已成为 FreeBSD 的重要功能
    • FreeBSD 接口 API(IfAPI)
    • BATMAN:更优的可移动热点网络方式
    • 配置自己的 VPN——基于 FreeBSD、Wireguard、IPv6 和广告拦截
    • 实用软件:使用 Zabbix 监控主机
  • 2023-1112 FreeBSD 14.0
    • LinuxBoot:从 Linux 启动 FreeBSD
    • FreeBSD 容器镜像
    • 现在用 Webhook 触发我
    • 新的 Ports 提交者:oel Bodenmann (jbo@freebsd.org)
  • 2023-0910 Port 与软件包
    • 回忆录:与 Warner Losh(@imp)的访谈
    • 在你自己的仓库中定制 Poudriere 源
    • Wazuh 和 MITRE Caldera 在 FreeBSD Jail 中的使用
    • PEP 517
    • CCCamp 2023 旅行报告
  • 2023-0708 容器与云
    • 在 Firecracker 上的 FreeBSD
    • 使用 pot 和 nomad 管理 Jail
    • 会议报告:C 与 BSD 正如拉丁语与我们——一位神学家的旅程
    • 抒怀之旅:与 Doug Rabson 的访谈
    • 基于 Jail 的广告拦截教程
    • 我们收到的来信
  • 2023-0506 FreeBSD 三十周年纪念特刊
    • CheriBSD 近十多年的历程
    • AArch64:成为 FreeBSD 新的一级架构
    • 岁月如梭:我个人的时间线
    • 安装 FreeBSD 1.0:回顾 30 年前
    • ZFS 是如何进入 FreeBSD 的呢?
    • 我不是来自约克郡的,我保证!
    • 回忆录:采访 David Greenman Lawrence
    • FreeBSD 和早期的 Unix 社区
    • 早期的 FreeBSD 移植
    • FreeBSD 30 周年:成功的秘诀
    • FreeBSD 在日本:回忆之旅与今日之实
  • 2023-0304 嵌入式
    • CheriBSD port 和软件包
    • 让我们来试试 ChatGPT
    • GPU 直通
  • 2023-0102 构建 FreEBSD Web 服务器
    • ZFS 的原子 I/O 与 PostgreSQL
    • 虚拟实验室——BSD 编程研讨会
    • ZFS 简介
    • 会议报告:落基山庆祝女性计算机科学家
    • 进行中的工作/征求反馈:数据包批处理
    • 基金会与 FreeBSD 桌面
  • 2022-1112 可观测性和衡量标准
    • 在 FreeBSD 的 DDB 内核调试器中编写自定义命令
    • DTrace:老式跟踪系统的新扩展
    • 基于证书的 Icinga 监控
    • 活动监控脚本(activitymonitor.sh)
    • 实用 IPv6(第四部分)
    • EuroBSDCon 会议报道
    • 实用 Port:Prometheus 的安装与配置
    • 书评:《用火解决问题:管理老化的计算机系统(并为现代系统保驾护航)》Kill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones)
  • 2022-0910 安全性
    • CARP 简介
    • 重构内核加密服务框架
    • PAM 小窍门
    • SSH 小窍门
    • 实用 IPv6(第三部分)
    • 书评:Understanding Software Dynamics(深入理解软件性能——一种动态视角)—— Richard L. Sites 著
    • 访谈:保障 FreeBSD 安全性
    • MCH 2022 会议报告
  • 2022-0708 科研、系统与 FreeBSD
    • 在 FreeBSD 上构建 Loom 框架
    • 教授本科生 Unix 课程
    • FreeBSD 入门研讨会
    • 实用 IPv6(第二部分)
    • 在 2022 年及以后推广 FreeBSD
    • 进行中的工作/征求反馈:Socket 缓冲区
    • FreeBSD 开发者峰会报告
    • 支持 Electromagnetic Field 2022
  • 2022-0506 灾难恢复
    • 使用 FreeBSD 构建高弹性的私有云
    • LLDB 14 —— FreeBSD 新调试器
    • 实用 IPv6(第一部分)
    • 利用 netdump(4) 进行事后内核调试
    • 进行中的工作/征求反馈:FreeBSD 启动性能
    • 实用 Port:在 OpenZFS 上设置 NFSv4 文件服务器
  • 2022-0304 ARM64 是一级架构
    • FreeBSD/ARM64 上的数据科学
    • Pinebook Pro 上的 FreeBSD
    • 嵌入式控制器的 ACPI 支持
    • 进行中的工作/征求反馈:Lumina 桌面征集开发人员
    • 实用 Port:如何设置 Apple 时间机器
  • 2022-0102 软件与系统管理
    • 为 FreeBSD Ports 做贡献
    • 使用 Git 贡献到 FreeBSD Ports
    • CBSD:第一部分——生产环境
    • 将 OpenBSD 的 pf syncookie 代码移植到 FreeBSD 的 pf
    • 进行中的工作/征求反馈:mkjail
    • 《编程智慧:编程鬼才的经验和思考》(The Kollected Kode Vicious)书评
    • 会议报告:EuroBSDCon 2021 我的第一次 EuroBSDCon:一位新组织者的视角
  • 2021-1112 存储
    • 开放通道 SSD
    • 构建 FreeBSD 社区
    • 与完美操作系统同行 27 年
    • 进行中的工作/征求反馈:OccamBSD
    • 通过 iSCSI 导入 ZFS ZIL——不要在工作中这样做——就像我做的那样
  • 2021-0910 FreeBSD 开发
    • FreeBSD 代码审查与 git-arc
    • 如何为 FreeBSD 实现简单的 USB 驱动程序
    • 内核开发技巧
    • 程序员编程杂谈
  • 2021-0708 桌面/无线网
    • 通往 FreeBSD 桌面的直线路径
    • FreeBSD 13 中的人机接口设备 (HID) 支持
    • Panfrost 驱动程序
    • 用 Git 更新 FreeBSD
    • FreeBSD 的新面孔
    • 想给你的桌面加点佐料?
  • 2021-0506 安全
    • 七种提升新安装 FreeBSD 安全性的方法
    • copyinout 框架
    • 使用 TLS 改善 NFS 安全性
    • Capsicum 案例研究:Got
    • 对 Jail 进行安全扫描
  • 2021-0304 FreeBSD 13.0
    • 展望未来
    • FreeBSD 13.0 工具链
    • FreeBSD 13.0 中有新加载器吗?
    • TCP Cubic 准备起飞
    • OpenZFS 中的 Zstandard 压缩
    • 会议报告:FreeBSD 供应商峰会
    • Git 不够吗?
  • 2021-0102 案例研究
    • Tarsnap 的 FreeBSD 集群
    • BALLY WULFF
    • Netflix Open Connect
    • FreeBSD 的新面孔
    • 写作学者的 FreeBSD
    • 在世界之巅
  • 2020-1112 工作流/持续集成(CI)
    • FreeBSD Git 快速入门
    • 使用 syzkaller 进行内核 Fuzzing
    • Mastering Vim Quickly 书评
    • 线上会议实用技巧
    • 在控制台上进行网络监控
  • 2020-0910 贡献与入门
    • 采访:Warner Losh,第 2 部分
    • 代码审查
    • 撰写良好的提交消息
    • 如何在不是程序员的情况下做出贡献——成为 FreeBSD 译者
    • 如何成为文档提交者
    • 谷歌编程之夏
    • 为 FreeBSD 期刊撰写文章
    • 你为什么使用 FreeBSD
    • FreeBSD 的新面孔
  • 2020-0708 基准测试/调优
    • FreeBSD Friday
    • 采访:Warner Losh,第 1 部分
    • 构建和运行开源社区
    • 在 FreeBSD 上轻松搭建我的世界(Minecraft)服务器
    • FreeBSD 的新面孔
  • 2020-0506 网络性能
    • 内核中的 TLS 卸载
    • 访谈:Michael W Lucas
    • FreeBSD 桌面发行版
    • 使用 Poudriere 进行 Port 批量管理
    • FreeBSD 的新面孔
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • GhostBSD 的起源
  • 初期阶段
  • 系统基石的转变
  • 遇到的挑战
  • 当前 GhostBSD 的状况
  • GhostBSD 未来展望
  • 结论
在GitHub上编辑
导出为 PDF
  1. 2025-123 下游项目

GhostBSD:从易用到挣扎与重生

上一页FreeBSD 发布工程:新主管上任下一页BSD Now 与将来

最后更新于24天前

  • 原文链接:

  • 作者:Eric Turgeon

这篇文章并不是为了呈现技术细节,而是从一个更高层次的角度回顾 GhostBSD 这些年来的发展历程,项目的当下状态,以及我们的后续方向。如你所知,GhostBSD 是一款基于 FreeBSD,用户友好的桌面操作系统。其使命是为那些想要 FreeBSD 强大功能,但不想面对手动设置复杂性的用户,提供简单、稳定和易于使用的桌面体验。在开始这段旅程时,我还是名非技术用户,梦想着有一天会有一款所有人都能使用的 BSD 操作系统。

GhostBSD 的起源

2007 年,我读了 Eric S. Raymond 的《How To Become A Hacker》(如何成为一名黑客)。书中提到了 BSD Unix 是个让有志贡献者学习和成长的地方。这激发了我对 BSD 的好奇心,促使我开始探索 FreeBSD。那时,我正在使用 Ubuntu,心中产生了一个问题:FreeBSD 能否成为像 Ubuntu 一样适合非技术用户的桌面操作系统?当时,我自己也是非技术用户。我只是喜欢 Ubuntu 的简便性,并且好奇为什么 FreeBSD 不能像 Ubuntu 那样。2008 年,这个问题激发了我创建 GhostBSD 的梦想,我开始学习一切我需要的知识来实现这个项目,使 FreeBSD 对我来说变得像 Ubuntu 一样容易上手。

我花了将近两年的时间才理清一切,尝试使用像 FreeSBIE 这样的工具来制作一款 live CD,并寻找一些代码来构建 GNOME。对初学者来说,FreeSBIE 很难驾驭。作为一位讲法语的加拿大人,《FreeBSD 手册》对我有很大帮助,但我的英语水平有限,我强迫自己去学习它。我翻阅论坛和文档,拼凑 GNOME 的构建,常常是更容易把事情搞乱,而不是让它们正常工作。一个有趣的事实是,“GhostBSD”这个名字来自我的妻子。当时,她还是我的女朋友。她提议的这个名字,我就采纳了。我们在 2009 年 9 月结婚,正好是在项目初具雏形的时候。2009 年 11 月,GhostBSD 1.0 Beta 发布,作为一款运行 GNOME 的 FreeBSD 8.0 live CD。它非常粗糙,充满了问题,但为 GhostBSD 后来的发展奠定了基础。来自 FreeBSD 社区的反馈促进了早期的进展。在这个过程中,有一些人加入进来,帮助我学习源代码控制版本管理和其他技术。像 Ovidiu Angelescu 这样的人,通过他的 shell 脚本技巧让我向 SVN 迈进。我学到了很多东西。现在我们使用 Git,但那时一切都是 SVN。

初期阶段

首个版本是 GhostBSD 1.0 Beta,它让用户体验到了 FreeBSD 和 GNOME 的组合。尽管是个不稳定的开始,但它证明了这一概念的可行性。到 2010 年,1.5 版本通过使用来自 PC-BSD 的 pc-sysinstall 工具增加了一款基于文本的安装器,使得设置过程更加简便。那些早期的几年涉及到深入学习 FreeBSD、shell 脚本编程和与像 Ovidiu Angelescu 这样的人合作。我向 Ovidiu 请教了很多 shell 脚本的技巧。2011 年,2.5 版本引入了图形化的 GBI 安装器,基于同样的 pc-sysinstall 后端构建。这个后端至今仍然是核心组件。它的可靠性意味着我不必重新造轮子。这是一个坚持使用有效方法的教训。

大约在 2012 年开始了 NetworkMgr 的基础工作,NetworkMgr 是一款图形化工具,可用来管理以太网和 Wi-Fi 连接。这是朝着提高可用性迈出的第一步,灵感来自 Linux 的 NetworkManager。到 2015 年,我将它从 ghostbsd-build 中提取出来,单独进行优化以作为一款独立工具。2013 年,3.5 版本发生了一个重大转折。GNOME 3 在 FreeBSD 上的发布是笨重且不稳定的,存在延迟和大量资源占用的问题。这种情况与 GhostBSD 的目标相冲突。我们尝试了其他桌面环境,制作了多个带有不同桌面环境(如 LXDE、XFCE 和 Openbox)的 ISO 文件,GhostBSD 的含义——“在 BSD 上运行 GNOME”——面临了身份危机。随着 MATE(GNOME 2 的一个分支)的出现,这次危机得到了挽救。我们转向了 MATE,因为它简单且熟悉:当运行在 FreeBSD 上时,比 GNOME 2 更加轻便。当时,我不确定该如何处理其他桌面环境,因为一些人已经从项目中离开了。我开始放弃所有其他的桌面环境,但 XFCE 仍然作为一种方案保留下来。MATE 成为了旗舰桌面,重新定义了 GhostBSD 对可用性的重视,而非追求炫技。

系统基石的转变

我在 2014 年开始着手开发 Update Station,旨在为 GhostBSD 用户带来图形化更新工具。我原本以为这项工作是在之后才开始的,但在回顾 GitHub 后,我发现大约在那个时候,它已开始成型。最初,GhostBSD 依赖于 FreeBSD 的发布源、分发文件和官方包。曾经有一段时间,我们需要开始为像 NetworkMgr 这样的工具提供更新,这促使我们建立了自己的包仓库。我们的自定义包经常与 FreeBSD 的版本升级发生冲突,产生摩擦,要求我们寻求更好的解决方案。此外, 对于 Update Station 的自动化来说,freebsd-update 并不容易实现。freebsd-update 无法满足我们“图形化优先”目标的需求。于是我们开始关注 TrueOS 的做法。我注意到他们使用了 PkgBase,这引起了我的兴趣。他们由 pkg 驱动的操作系统更新承诺带来了图形化自由。

在 2018 年,GhostBSD 18.10 转向 TrueOS,将其作为基石。TrueOS 提供了 PkgBase,让我们可以使用 pkg 工具更新操作系统,并且我们放弃了 freebsd-update。TrueOS 还带来了 OpenRC,这是一款现代的服务管理器,非常适合构建用于管理服务的图形化界面,虽然这个目标最终并未实现。转向 TrueOS 使得能从图形界面使用 Update Station 升级软件和操作系统。对我们来说,这是一次革命性的变化:让我们的用户能够通过 Update Station 升级操作系统。随后,TrueOS 引入了 OS ports,让我们可以使用 poudriere 从 ports 树构建操作系统包,并为更新提供了更精细的控制。

遇到的挑战

TrueOS 于 2020 年关闭了,这给我们带来了压力,需要维系我们所获得的一切。我最初想保留 OpenRC,但维护 ghostbsd-ports 和 ghostbsd-src 上的所有服务变成了一个独立的斗争。那时,我几乎是独自一人维护项目,这耗费了我大量的时间,使我无法专注于改进和管理 GhostBSD。到 2022 年,我放弃了 OpenRC,转而采用 FreeBSD 更简单但可靠的 RC 系统。这样做意味着我可以减少工作量,更加专注于目标。到了 2023 年,维护 OS ports 变得过于繁重。2024 年,我决定将操作系统包的构建从 FreeBSD 维护的 PkgBase 转移到 SRC 中,从而简化了维护负担,并重新聚焦于用户体验。

今年 1 月,我意识到从 STABLE 构建 GhostBSD 对我们的小团队来说太过沉重。在与其他贡献者讨论后,我决定切换回 FreeBSD RELEASE。是的,我们失去了对早期驱动程序的利用,但我们节省了调试 STABLE 变更的时间,获得了更稳定的基础来构建。我并不是说 STABLE 总是出问题,但有时一些变更确实会导致问题。

这些年来,通过做出重大抉择,我尽我所能地管理 GhostBSD,这些选择虽然增加了困难,但也为 GhostBSD 缺失的部分带来了收益。PkgBase 和 OS ports 提供了来自图形界面的操作系统更新,但 OpenRC 增加了额外的工作负担。然而,这也意味着增加了项目的维护负担,超出了项目的处理能力。所有这些最新的变更标志着 GhostBSD 回归其根本,并重新聚焦于可用性,而不是过度复杂化 GhostBSD 的维护。这是一个艰难的教训——保持简单。

当前 GhostBSD 的状况

在我写这篇文章时,我们刚刚发布了 GhostBSD 25.01-R14.2p1。这标志着从 FreeBSD STABLE 切换到 FreeBSD RELEASE,使用 14.2-RELEASE-p1 能提供更好的稳定性。新的 GhostBSD 版本号分解如下:25 代表 2025,01 代表 GhostBSD 补丁,R 代表 RELEASE,14.2 代表 FreeBSD 版本,p1 代表 FreeBSD 补丁。这个版本号旨在为用户明确发布内容,不再让用户猜测版本含义。经过这些最近的变动,我感觉我们现在处于一个很好的位置,能够专注于改进我们的工具。

其中一些工具包括:

  • NetworkMgr:一款用于以太网和 WiFi 的图形化软件,模仿 Linux 的 NetworkManager。通过简单点击替代命令行的混乱。

  • Update Station:一款图形化软件,用于软件和操作系统升级,升级前会创建 Boot Environment 的备份。安全第一!

  • Software Station:一款图形化软件,利用 pkg 安装软件。点击、选择、完成。

  • ghostbsd-build:用于构建 GhostBSD,包括 Joe Maloney 的 ZFS reroot hack,用于在内存中的读写 ZFS 池实时会话。对于演示和安装来说,速度非常快。

  • Backup Station:由 Mike Jurbala 于 2022 年 9 月引入,它是一款图形化软件,使用 pybectl,这是一款与 bectl 接口的内部 Python 模块,用于管理 Boot Environments。简化系统快照操作。

  • GBI 和 pc-sysinstall:GhostBSD 的图形安装器最近在界面中去除了 UFS,转而利用 ZFS 的优势。ZFS 的强大优势超越了旧的方式。

GhostBSD 未来展望

对于 2025 年,我计划记录一些标准操作程序(SOP),以便让更多人能够轻松参与 GhostBSD,希望新的贡献者不需要太多的指导。我将为自己家里的服务器部署一台更快的构建服务器,以便更迅速地构建软件包,当前我正等待 PDU 到货。我还希望完成一款 OEM 友好的安装器,以扩大我们的影响力,重新设计 Update Station 以便在启动时安装更新,并改进 NetworkMgr 与 devd 的集成以提高稳定性。如果可能的话,我还计划为 GBI 添加创建主目录数据集的支持,并且可以选择进行加密。FreeBSD 即将在 2025 或 2026 年提供的 AC 和 AX WiFi 支持将带来更好的连接速度,我对此感到非常兴奋。我们的笔记本电脑非常需要这个。

我不能代表其他贡献者发言,但我们在 GitHub 上有一长串任务。我们确实有一份路线图,可以在 GhostBSD.org 的开发标签下找到它。如果你感兴趣,可以去看看。

从长远来看,我们在期待更多的捐款,以便购买一台 ARM(Ampere)服务器,开始构建 GhostBSD 的 arm64 版本。与此同时,GhostBSD 仍然致力于成为一个完全由图形界面驱动的操作系统,利用 ZFS,这非常适合那些希望享受 FreeBSD 提供的功能但不懂技术的用户。我们正在讨论创建一些桌面组件,逐步替代 MATE,这些组件将更好地与 FreeBSD/GhostBSD 对接,比如一个利用 ZFS 的文件管理器。然而,目前这些讨论还没有形成实质性的成果。

结论

GhostBSD 是一段经历,一连串的选择,从 2009 年的 Live CD 到今天的模样。它起步于一名非技术用户的梦想,逐渐发展成了一个社区项目。每一步,像是定制包、TrueOS、ZFS reroot 实时会话和 PkgBase 都解决了一个挑战。过去的经历教会了我坚韧,当前带来了稳定,而未来邀请你们一同塑造。如果你有兴趣参与其中,请访问 GhostBSD.org。你会找到属于你的位置。


ERIC TURGEON 是 GhostBSD 的创始人和领导者。他还是 FreeBSD ports 的提交者,专注于维护 MATE 和 NetworkMgr 的 ports。Eric 居住在加拿大,自 2000 年代末期以来一直对 BSD 怀有热情。他在 GhostBSD、FreeBSD 的贡献、工作和个人生活之间平衡时间。他的动力来自于让 BSD 更加普及,他欢迎所有人加入 GhostBSD 社区。

GhostBSD: From Usability to Struggle and Renewal