# 采访 Kajetan Staszkiewicz

* [Starting FreeBSD Development An Interview with Kajetan Staszkiewicz](https://github.com/FreeBSD-Ask/freebsd-journal-cn/blob/main/2025-456/https：/freebsdfoundation.org/our-work/journal/browser-based-edition/networking-3/starting-freebsd-development/README.md)
* 作者：Tom Jones

**TJ：** 你能简单介绍一下你自己以及你与 FreeBSD 的背景吗？

**KS：** 我叫 Kajetan Staszkiewicz。 1984 年出生于波兰神奇的城市克拉科夫。大约在 8 岁，我在计算机俱乐部接触了 ZX Spectrum 和 Atari 65XE 等 8 位机器。后来父母给我买了一台 Commodore 64。我对这台机器记忆犹新，直到现在我的桌上还摆着一台能正常工作的机器。

1996 年，我们家买了第一台 PC 克隆机（注：IBM PC 兼容机），不久波兰家用用户就能通过拨号连入互联网。但这种方式可持续时间不长。大约 1999 年，我和邻居们决定搭建邻里网络（注：小区或街道搭建的局域网）。大约 15 个人通过悬挂在屋顶到阳台的 10 Mb/s 以太网线共享一家网吧的 115 kb/s 连接。

网络共享由一台运行 IPchains（注：一款网络数据包过滤与地址转换工具） 的 Linux 机器来完成，最初由网吧的系统管理员提供，很快就被我们网络里年长的朋友搭建的另一套系统取代。后来我接手管理，用 Perl 写了几段 CGI 脚本，通过 Web 界面管理 DHCP 服务器和流量整形。

凭借这些经验，我在一家公司找到了兼职，网络架构和我们当初的类似，不过是商业用途。那时我在雅盖隆大学（注：位于波兰克拉科夫，由卡齐米日三世创建于 1364 年）学习计算机科学。一位同学向我介绍了 FreeBSD，大概是 5.0 版。在新工作中，路由和流量整形由 Linux 系统完成，但 FreeBSD 的 jail 看起来是托管平台的完美方案。我们需要提供网页、电子邮件和 Webmail 等服务。虚拟化尚未普及， jail 帮助我们实现了这些服务的隔离。

我的下一份工作是在一家大多数服务都使用 FreeBSD 的公司，甚至有员工大胆地在工作站上运行 FreeBSD。

目前我居住在德国汉堡。在现在的工作中， FreeBSD 是我们路由器和负载均衡器的首选系统。

**TJ：** 你是如何开始提交第一个 FreeBSD 贡献的？当时你如何选择起步的项目？

**KS：** 选择很简单：修复那些出问题的部分。在 $WORK，我们依赖 pf(4) 的源跟踪，期间发现一个棘手的 Bug：删除源节点时，每个源节点会扫描所有状态。数百个源节点与数十万条状态会导致内核代码出现大量循环，系统因此被锁死。

在 glebius@ 的帮助下，我成功修复了该问题，并提交了我的第一个补丁到 FreeBSD。

**TJ：** 你是如何定位这个问题的？FreeBSD 中是否有现成的工具可以帮助，还是你需要自行开发？

**KS：** 当时我已经大致知道问题出在哪，因为它是由我们用于负载均衡的自定义工具引发的。

那时我对 FreeBSD 尤其是内核开发经验尚浅，所以采用了最原始的暴力调试法：不断在代码里加 `printf`，直到找到卡住的位置。

不过系统自带了构建自定义内核所需的所有工具，这点对我帮助很大。

此外，还能按需生成内存转储，再用调试器分析，也非常方便。

**TJ：** 在这个过程中你一定学到了很多。有没有什么技巧能让新开发者的调试和开发更轻松？

**KS：** 不只是知识，额外的工具和工作流也很关键。

第一是要有完善的开发和测试环境。在 $WORK，我们只在裸机上跑 FreeBSD，最初的补丁必须部署到这些“真”服务器上——它们启动要花几分钟 POST，并且承载着真实的生产流量，影响客户体验。

在那种环境下测试补丁又紧张又慢。现在我有三层系统：

1. 可以在几秒内重启新内核的虚拟机；
2. 承载少量流量、即便挂了也不影响客户的测试机；
3. 承载更多流量、但仍不影响付费客户的预演机。

第二是 FreeBSD 的测试套件，真的能救命！我能在几分钟内（支持并行）跑完所有测试，确保没破坏现有功能。虽然偶尔会发现有些功能还没对应的测试，但我们正在逐步完善。

最后是在编译内核时启用各种调试选项——可以监测锁顺序、变量断言，甚至捕获内核中的非法内存访问。FreeBSD 开发者手册对这些选项都有详细说明。

**TJ：** 对新贡献者有什么建议或其他想补充的吗？

**KS：** 开源项目（包括 FreeBSD）依赖贡献者。FreeBSD 已经很成熟，虽然代码复杂，但总有贡献的空间——从小而简单的改动开始也完全没问题。社区友好又乐于助人，会在代码审查中给出建设性反馈，别被吓到！

希望大家的贡献既能带来新功能，也能让新手学习新技能、职业成长，甚至享受与计算机打交道的乐趣。

***

**Tom Jones** 是一位致力于保持高效网络栈的 FreeBSD 提交者。

**Kajetan Staszkiewicz** 是专注于网络和虚拟化的系统管理员，偶尔为 FreeBSD 的 pf(4) 做出贡献。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/qi-kan/2025456-wang-luo/staszkiewicz.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
