最近看安卓启动,在do mounts dm的时候,发现rootfs分区是通过PARTUUID参数传给内核的

root=/dev/dm-0 dm="system none ro,0 1 android-verity PARTUUID=fbc2c131-6392-4217-b51e-548a6edb03d0 "

但是在系统中,通过blkid无法找到对应PARTUUID的分区。简单google了下,发现blkid中的uuid与partuuid不是一个东西

存储设备一般的结构为 :

块设备----分区----文件系统

blkid中的UUID显示的是文件系统的属性,比如ext4系统,可以通过tune2fs -l dev 查看文件系统的uuid。

而PARTUUID是GPT分区表引入的特性,是作为某一个分区的唯一识别符。

这样的好处是操作系统可以在无需知道分区下文件系统的具体信息,同时获得分区的大致类型。

The GPT GUIDs (Globally unique identifiers) and our familiar Linux UUIDs (Universally Unique Identifiers) are not the same thing, though they serve the same useful purpose: giving block devices unique names. Linux UUIDs are a function of filesystems, and are created when the filesystem is created. To see Linux UUIDs just fire up the blkid command Note the Partition GUID code, and how it says "Microsoft basic data." Yeah, ole Microsoft always party-crashing, because this an EXT4 partition, so there is no way for Windows to read it, but will see it as an unformatted partition. You won't see this with current releases of gdisk, because until 2011 there were no Linux filesystem GUIDs. Now there are, so if you're not using an old Linux like mine (Mint 13) you'll see a proper Linux GUID instead (0FC63DAF-8483-4772-8E79-3D69D8477DE4).

The Partition unique GUID is what you'll use in fstab, like this:

PARTUUID=8C208C30-4E8F-4096-ACF9-858959BABBAA /data ext4 user,defaults 0 0

读取partuuid,可以通过gdisk/sgdisk工具

sgdisk --info=partnum /dev/device

再回头看一下bootcmd

root=/dev/dm-0 dm="system none ro,0 1 android-verity PARTUUID=fbc2c131-6392-4217-b51e-548a6edb03d0 "

# sgdisk --info=22 /dev/block/mmcblk0
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: FBC2C131-6392-4217-B51E-548A6EDB03D0
First sector: 425984 (at 208.0 MiB)
Last sector: 2523135 (at 1.2 GiB)
Partition size: 2097152 sectors (1024.0 MiB)
Attribute flags: 0000000000000000
Partition name: 'system_a'

bootcmd中的partuuid与sgdisk查看到的Partition unique GUID一致。

内核中通过devt_from_partuuid函数可以查到对应设备的设备号。最终得到rootfs的信息。

static dev_t devt_from_partuuid(const char *uuid_str)

# blkid

/dev/block/mmcblk0p22: LABEL="/" UUID="bbcb9ad2-245d-035f-a549-7d500312efe1" TYPE="ext4"

# tune2fs -l /dev/block/mmcblk0p22                                               <
tune2fs 1.43.3 (04-Sep-2016)

Filesystem UUID:          bbcb9ad2-245d-035f-a549-7d500312efe1

也可以看到是blkid的UUID与ext4的Filesystem UUID是一致的

参考链接:

https://raspberrypi.stackexchange.com/questions/75027/whats-the-difference-between-uuid-and-partuuid/75030

