【Openharmony】【4.0R】【LiteOS-A】fs.yml--镜像配置文件

【Openharmony】【4.0R】【LiteOS-A】fs.yml文件功能

编译Openharmony4.0R的时候,无论是hispark_taurus还是qemu_small_system_demo,我们按照一般教程写的“hello”程序,都自动打包进镜像内(例如在hispark_taurus,编译后需要烧录三个文件OHOS_Image.bin,rootfs.img,userfs.img,而qemu_small_system_demo中,会在out目录下生成smallmmc.img),启动相应系统后,可在系统的“/bin”目录下看到我们编译的可执行文件。
一直好奇这个文件是如何copy到镜像中供我们使用的,抽空看了下发现在"fs.yml"中有相应的设置。

fs.yml 作用

本人没有详细研究Openharmony相应的文档,个人感觉是“file system”的配置文件,vendor目录下每个产品几乎都有一个对应的fs.yml配置文件。这里借用hispark_taurus的fs.yml为例子对部分设置项进行简要说明(个人理解的)

设置项

fs_dir_name fs_dir配置名
fs_dirs: 定义文件打包规则
source_dir: 本地的文件目录路径
target_dir: 在镜像内生成的目录路径
dir_mode: 文件目录权限?
file_mode: 文件权限?
ignore_files: 需要忽略的文件,如果不设置这个选项,source_dir指向的目录路径所有文件都会被copy
is_strip:TRUE ?目前没看懂,猜测是强制该目录必须存在?
fs_filemode: ?目前没看懂,猜测是为了fs_make_cmd配置文件权限?
fs_make_cmd: 这一段配置权限后,使用rootfsimg_liteos.sh生成镜像
以上打?的地方是还没弄明白的,如果有知道的大佬可以留言说一下,感激不尽~
ps: 最后这个52428800很熟悉,这不就是userfs.img的镜像大小嘛~

fs_dir_name: userfs
...
  fs_make_cmd:
    - ${root_path}/build/lite/make_rootfs/rootfsimg_liteos.sh ${fs_dir} vfat 52428800

注意事项

个人建议如果只是调试小程序,小Demo,fs.yml是不需要修改的,BUILD.gn中除了必须设置的属性外,尽量不使用output_dirs,或者copy()等把文件放置在特定路径下,也就是一般情况执行文件都会在out/{相关产品}/bin 中,库一般都会在out/{相关产品}/usr/lib路径下,随着默认设置一并打包到镜像内。

hispark_taurus的 fa.yml样例全貌

-
  fs_dir_name: mksh_rootfs
  fs_dirs:
    -
      source_dir: ${root_path}/out/preloader/${product_name}/system
      target_dir: system
      dir_mode: 555
      file_mode: 444
    -
      source_dir: bin
      target_dir: bin
      ignore_files:
        - Test.bin
        - TestSuite.bin
        - query.bin
        - cve
        - checksum
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: libs
      target_dir: lib
      ignore_files:
        - .a
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: usr/lib
      target_dir: usr/lib
      ignore_files:
        - .a
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: usr/bin
      target_dir: usr/bin
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: vendor
      target_dir: vendor
      dir_mode: 555
      file_mode: 444
    -
      source_dir: config
      target_dir: etc
      ignore_files:
        - init.cfg
      dir_mode: 555
      file_mode: 444
    -
      source_dir: system
      target_dir: system
      dir_mode: 555
      file_mode: 444
    -
      source_dir: etc
      target_dir: etc
      dir_mode: 555
      file_mode: 444
    -
      source_dir: obj/foundation/systemabilitymgr/samgr_lite/config
      target_dir: etc
      dir_mode: 555
      file_mode: 444
    -
      target_dir: system/external
    -
      target_dir: proc
    -
      target_dir: dev
    -
      target_dir: storage
    -
      target_dir: userdata
  fs_filemode:
    -
      file_dir: "etc/init.cfg"
      file_mode: 400
    -
      file_dir: "bin/init"
      file_mode: 500
    -
      file_dir: "bin/mksh"
      file_mode: 500
  fs_make_cmd:
    - chmod 777 ${fs_dir}/etc
    - chmod 777 ${fs_dir}/etc/init_mksh.cfg
    - mv ${fs_dir}/etc/init_mksh.cfg ${fs_dir}/etc/init.cfg
    - chmod 400 ${fs_dir}/etc/init.cfg
    - chmod 555 ${fs_dir}/etc
    - ${root_path}/build/lite/make_rootfs/rootfsimg_liteos.sh ${fs_dir} vfat
-
  fs_dir_name: rootfs
  fs_dirs:
    -
      source_dir: ${root_path}/out/preloader/${product_name}/system
      target_dir: system
      dir_mode: 555
      file_mode: 444
    -
      source_dir: bin
      target_dir: bin
      ignore_files:
        - Test.bin
        - TestSuite.bin
        - query.bin
        - cve
        - checksum
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: libs
      target_dir: lib
      ignore_files:
        - .a
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: usr/lib
      target_dir: usr/lib
      ignore_files:
        - .a
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: usr/bin
      target_dir: usr/bin
      is_strip: TRUE
      dir_mode: 555
      file_mode: 555
    -
      source_dir: vendor
      target_dir: vendor
      dir_mode: 555
      file_mode: 444
    -
      source_dir: config
      target_dir: etc
      ignore_files:
        - init_mksh.cfg
      dir_mode: 555
      file_mode: 444
    -
      source_dir: system
      target_dir: system
      dir_mode: 555
      file_mode: 444
    -
      source_dir: etc
      target_dir: etc
      dir_mode: 555
      file_mode: 444
    -
      source_dir: obj/foundation/systemabilitymgr/samgr_lite/config
      target_dir: etc
      dir_mode: 555
      file_mode: 444
    -
      target_dir: system/external
    -
      target_dir: proc
    -
      target_dir: dev
  fs_filemode:
    -
      file_dir: "etc/init.cfg"
      file_mode: 400
    -
      file_dir: "bin/init"
      file_mode: 500
    -
      file_dir: "bin/shell"
      file_mode: 500
  fs_make_cmd:
    - ${root_path}/build/lite/make_rootfs/rootfsimg_liteos.sh ${fs_dir} vfat
-
  fs_dir_name: userfs
  fs_dirs:
    -
      source_dir: obj/base/security/services/app_verify/config
      target_dir: data/verify
    -
      source_dir: storage/etc
      target_dir: etc
    -
      source_dir: data
      target_dir: data
    -
      target_dir: app
    -
      target_dir: data/system/param
  fs_make_cmd:
    - ${root_path}/build/lite/make_rootfs/rootfsimg_liteos.sh ${fs_dir} vfat 52428800
  fs_attr:
    tee_enable:
      fs_dirs:
        -
          target_dir: data/sec_storage_data
        -
          target_dir: sec_storage
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值