【发布时间】:2015-03-05 12:48:40
【问题描述】:
在 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 权限):
$ sudo cat /sys/devices/virtual/dmi/id/product_uuid
-
在基于 PowerPC 的系统上:
$ cat /proc/device-tree/序列号
真正奇怪的是,基于 x86 的架构上主板的 UUID 仅限于 root 用户,但可以使用普通用户通过 hal ($ lshal | grep 'system\.hardware\.serial') 访问。同时,可以访问所有磁盘 UUID ($ ls /dev/disk/by-uuid/),并且可以从基于 PowerPC 架构的任何用户访问序列号。
那么有没有我可以在 Linux 上使用的便携式 UUID ? dbus 可能安装也可能不安装,我需要从 non- root 用户,并且它需要在重启后保持相同(/proc/sys/kernel/random/boot_id 因此不是一个选项)。
【问题讨论】: