当前位置:   article > 正文

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

openharmony l0镜像文件格式

【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
  • 1
  • 2
  • 3
  • 4

注意事项

个人建议如果只是调试小程序,小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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/330622
推荐阅读
相关标签
  

闽ICP备14008679号