安卓启动中的PARTUUID相关推荐

  1. android模拟器一直显示启动中,蓝手指安卓模拟器(BlueStacks)一直显示“启动中”如何解决?...

    有很多朋友不知道蓝手指安卓模拟器(BlueStacks)一直显示"启动中"如何解决,那么就给大家讲解一下解决方法哦,大家可以去下文看一看,相信是值得伙伴们学习的哦! 首先是最好的一 ...

  2. 安卓启动相关以及架构设计相关

    安卓启动相关以及架构设计相关 我们知道安卓大多数是服务等的启动是伴随着init进程启动一起启动,这个init进程类似于linux的init,进程pid为1. 读过安卓源代码的人都应该非常熟悉init会 ...

  3. [Ubuntu] 在安卓手机中安装 Ubuntu

    安卓系统的内核也是Linux, 所以安卓手机中是可以安装Ubuntu系统的, 搜索下载Termux, 然后按照下面步骤操作即可安装Ubuntu 1. 更新和配置系统 # 将安装源修改为 http:// ...

  4. A2DP音频流在安卓系统中的实现

    A2DP音频流在安卓系统中的实现 通过前一篇文章<蓝牙音乐之A2DP音频流>的分享,大家都清楚了A2DP音频流的开启.暂停.数据传输等一系列协议规定,今天就带大家一探安卓系统中这部分是如何 ...

  5. 安卓开发中非常炫的效果集合

    安卓开发中非常炫的效果集合 这几天开发的时候,想做一些好看而且酷炫的特效,于是又开始从网上收集各种特效资源.下面给大家一些我喜欢的把,附代码,喜欢的看源代码,然后加到自己项目去把!! 一个开源项目网站 ...

  6. 安卓Android中腾讯音视频和直播 API的使用

    安卓Android中腾讯音视频和直播 API的使用 文章目录 安卓Android中腾讯音视频和直播 API的使用 前言:安卓Android中腾讯音视频和直播 API的使用,这里没有写UI,功能是放在一 ...

  7. 豁然开朗篇:安卓开发中关于线程那些事(下篇)

    彻底搞懂线程这一块,看这一篇就够了 前言 本系列详细讲解并发的知识,从基础到底层,让大家彻底搞懂线程和锁的原理,当然里面会涉及到一些内存结构的知识,所以如果为了更好地阅读效果,也可以先去看以下这两篇: ...

  8. 我的Android进阶修炼:安卓启动流程之init(1)

    文章目录 我的Android进阶修炼:安卓启动流程之init(1) 一.前言 二.init进程简介 1.文件位置 2.主要功能 三.init进程源码分析 3.1 main() 源码注解 3.1.1 参 ...

  9. 处理安卓启动图片变形问题,用一张正方形9.png图片搞定安卓启动页

    用一张正方形图片搞定安卓启动页 示例Dome下载: 安卓启动图问题 HBuilderX上android端提供的三个尺寸的启动图片完全不能满足全面屏盛行的时代,各种比例的屏幕上出现启动图片变形问题,让人 ...

最新文章

  1. 向流程组的所有成员发送信号的最佳方法是什么?
  2. 51Nod 1314 定位系统
  3. 虚拟机下CentOS7开启SSH连接
  4. 解决iOS地图持续定位耗电问题
  5. MYSQL数据库索引设计的原则
  6. java不需要返回数据时_从Java方法返回时,BigDecimal不保持实际值
  7. 软件设计师 - 超键、无损连接、函数依赖
  8. 节日仪式感海报PSD分层模板,快来pick一下!
  9. Dart入门—开发环境
  10. Excel中 ColorIndex 属性值和颜色对照表
  11. linux ios文件是否存在,技术|如何在 Linux 中验证 ISO 镜像
  12. C# AE axGlobeControl The 3D Analyst extension has not been enabled.
  13. 各行业的英语术语(绝对精华 2)
  14. 必备的 6 大计算机网络基础知识点!会 3 个以上就很牛逼了
  15. 干货 | 读懂这篇文,玩游戏还会卡顿?
  16. [AGC004E] Salvage Robots (DP)
  17. WPF框架剖析(从头开始自己写WPF框架)
  18. 构造和析构函数的调用
  19. 麦克风阵列声源定位效果测试
  20. MyBatis学习笔记(1)—使用篇

热门文章

  1. 简单工厂模式 - Unity
  2. 12306自动抢票软件哪个好?记者亲测体验
  3. java人职业规划(摘要)
  4. python中ctypes的使用
  5. 基于php的在线问卷调查系统-计算机毕业设计
  6. 虚拟机与Linux的安装
  7. Android 隐藏手机号中间四位和邮箱隐藏
  8. 鼠标事件练习:移动鼠标后获取鼠标距离盒子的X轴和Y轴的值
  9. TPS793475DBVREP
  10. TcpListener和TcpClient传输文件