fuz*_*fuz 2 workflow development-environment freebsd tooling
我想开发 FreeBSD 发行版的新功能或更改和现有程序,特别是用户空间¹。为此,我需要对 FreeBSD 代码库进行更改,然后编译和测试它们。²
在树上这样做/usr/src并在系统上安装结果似乎是一个坏主意,因为它需要您在 CURRENT 上运行您的开发机器,以 root 权限进行开发,并且如果您犯了错误,则软管您的系统。我想一定有更好的方法,并且可能是 FreeBSD 开发人员使用的标准设置。³
开发 FreeBSD 代码库的推荐工作流程是什么?
¹ 所以特定于内核开发的注意事项并不是非常重要
² 我熟悉开发后提交更改的流程
小智 5
我是 src 提交者。
我经常从我打算移植到的最低版本开始(例如,RELENG_11_3。
然后我会做(在进行更改之前或之后):
make buildworld
Run Code Online (Sandbox Code Playgroud)
然后部署到监狱目录:
make DESTDIR=/usr/jails/test installworld
Run Code Online (Sandbox Code Playgroud)
这个监狱目录,正如第一响应者所暗示的,可以与 bhyve 一起使用,但我发现配置监狱更容易,甚至只使用 chroot。
我喜欢在 /etc/rc.conf 而不是 /etc/jail.conf 中配置我的监狱:
示例 /etc/rc.conf 内容:
jail_enable="YES"
jail_list="test"
jail_test_rootdir="/usr/jails/test"
jail_test_hostname="test"
jail_test_devfs_enable="YES"
Run Code Online (Sandbox Code Playgroud)
我可以提供更深入的示例,例如,jail 有一个私有网络堆栈,因此您可以通过 SSH 进入其中,但是我从发布的问题中没有感觉到网络堆栈对您的测试很重要。
你可以用“jls”看到正在运行的监狱,你可以用“jexec test bash”进入正在运行的监狱
在监狱内,您可以测试您的更改。
在进行这种沙盒操作时,只要您构建/安装到监狱的 /usr/src 来自以下版本,监狱就可以工作:
情况 1 和 2 非常安全,而情况 3(例如,运行比来宾 OS 更新的 /usr/src)可能会变得不可靠。例如,尝试在 12.0-RELEASE-pX 来宾操作系统上运行 /usr/src head (13.0-CURRENT),其中 KBI、KPI 和 API 在内核和用户空间之间都可能不同(使用 jails,每个 jail 在来宾操作系统下运行)操作系统的内核)。
如果您发现必须针对较旧的来宾操作系统运行最新源代码,那么 bhyve 绝对是解决方案。您将获取该 jail 目录,而不是使用该根目录运行 jail,而是运行以 jail 目录为根目录的 bhyve 实例。我不经常使用 bhyve,所以我不记得你是否首先必须将内容存放在磁盘映像中,然后首先将 bhyve 指向磁盘映像——其他人和/或谷歌会知道答案。
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |