SBC-sig/documents/树莓派.md
2025-04-02 16:52:39 +08:00

26 KiB
Raw Blame History

树莓派

本文档提供 树莓派Rockchip的 openEuler 镜像的构建脚本和相关文档。

文件说明

说明:

最新镜像

须知:
当前只有 openEuler 24.03 LTS SP1/25.03 版本的树莓派镜像同时支持树莓派 5 和树莓派 3B/3B+/4B/400其他版本的树莓派镜像只支持树莓派 3B/3B+/4B/400。

所有镜像

其他信息:

使用镜像

镜像刷写 SD 卡并使用树莓派,详见以下文档:

镜像构建

准备环境

本仓库的脚本运行环境要求如下:

  • 操作系统openEuler、CentOS 7、CentOS 8
  • 架构AArch64如树莓派

其他架构可以使用 QEMU 模拟器搭建 AArch64 运行环境。

构建镜像

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

构建脚本见 scripts/raspberrypi

快速构建(无需编译内核,推荐)

须知:
当前支持多个 openEuler 版本,即 20.09、20.03 LTS SP1、21.03、20.03 LTS SP2、21.09、20.03 LTS SP3、22.03 LTS、22.09、22.03 LTS SP1、23.03、22.03 LTS SP2、22.03 LTS SP3、24.03 LTS、22.03 LTS SP4、24.09、24.03 LTS SP1、25.03 版本。 如果构建包含 Xfce/UKUI/DDE/GNOME 桌面环境或者 DevStation 开发者工作站的镜像,需要注意五点:

  1. 构建包含 Xfce 桌面环境的镜像,当前只支持 openEuler 21.03/20.03 LTS SP2/21.09/20.03 LTS SP3/22.03 LTS/22.09/22.03 LTS SP1/23.03/22.03 LTS SP2/22.03 LTS SP3/24.03 LTS/22.03 LTS SP4/24.09 版本。自 openEuler 24.03 LTS SP1 起,不再支持 Xfce 桌面环境。
  2. 构建包含 DDE 桌面环境的镜像,当前只支持 openEuler 20.03 LTS SP1/21.03/20.03 LTS SP2/21.09/20.03 LTS SP3/22.03 LTS/22.09/22.03 LTS SP1/23.03/22.03 LTS SP2/22.03 LTS SP3/24.03 LTS/22.03 LTS SP4/24.09/24.03 LTS SP1/25.03 版本。
  3. 构建包含 GNOME 桌面环境的镜像,当前只支持 openEuler 24.03 LTS/24.09/24.03 LTS SP1/25.03 版本。
  4. 构建 DevStation 开发者工作站的镜像,当前只支持 openEuler 24.03 LTS SP1/25.03 版本。
  5. 根据需要设置 -s/--spec其具体意义见该参数的介绍部分。

使用已有的树莓派内核、固件、蓝牙等 RPM 包构建镜像。

构建镜像需执行命令:

sudo bash build-image.sh -d DIR -r REPO -n IMAGE_NAME -s SPEC

各个参数意义:

  1. -d, --dir DIR

    构建镜像和临时文件的输出目录,默认为脚本所在目录。如果 DIR 不存在则会自动创建。

    脚本运行结束后,会提示镜像的存储位置,默认保存在 DIR/raspi_output/img/ 下。

  2. -r, --repo REPO_INFO

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

    下面分别举例:

    • 开发源 repo 文件的 URLhttps://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-21.03/generic.repo
    • 开发源的 repo 文件路径:
    • 资源库的 baseurl 列表,如 "http://repo.openeuler.org/openEuler-21.03/OS/aarch64/ http://repo.openeuler.org/openEuler-21.03/EPOL/aarch64/"
  3. -n, --name IMAGE_NAME

    构建的镜像名称。

    例如,openEuler-21.03.img。默认为openEuler-raspi-aarch64.img,或者根据 -n, --name IMAGE_NAME 参数自动生成。

  4. -s, --spec SPEC

    构建的镜像版本:

    • headless,无图形界面版的镜像。
    • xfce,带 Xfce 桌面以及中文字体、输入法等全部配套软件。
    • ukui,带 UKUI 桌面以及中文字体、输入法等全部配套软件。
    • dde,带 DDE 桌面以及中文字体、输入法等全部配套软件。
    • gnome,带 GNOME 桌面以及中文字体、输入法等全部配套软件。
    • devstation,带 GNOME 桌面、中文字体、输入法、大量开发工具和 IDE 等配套软件。
    • rpmlist 文件路径,其中包含镜像中要安装的软件列表,内容参考 rpmlist

    默认使用 headless 选项。

  5. -h, --help

    显示帮助信息。

完全构建(包括编译内核)

包含编译内核、下载树莓派相关固件等过程,速度相对较慢。

这里,提供两种构建方式。

须知:
当前支持三个 openEuler 版本,即 20.03 LTS、20.09、20.03 LTS SP1、21.03、20.03 LTS SP2、21.09、20.03 LTS SP3、22.03 LTS、22.09、22.03 LTS SP1、23.03、22.03 LTS SP2、22.03 LTS SP3、24.03 LTS、22.03 LTS SP4、24.09、24.03 LTS SP1、25.03 版本。 如果构建包含 Xfce/UKUI/DDE 桌面环境或者 DevStation 开发者工作站的镜像,需要注意六点:

  1. 构建包含 Xfce 桌面环境的镜像,当前只支持 openEuler 21.03/20.03 LTS SP2/21.09/20.03 LTS SP3/22.03 LTS/22.09/22.03 LTS SP1/23.03/22.03 LTS SP2/22.03 LTS SP3/24.03 LTS/22.03 LTS SP4/24.09 版本,需要选择对应内核源码和分支。自 openEuler 24.03 LTS SP1 起,不再支持 Xfce 桌面环境。
    • openEuler 21.03:需要选择 openEuler 内核openEuler-21.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/kernel.git-b/--branch设置为openEuler-21.03`。
    • openEuler 20.03 LTS SP2/20.03 LTS SP3需要选择 openEuler-RaspberryPi 内核openEuler-20.03-LTS 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-20.03-LTS
    • openEuler 21.09:需要选择 openEuler-RaspberryPi 内核openEuler-21.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-21.09
    • openEuler 22.03 LTS需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS
    • openEuler 22.09:需要选择 openEuler-RaspberryPi 内核openEuler-22.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.09
    • openEuler 22.03 LTS SP1需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS-SP1 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS-SP1
    • openEuler 23.03:需要选择 openEuler-RaspberryPi 内核openEuler-23.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-23.03
    • openEuler 22.03 LTS SP2需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS-SP2 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS-SP2
    • openEuler 22.03 LTS SP3/22.03 LTS SP4需要选择 openEuler-RaspberryPi 内核OLK-5.10 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-5.10
    • openEuler 24.03 LTS/24.09:需要选择 openEuler-RaspberryPi 内核OLK-6.6 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-6.6
  2. 构建包含 UKUI 桌面环境的镜像,当前只支持 openEuler 20.09/20.03 LTS SP1/21.03/20.03 LTS SP2/21.09/20.03 LTS SP3/22.03 LTS/22.09/22.03 LTS SP1/23.03/22.03 LTS SP2/22.03 LTS SP3/24.03 LTS/22.03 LTS SP4/24.09/24.03 LTS SP1/25.03 版本,需要选择对应内核源码和分支。
    • openEuler 20.09:需要选择 openEuler-RaspberryPi 内核openEuler-20.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-20.09
    • openEuler 20.03 LTS SP1/20.03 LTS SP2/20.03 LTS SP3需要选择 openEuler-RaspberryPi 内核openEuler-20.03-LTS 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-20.03-LTS
    • openEuler 21.03:需要选择 openEuler 内核openEuler-21.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/kernel.git-b/--branch设置为openEuler-21.03`。
    • openEuler 21.09:需要选择 openEuler-RaspberryPi 内核openEuler-21.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-21.09
    • openEuler 22.03 LTS需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS
    • openEuler 22.09:需要选择 openEuler-RaspberryPi 内核openEuler-22.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.09
    • openEuler 22.03 LTS SP1需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS-SP1 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS-SP1
    • openEuler 23.03:需要选择 openEuler-RaspberryPi 内核openEuler-23.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-23.03
    • openEuler 22.03 LTS SP2需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS-SP2 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS-SP2
    • openEuler 22.03 LTS SP3/22.03 LTS SP4需要选择 openEuler-RaspberryPi 内核OLK-5.10 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-5.10
    • openEuler 24.03 LTS/24.09/24.03 LTS SP1需要选择 openEuler-RaspberryPi 内核OLK-6.6 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-6.6
    • openEuler 25.03:需要选择 openEuler-RaspberryPi 内核openEuler-25.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-25.03
  3. 构建包含 DDE 桌面环境的镜像,当前只支持 openEuler 20.03 LTS SP1/21.03/20.03 LTS SP2/21.09/20.03 LTS SP3/22.03 LTS/22.09/22.03 LTS SP1/23.03/22.03 LTS SP2/22.03 LTS SP3/24.03 LTS/22.03 LTS SP4/24.09/24.03 LTS SP1/25.03 版本。
    • openEuler 20.03 LTS SP1/20.03 LTS SP2/20.03 LTS SP3需要选择 openEuler-RaspberryPi 内核openEuler-20.03-LTS 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-20.03-LTS
    • openEuler 21.03:需要选择 openEuler 内核openEuler-21.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/kernel.git-b/--branch设置为openEuler-21.03`。
    • openEuler 21.09:需要选择 openEuler-RaspberryPi 内核openEuler-21.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-21.09
    • openEuler 22.03 LTS需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS
    • openEuler 22.09:需要选择 openEuler-RaspberryPi 内核openEuler-22.09 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.09
    • openEuler 22.03 LTS SP1需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS-SP1 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS-SP1
    • openEuler 23.03:需要选择 openEuler-RaspberryPi 内核openEuler-23.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-23.03
    • openEuler 22.03 LTS SP2需要选择 openEuler-RaspberryPi 内核openEuler-22.03-LTS-SP2 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-22.03-LTS-SP2
    • openEuler 22.03 LTS SP3/22.03 LTS SP4需要选择 openEuler-RaspberryPi 内核OLK-5.10 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-5.10
    • openEuler 24.03 LTS/24.09/24.03 LTS SP1需要选择 openEuler-RaspberryPi 内核OLK-6.6 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-6.6
    • openEuler 25.03:需要选择 openEuler-RaspberryPi 内核openEuler-25.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-25.03
  4. 构建包含 GNOME 桌面环境的镜像,当前只支持 openEuler 24.03 LTS/22.03 LTS SP4/24.09/24.03 LTS SP1/25.03 版本。
    • openEuler 24.03 LTS/24.09/24.03 LTS SP1需要选择 openEuler-RaspberryPi 内核OLK-6.6 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-6.6
    • openEuler 25.03:需要选择 openEuler-RaspberryPi 内核openEuler-25.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-25.03
  5. 构建 DevStation 开发者工作站的镜像,当前只支持 openEuler 24.03 LTS SP1/25.03 版本。
    • openEuler 24.03 LTS SP1需要选择 openEuler-RaspberryPi 内核OLK-6.6 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 OLK-6.6
    • openEuler 25.03:需要选择 openEuler-RaspberryPi 内核openEuler-25.03 分支,即将参数 -k/--kernel 设置为 git@gitee.com:openeuler/raspberrypi-kernel.git-b/--branch 设置为 openEuler-25.03
  6. 根据需要设置 -s/--spec其具体意义见该参数的介绍部分。
主机上构建

构建镜像需执行命令:

sudo bash build-image-common.sh -n IMAGE_NAME -k KERNEL_URL -b KERNEL_BRANCH -c KERNEL_DEFCONFIG -r REPO -s SPEC --cores N

脚本运行结束后,会提示镜像的存储位置,镜像默认保存在脚本运行所在目录的 raspi_output_common/img/ 下。

各个参数意义:

  1. -n, --name IMAGE_NAME

    构建的镜像名称。

    例如,openEuler-20.03-LTS-SP1.img。默认为openEuler-raspi-aarch64.img,或者根据 -n, --name IMAGE_NAME 参数自动生成。

  2. -k, --kernel KERNEL_URL

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

  3. -b, --branch KERNEL_BRANCH

    内核源码的对应分支,默认为 openEuler-20.03-LTS,推荐使用分支 openEuler-21.09openEuler-20.03-LTSopenEuler-20.09

  4. -c, --config KERNEL_DEFCONFIG

    内核编译使用的配置文件名称或路径,默认为 openeuler-raspi_defconfig。如果该参数为配置文件名称,请确保该文件在内核源码的目录 arch/arm64/configs 下。

  5. -r, --repo REPO_INFO

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

    下面分别举例:

    • 开发源 repo 文件的 URLhttps://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS-SP1/generic.repo
    • 开发源的 repo 文件路径:
    • 资源库的 baseurl 列表,如 "http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS-SP1/EPOL/aarch64/"
  6. -s, --spec SPEC

    构建的镜像版本:

    • headless,无图形界面版的镜像。
    • xfce,带 Xfce 桌面以及中文字体、输入法等全部配套软件。
    • ukui,带 UKUI 桌面以及中文字体、输入法等全部配套软件。
    • dde,带 DDE 桌面以及中文字体、输入法等全部配套软件。
    • gnome,带 GNOME 桌面以及中文字体、输入法等全部配套软件。
    • devstation,带 GNOME 桌面、中文字体、输入法、大量开发工具和 IDE 等配套软件。
    • rpmlist 文件路径,该文件包含镜像中要安装的软件列表,内容参考 rpmlist

    默认使用 headless 选项。

  7. --cores N

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

Docker 容器内构建

构建镜像需执行命令:

sudo bash build-image-docker.sh -d DOCKER_FILE -n IMAGE_NAME -k KERNEL_URL -b KERNEL_BRANCH -c KERNEL_DEFCONFIG -r REPO --cores N

脚本运行结束后,镜像默认保存在脚本运行所在目录的 raspi_output_common/img/ 下。

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

除参数 DOCKER_FILE 外,剩余参数与主机上构建中对应参数一致:

  1. -d, --docker DOCKER_FILE

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