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 ...
随机推荐
- IntelliJ IDEA 安装使用 FindBugs 代码分析详述
1 下载 2 重启idea 选中文件,右键 附:一些常见的错误信息 Bad practice 代码中的一些坏习惯 Class names should start with an upper case ...
- docker 安装jenkins 发布 asp.net core 2.0
安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...
- 怎样在sql server profiler跟踪时只显示自己关心的内容
当我们想知道.net程序到底执行了哪些SQL的时候,通常会使用sql server profiler,但是如果不加设置,我们程序执行的sql通常会被系统的SQL淹没,通过以下的方法,可以只显示我们需要 ...
- djang-celery使用带密码的redis
前言: 网上很多django-celery使用redis(使用不带密码的redis)的用法都是千篇一律,那带密码的redis该怎么使用了呢,没有看到一篇有帮助的,在官网搜了下,发现以下用法,请看下面 ...
- codesmith设置mysql的连接字符串
.net core,codesmith连不上 server=192.168.3.240;Initial Catalog=tpmdb;User=root;Password=root .net frame ...
- 【视频开发】opencv不能读取MP4格式文件
用OpenCV对视频进行处理时,不能打开.mp4格式的文件.后来解决办法是用ffmpeg.exe将mp4文件转码为avi文件,然后再进行处理.但是转码过程比较慢.后来查看opencv源代码,发现它也是 ...
- [ERROR ]Failed to execute goal org.codehaus.mojo:flatten-maven-plugin:1.1.0:flatten (flatten) on project
今天在启动项目的时候,莫名的Maven install命令的时候出现错误 错误提示:Failed to execute goal org.codehaus.mojo:flatten-maven-plu ...
- [原创]K8Cscan for Python 2.0
0x000 简介 K8Cscan扫描器Python版支持Windows和Linux系统 详情参考:https://www.cnblogs.com/k8gege/p/10519321.html 0x00 ...
- nginx 反向代理报400错误与Host关系
转载自:https://blog.csdn.net/qq_22208737/article/details/80787396 如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段 ...
- C++和c语言的区别
在大家眼中c++与C语言很像,但两个有本质的区别,C语言是面向过程的,而C++是面向对象的,下面就给大家梳理梳理. 1.C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中:而C++ ...