【发布时间】:2016-02-16 12:14:52
【问题描述】:
背景: 我开发了一个在 Linux 上运行的软件,并分发了许可证以使其工作。 对于 Linux 安装,我使用的是系统 UUID,我的许可证基于此。 为了在各种云设置上安装,我将操作系统与我的软件打包并提供给用户。用户根据我的软件中显示的 UUID 部署它并请求许可。
问题: 当用户部署每个实例时,在少数云设置中,同一物理机器上不同 VM 实例的 UUID 相同。 这会导致许可证问题。
解决方案: 我计划做的很简单:当操作系统第一次启动时调用 uuidgen 并生成 UUID 并将其存储到文件中。之后下次重新启动时,我将从该文件中获取它,因此机器的 UUID 将相同。
关于上述解决方案的问题:
1
带有随机选项的 uuidgen 使用 /dev/random 计算 uuid 在虚拟机设置中,由于没有直接的硬件访问来生成这个随机种子,/dev/random 值在不同的虚拟机实例中可能相同吗?这意味着 uuidgen 将在同一个种子上运行?
2
如果 uuidgen 在第一次启动时在两个不同的 linux 系统中生成的 UUID 相同,因为随机种子不够好,那么在这些 Linux 系统中生成的下一个 UUID 也将相同? IE。 启动时,会调用 uuidgen 并在 VM1 中生成 UUID1。假设在另一个 VM 实例 VM2 中调用 uuidgen 时,它与 UUID2 相同。 如果在VM1中为下一个UUID再次调用uuidgen,如果在VM2中调用它会再次相同吗?
谢谢。
【问题讨论】: