SBC-sig/documents/Rockchip.md

24 KiB
Raw Blame History

瑞芯微等开发板

本仓库提供适用于 Rockchip 等开发板的 openEuler 镜像的构建脚本和相关文档。

文件说明

最新镜像

镜像下载连接及基本信息见 瑞芯微等其他开发板

镜像构建

须知:
RK3399 当前支持 openEuler 版本20.03 LTS、20.03 LTS SP1、20.03 LTS SP2、20.03 LTS SP3、22.03 LTS SP2 和 22.03 LTS SP3。 RK3566/RK3568 当前支持 openEuler 版本22.03 LTS SP2、22.03 LTS SP3 和 24.03 LTS。 RK3588 当前支持 openEuler 版本22.03 LTS、22.03 LTS SP2 和 22.03 LTS SP3。 如果构建包含 Xfce/UKUI/DDE 桌面环境的镜像,需要注意三点:

  1. 构建包含 Xfce 桌面环境的镜像,当前只支持 20.03 LTS SP2、20.03 LTS SP3、21.09、22.03 LTS、22.03 LTS SP3、24.03 LTS 版本。
  2. 构建包含 UKUI 或 DDE 桌面环境的镜像,当前只支持 20.03 LTS SP1、20.03 LTS SP2、20.03 LTS SP3、21.09、22.03 LTS、22.03 LTS SP3、24.03 LTS 版本。
  3. 根据需要设置 -s/--spec其具体意义见该参数的介绍部分。同时需要设置对应 -r/--repo 参数。

准备环境

  • 操作系统openEuler 、CentOS 8
  • 架构:
    • AArch64如树莓派、 RK3399 开发板、 RK3588 开发板
    • X86_64详细说明

注意: 在直接构建镜像时所使用的设备的 openEuler 版本使用 Docker 拉取的 openEuler 版本需要与待构建的版本相近,例如:构建适用于 RK3588 开发板的 openEuler 22.03 LTS 时可以使用 openEuler 22.03 LTS SP1、openEuler 22.03 LTS SP2、openEuler 22.03 LTS SP3 以及 openEuler 22.03 LTS SP4。

详细过程参见 openEuler 镜像的构建

构建脚本见 scripts

构建完整镜像

构建镜像需执行命令:

sudo bash build.sh --board BOARD_CONFIG -n NAME -k KERNEL_URL -b KERNEL_BRANCH -c KERNEL_DEFCONFIG -r REPO_INFO -s SPEC --cores N

说明: 基于 build.sh 提供的默认参数,执行 sudo bash build.sh 可构建 Firefly-RK3399 的 openEuler-20.03-LTS 镜像。

脚本执行完成后,会在脚本所在目录的 build/YYYY-MM-DD 文件夹下生成以下文件:

  • 打包后的 EMMC 刷写文件openEuler-VERSION-BOARD-RELEASE.tar.gz。
  • 压缩后的 RAW 原始镜像openEuler-VERSION-BOARD-ARCH-RELEASE.img.xz。

打包后的 EMMC 刷写文件和压缩后的 RAW 原始镜像文件有什么区别?

  1. 打包后的 EMMC 刷写文件:指需要使用 RKDevTool 或者 rkdeveloptool 来刷入到例如 Firefly-RK3399 这一类自带 EMMC 储存介质的开发板中。
  2. 压缩后的 RAW 原始镜像文件:通常指的是一个完整的磁盘镜像文件,其中包含了所有磁盘扇区的数据。可以刷写到例如 SD 卡、EMMC 等多种储存介质中。
  3. 带 EMMC 的开发板也可以使用 SD 卡启动镜像,启动选择的储存介质各不相同,如果 EMMC 启动优先级大于 SD 卡,则优先启动 EMMC 内的系统,在这种情况下若想使用 SD 卡内的系统需要先清空 EMMC。
  4. EMMC 刷写过程在 刷写到 EMMC 中介绍SD 卡刷写过程在 刷写到 SD 卡 中介绍。

各个参数意义:

  1. --board BOARD_CONFIG

    适用的开发板的版型配置文件在 boards 文件夹中,示例文件 sample.conf,默认为 firefly-rk3399

    其包括的配置参数意义如下:

    • platform=PLATFORM

      开发板所使用的平台目前支持的平台有broadcom、rockchip、phytium默认为 rockchip

    • device-tree=DTB_NAME

      内核设备树中的设备名称,和开发板名称有一点区别,对应 kernel/arch/arm64/boot/dts/rockchip 下的 DTB_NAME.dts 文件,默认为 rk3399-firefly

    • ubootconfig=UBOOT_DEFCONFIG

      开发板对应的 defconfig 的文件名称,对应 u-boot/configsUBOOT_DEFCONFIG 文件,默认为 firefly-rk3399_defconfig;如需在 RK3588 开发板上使用预编译的 u-boot可以将此项设置为空ubootconfig=

  2. -n, --name IMAGE_NAME

    构建的镜像名称,例如:openEuler-20.03-LTS-Firefly-RK3399-aarch64-alpha1openEuler-21.09-Firefly-RK3399-aarch64-alpha1

  3. -k, --kernel KERNEL_URL

    内核源码仓库的项目地址,默认为 https://atomgit.com/openeuler/rockchip-kernel.git。可根据需要设置为 git@atomgit.com:openeuler/rockchip-kernel.gitgit@atomgit.com:openeuler/kernel.git

  4. -b, --branch KERNEL_BRANCH

    内核源码的对应分支,默认为 openEuler-20.03-LTS。根据 -k 参数有以下选择:

  5. -c, --config KERNEL_DEFCONFIG

    内核编译使用的配置文件名称或路径,默认为 openeuler_rockchip_defconfig。如果该参数为配置文件名称,请确保该文件在内核源码的目录 arch/arm64/configs 或构建框架的 scripts/configs/rockchip 下。

  6. -r, --repo REPO_INFO

    软件源 repo 文件的 URL 或者路径,也可以是软件源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。 下面分别举例:

    • 软件源 repo 文件的 URLhttps://raw.atomgit.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo

    • 软件源的 repo 文件路径:

      ./openEuler-20.03-LTS.repo:生成 openEuler 20.03 LTS 版本的镜像,该文件内容参考 https://atomgit.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo

    • 资源库的 baseurl 列表,如 http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/

  7. -s, --spec SPEC

    构建的镜像版本:

    • headless,无图形界面版的镜像。
    • xfce,带 Xfce 桌面以及中文字体、输入法等全部配套软件。
    • ukui,带 UKUI 桌面及必要的配套软件(不包括中文字体以及输入法)。
    • dde,带 DDE 桌面及必要的配套软件(不包括中文字体以及输入法)。
    • rpmlist 文件路径,其中包含镜像中要安装的软件列表,内容参考 rpmlist

    默认使用 headless 选项。

  8. --cores N

    并行编译的数量,根据运行脚本的宿主机 CPU 实际数目设定,默认为可用的 CPU 总数。

  9. -h, --help

    显示帮助信息。

已经测试的开发板如下,其他类型开发板适用情况待测试。

开发板名称

开发板信息

芯片名称

支持的 openEuler 版本

构建命令

  • Firefly RK3399
Firefly Wiki

Rockchip RK3399

openEuler 20.03 LTS, openEuler 22.03 LTS SP2, openEuler 22.03 LTS SP3, openEuler 24.03 LTS

构建完整镜像命令
  • Radxa Rock Pi 4A
Radxa Wiki

Rockchip RK3399

openEuler 20.03 LTS, openEuler 22.03 LTS

构建完整镜像命令
  • Firefly ROC-RK3566-PC
Firefly Wiki

Rockchip RK3566

openEuler 22.03 LTS SP2, openEuler 22.03 LTS SP3, openEuler 24.03 LTS

构建完整镜像命令
  • Firefly ROC-RK3568-PC-SE
Firefly Wiki

Rockchip RK3568

openEuler 22.03 LTS SP2, openEuler 22.03 LTS SP3

构建完整镜像命令
  • Firefly ROC-RK3568-PC
Firefly Wiki

Rockchip RK3568

openEuler 22.03 LTS SP2, openEuler 22.03 LTS SP3

构建完整镜像命令
  • BananaPi Armsom-Sige5
Armsom Wiki

Rockchip RK3576

openEuler 22.03 LTS SP3

构建完整镜像命令
  • 100ASK DShanPi A1
DShanPi Wiki

Rockchip RK3576

openEuler 22.03 LTS SP3

构建完整镜像命令
  • Firefly ITX-3588J
Firefly Wiki

Rockchip RK3588

openEuler 22.03 LTS SP3

构建完整镜像命令
  • Firefly ROC-RK3588S-PC
Firefly Wiki

Rockchip RK3588

openEuler 22.03 LTS SP2, openEuler 22.03 LTS SP3

构建完整镜像命令
  • Radxa Rock-5B
Radxa Wiki

Rockchip RK3588

openEuler 22.03 LTS SP2, openEuler 22.03 LTS SP3

构建完整镜像命令
  • Phytium Pi 4GB
Phytium Website

Phytium

openEuler 22.03 LTS SP3, openEuler 24.03 LTS

构建完整镜像命令
  • Orange Pi Zero 2
OrangePi Wiki

Allwinner H616

openEuler 20.03 LTS, openEuler 24.03 LTS

构建完整镜像命令
  • Longan Pi 3H
Sipeed Wiki

Allwinner H618

openEuler 24.03 LTS

构建完整镜像命令
  • Khadas VIM3
Khadas Wiki

Amlogic A311D

openEuler 24.03 LTS

构建完整镜像命令
  • Radxa Orion O6
Radxa Wiki

CIX P1 CD8180

openEuler 24.03 LTS

构建完整镜像命令

Docker 容器内构建

使用脚本构建镜像需执行命令:

sudo bash build-image-docker.sh -d DOCKER_FILE --board BOARD_CONFIG -n NAME -k KERNEL_URL -b KERNEL_BRANCH -c KERNEL_DEFCONFIG -r REPO_INFO -s SPEC --cores N

脚本运行结束后,镜像默认保存在脚本运行所在目录的 build/YYYY-MM-DD 下。

注意!!!运行该脚本前,需安装 Docker 运行环境。该脚本会自动将 DOCKER_FILE 参数对应的 Docker 镜像导入本机系统中。

除参数 DOCKER_FILE 外,剩余参数与构建完整镜像中对应参数一致:

  1. -d, --docker DOCKER_FILE

    Docker 镜像的 URL 或者路径, 默认为 https://repo.openeuler.org/openEuler-22.03-LTS-SP3/docker_img/aarch64/openEuler-docker.aarch64.tar.xz。使用该默认参数时,脚本会自动下载 openEuler 22.03 LTS SP3 的 Docker 镜像,并导入本机系统中。

使用 Docker 分步构建

请参考文档:使用 Docker 构建镜像

顺序构建

依次执行脚本构建生成压缩后的 SD 卡启动镜像和打包后的 EMMC 刷写文件,过程参考顺序构建

刷写镜像

刷写到 SD 卡

将压缩后的 RAW 原始镜像解压后写入 SD 卡,请参考树莓派镜像烧录,过程中所用到的镜像应为本项目提供适用于 Rockchip 开发板的镜像。

注意:由于 Firefly-RK3399 与其他 RK3399 开发板不同,会优先启动 EMMC 上的系统,在 Firefly-RK3399 上使用 SD 卡启动镜像之前需要清除 EMMC 上的系统,上电后需要按下电源键来启动。

刷写到 EMMC

将 openEuler 安装到 EMMC详见刷写EMMC镜像

问题汇总

  1. 自构建 openEuler 镜像登录时提示 Login incorrect

    该问题通常有以下几种特征:

    • 根据提示输入 root / openeuler 后提示 Login incorrect
    openEuler 22.03 LTS
    Kernel 5.10.0 on an aarch64
    
    openEuler login:root
    Password:
    
    Login incorrect
    
    • chroot 到根目录无法修改密码

    passwd:Authentication token manipulation error

    遇到这一类问题有以下解决方法,如果有更多方法,欢迎反馈:

  2. 使用 x86_64 的主机进行构建时的注意事项:

    (1) 由于 openEuler x86_64 软件仓库没有交叉编译工具链,在使用 x86_64 进行构建时,需要使用 openEuler Embedded Toolchains 交叉编译工具链。

    (2) 在使用 x86_64 进行构建时,需要构建主机支持 Qemu-User-Static 的运行条件。目前使用的 Qemu-User-Static 是基于 openEuler 24.03 LTS 预构建的软件包使用其他版本跨架构构建时可能会出现问题。openEuler 软件仓库暂时还没有引进该软件包,目前正在将该软件包添加到 openEuler 软件仓库。

    (3) 本框架支持在不同的操作系统(例如 Ubuntu、Fedora以及不同的架构x86_64上构建 openEuler经过测试的目标开发板及构建命令举例如下其他开发板型号待测试

    • Rockchip: Firefly ROC-RK3588S-PC

      sudo bash build-image-docker.sh \
           --board firefly-roc-rk3588s-pc \
           -d https://repo.openeuler.org/openEuler-22.03-LTS-SP3/docker_img/aarch64/openEuler-docker.aarch64.tar.xz \
           -n openEuler-22.03-LTS-SP3-Station-M3-aarch64-alpha1 \
           -k https://atomgit.com/openeuler/rockchip-kernel.git \
           -b openEuler-22.03-LTS-SP3 \
           -c openeuler_rockchip_defconfig \
           -r https://raw.atomgit.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP3/generic.repo \
           -s headless
      
    • Allwinner: Orange Pi Zero 2

      sudo bash build-image-docker.sh \
           --board orangepi-zero2 \
           -d https://repo.openeuler.org/openEuler-22.03-LTS-SP3/docker_img/aarch64/openEuler-docker.aarch64.tar.xz \
           -n openEuler-24.03-LTS-OrangePi-Zero2-aarch64-alpha1 \
           -k https://atomgit.com/openeuler/allwinner-kernel.git \
           -b openEuler-24.03-LTS \
           -c openeuler_allwinner_defconfig \
           -r https://raw.atomgit.com/src-openeuler/openEuler-repos/raw/openEuler-24.03-LTS/generic.repo \
           -s headless
      
    • Phytium: Phytium Pi 4GB

      sudo bash build-image-docker.sh \
           --board phytiumpi-4gb \
           -d https://repo.openeuler.org/openEuler-22.03-LTS-SP3/docker_img/aarch64/openEuler-docker.aarch64.tar.xz \
           -n openEuler-24.03-LTS-PhytiumPi-4GB-aarch64-alpha1 \
           -k https://atomgit.com/openeuler/phytium-kernel.git \
           -b openEuler-24.03-LTS-Phytium \
           -c phytium_defconfig \
           -r https://raw.atomgit.com/src-openeuler/openEuler-repos/raw/openEuler-24.03-LTS/generic.repo \
           -s headless
      
    • Amlogic: Khadas VIM3

      sudo bash build-image-docker.sh \
           --board khadas-vim3 \
           -d https://repo.openeuler.org/openEuler-24.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz \
           -n openEuler-24.03-LTS-Khadas-VIM3-aarch64-alpha1 \
           -k https://atomgit.com/openeuler/kernel.git \
           -b OLK-6.6 \
           -c amlogic-kernel-OLK-6.6.config \
           -r https://raw.atomgit.com/src-openeuler/openEuler-repos/raw/openEuler-24.03-LTS/generic.repo \
           -s headless
      
    • CIX: Radxa Orion O6

      sudo bash build-image-docker.sh \
           --board radxa-orion-o6 \
           -d https://repo.openeuler.org/openEuler-24.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz \
           -n openEuler-24.03-LTS-Radxa-Orion-O6-aarch64-alpha1 \
           -k https://github.com/armbian/linux-cix.git \
           -b cix-6.6-2025q3 \
           -c cix-kernel-cix-6.6-2025q3.config \
           -r https://raw.atomgit.com/src-openeuler/openEuler-repos/raw/openEuler-24.03-LTS/generic.repo \
           -s headless