linux系统product_uuid和product_serial有何区别

翻译自https://stackoverflow.com/questions/35883313/dmidecode-product-uuid-and-product-serial-what-is-the-difference

位于系统目录 /sys/class/dmi/id/下的product_uuid和 product_serial files有什么区别

1、它是如何生成的?

这些值是在内核代码中生成的。在内核源码目录中,使用git grep命令(带有您感兴趣的关键字)可以很容易地找到它们:

$ git grep --all-match -n -e '\bdmi\b' -e product_uuid -e product_serial

因此,product_uid和product_serial sysfs nodes在drivers/firmware/dmi-id.c中创建的:

DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL);

DEFINE_DMI_ATTR_WITH_SHOW(product_uuid,    0400, DMI_PRODUCT_UUID);

从DEFINE_DMI_ATTR_WITH_SHOW 定义中可以看到所有的属性都访问via sys_dmi_field_show() 函数, 而该函数又调用 dmi_get_system_info(), 其从dmi_ident 队列中返回相应的元素. 该表在dmi_decode() 中被填充:

dmi_save_ident(dm, DMI_PRODUCT_SERIAL, 7);

dmi_save_uuid(dm, DMI_PRODUCT_UUID, 8);

因此product_uuid 是在dmi_save_uuid()  函数中生成的. 只需要阅读一下它的代码,便能理解.它是怎么实现的。

product_serial是在dmi_save_uuid_ident函数中生成的. 它的代码可以归结为如下::

(struct dmi_header *)(dmi_base)[7];

where dmi_base is address (remapped to virtual memory obviously) of DMI table, and 7 corresponds to DMI_PRODUCT_SERIAL constant.

为了更好的理解这个可以阅读SMBIOS specification, 特别是表格9 – 系统信息(类型1) 结构, 其中有相关命令的对应关系。

# dmidecode --type 1

2、 其中的区别是什么?

对于 product_uuid -- 查看SMBIOS specification, 章节7.2.1 System - UUID. 里面有具体的描述,并且有一个表格来解释每部分数字代表的含义,. 使用该表可以解码UUID并从中提取一些信息,例如时间戳等。

对于 product_serial -- 我相信这个是不用解释的, 它仅仅是你设备的一个序列号. 你通常可以在电脑的贴纸上找到该信息。 例如,我的笔记本电脑就在底部。它与我在/sys/class/dmi/id/product\u serial中看到的字符串相同。

3、我也可以修改这个文件值么?

实际上该文件并不是真正的文件,只是内核函数的接口。详细信息,可以参阅sysfs。因此,为了“更改”那些文件,您需要相应的编辑提到的内核文件,然后重建整个内核并引导它(而不是您的发行版提供的文件)。

此外,正如@christovu Brugier在评论中提到的,您可以在DMI表中更改这些值(尽管方式有些棘手)。但是我并不推荐修改这些值。这些值肯定有一定的意义,在某些情况下可能有用(可以对于你来说没有意义,但是对于你电脑中的某些软件来说是有意义的)。

4、重新安装操作系统后该值是否被保存的?

这些值实际上是从DMI表中获得的,DMI表与BIOS一起硬编码到存储器中(主板上带有BIOS的flash芯片),你仅仅通过使用内核函数从DMI表中读取这些值而已,通过访问这些文件。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,942评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,884评论 0 10
  • ### main函数执行之前做了什么?(iOS) & dyld 是Apple 的动态链接器;在 xnu 内核为程...
    天使君阅读 707评论 0 1
  • 在我家房子的东北方向,有一座被废弃的电影院。刚刚搬到镇子上来的时候,人家问我家在哪里,我一说,大家就都懂了。...
    米宝环环阅读 1,024评论 0 3
  • 他不爱我,想起莫文蔚的一首歌,还有她的歌声。 关键,还是一个爱字。当我觉得自己不够可爱,那个爱,不在自己身上,就会...
    HooperInanna阅读 157评论 0 0