provide a unified entry script to build images
This commit is contained in:
parent
27f7506d97
commit
a698f7964d
51
README.en.md
51
README.en.md
@ -13,6 +13,9 @@ This repository is the main repository of the openEuler SBC (Single-Board Comput
|
|||||||
- [How to download latest image](#how-to-download-latest-image)
|
- [How to download latest image](#how-to-download-latest-image)
|
||||||
- [Raspberry Pi](#raspberry-pi)
|
- [Raspberry Pi](#raspberry-pi)
|
||||||
- [Rockchip](#rockchip)
|
- [Rockchip](#rockchip)
|
||||||
|
- [How to build image](#how-to-build-image)
|
||||||
|
- [Prepare the environment](#prepare-the-environment)
|
||||||
|
- [Run the scripts to build image](#run-the-scripts-to-build-image)
|
||||||
|
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
|
|
||||||
@ -286,4 +289,50 @@ Basic information of the image is as follows:
|
|||||||
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP3/generic.repo">openEuler 22.03 LTS SP3 repository</a></td>
|
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP3/generic.repo">openEuler 22.03 LTS SP3 repository</a></td>
|
||||||
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
|
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
|
|
||||||
|
## How to build image
|
||||||
|
|
||||||
|
### Prepare the environment
|
||||||
|
|
||||||
|
To build openEuler AArch64 image for Raspberry Pi, Rockchip or other SoCs, the requirements of running scripts of this repository are as follows:
|
||||||
|
|
||||||
|
- OS: openEuler or CentOS 8
|
||||||
|
- Hardware: AArch64 hardware, such as Raspberry Pi, Firefly RK3399, Firefly ROC-RK3588S-PC
|
||||||
|
|
||||||
|
For other architecture hardware, you can use [QEMU](https://www.qemu.org/) to build AArch64 system emulation.
|
||||||
|
|
||||||
|
### Run the scripts to build image
|
||||||
|
|
||||||
|
You can use the respective scripts of Raspberry Pi, Rockchip or other SoCs to build images. Refer to the specific documentation:
|
||||||
|
- [Build Raspberry Pi images](./documents/树莓派.md#构建镜像)
|
||||||
|
- [Build images for Rochchip and other SoCs](./documents/瑞芯微等开发板.md#镜像构建)
|
||||||
|
|
||||||
|
Alternatively, you can use the unified entry point [build.sh](./scripts/build.sh) to build images for Raspberry Pi, Rockchip or other SoCs by executing the following command:
|
||||||
|
|
||||||
|
`sudo bash scripts/build.sh --board BOARD_TYPE --in-docker [other_args...]`
|
||||||
|
|
||||||
|
Parameter Definitions & Meaning:
|
||||||
|
|
||||||
|
1. `--in-docker`
|
||||||
|
Build the image using a Docker container. Refer to the links below:
|
||||||
|
- [Build Raspberry Pi images in Docker](./documents/树莓派.md#docker-容器内构建)
|
||||||
|
- [Build images for Rockchip or other SoCs in Docker](./documents/瑞芯微等开发板.md#docker-容器内构建)
|
||||||
|
|
||||||
|
2. `--board BOARD_TYPE`
|
||||||
|
Specifies the development board type. Currently supported parameters include:
|
||||||
|
|
||||||
|
- `rpi`: Build a Raspberry Pi image without compiling the kernel. For other parameters, refer to [Quick build for Raspberry Pi (no kernel compilation)](./documents/树莓派.md#快速构建无需编译内核推荐).
|
||||||
|
- `rpi-custom`: Build a Raspberry Pi image with kernel compilation. For other parameters, refer to [Build a Raspberry Pi image using a custom-compiled kernel](./documents/树莓派.md#完全构建包括编译内核).
|
||||||
|
- `firefly-itx-3588j`: Build a Firefly ITX-3588J image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `firefly-rk3399`: Build a Firefly RK3399 image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `firefly-roc-rk3566-pc`: Build a Firefly ROC-RK3566-PC image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `firefly-roc-rk3568-pc`: Build a Firefly ROC-RK3568-PC image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `firefly-roc-rk3568-pc-se`: Build a Firefly ROC-RK3568-PC-SE image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `firefly-roc-rk3588s-pc`: Build a Firefly ROC-RK3588S-PC image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `phytiumpi-4gb`: Build a Phytium Pi 4GB image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `radxa-rock5b`: Build a Radxa Rock-5B image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
- `radxa-rockpi-4a`: Build a Radxa RockPi-4A image. For other parameters, refer to [Build an image for Rockchip or other SoCs](./documents/瑞芯微等开发板.md#一次构建).
|
||||||
|
|
||||||
|
3. `-h`, `--help`
|
||||||
|
Display help information.
|
||||||
|
|||||||
48
README.md
48
README.md
@ -13,6 +13,9 @@
|
|||||||
- [最新镜像](#最新镜像)
|
- [最新镜像](#最新镜像)
|
||||||
- [树莓派](#树莓派)
|
- [树莓派](#树莓派)
|
||||||
- [瑞芯微等其他开发板](#瑞芯微等其他开发板)
|
- [瑞芯微等其他开发板](#瑞芯微等其他开发板)
|
||||||
|
- [镜像构建](#镜像构建)
|
||||||
|
- [准备环境](#准备环境)
|
||||||
|
- [构建镜像](#构建镜像)
|
||||||
|
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
## To Do List
|
## To Do List
|
||||||
@ -286,3 +289,48 @@ SIG 组基本信息位于 [sig-SBC](https://gitee.com/openeuler/community/tree/m
|
|||||||
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
|
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
|
|
||||||
|
## 镜像构建
|
||||||
|
|
||||||
|
### 准备环境
|
||||||
|
|
||||||
|
本仓库的脚本运行环境要求如下:
|
||||||
|
|
||||||
|
- 操作系统:openEuler、CentOS 8
|
||||||
|
- 架构:AArch64,如树莓派、 RK3399 开发板、 RK3588 开发板
|
||||||
|
|
||||||
|
其他架构可以使用 [QEMU](https://www.qemu.org/) 模拟器搭建 AArch64 运行环境。
|
||||||
|
|
||||||
|
### 构建镜像
|
||||||
|
|
||||||
|
可以使用树莓派或瑞芯微等开发板各自的脚本构建镜像,具体文档参考:
|
||||||
|
- [树莓派镜像构建](./documents/树莓派.md#构建镜像)
|
||||||
|
- [瑞芯微等开发板镜像构建](./documents/瑞芯微等开发板.md#镜像构建)
|
||||||
|
|
||||||
|
也可以使用统一入口 [build.sh](./scripts/build.sh) 构建树莓派或瑞芯微等开发板镜像,执行命令:
|
||||||
|
|
||||||
|
`sudo bash scripts/build.sh --board BOARD_TYPE --in-docker [other_args...]`
|
||||||
|
|
||||||
|
各个参数含义:
|
||||||
|
|
||||||
|
1. --in-docker
|
||||||
|
使用 Docker 容器构建镜像,参考链接:
|
||||||
|
- [使用 Docker 容器构建树莓派镜像](./documents/树莓派.md#docker-容器内构建)
|
||||||
|
- [使用 Docker 容器构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#docker-容器内构建)
|
||||||
|
|
||||||
|
2. --board BOARD_TYPE
|
||||||
|
开发板类型和构建方式。当前支持的参数有:
|
||||||
|
- rpi,无需编译内核直接构建树莓派镜像,其他参数请参考 [无需编译内核快速构建树莓派镜像](./documents/树莓派.md#快速构建无需编译内核推荐)。
|
||||||
|
- rpi-custom,编译内核并构建树莓派镜像,其他参数请参考 [编译内核构建树莓派镜像](./documents/树莓派.md#完全构建包括编译内核)。
|
||||||
|
- firefly-itx-3588j,构建 Firefly ITX-3588J 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- firefly-rk3399,构建 Firefly RK3399 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- firefly-roc-rk3566-pc,构建 Firefly ROC-RK3566-PC 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- firefly-roc-rk3568-pc,构建 Firefly ROC-RK3568-PC 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- firefly-roc-rk3568-pc-se,构建 Firefly ROC-RK3568-PC-SE 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- firefly-roc-rk3588s-pc,构建 Firefly ROC-RK3588S-PC 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- phytiumpi-4gb,构建 Phytium Pi 4GB 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- radxa-rock5b,构建 Radxa Rock-5B 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
- radxa-rockpi-4a,构建 Radxa RockPi-4A 开发板镜像,其他参数请参考 [构建瑞芯微等开发板镜像](./documents/瑞芯微等开发板.md#一次构建)。
|
||||||
|
|
||||||
|
3. -h, --help
|
||||||
|
显示帮助信息。
|
||||||
|
|||||||
@ -13,8 +13,7 @@
|
|||||||
- [构建镜像](#构建镜像)
|
- [构建镜像](#构建镜像)
|
||||||
- [快速构建(无需编译内核,推荐)](#快速构建无需编译内核推荐)
|
- [快速构建(无需编译内核,推荐)](#快速构建无需编译内核推荐)
|
||||||
- [完全构建(包括编译内核)](#完全构建包括编译内核)
|
- [完全构建(包括编译内核)](#完全构建包括编译内核)
|
||||||
- [主机上构建](#主机上构建)
|
- [Docker 容器内构建](#docker-容器内构建)
|
||||||
- [Docker 容器内构建](#docker-容器内构建)
|
|
||||||
|
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
|
|
||||||
@ -41,8 +40,8 @@
|
|||||||
- [openEuler 21.09 内测版(LXDE 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-21.09-LXDE.md)
|
- [openEuler 21.09 内测版(LXDE 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-21.09-LXDE.md)
|
||||||
- [scripts](../scripts/raspberrypi): 构建 openEuler 树莓派镜像的脚本
|
- [scripts](../scripts/raspberrypi): 构建 openEuler 树莓派镜像的脚本
|
||||||
- [快速构建(不编译内核)](../scripts/raspberrypi/build-image.sh)
|
- [快速构建(不编译内核)](../scripts/raspberrypi/build-image.sh)
|
||||||
- [主机上构建(编译内核)](../scripts/raspberrypi/build-image-common.sh)
|
- [完全构建(编译内核)](../scripts/raspberrypi/build-image-common.sh)
|
||||||
- [Docker 容器中构建(编译内核)](../scripts/raspberrypi/build-image-docker.sh)
|
- [Docker 容器中构建](../scripts/raspberrypi/build-image-docker.sh)
|
||||||
|
|
||||||
## 最新镜像
|
## 最新镜像
|
||||||
|
|
||||||
@ -140,8 +139,6 @@
|
|||||||
|
|
||||||
包含编译内核、下载树莓派相关固件等过程,速度相对较慢。
|
包含编译内核、下载树莓派相关固件等过程,速度相对较慢。
|
||||||
|
|
||||||
这里,提供两种构建方式。
|
|
||||||
|
|
||||||
> **须知:**
|
> **须知:**
|
||||||
>当前支持三个 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 版本。
|
>当前支持三个 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 开发者工作站的镜像,需要注意六点:
|
>如果构建包含 Xfce/UKUI/DDE 桌面环境或者 DevStation 开发者工作站的镜像,需要注意六点:
|
||||||
@ -189,13 +186,11 @@
|
|||||||
> - openEuler 25.03:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-25.03](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-25.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git`,`-b/--branch` 设置为 `openEuler-25.03`。
|
> - openEuler 25.03:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-25.03](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-25.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git`,`-b/--branch` 设置为 `openEuler-25.03`。
|
||||||
>6. 根据需要设置 -s/--spec,其具体意义见该参数的介绍部分。
|
>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`
|
`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/` 下。
|
脚本运行结束后,会提示镜像的存储位置,镜像默认保存在脚本运行所在目录的 `raspi_output/img/` 下。
|
||||||
|
|
||||||
各个参数意义:
|
各个参数意义:
|
||||||
|
|
||||||
@ -244,17 +239,17 @@
|
|||||||
|
|
||||||
并行编译的数量,根据运行脚本的宿主机 CPU 实际数目设定,默认为可用的 CPU 总数。
|
并行编译的数量,根据运行脚本的宿主机 CPU 实际数目设定,默认为可用的 CPU 总数。
|
||||||
|
|
||||||
##### Docker 容器内构建
|
#### 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`
|
`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/` 下。
|
脚本运行结束后,镜像默认保存在脚本运行所在目录的 `raspi_output/img/` 下。
|
||||||
|
|
||||||
注意!!!运行该脚本前,需安装 Docker 运行环境。该脚本会自动将 DOCKER_FILE 参数对应的 Docker 镜像导入本机系统中。
|
注意!!!运行该脚本前,需安装 Docker 运行环境。该脚本会自动将 `-d DOCKER_FILE` 参数对应的 Docker 镜像导入本机系统中。
|
||||||
|
|
||||||
除参数 DOCKER_FILE 外,剩余参数与[主机上构建](#主机上构建)中对应参数一致:
|
除参数 `-d DOCKER_FILE` 外,剩余参数与 [快速构建(无需编译内核,推荐)](#快速构建无需编译内核推荐) 或 [完全构建(包括编译内核)](#完全构建包括编译内核) 中对应参数一致:
|
||||||
|
|
||||||
1. -d, --docker DOCKER_FILE
|
1. -d, --docker DOCKER_FILE
|
||||||
|
|
||||||
|
|||||||
102
scripts/build.sh
Normal file
102
scripts/build.sh
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 --board BOARD_TYPE --in-docker [other_args...]"
|
||||||
|
echo Options:
|
||||||
|
echo "--in-docker Build images in Docker."
|
||||||
|
echo "--board BOARD_TYPE Supported boards:"
|
||||||
|
echo " - rpi (Build a Raspberry Pi image without kernel compilation)"
|
||||||
|
echo " - rpi-custom (Build a Raspberry Pi image using a custom kernel compiled)"
|
||||||
|
for config in "${RK_BOARDS[@]}"; do
|
||||||
|
echo " - $config"
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
|
rk_board_dir=$cur_dir/rockchip/boards
|
||||||
|
|
||||||
|
BOARD=""
|
||||||
|
HELP=false
|
||||||
|
IN_DOCKER=false
|
||||||
|
ARGS=()
|
||||||
|
RK_BOARDS=()
|
||||||
|
SUB_SCRIPT=""
|
||||||
|
|
||||||
|
while IFS= read -r -d '' file; do
|
||||||
|
RK_BOARDS+=("$(basename "$file" .conf)")
|
||||||
|
done < <(find "$rk_board_dir" -type f -name "*.conf" ! -name "sample.conf" -print0 | sort -z)
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--board)
|
||||||
|
BOARD="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--in-docker)
|
||||||
|
IN_DOCKER=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--help)
|
||||||
|
HELP=true
|
||||||
|
ARGS+=("--help")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ARGS+=("$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$BOARD" ]; then
|
||||||
|
if ! $HELP; then
|
||||||
|
echo "Error: --board parameter is required"
|
||||||
|
fi
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$BOARD" in
|
||||||
|
rpi)
|
||||||
|
if $IN_DOCKER; then
|
||||||
|
SUB_SCRIPT="$cur_dir/raspberrypi/build-image-docker.sh"
|
||||||
|
else
|
||||||
|
SUB_SCRIPT="$cur_dir/raspberrypi/build-image.sh"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
rpi-custom)
|
||||||
|
if $IN_DOCKER; then
|
||||||
|
SUB_SCRIPT="$cur_dir/raspberrypi/build-image-docker.sh"
|
||||||
|
else
|
||||||
|
SUB_SCRIPT="$cur_dir/raspberrypi/build-image-common.sh"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
for item in "${RK_BOARDS[@]}"; do
|
||||||
|
if [ "$item" == "$BOARD" ]; then
|
||||||
|
if $IN_DOCKER; then
|
||||||
|
SUB_SCRIPT="$cur_dir/rockchip/build-image-docker.sh"
|
||||||
|
else
|
||||||
|
SUB_SCRIPT="$cur_dir/rockchip/build.sh"
|
||||||
|
fi
|
||||||
|
ARGS+=("--board")
|
||||||
|
ARGS+=("$BOARD")
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$SUB_SCRIPT" ]; then
|
||||||
|
echo "Error: Unknown board type '$BOARD'"
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Running: $SUB_SCRIPT ${ARGS[@]}"
|
||||||
|
"$SUB_SCRIPT" "${ARGS[@]}"
|
||||||
4
scripts/raspberrypi/build-image-common.sh
Normal file → Executable file
4
scripts/raspberrypi/build-image-common.sh
Normal file → Executable file
@ -610,9 +610,9 @@ cur_dir=$(cd $(dirname $0);pwd)
|
|||||||
|
|
||||||
workdir=${cur_dir}
|
workdir=${cur_dir}
|
||||||
if [ "x${workdir}" == "x/" ]; then
|
if [ "x${workdir}" == "x/" ]; then
|
||||||
workdir=/raspi_output_common
|
workdir=/raspi_output
|
||||||
else
|
else
|
||||||
workdir=${workdir}/raspi_output_common
|
workdir=${workdir}/raspi_output
|
||||||
fi
|
fi
|
||||||
|
|
||||||
buildid=$(date +%Y%m%d%H%M%S)
|
buildid=$(date +%Y%m%d%H%M%S)
|
||||||
|
|||||||
16
scripts/raspberrypi/build-image-docker.sh
Normal file → Executable file
16
scripts/raspberrypi/build-image-docker.sh
Normal file → Executable file
@ -48,6 +48,7 @@ parseargs()
|
|||||||
elif [ "x$1" == "x-k" -o "x$1" == "x--kernel" ]; then
|
elif [ "x$1" == "x-k" -o "x$1" == "x--kernel" ]; then
|
||||||
kernel_url=`echo $2`
|
kernel_url=`echo $2`
|
||||||
params="${params} -k ${kernel_url}"
|
params="${params} -k ${kernel_url}"
|
||||||
|
KERNEL_COMPILE="-common"
|
||||||
shift
|
shift
|
||||||
shift
|
shift
|
||||||
elif [ "x$1" == "x-b" -o "x$1" == "x--branch" ]; then
|
elif [ "x$1" == "x-b" -o "x$1" == "x--branch" ]; then
|
||||||
@ -125,16 +126,17 @@ LOG(){
|
|||||||
cur_dir=$(cd $(dirname $0);pwd)
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
|
|
||||||
docker_file="https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz"
|
docker_file="https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz"
|
||||||
|
KERNEL_COMPILE=""
|
||||||
|
|
||||||
workdir=${cur_dir}/raspi_output_common
|
workdir=${cur_dir}/raspi_output
|
||||||
|
|
||||||
buildid=$(date +%Y%m%d%H%M%S)
|
buildid=$(date +%Y%m%d%H%M%S)
|
||||||
builddate=${buildid:0:8}
|
builddate=${buildid:0:8}
|
||||||
|
|
||||||
log_dir=${workdir}/log
|
log_dir=${workdir}/log
|
||||||
params_dir=${workdir}/params
|
params_dir=${workdir}/params
|
||||||
euler_dir=${cur_dir}/config-common
|
params_dir_indocker=/work/raspi_output/params
|
||||||
params_dir_indocker=/work/raspi_output_common/params
|
euler_dir=${cur_dir}/config$KERNEL_COMPILE
|
||||||
|
|
||||||
if [ -d ${params_dir} ]; then
|
if [ -d ${params_dir} ]; then
|
||||||
rm -rf ${params_dir}
|
rm -rf ${params_dir}
|
||||||
@ -168,16 +170,16 @@ LOG build raspi image with docker: ${docker_file}.
|
|||||||
|
|
||||||
(echo "FROM $docker_img_name" && grep -v FROM ${euler_dir}/Dockerfile_makeraspi) | docker build -t ${docker_img_name}-${buildid} --no-cache -f- ${euler_dir}
|
(echo "FROM $docker_img_name" && grep -v FROM ${euler_dir}/Dockerfile_makeraspi) | docker build -t ${docker_img_name}-${buildid} --no-cache -f- ${euler_dir}
|
||||||
echo docker run --rm --privileged=true \
|
echo docker run --rm --privileged=true \
|
||||||
-v ${cur_dir}/build-image-common.sh:/work/build-image-common.sh \
|
-v ${cur_dir}/build-image$KERNEL_COMPILE.sh:/work/build-image.sh \
|
||||||
-v ${euler_dir}:/work/config-common \
|
-v ${euler_dir}:/work/config-common \
|
||||||
-v ${cur_dir}/config:/work/config \
|
-v ${cur_dir}/config:/work/config \
|
||||||
-v ${workdir}:/work/raspi_output_common \
|
-v ${workdir}:/work/raspi_output \
|
||||||
${docker_img_name}-${buildid} ${params}
|
${docker_img_name}-${buildid} ${params}
|
||||||
docker run --rm --privileged=true \
|
docker run --rm --privileged=true \
|
||||||
-v ${cur_dir}/build-image-common.sh:/work/build-image-common.sh \
|
-v ${cur_dir}/build-image$KERNEL_COMPILE.sh:/work/build-image.sh \
|
||||||
-v ${euler_dir}:/work/config-common \
|
-v ${euler_dir}:/work/config-common \
|
||||||
-v ${cur_dir}/config:/work/config \
|
-v ${cur_dir}/config:/work/config \
|
||||||
-v ${workdir}:/work/raspi_output_common \
|
-v ${workdir}:/work/raspi_output \
|
||||||
${docker_img_name}-${buildid} ${params}
|
${docker_img_name}-${buildid} ${params}
|
||||||
chmod -R a+r ${workdir}/img
|
chmod -R a+r ${workdir}/img
|
||||||
docker image rm ${docker_img_name}-${buildid}
|
docker image rm ${docker_img_name}-${buildid}
|
||||||
|
|||||||
0
scripts/raspberrypi/build-image.sh
Normal file → Executable file
0
scripts/raspberrypi/build-image.sh
Normal file → Executable file
@ -1,13 +0,0 @@
|
|||||||
FROM openeuler-20.03-lts-sp1:latest
|
|
||||||
|
|
||||||
RUN dnf clean expire-cache
|
|
||||||
|
|
||||||
RUN dnf -y install cmake gdb gcc gcc-c++ libstdc++-static ncurses ncurses-devel make python bash coreutils && \
|
|
||||||
dnf -y clean all
|
|
||||||
|
|
||||||
RUN dnf -y install module-init-tools git openssl-devel bc bison flex dnf-plugins-core dosfstools parted wget device-mapper-multipath grep xz kpartx
|
|
||||||
RUN dnf -y install rsync passwd diffutils
|
|
||||||
ENV SHELL=/bin/bash
|
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash", "/work/build-image-common.sh"]
|
|
||||||
|
|
||||||
1
scripts/raspberrypi/config-common/Dockerfile_makeraspi
Symbolic link
1
scripts/raspberrypi/config-common/Dockerfile_makeraspi
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../config/Dockerfile_makeraspi
|
||||||
13
scripts/raspberrypi/config/Dockerfile_makeraspi
Normal file
13
scripts/raspberrypi/config/Dockerfile_makeraspi
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
FROM openeuler-20.03-lts-sp1:latest
|
||||||
|
|
||||||
|
RUN dnf clean expire-cache
|
||||||
|
|
||||||
|
RUN dnf -y install cmake gdb gcc gcc-c++ libstdc++-static ncurses ncurses-devel make python bash coreutils && \
|
||||||
|
dnf -y clean all
|
||||||
|
|
||||||
|
RUN dnf -y install module-init-tools git openssl-devel bc bison flex dnf-plugins-core dosfstools parted wget device-mapper-multipath grep xz kpartx
|
||||||
|
RUN dnf -y install rsync passwd diffutils
|
||||||
|
ENV SHELL=/bin/bash
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash", "/work/build-image.sh"]
|
||||||
|
|
||||||
0
scripts/rockchip/build-image-docker.sh
Normal file → Executable file
0
scripts/rockchip/build-image-docker.sh
Normal file → Executable file
@ -43,7 +43,7 @@ default_param() {
|
|||||||
branch=openEuler-20.03-LTS
|
branch=openEuler-20.03-LTS
|
||||||
repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo"
|
repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo"
|
||||||
kernel_url="https://gitee.com/openeuler/rockchip-kernel.git"
|
kernel_url="https://gitee.com/openeuler/rockchip-kernel.git"
|
||||||
workdir=$(pwd)/build
|
workdir=$cur_dir/build
|
||||||
name=${branch}-${board}-aarch64-alpha1
|
name=${branch}-${board}-aarch64-alpha1
|
||||||
make_cores=$(nproc)
|
make_cores=$(nproc)
|
||||||
}
|
}
|
||||||
@ -133,13 +133,13 @@ LOG(){
|
|||||||
echo `date` - INFO, $* | tee -a ${log_dir}/${builddate}.log
|
echo `date` - INFO, $* | tee -a ${log_dir}/${builddate}.log
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
|
|
||||||
default_param
|
default_param
|
||||||
parseargs "$@" || help $?
|
parseargs "$@" || help $?
|
||||||
|
|
||||||
LOG "Selected board: ${board}."
|
LOG "Selected board: ${board}."
|
||||||
|
|
||||||
cur_dir=$(cd $(dirname $0);pwd)
|
|
||||||
|
|
||||||
source ${cur_dir}/boards/${board}.conf
|
source ${cur_dir}/boards/${board}.conf
|
||||||
|
|
||||||
LOG "Board config: ${board}."
|
LOG "Board config: ${board}."
|
||||||
@ -170,15 +170,15 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cat $workdir/.done | grep u-boot) != "u-boot" ]];then
|
if [[ $(cat $workdir/.done | grep u-boot) != "u-boot" ]];then
|
||||||
bash build_u-boot.sh
|
bash $cur_dir/build_u-boot.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cat $workdir/.done | grep bootimg) != "bootimg" ]];then
|
if [[ $(cat $workdir/.done | grep bootimg) != "bootimg" ]];then
|
||||||
bash build_boot.sh
|
bash $cur_dir/build_boot.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(cat $workdir/.done | grep rootfs) != "rootfs" ]];then
|
if [[ $(cat $workdir/.done | grep rootfs) != "rootfs" ]];then
|
||||||
bash build_rootfs.sh
|
bash $cur_dir/build_rootfs.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
bash gen_image.sh --board ${board}
|
bash $cur_dir/gen_image.sh --board ${board}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ help()
|
|||||||
}
|
}
|
||||||
|
|
||||||
default_param() {
|
default_param() {
|
||||||
workdir=$(pwd)/build
|
workdir=$cur_dir/build
|
||||||
branch=openEuler-20.03-LTS
|
branch=openEuler-20.03-LTS
|
||||||
default_defconfig=openeuler_rockchip_defconfig
|
default_defconfig=openeuler_rockchip_defconfig
|
||||||
board=firefly-rk3399
|
board=firefly-rk3399
|
||||||
@ -242,6 +242,7 @@ mk_boot() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
kernel_defconfig=""
|
kernel_defconfig=""
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
|
|
||||||
default_param
|
default_param
|
||||||
local_param
|
local_param
|
||||||
@ -260,11 +261,12 @@ elif [ -f $default_defconfig ]; then
|
|||||||
kernel_defconfig=${workdir}/${default_defconfig##*/}
|
kernel_defconfig=${workdir}/${default_defconfig##*/}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source $workdir/../boards/${board}.conf
|
|
||||||
|
|
||||||
if [ ! -d $workdir ]; then
|
if [ ! -d $workdir ]; then
|
||||||
mkdir $workdir
|
mkdir $workdir
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
source $workdir/../boards/${board}.conf
|
||||||
|
|
||||||
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
||||||
if [ ! -f $workdir/.done ];then
|
if [ ! -f $workdir/.done ];then
|
||||||
touch $workdir/.done
|
touch $workdir/.done
|
||||||
|
|||||||
@ -24,7 +24,7 @@ default_param() {
|
|||||||
board=firefly-rk3399
|
board=firefly-rk3399
|
||||||
repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo"
|
repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo"
|
||||||
tmp_dir=${workdir}/tmp
|
tmp_dir=${workdir}/tmp
|
||||||
workdir=$(pwd)/build
|
workdir=$cur_dir/build
|
||||||
branch=openEuler-20.03-LTS
|
branch=openEuler-20.03-LTS
|
||||||
nonfree_bin_dir=${workdir}/../bin
|
nonfree_bin_dir=${workdir}/../bin
|
||||||
rootfs_dir=${workdir}/rootfs
|
rootfs_dir=${workdir}/rootfs
|
||||||
@ -325,6 +325,7 @@ mk_rootfsimg() {
|
|||||||
}
|
}
|
||||||
set -e
|
set -e
|
||||||
root_need
|
root_need
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
default_param
|
default_param
|
||||||
local_param
|
local_param
|
||||||
parseargs "$@" || help $?
|
parseargs "$@" || help $?
|
||||||
@ -335,11 +336,12 @@ POST_BOARD_OVERLAY() {
|
|||||||
echo "Initial POST_BOARD_OVERLAY function" # It will be overwritten by board.conf.
|
echo "Initial POST_BOARD_OVERLAY function" # It will be overwritten by board.conf.
|
||||||
}
|
}
|
||||||
|
|
||||||
source $workdir/../boards/${board}.conf
|
|
||||||
|
|
||||||
if [ ! -d $workdir ]; then
|
if [ ! -d $workdir ]; then
|
||||||
mkdir $workdir
|
mkdir $workdir
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
source $workdir/../boards/${board}.conf
|
||||||
|
|
||||||
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
||||||
if [ ! -f $workdir/.done ];then
|
if [ ! -f $workdir/.done ];then
|
||||||
touch $workdir/.done
|
touch $workdir/.done
|
||||||
|
|||||||
@ -19,7 +19,7 @@ help()
|
|||||||
|
|
||||||
default_param() {
|
default_param() {
|
||||||
board=firefly-rk3399
|
board=firefly-rk3399
|
||||||
workdir=$(pwd)/build
|
workdir=$cur_dir/build
|
||||||
u_boot_url="https://gitlab.arm.com/systemready/firmware-build/u-boot.git"
|
u_boot_url="https://gitlab.arm.com/systemready/firmware-build/u-boot.git"
|
||||||
rk3399_bl31_url="https://github.com/rockchip-linux/rkbin/raw/master/bin/rk33/rk3399_bl31_v1.36.elf"
|
rk3399_bl31_url="https://github.com/rockchip-linux/rkbin/raw/master/bin/rk33/rk3399_bl31_v1.36.elf"
|
||||||
log_dir=$workdir/log
|
log_dir=$workdir/log
|
||||||
@ -135,15 +135,17 @@ use_prebuild_u-boot() {
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
u_boot_ver="v2020.10"
|
u_boot_ver="v2020.10"
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
default_param
|
default_param
|
||||||
local_param
|
local_param
|
||||||
parseargs "$@" || help $?
|
parseargs "$@" || help $?
|
||||||
|
|
||||||
source $workdir/../boards/${board}.conf
|
|
||||||
|
|
||||||
if [ ! -d $workdir ]; then
|
if [ ! -d $workdir ]; then
|
||||||
mkdir $workdir
|
mkdir $workdir
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
source $workdir/../boards/${board}.conf
|
||||||
|
|
||||||
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
||||||
if [ ! -f $workdir/.done ];then
|
if [ ! -f $workdir/.done ];then
|
||||||
touch $workdir/.done
|
touch $workdir/.done
|
||||||
|
|||||||
@ -17,8 +17,8 @@ help()
|
|||||||
}
|
}
|
||||||
|
|
||||||
default_param() {
|
default_param() {
|
||||||
workdir=$(pwd)/build
|
workdir=$cur_dir/build
|
||||||
bindir=$(pwd)/bin/rk3588-pack
|
bindir=$cur_dir/bin/rk3588-pack
|
||||||
outputdir=${workdir}/$(date +'%Y-%m-%d')
|
outputdir=${workdir}/$(date +'%Y-%m-%d')
|
||||||
name=openEuler-22.03-LTS-RK3588
|
name=openEuler-22.03-LTS-RK3588
|
||||||
rootfs_dir=${workdir}/rootfs
|
rootfs_dir=${workdir}/rootfs
|
||||||
@ -74,6 +74,7 @@ make_img(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOG "gen image..."
|
LOG "gen image..."
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
default_param
|
default_param
|
||||||
prepare_bin
|
prepare_bin
|
||||||
prepare_img
|
prepare_img
|
||||||
|
|||||||
@ -18,7 +18,7 @@ help()
|
|||||||
}
|
}
|
||||||
|
|
||||||
default_param() {
|
default_param() {
|
||||||
workdir=$(pwd)/build
|
workdir=$cur_dir/build
|
||||||
outputdir=${workdir}/$(date +'%Y-%m-%d')
|
outputdir=${workdir}/$(date +'%Y-%m-%d')
|
||||||
name=openEuler-Firefly-RK3399-aarch64-alpha1
|
name=openEuler-Firefly-RK3399-aarch64-alpha1
|
||||||
board=firefly-rk3399
|
board=firefly-rk3399
|
||||||
@ -287,9 +287,14 @@ outputd(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
cur_dir=$(cd $(dirname $0);pwd)
|
||||||
default_param
|
default_param
|
||||||
parseargs "$@" || help $?
|
parseargs "$@" || help $?
|
||||||
|
|
||||||
|
if [ ! -d $workdir ]; then
|
||||||
|
mkdir $workdir
|
||||||
|
fi
|
||||||
|
|
||||||
source $workdir/../boards/${board}.conf
|
source $workdir/../boards/${board}.conf
|
||||||
|
|
||||||
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
if [ ! -d ${log_dir} ];then mkdir -p ${log_dir}; fi
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user