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

在本页
  • 与 Front Range BSD 用户组的合作
  • SCaLE 19x 研讨会回顾
  • 常见问题与解决方案
  • 总结
  • 服务器与桌面的界限
  • 构建自定义软件包仓库
  • 自动化管理与 Ansible
  • FreeBSD Jail 与 iocage
  • 研讨会参与者
  • 研讨会后的小故事
在GitHub上编辑
导出为 PDF
  1. 2022-0708 科研、系统与 FreeBSD

FreeBSD 入门研讨会

上一页教授本科生 Unix 课程下一页实用 IPv6(第二部分)

最后更新于1个月前

  • 原文链接:

  • 作者:ROLLER ANGEL

与 Front Range BSD 用户组的合作

我与 Front Range BSD 用户组 合作,已连续几年在 SCaLE(Southern California Linux Expo)上教授《FreeBSD 入门》(Getting Started with FreeBSD)研讨会。我之所以这样做,是因为我深知 FreeBSD 工具的强大,也乐于通过研讨会分享自己的经验。

每次授课后,我都会收获新的见解,对自己的 FreeBSD 配置方案进行验证,同时也能得到学员们的反馈,持续改进研讨会内容。最近的一次授课是在 SCaLE 19x,而在此之前,我也曾在 SCaLE 17x 和 18x 进行过类似的分享。

SCaLE 19x 研讨会回顾

往年,研讨会通常由 FreeBSD 基金会的执行董事 Deb Goodkin 进行开场介绍,而这一次,Drew Gurkowski 出色地完成了这一任务。

在研讨会中,我们的目标是确保学员能够克服困难,顺利完成安装过程。由于现场没有专门的实验室设备,我们使用 VirtualBox 创建和配置虚拟机,然后在其中安装 FreeBSD。

基本流程如下:

  1. 插入虚拟光盘:将 FreeBSD 安装 ISO 挂载到虚拟机的光驱。

  2. 从光盘启动并安装 FreeBSD:引导虚拟机从光盘启动,然后将 FreeBSD 安装到虚拟硬盘。

  3. 完成安装后执行 shutdown -p now 关机:这样可以移除虚拟光盘,避免下次启动时再次从光盘引导。

  4. 后续引导时改为从硬盘启动。

在这一阶段,我们会进行短暂的休息,我会利用这段时间帮助尚未跟上的学员。

常见问题与解决方案

在研讨会中,我遇到的最常见问题主要与虚拟机的错误配置*有关。例如:

  • I/O APIC 选项被禁用:有人在 VirtualBox 的系统设置中关闭了 “Enable I/O APIC”,导致无法正确启动。只需勾选此选项即可修复问题。

  • 虚拟机架构设置错误:有学员将虚拟机类型设为 32 位,而 FreeBSD 需要 64 位。改为 64 位后,问题迎刃而解。

  • 输入错误的包名和配置:在排查问题时,即使是个小小的拼写错误,也可能导致系统无法正常运行。

新问题:随着 Apple M1/M2 处理器的普及,一些学员无法在 Mac 设备上使用 VirtualBox,因为 VirtualBox 不支持 Apple 的 ARM 架构。

此外,我们还遇到了会场 WiFi 带来的小问题:

  • 由于 DHCP 提供的 DNS 设置有问题,我们不得不手动修改 /etc/resolv.conf 文件中的 nameserver 配置,以保证网络连接正常。

总结

每年的 SCaLE 研讨会都让我受益匪浅,我不仅能帮助学员入门 FreeBSD,也能从他们的反馈中不断优化课程内容。将来,我希望能继续完善这一研讨会,让更多人了解并使用 FreeBSD!

服务器与桌面的界限

接下来的步骤是演示服务器与桌面之间的界限有多么模糊。只需安装几个软件包并修改一些配置文件,桌面环境就能立即启动。我们只需运行 startx 命令,就可以让 FreeBSD 启动图形桌面。

当学员们意识到他们已经自己搭建了完整的桌面环境,并且不需要特定的发行版或 FreeBSD 衍生系统来运行 X Window 系统窗口管理器时,这一刻是非常令人兴奋的。例如,我们使用了 XFCE,但也演示了如何轻松安装和配置 KDE Plasma 5、Lumina 和 GNOME 等其他窗口管理器。

在窗口管理器运行后,学员们可以与 GUI 应用程序进行交互,例如网页浏览器、编程 IDE、文件管理器等,进一步体验 FreeBSD 作为桌面操作系统的能力。

构建自定义软件包仓库

在研讨会中,我还专门介绍了构建自定义软件包仓库(package repository)的过程。这很重要,因为如果学员遇到需要自定义 ports 的情况,他们应该知道如何避免混合使用 ports 和二进制软件包的常见问题。

