zoukankan      html  css  js  c++  java
  • FriendlyCore overlayfs 挂载方式


    友善 friendlycore 挂载 overlayfs 过程:

    以下是友善 s5p4418 相关开发板的分析;

    uboot 引导系统启动的时候加载 ramdisk.img 。 ramdisk.img 是 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 原始使用的分区可以手动挂载 相应分区(挂载为只读)。

    根据另外一个朋友折腾了解到:

    RAK3399 开发板 uboot  的  bootargs 为空。

      overlayFS 的分区路径传入是由 dtb 文件给的。

    一些指令操作:


    起点在 /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.....


  • 相关阅读:
    logstash收集nginx日志
    logstash收集java日志,多行合并成一行
    一个配置文件收集多个日志-if根据type类型判断
    CentOS 7 kibana安装配置
    CentOS7 logstash配置部署
    Centos7 Elasticsearch部署
    awk命令
    top命令
    java中的getClass()函数
    java容器
  • 原文地址:https://www.cnblogs.com/JiuHuan/p/11699373.html
Copyright © 2011-2022 走看看