友善 friendlycore 挂载 overlayfs 过程:

uboot 引导系统启动的时候加载 ramdisk.img  这个 cpio 格式的 initrd(虚拟文件系统)。

  注意: ramdisk.img 是 cpio 文件的 gzip 压缩文件。 要解压需要添加 .gz 后缀,否则解压软件不认。

内核启动最后运行 initrd 文件系统下的 /init 脚本。

  init 脚本调用 mountroot 方法。    mountroot 在 /script/local 文件内。

    mountroot 调用 local_mount_overlay 方法。

      local_mount_overlay 内执行  mount -t overlay.....   挂载 overlayfs。

      此时,emmc 的分区正式被挂载。 ramdisk 被覆盖。 /script 目录将不可见。 也就找不到挂载 overlayfs 相关的代码了。

      系统启动后是找不到挂载代码的。

overlayfs 介绍

FriendlyCore  Emmc 被分为三个分区。 可以通过 sudo fdisk -l 进行查看。

  mmcblk0p1  /boot 分区

  mmcblk0p2  overlay low 分区 只读

  mmcblk0p3  overlay 工作分区,可读可写。

uboot 启动内核时传入了 overlay 的工作分区路径。

如果想查看 overlay 原始使用的分区可以手动挂载 相应分区(挂载为只读)。

一些指令操作:

起点在 /boot 目录 的 ramdisk.img
// 挂载真正的boot到目录下
mount /dev/mmcblk0p1 /boot

// 可以看到文件 /boot/ramdisk.img
// copy出来单独分析:
cp ramdisk.img ~
cd ~

file ramdisk.img
// 文件格式为 gzip

// 添加.gz后缀。并解压
mv ramdisk.img ramdisk.img.gz
gunzip ramdisk.img.gz
// 解压得到 ramdisk.img
file ramdisk.img
// 可以看到文件的真正格式是 cpio

// 解压
cpio -i -F ramdisk.img

// 得到ramdisk的完整内容。

分析得到:

根目录下 init 引用 /script/local   并调用 /script/local 文件内 mountroot 方法。
    mountroot() 调用  local_mount_overlay()   mount -t overlay.....

FriendlyCore overlayfs 挂载方式的更多相关文章

  1. Nginx入门之两种handler函数的挂载方式

    请在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 接着上次的文章,今天研究<深入理解Nginx模块开发与架构解析>一书中给出的mytest的例子,发现和 /tengine.t ...

  2. Docker与数据:三种挂载方式

    操作系统与存储 操作系统中将存储定义为 Volume(卷) ,这是对物理存储的逻辑抽象,以达到对物理存储提供有弹性的分割方式.另外,将外部存储关联到操作系统的动作定义为 Mount(挂载). Dock ...

  3. aliyun添加数据盘后的物理分区和lvm逻辑卷两种挂载方式

    一.普通磁盘分区管理方式 1.对磁盘进行分区 列出磁盘 # fdisk -l # fdisk /dev/vdb Welcome to fdisk (util-linux 2.23.2). Change ...

  4. Glusterfs volume 的三种挂载方式

    在上一篇中我们介绍了Glusterfs在CentOS7上的安装,并且提到Glusterfs client端有三种:Native client,NFS,Samba, 今天我们就来一起学习下这三种方式. ...

  5. parastor2000挂载方式

    1.先授权 2.客户端安装使用0528parastor-client-centos6.6-38390.tar.xz clusconf -f fatnodes --sync-do "cd /m ...

  6. [Vue]实例化Vue时的两种挂载方式el与$mount

    Vue 的$mount()为手动挂载,在项目中可用于延时挂载(例如在挂载之前要进行一些其他操作.判断等),之后要手动挂载上.new Vue时,el和$mount并没有本质上的不同. 1.el Vue实 ...

  7. 实例化Vue时的两种挂载方式el与$mount

    el 与mount 都是挂载. el vue官网的介绍https://cn.vuejs.org/v2/api/#el mount vue官网的介绍 https://cn.vuejs.org/v2/ap ...

  8. win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据(使用外部redis)

    目录 话题 (191) 笔记 (137) 资料区 (2) 评价 (33) 介绍 讨论区 话题 win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据( ...

  9. CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

    catalog . 引言 . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch ...

随机推荐

  1. 快速读取TXT几百万行数据, 然后插入到数据,SqlBulkCopy功能的确是有效率

    public static void Main(string[] args) { string strPath = "F:\\Download\\600.txt"; int lin ...

  2. 配置windows live writer

    下载地址 https://pan.baidu.com/s/1WVpLQEadIHN15W2DIhWh4A 安装流程参考博客 https://www.cnblogs.com/haseo/p/376232 ...

  3. 将你的数据导入到json格式

    不知道为什么大家那么偏爱json格式,清晰?跨平台?或许这都是它的优点吧,之前我都是将我的数据放到txt中,今后就用json吧.初步写了一个写入json的模板,就这么用吧. def get_qq_05 ...

  4. Vue生命周期 以及应用场景

    首先一张官方图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. windows下的计算时间间隔 -- GetTickCount()

    用法: #include "windows.h" DWORD lastTime =0;DWORD currentTime = 0;DWORD spendTime = 0; last ...

  6. Content-type"是"application/json的作用

    request中发送json数据用post方式发送Content-type用application/json;charset=utf-8方式发送的话,直接用springMVC的@RequestBody ...

  7. Echarts的提示(Tooltip)显示额外内容

    官方一般都是: 而我们通常是需要显示额外内容的,比如这样 其中Tooltip也是参考了网友的写法 option = { tooltip: { trigger: 'axis', formatter: f ...

  8. NOIP模拟day1-T1(完全背包)

    题目 Maxtir 最近买了一个背包. Maxtir 有一个容量为 m 的背包.Sao 有 n 种物品,第 i 种物品的体 积为 ai ,价值为 b i .Sao 的每种物品都有无限多件,Maxtir ...

  9. Linux 线程间的同步与互斥

    在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性. 线程同步: 条件变量 为什么使用条件变量? 对临界资源的时序可控性,条件满足会通知其他等待操作临界资源的线程, ...

  10. Fiddler抓包8-打断点(bpu)(转)

    转自:https://www.cnblogs.com/yoyoketang/p/6778006.html