我们使用的工具是 Poudriere,它让构建自己的软件包仓库变得非常简单和直观。

自动化管理与 Ansible

在学员们开始熟悉命令行输入后,我们引入了 Ansible,这是一款用于配置管理的工具,特别适用于通过 SSH 远程管理多台服务器。

我们演示了如何克隆 FreeBSD 虚拟机,并通过 SSH 连接到它。然后,我们使用 Ansible Playbooks 来自动执行命令,帮助学员理解 Ansible 在 FreeBSD 环境中的应用。

研讨会中,我们还提供了一个 Ansible Playbook,用于在远程服务器上搭建 Poudriere,并构建自定义软件包:

  1. 租用一台高性能服务器,短时间内完成软件包的编译。

  2. 下载编译好的软件包到本地,之后销毁服务器,减少成本。

  3. 修改软件包仓库设置,将 *FreeBSD 软件包源从默认的 https://download.FreeBSD.org 改为本地路径(file://),以便使用我们自定义构建的软件包。

FreeBSD Jail 与 iocage

最后,我们讨论了 FreeBSD Jail,让学员体验它们的强大功能,并学习如何使用 iocage 进行管理。

对于希望深入学习的学员,我们推荐 MWL.io,该网站提供了 Michael W Lucas 撰写的 FreeBSD 书籍,包括:

  • 《FreeBSD Mastery》 系列

  • 《Poudriere 使用指南》

  • 《FreeBSD 安装手册》

  • 《FreeBSD Jail 深度解析》

这些资源可以帮助学员在研讨会之后进一步拓展知识,掌握 FreeBSD 高级功能。

研讨会参与者

这次研讨会的参与者构成非常多元化,大家来自不同背景,经验水平各异,但都沉浸在技术讨论中,探索新知识,以便在未来的工作中更好地应用 FreeBSD。只要掌握了安装与配置的基本流程,就能很快发现 FreeBSD 在解决实际问题中的优势。而借助 Ansible 等配置管理工具,学员不仅可以记录所有配置文件的修改和已安装的软件包,还能轻松恢复进度,进一步深化对 FreeBSD 的理解和应用。

这次的学员们热情高涨,有些人甚至专门带来了笔记本电脑,计划在现场安装 FreeBSD。其中,一些人对 FreeBSD 的 WiFi 配置颇感兴趣。对于这类问题,我们提供了一些简单的方法:

  • USB 共享网络(USB Tethering):使用 Android 设备 共享网络连接,只需插入数据线、启用 USB 共享网络,然后以 root 用户运行:

    dhclient ue0

    该命令会通过 DHCP 获取第一个 USB 以太网设备的 IP 地址。

  • 内部 WiFi 配置:可通过 /etc/rc.conf 和 /etc/wpa_supplicant.conf 进行配置,详细选项请参考 FreeBSD 手册的第 5 章。

  • 更多 WiFi 相关信息:请参阅 《FreeBSD 手册》第 32 章:高级网络配置,其中包含 FreeBSD 对 WiFi 的详细支持信息。

我们的目标不仅是回答常见问题,更是帮助学员利用 FreeBSD 做出有趣的事情,并用技术解决现实问题。

研讨会后的小故事

值得一提的是,一位学员中途才到达,进度严重落后,无法跟上课程。但在研讨会结束后,我在大厅里陪他一起调试,最终帮助他完成了整个安装过程。由于他的笔记本使用的是酷睿 2 Duo 处理器,安装过程比其他人耗时更久。不过,他对我的帮助非常感激,并表示对 BSD 生态充满兴趣,希望能进一步学习。

我向他推荐了几个学习资源:

  • 《FreeBSD Journal》——权威的 FreeBSD 期刊

  • MWL.io——Michael W Lucas 的技术书籍网站

  • BSD 用户组(BSD User Groups)——加入社区,和更多 BSD 爱好者交流


ROLLER ANGEL 主要致力于帮助人们通过技术实现目标,他是一名经验丰富的 FreeBSD 系统管理员 和 Python 开发者,热衷于探索开源技术(尤其是 FreeBSD 和 Python)在解决实际问题中的应用。他坚信,只要有心学习,就能掌握任何知识。

他喜欢挑战问题,善于寻找创造性解决方案,不断学习新技术,保持技能的敏锐性。此外,他还活跃于研究社区,乐于分享自己的想法,并通过技术推动创新。

学员们陆续走进会场,映入眼帘的是投影屏幕上《FreeBSD 入门》的标题幻灯片——由 FreeBSD 基金会的市场协调员 Drew Gurkowski 设计。这次演示还通过 YouTube 进行了直播,链接如下: 📺

此外,我也告诉他,我的个人网站 随时欢迎他来交流。

观看直播
http://BSD.pw
Getting Started with FreeBSD Workshop