翻译自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表中读取这些值而已,通过访问这些文件。

linux系统uuid 一样,linux系统product_uuid和product_serial有何区别相关推荐

  1. linux cpu uuid 查看,Linux下查看UUID方法介绍

    Linux下查看UUID方法介绍. 1. sudo blkid /dev/sda1: UUID="9ADAAB4DDAAB250B" TYPE="ntfs" / ...

  2. Linux获取系统UUID

    UUID 是系统的唯一识别码,永远不会重复,比较有用. 1. 获取Linux系统uuid,命令如下: 方式一: dmidecode -s system-uuid | tr 'A-Z' 'a-z' 方式 ...

  3. 查看Linux系统基本信息CPU内存系统负载

    查看Linux系统基本信息 1.查看Linux系统uuid [root@localhost ~]# cat /sys/class/dmi/id/product_uuid A6E64D56-8D4F-1 ...

  4. g++ linux 编译开栈_使用 linux kernel +busybox 定制linux系统

    写在开头: 本来是想使用linux kernel +busybox 制作一个教程的,后来快要结束的时候,死活找不到硬盘,我了解很多文章都有类似的,但是没有谈到硬盘找不到问题,最后历经艰辛,终于把问题解 ...

  5. linux基础-第十单元 系统的初始化和服务

    第十单元 系统的初始化和服务 Linux系统引导的顺序 Linux系统引导的顺序 BOIS的初始化和引导加载程序 什么是BIOS GRUB程序和grub.conf文件 什么是grub grub配置文件 ...

  6. 1、win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现)

    1.win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现) 一.准备知识:win10下打开Administrator的方式 在win10操作系统中,Administrator ...

  7. linux怎样收集系统信息,Linux下收集系统和硬件信息的10个实用命令

    [51CTO.com快译]知道Linux系统在什么样的硬件部件上运行始终是个好的做法,这可以帮助你在系统上安装程序包和驱动程序时,处理兼容问题. 1.如何查看Linux系统的信息 如果仅仅想知道系统名 ...

  8. Linux Centos7:11.给系统增加一块硬盘

    11.1 提升篇-硬盘分区基础 1.在Linux中给系统增加一块硬盘的步骤: 2.硬盘分区基础 IDE硬盘.SCSI硬盘.SATA硬盘  主分区: 1-4个  扩展分区:0-1个  逻辑分区:不 ...

  9. 安装Linux、windows的vhd系统指南

    摘要:本文主要介绍把windows系统和Linux系统装进vhd文件,并从移动硬盘引导启动 Table of Contents 一.基础知识 1.计算机启动过程 二.安装windows到vhd 方法一 ...

最新文章

  1. Python如何爬取实时变化的WebSocket数据
  2. 从“元宇宙”热炒中理性看待我国虚拟现实产业发展
  3. asp 执行linux脚本,Shell.Application执行命令的五种方法小结
  4. linux软中断的实现
  5. Python 从零学起(纯基础) 笔记 (二)
  6. python 变量引用_Python 知识要点:变量及引用
  7. 单调栈之Next Greater Number
  8. 图的遍历——深度优先搜索+广度优先搜索
  9. 在C#中实现托盘是多么简单
  10. 鸿蒙系统在Hi3816平台上初体验
  11. overflow解决float浮动后高度自适应问题
  12. [Android]实现高德地图导航
  13. 小程序开发API之mDNS
  14. python爬虫抓取千千音乐网站的歌曲
  15. stm32---端口复用和重映射
  16. AOP(五)之Around增强处理
  17. 【Django】 gunicorn部署纪要
  18. 搭建自己的技术博客系列(六)酷炫主题icarus常用配置整合版,快速搞定博客首页
  19. 三分钟看懂5G NSA和SA
  20. 【Nginx】nginx代理视频流hls地址

热门文章

  1. 软件测试:三角形问题
  2. 分享几个在线制作APP应用的网站
  3. handler机制,成功跳槽百度工资从15K涨到28K,挥泪整理面经
  4. Point Estimation
  5. 使用nginx作图片服务器的访问权限控制
  6. 杭州西湖众多名胜故居变高档会所 成富人乐园
  7. 如何使用Burp suite抓取Fiddler转发的流量包
  8. ios11手机怎么投屏到电脑屏幕上
  9. Unhandled promise rejection错误解决
  10. Java学习路线和资料分析