一键教会OpenHarmony-4.1-Release的small系统的rootfs制作过程

itopen组织
1、提供OpenHarmony优雅实用的小工具
2、手把手适配riscv + qemu + linux的三方库移植
3、未来计划riscv + qemu + ohos的三方库移植 + 小程序开发
4、一切拥抱开源,拥抱国产化

一、rootfs制作命令

small系统的rootfs制作脚本为build/ohos/packages/fs_process.py,制作的命令为
build/ohos/packages/fs_process.py
--product dayu900
--root-path /home/itopen/OpenHarmony/OpenHarmony-v4.0-Release/
--out-path /home/itopen/OpenHarmony/OpenHarmony-v4.0-Release/out/dayu900/dayu900
--log-path /home/itopen/OpenHarmony/OpenHarmony-v4.0-Release/out/dayu900/dayu900/build.log
--product-path /home/itopen/OpenHarmony/OpenHarmony-v4.0-Release/vendor/hihope/dayu900

二、fs_process.py文件解析

该文件主要就是class Packer的解析,因此解析每一个接口即可

2.1 init解析

源代码如下

def __init__(self, packer_args) -> None:
    self.config = Config() # 该类在build/hb/resources/config.py
    self.replace_items = {
        r'${product_name}': self.config.product,
        r'${root_path}': self.config.root_path,
        r'${out_path}': self.config.out_path
    }
    self.packing_process = [
        self.mv_usr_libs, self.create_fs_dirs, self.fs_link,
        self.fs_filemode, self.fs_make_cmd, self.fs_tear_down
    ]
    self.fs_cfg = None
    self.chmod_dirs = []

源代码功能

初始化参数

源代码解析

  • 调用Config类获取product_name、root_path、out_path
    Config类是通过解析ohos_config.json文件获取了上面的相关参数,该文件在编译开始或者执行hb set时自动生成并位于代码根目录下
  • self.replace_items解析结果如下
    • ${product_name}: dayu900
    • ${root_path}: /home/wen_fei/OpenHarmony/dayu900-v4.0-release
    • ${out_path}: /home/itopen/OpenHarmony/OpenHarmony-v4.0-Release/out/dayu900/dayu900

2.2 fs_make解析

源代码如下

def fs_make(self, cmd_args):
    fs_cfg_path = os.path.join(self.config.product_path, 'fs.yml')
    if not os.path.isfile(fs_cfg_path):
        LogUtil.hb_info(f'{fs_cfg_path} not found, stop packing fs. '
                      'If the product does not need to be packaged, ignore it.')
        return
    if self.config.fs_attr is None:
        LogUtil.hb_info('component compiling, no need to pack fs')
        return

    fs_cfg_list = IoUtil.read_yaml_file(fs_cfg_path)
    for fs_cfg in fs_cfg_list:
        self.fs_cfg = self.fs_attr_process(fs_cfg)
        if self.fs_cfg.get('fs_dir_name', None) is None:
            continue
        for fs_process_func in self.packing_process:
            fs_process_func()

源代码功能

设置self.fs_cfg并调用处理函数

源代码解析

  • <
你运行了如下命令: ```bash lsb_release -a ``` 输出如下: ``` LSB Version: core-4.1-noarch:core-4.1-aarch64 Distributor ID: petalinux Description: PetaLinux 2018.3 Release: 2018.3 Codename: rocko ``` --- ## ✅ 简要回答: > 你正在运行一个基于 **PetaLinux 2018.3** 的嵌入式 Linux 系统,底层构建系统基于 **Yocto Project** 的 **Rocko** 版本。这是一个为 Xilinx Zynq 或 Versal 等 SoC 平台构建的定制 Linux 系统--- ## 🔍 输出详解: | 字段 | 含义 | |------|------| | `LSB Version` | LSB(Linux Standard Base)版本,表示系统对 LSB 标准的支持程度。这里表示支持 `core-4.1` 标准,适用于 noarch 和 aarch64 架构。 | | `Distributor ID` | 发行商 ID,这里是 `petalinux`,说明这是一个 Xilinx PetaLinux 构建的系统。 | | `Description` | 系统描述,版本为 `PetaLinux 2018.3`。 | | `Release` | 当前系统版本号,即 2018.3。 | | `Codename` | 构建系统的 Yocto 版本代号,这里是 `rocko`,是 Yocto 的一个发布版本(2017 年底发布)。 | --- ## 🧩 PetaLinux 与 Yocto 的关系 PetaLinux 是基于 **Yocto Project** 开发的,Yocto 是一个用于构建定制 Linux 发行版的开源项目。PetaLinux 在 Yocto 基础上做了封装,专门用于 Xilinx 平台。 - **Yocto 版本:rocko** - 发布时间:2017 年 11- 支持的内核版本:4.9 左右 - 软件包版本较旧,适合嵌入式稳定开发 - 与当前主流 Ubuntu(如 22.04 Jammy)完全不同 --- ## 🧪 系统特性分析 | 特性 | 说明 | |------|------| | 操作系统类型 | 嵌入式 Linux | | 内核版本 | 可能为 4.9 或 4.14(取决于构建配置) | | 架构 | aarch64(ARM64) | | 默认用户空间 | 极简 rootfs,可能基于 BusyBox | | 是否有 GUI | 默认没有,除非特别配置 | | 是否支持 apt | 不支持,使用 opkg 或 rpm 包管理器(取决于构建配置) | | 是否可联网 | 可能支持,取决于硬件和配置 | | 是否支持 Python | 可能支持,但版本较低(如 Python 2.7 或 3.5) | | 是否适合运行复杂应用 | 不适合,资源受限 | --- ## 📦 常见命令与操作(适用于 PetaLinux 系统) ### 查看内核版本 ```bash uname -a ``` 输出示例: ``` Linux at606-qgn-hdl 4.14.0-xilinx-v2018.3 #1 SMP PREEMPT ... arm64 GNU/Linux ``` ### 查看文件系统类型 ```bash df -Th ``` 可能显示为: ``` Filesystem Type Size Used Available Use% Mounted on /dev/root ext4 15.8M 12.3M 3.5M 78% / ``` ### 查看可用内存 ```bash free -h ``` ### 查看 CPU 信息 ```bash cat /proc/cpuinfo ``` ### 查看网络接口 ```bash ifconfig ``` 或 ```bash ip a ``` --- ## 🧱 开发注意事项 1. **系统资源有限**:PetaLinux 构建的系统通常较小,不适合运行大型程序。 2. **软件包有限**:不能使用 Ubuntu 的 `apt` 安装软件包,需通过 `opkg` 或重新构建镜像。 3. **需要重新构建系统才能添加新功能**:如需添加 Python、Nginx、ROS 等,需在 PetaLinux 工程中配置并重新构建。 4. **适合嵌入式开发**:用于 Xilinx Zynq、Versal 等平台的嵌入式项目开发。 --- ## ✅ 总结 | 项目 | 描述 | |------|------| | 当前系统 | PetaLinux 2018.3 | | 构建工具 | Yocto Rocko | | 目标平台 | Xilinx Zynq UltraScale+ MPSoC 或类似平台 | | 系统架构 | aarch64(ARM64) | | 系统用途 | 嵌入式 Linux 开发 | | 是否通用系统 | 否,高度定制化 | | 是否适合运行 Ubuntu 软件 | 否,需重新构建或移植 | --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值