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