赞
踩
编译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"中有相应的设置。
本人没有详细研究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路径下,随着默认设置一并打包到镜像内。
- 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。