我正在为正在处理的项目使用多个运行raspian(Debian)的Raspberry Pi。我希望每个Raspberry Pi都有一个唯一的ID,以便可以在网络上区分它们。
我以为g++库可能是实现此目的的最佳方法,在Pi首次启动时,Pi将通过守护程序生成并存储UUID。
但是,我计划创建一个库存安装镜像,并在每次向网络添加一个镜像时将其加载到新的树莓派上。据我了解,UUID生成部分基于系统时间,并且由于我将对所有它们使用相同的镜像,因此它们可能都具有相同的系统时间。 (有可能在获得任何形式的互联网时间之前将其引导。)
这对UUID生成的唯一性有多大影响?
最佳答案
通常,有几种不同的方式来生成guid / uuid。根据UUID Wikipedia article,有5种不同的生成方式。
除这些以外,某些CPU还具有一条指令,告诉CPU提供其序列号。许多OEM机器的BIOS中都有一个区域,其中包含机器的序列号。因此,任何这些都可以用作生成guid / uuid的源。由于您正在运行Linux,因此您可以编写自己的例程来生成它们。
如果您打算使用机器特有的功能(例如网络MAC地址),我会将其与当前时间结合在一起并对其进行哈希处理几次,因为这可能会导致隐私漏洞。正是这个隐私漏洞使当局能够追踪梅利莎病毒的作者。
此外,还有RFC4122也会对此进行详细说明。
关于c++ - 是否可以在具有相同镜像的多个设备之间生成重复的UUID(GUID)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29225067/