FriendlyCore overlayfs 挂载方式
友善 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 相关的代码了。
系统启动后是找不到挂载代码的。
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 挂载方式的更多相关文章
- Nginx入门之两种handler函数的挂载方式
请在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 接着上次的文章,今天研究<深入理解Nginx模块开发与架构解析>一书中给出的mytest的例子,发现和 /tengine.t ...
- Docker与数据:三种挂载方式
操作系统与存储 操作系统中将存储定义为 Volume(卷) ,这是对物理存储的逻辑抽象,以达到对物理存储提供有弹性的分割方式.另外,将外部存储关联到操作系统的动作定义为 Mount(挂载). Dock ...
- aliyun添加数据盘后的物理分区和lvm逻辑卷两种挂载方式
一.普通磁盘分区管理方式 1.对磁盘进行分区 列出磁盘 # fdisk -l # fdisk /dev/vdb Welcome to fdisk (util-linux 2.23.2). Change ...
- Glusterfs volume 的三种挂载方式
在上一篇中我们介绍了Glusterfs在CentOS7上的安装,并且提到Glusterfs client端有三种:Native client,NFS,Samba, 今天我们就来一起学习下这三种方式. ...
- parastor2000挂载方式
1.先授权 2.客户端安装使用0528parastor-client-centos6.6-38390.tar.xz clusconf -f fatnodes --sync-do "cd /m ...
- [Vue]实例化Vue时的两种挂载方式el与$mount
Vue 的$mount()为手动挂载,在项目中可用于延时挂载(例如在挂载之前要进行一些其他操作.判断等),之后要手动挂载上.new Vue时,el和$mount并没有本质上的不同. 1.el Vue实 ...
- 实例化Vue时的两种挂载方式el与$mount
el 与mount 都是挂载. el vue官网的介绍https://cn.vuejs.org/v2/api/#el mount vue官网的介绍 https://cn.vuejs.org/v2/ap ...
- win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据(使用外部redis)
目录 话题 (191) 笔记 (137) 资料区 (2) 评价 (33) 介绍 讨论区 话题 win10专业版Hyper-v下Docker挂载volume的方式使用Gitlab(汉化版)保存资料数据( ...
- 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 ...
随机推荐
- php nl2br 将\n变成<br />
<?php $str="h t m l"; //定义一个多处换行的字串 echo "未处理前的输出形式:<br />{$str}"; #nl2 ...
- java concurrent并发包使用
package cn.com.zxf.atomic; import java.util.concurrent.atomic.AtomicInteger; public class AtomicExam ...
- python网络编程 - tcp
网络编程 低级别的网络服务 高级别的网络服务 socket又称“套接字”,应用程序通过“套接字”向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. tcp 传输控制协议(Tra ...
- 工控随笔_24_西门子TIA 博图硬件目录的更新
西门子博图软件,不但体积庞大,功能也很复杂,与经典的Step7相比,如果不是经常使用,一般都会有一种很难使用的感觉. 而且相比原来的Step7操作有点不太一样.这里简单的说一下硬件目录的更新. 有两种 ...
- url、href、src
一.URL的概念 统一资源定位符(或称统一资源定位器/定位地址.URL地址等,英语:Uniform Resource Locator,常缩写为URL),有时也被俗称为网页地址(网址).如同在网络上的门 ...
- sql简单存储过程分享
很多程序员朋友都视sql为洪湖水猛兽,其实深入分析一下,多用些时间与耐心,sql还是可以理解的. 本文主要是针对刚刚接触sql的新手朋友,进行一个sql存储过程的简单分享. 小子第一次发布文章,也是借 ...
- C# int uint long ulong byte sbyte float double decimal 范围,及类型!
static void Main(string[] args) { Console.WriteLine(" byte {0,7:g}{1,32:g}{2,32:g}",typeof ...
- Word页眉实现首页不同、奇偶页不同 、更改页眉横线、页眉文字对齐 -- 视频教程(8)
1. 目标 目标1:实现页眉"首页不同,奇偶页不同" 目标2:更改页眉横线 目标3:页眉文字有三部分:第一部分左对齐,第二部分居中,第三部分右对齐 2. 教程 未完 ...... ...
- DRF框架(八)——drf-jwt手动签发与校验、搜索过滤组件、排序过滤组件、基础分页组件
自定义drf-jwt手动签发和校验 签发token源码入口 前提:给一个局部禁用了所有 认证与权限 的视图类发送用户信息得到token,其实就是登录接口,不然进不了登录页面 获取提交的username ...
- 【JVM】3、jvm参数和main方法参数
在实际应用中,我们经常会使用一些额外的参数定义不通的环境下jvm的启动设置 特别是springCloud的项目,因为yml配置文件的问题,如果我们要做负载的话,会同时启动一个jar当做2个服务 那么这 ...