在Windows和MacOSX上,每台机器检索某种UUID是微不足道的:
在Windows上(注册表):
"Software\Microsoft\Cryptography\MachineGuid"
在MacOSX上
$ ioreg -rd1 -c IOPlatformExpertDevice | grep IOPlatformUUID
但是在Linux上,这是much more complex。到目前为止,我发现了以下内容:
在基于dbus的系统上:
$ cat / var / lib / dbus / machine-id
在基于x86的系统上(需要 root power ):
$ sudo cat / sys / devices / virtual / dmi / id / product_uuid
在基于PowerPC的系统上:
$ cat / proc / device-tree / serial-number
真正奇怪的是,基于x86的arch上主板的UUID仅限于root用户,但可以通过hal($ lshal | grep 'system\.hardware\.serial'
)使用普通用户访问。同时,可以从基于PowerPC的arch上的任何用户访问所有磁盘UUID($ ls /dev/disk/by-uuid/
)和序列号。
那么我可以在Linux上使用任何便携式UUID吗? dbus 可能已安装或未安装,我需要从非读取此值root 用户,并且它需要在重新启动时保持相同(/proc/sys/kernel/random/boot_id
因此不是一个选项。)
答案 0 :(得分:1)
现在大多数Linux发行版现在都安装了systemd
,因此我可以依赖/etc/machine-id
存在并且可以从普通用户那里读取。