gpt4 book ai didi

workflow - 在 FreeBSD 代码库上工作的推荐工作流程和环境是什么?

转载 作者:行者123 更新时间:2023-12-02 03:06:52 26 4
gpt4 key购买 nike

我想开发一个新功能或更改 FreeBSD 发行版的现有程序,特别是用户空间。为此,我需要对 FreeBSD 代码库进行更改,然后编译并测试它们。²

/usr/src 中的树上执行此操作并将结果安装在系统上似乎是一个坏主意,因为它要求您在 CURRENT 上运行开发计算机,以便使用 root 进行开发如果您犯了错误,则会获得特权并软管您的系统。我想一定有更好的方法,并且可能有 FreeBSD 开发人员使用的标准设置。³

开发 FreeBSD 代码库的推荐工作流程是什么?


¹ 因此,特定于内核开发的考虑因素并不是非常重要

² 我熟悉开发更改后提交更改的流程

³ 我之前读过 development handbook以及 FreeBSD 手册中有关 building the source 的章节但似乎都没有推荐具体的流程。

最佳答案

我是 src 提交者。

我经常从我打算移植到的最低版本开始(例如,RELENG_11_3。

然后我会这样做(在进行更改之前或之后):

   make buildworld

然后部署到 jail 目录:

   make DESTDIR=/usr/jails/test installworld

正如第一响应者所暗示的那样,这个 jail 目录可以与 bhyve 一起使用,但我发现配置 jail 甚至只使用 chroot 更容易。

我喜欢在/etc/rc.conf 而不是/etc/jail.conf 中配置我的 jail :

/etc/rc.conf 内容示例:

   jail_enable="YES"
jail_list="test"

jail_test_rootdir="/usr/jails/test"
jail_test_hostname="test"
jail_test_devfs_enable="YES"

我可以提供更深入的示例,例如, jail 有一个专用网络堆栈,因此您可以通过 SSH 进入它,但我不认为网络堆栈对您的测试很重要发布问题。

使用“jls”可以看到正在运行的 jail ,可以使用“jexec test bash”进入正在运行的 jail

在 jail 内您可以测试您的更改。

在进行这种沙箱处理时,只要您构建/安装到 jail 的/usr/src 来自以下版本, jail 就可以工作:

  1. 比 guest 操作系统更旧,或者
  2. 与 guest 操作系统位于同一 STABLE 分支中,或者
  3. 至少与 guest 操作系统二进制兼容

情况 1 和 2 非常安全,而情况 3(例如,运行比 guest 操作系统更新的/usr/src)可能会变得危险。例如,尝试在 12.0-RELEASE-pX guest 操作系统上运行/usr/src head (13.0-CURRENT),其中 KBI、KPI 和 API 在内核和用户空间之间都可能有所不同(使用 jail ,每个 jail 都在 guest 操作系统下运行)操作系统的内核)。

如果您发现必须针对较旧的 guest 操作系统运行最新的源代码,那么 bhyve 绝对是解决方案。您将采用该 jail 目录,而不是使用该根目录运行 jail ,而是使用该 jail 目录作为根目录运行 bhyve 实例。我不经常使用 bhyve,所以我不记得您是否必须首先将内容存储在磁盘镜像中,然后将 bhyve 指向磁盘镜像 - 其他人和/或 Google 会知道答案。

关于workflow - 在 FreeBSD 代码库上工作的推荐工作流程和环境是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58782702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com