进一步阅读

进一步阅读

灵感来自“费BSD KDE。无法启动 d-bus。你可以调用qdbus吗?”:

我正在使用 FreeBSD/TrueOS/DragonFly BSD,并且有一些来自 Ports 的软件,在运行时抱怨/etc/machine-id文件丢失。我在 中没有看到任何此类文件/etc

这个文件是什么?我应该拥有它吗?如果可以的话我该怎么做?

答案1

/etc/machine-id文件不是任何 BSD 的标准部分。这是一种 systemd 主义,已经开始渗透到 Ports 中的软件中。通常,缺少此文件是良性的,因为(到目前为止)仍然存在大多数此类软件所依赖的较旧的非 systemd 特定机制。

软件在这里寻找机器ID,一个 128 位数字,唯一标识此操作系统的安装,在系统重新启动时保持一致,并且(大部分)独立于硬件更改。

D-Bus 就是此类软件之一。它也有一个概念机器ID。从历史上看,在 FreeBSD/TrueOS/DragonFly BSD 上,这已在/var/db/dbus/machine-id文件中找到。虽然 D-Bus 近年来已根据/etc/machine-id偏好进行了更改,但它应该还是返回查看旧文件。

操作系统不会附带或创建这样的开箱即用的文件。但你当然可以制作一个。

  • 获取并安装诺什工具集setup-machine-id以超级用户身份运行该工具。如果可以的话,这将使/etc/machine-id从 D-Bus 文件中读取现有 ID。 (使用工具包 1.36 或更高版本以避免此处出现错误。)

    您不需要在每次引导程序时都运行此文件,因为一旦创建,该/etc/machine-id文件就在系统的整个生命周期中一直保留在那里;但是如果你将它连接到系统引导程序中,它还将确保你有一个/run/machine-id文件和一个kern.hostuuid内核变量都包含相同的 ID。它还使用/更新/etc/hostid.

  • 将 D-Bus 文件移至 systemd 位置,然后将前者符号链接到后者:
    mv -i /var/db/dbus/机器 ID /etc/ && ln -s /etc/机器 ID /var/db/dbus/
    请注意,在另一个方向上创建符号链接会破坏任何在安装/etc/machine-id之前期望可用的软件。/var同样,这些是该文件的 systemd 语义,您可能会发现它们已渗透到 Ports 中的软件中。
  • uuidgen只需使用类似(您必须处理其输出)或 之类的东西生成的新机器 ID 手工制作一个dbus-uuidgen。如果您已经安装了 D-Bus,并且存在 D-Bus 机器 ID 文件,那么这是一种较差的方法,因为它将导致(首先)在 systemd 位置查找的软件看到与(首先)的软件不同的机器 ID查看 D-Bus 位置。

是的,严格来说这应该/usr/local/etc/machine-id符合 BSD 约定,但请记住,我们正在谈论的是正在查看的软件/etc/machine-id 首先因为它们错误地特定于 systemd。它们也不会被修补以查看该文件的非 systemd 位置。

进一步阅读

答案2

在 FreeBDS 12 上没有nosh软件包。相反,只需运行dbus-uuidgen --ensure并复制生成的 id: cp /var/lib/dbus/machine-id /etc/machine-id。然后startkde启动等离子kde。

相关内容