SBC-sig/documents/rockchip/顺序构建.md

150 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 顺序单独构建
- [顺序单独构建](#顺序单独构建)
- [准备环境](#准备环境)
- [编译 u-boot](#编译-u-boot)
- [构建 boot 镜像](#构建-boot-镜像)
- [构建 rootfs 镜像](#构建-rootfs-镜像)
- [可启动镜像构建](#可启动镜像构建)
## 准备环境
- 操作系统openEuler、 CentOS 8
- 架构AArch64 ,如树莓派、 RK3399
## 编译 u-boot
编译 u-boot 需执行命令:
`sudo bash build_u-boot.sh -c BOARD_CONFIG`
**说明: 基于 build_u-boot.sh 提供的默认参数,执行 sudo ./build_u-boot.sh 编译 u-boot。**
各个参数意义:
1. -c, --config BOARD_CONFIG
开发板对应的 defconfig 的文件名称,对应 [u-boot/configs](https://github.com/u-boot/u-boot/tree/master/configs) 下 `BOARD_CONFIG` 文件,默认为 `firefly-rk3399_defconfig`;如需在 RK3588 开发板上使用预编译的 u-boot可以将此项设置为 `none`
2. -h, --help
显示帮助信息。
## 构建 boot 镜像
构建 boot 镜像需执行命令:
`sudo bash build_boot.sh -k KERNEL_URL -b KERNEL_BRANCH -d DTB_NAME`
**说明: 基于 build_boot.sh 提供的默认参数,执行 sudo ./build_boot.sh 可生成 Firefly-RK3399 的 boot 分区镜像 boot.img。**
各个参数意义:
1. -k, --kernel KERNEL_URL
内核源码仓库的项目地址,默认为 `https://gitee.com/openeuler/raspberrypi-kernel.git`。可根据需要设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``git@gitee.com:openeuler/kernel.git`
2. -b, --branch KERNEL_BRANCH
内核源码的对应分支,默认为 openEuler-20.03-LTS。根据 -k 参数有以下选择:
- -k https://gitee.com/openeuler/rockchip-kernel.git
- openEuler-20.03-LTS
- -k https://gitee.com/openeuler/kernel.git
- openEuler-21.03
- openEuler-21.09
3. -d, --device-tree DTB_NAME
内核设备树名称,和开发板名称有一点区别,对应 [kernel/arch/arm64/boot/dts/rockchip](https://gitee.com/openeuler/kernel/tree/master/arch/arm64/boot/dts/rockchip) 下的 `DTB_NAME.dts` 文件,默认为 `rk3399_firefly`
4. -h, --help
显示帮助信息。
## 构建 rootfs 镜像
运行 rootfs 构建脚本需执行命令:
`sudo bash build_rootfs.sh --board BOARD -r REPO_INFO -b KERNEL_BRANCH -s SPEC`
**说明: 基于 build_rootfs.sh 提供的默认参数,执行 sudo ./build_rootfs.sh 可生成 Firefly-RK3399 的 rootfs 分区镜像 rootfs.img。**
各个参数意义:
1. --board BOARD
适用的开发板的版型配置文件在 [boards](../../scripts/rockchip/boards) 文件夹中,示例文件 [sample.conf](../../scripts/rockchip/boards/sample.conf),默认为 `firefly-rk3399`
其包括的配置参数意义如下:
- platform=PLATFORM
开发板所使用的平台目前支持的平台有rockchip、phytium默认为 `rockchip`
- device-tree=DTB_NAME
内核设备树中的设备名称,和开发板名称有一点区别,对应 [kernel/arch/arm64/boot/dts/rockchip](https://gitee.com/openeuler/kernel/tree/master/arch/arm64/boot/dts/rockchip) 下的 `DTB_NAME.dts` 文件,默认为 `rk3399-firefly`
- ubootconfig=UBOOT_DEFCONFIG
开发板对应的 defconfig 的文件名称,对应 [u-boot/configs](https://github.com/u-boot/u-boot/tree/master/configs) 下 `UBOOT_DEFCONFIG` 文件,默认为 `firefly-rk3399_defconfig`;如需在 RK3588 开发板上使用预编译的 u-boot可以将此项设置为 `none`
2. -r, --repo REPO_INFO
开发源 repo 文件的 URL 或者路径,也可以是开发源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。
下面分别举例:
- 开发源 repo 文件的 URL`https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS-SP2/generic.repo`
- 开发源的 repo 文件路径:
`./openEuler-20.03-LTS.repo`:生成 openEuler 20.03 LTS 版本的镜像,该文件内容参考 <https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo>
- 资源库的 baseurl 列表,如 `http://repo.openeuler.org/openEuler-20.03-LTS-SP2/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS-SP2/EPOL/aarch64/`
3. -b, --branch KERNEL_BRANCH
内核源码的对应分支,默认为 openEuler-20.03-LTS。根据 -k 参数有以下选择:
- -k https://gitee.com/openeuler/rockchip-kernel.git
- openEuler-20.03-LTS
- -k https://gitee.com/openeuler/kernel.git
- openEuler-21.03
- openEuler-21.09
4. -s, --spec SPEC
构建的镜像版本:
- `headless`,无图形界面版的镜像。
- `xfce`,带 Xfce 桌面以及中文字体、输入法等全部配套软件。
- `ukui`,带 UKUI 桌面及必要的配套软件(不包括中文字体以及输入法)。
- `dde`,带 DDE 桌面及必要的配套软件(不包括中文字体以及输入法)。
- rpmlist 文件路径,其中包含镜像中要安装的软件列表,内容参考 [rpmlist](../../scripts/rockchip/configs/rpmlist)。
默认使用 `headless` 选项。
5. -h, --help
显示帮助信息。
## 可启动镜像构建
运行可启动镜像构建脚本需执行命令:
`sudo bash gen_image.sh -n NAME`
**说明: 在确保顺序执行以上脚本并生成对应的文件及文件夹后再执行此脚本**
脚本运行结束后,在 scripts/build/YYYY-MM-DD 所在目录生成 openEuler-VERSION-BOARD.img.xz 即为压缩后的 RK3399 SD卡启动镜像openEuler-VERSION-BOARD.tar.gz 即为打包后的 EMMC 刷写镜像。
各个参数意义:
1. -n, --name IMAGE_NAME
构建的镜像名称。
2. -h, --help
显示帮助信息。