尝试为 XenServer 7.0 制作主机 sFlow

Trying to make Host sFlow for XenServer 7.0

我花了一整天的时间尝试从源代码制作 Host sFlow 2.0.6-1 (https://github.com/sflow/host-sflow/releases) for XenServer 7.0 using the XenServer DDK from this site: http://xenserver.org/overview-xenserver-open-source-virtualization/download.html

首先,我必须对文件 hsflowd-xen.spec 进行 2 处更改: 将第 3 行更改为:"Version: 2.0.6"(它仍然是 2.0.1) 将第 20 行更改为:“%setup -n hsflowd-2.0.6-1”(添加名称是因为默认名称错误)。

现在我的问题是我没有 xenstore.h 文件。经过长时间的搜索,我发现它在 libxen-dev(或 libxen-devel)包中,但我无法在任何地方找到它及其依赖项。

我认为最有可能的四种解决方案是: 1.(懒人)获取已经为XenServer 7.0构建的Host sFlow的iso文件(官方站点在6.5停止构建)

  1. 设置一个适当的 yum 存储库,其中将包含 libxen-dev 及其依赖项。我什至无法连接到官方 CentOS 存储库,因为 /etc/yum.repos.d/ 中的文件有一个错误的 URL。 这是/etc/centos-release的内容:"XenServer DDK release 7.0.0-125770c (xenenterprise)"

  2. 不知何故设法使用 'xenstore.a' 而不是 'xenstore.h'。我更改了 src/Linux/mod_xen.c 中的代码以包含 'xenstore.a' 而不是 'xenstore.h' 但是当我构建它时,它会使用旧代码创建一个新文件并忽略我的更改。我可能更改了错误的文件,因为整个代码有不同的副本。我什至不确定它是否有效,即使我确实设法包含 'xenstore.a'.

  3. 从源代码制作 xenstore。我没有尝试,因为我只找到了旧资源,而且我想我也会错过依赖项。

PS:我在 CentOS 和 Makefiles 方面一般都是 n00b,所以解决方案可能很明显,但我只是不知道。

终于搭建成功了。这就是我必须一步一步做的:

  1. 将 XenServer DDK 7.0.0 导入 XenCenter。

  2. 按照以下步骤扩展 xvda1:https://support.citrix.com/article/CTX125405

  3. 对 hsflowd-xen.spec 进行以下更改:
    第3行:版本:2.0.6
    第20行:%setup -n hsflowd-2.0.6-1
    在 %description 之前添加这两行:
    %定义debug_package%{nil}
    %定义_unpackaged_files_terminate_build 0

  4. 更改文件 /etc/yum.repos.d/CentOS-Base
    将所有出现的“$releasever”更改为“7”。
    将所有出现的“$basearch”更改为 "x86_64"。
    将每个存储库的 "enabled=0" 更改为 "enabled=1"。
    取消注释每个存储库的 baseurl 行。

  5. 安装开发包(binpkg.iso 在 xenserver.org 下载页面上可用)并在 /etc/yum.repos.d/ 中添加一个文件
    我的看起来是这样的:
    [binpkg]
    名称=CitrixXenServer7
    启用=1
    baseurl=file:///mnt/binpkg/
    gpgcheck=0

  6. 使用 Yum 安装以下两个包(依赖项现在应该正确安装):
    xen-libs-devel.x86_64
    xen-dom0-libs-devel.x86_64

  7. 制作文件并使用本教程进行安装:https://raw.githubusercontent.com/sflow/host-sflow/v2.0.4/INSTALL.XenServer

感谢 lagange,我用 XenServer 7 版本更新了 host-sflow 项目。我还添加了一个 Docker 配方,这样您就可以用“./docker_build_on xenserver”替换所有这些步骤。请在 https://github.com/sflow/host-sflow.

上提出问题