# raspberrypi [English](./README.en.md) | 简体中文 本仓库是 openEuler 社区树莓派 SIG 组的主仓库,提供 SIG 组相关信息以及适用于树莓派的 openEuler 镜像的构建脚本和相关文档: ## 如何参与 SIG 组 SIG 组基本信息位于 [sig-RaspberryPi](https://gitee.com/jianminw/community/tree/master/sig/sig-RaspberryPi)。 - 建立或回复 issue:欢迎通过建立或回复 issue 来讨论,此 SIG 组维护的仓库列表可在 [sig-RaspberryPi](https://gitee.com/jianminw/community/tree/master/sig/sig-RaspberryPi) 中查看。 - 加入 Slack 群组:[openeuler-raspberrypi](https://openeuler-raspberrypi.slack.com ) - [加入群组链接](https://join.slack.com/t/openeuler-raspberrypi/shared_invite/zt-gghnovr7-l05In14G3uAtuQIVZ3xH2A),此链接于 9 月 7 日失效,我们会定期更新。 - SIG 组会议:每个月的第一个和第三个周二下午 03:00 - 03:30 会进行一次讨论会议,Zoom Meeting ID: 881 4204 8958 - [会议议题](https://docs.google.com/document/d/1HuN7sWLiPuvGLqd-1tH1WAbzk51tgXpFBodp3dz_DBY/):每周会议前填写要讨论的议题,我们也会从 issue 列表中提取本周讨论的内容。 - [会议记录](https://gitee.com/openeuler/raspberrypi/issues/I1EYZ6?from=project-issue):每周会议结束后会议结论会更新在此 issue 中。 - 重要的事说三遍:**欢迎提交 PR!欢迎提交 PR!欢迎提交 PR!** ## 仓库目录 - [scripts](./scripts): 构建 openEuler 树莓派镜像的脚本 - [快速构建(不编译内核)](scripts/build-image.sh) - [主机上构建(编译内核)](scripts/build-image-common.sh) - [Docker 容器中构建(编译内核)](scripts/build-image-docker.sh) - [documents](./documents/): 使用文档 - [openEuler 镜像的构建](documents/openEuler镜像的构建.md) - [交叉编译内核](documents/交叉编译内核.md) - [刷写镜像](documents/刷写镜像.md) - [树莓派使用](documents/树莓派使用.md) - [openEuler 20.03 LTS 更新日志](documents/changelog.md) - [openEuler 20.09 更新日志](documents/changelog-20.09.md) ## 最新镜像 1. openEuler 20.03 LTS openEuler 20.03 LTS 的内测版本镜像,[下载](https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-aarch64-raspi.img.xz)。 该镜像的基本信息: - [更新日志](documents/changelog.md) - 发布时间:2020-08-10 - 大小:259 MiB - 操作系统版本:openEuler 20.03 LTS - 内核版本:4.19.90-2005.2.0.0002 - 固件来源:[firmware](https://github.com/raspberrypi/firmware)、[bluez-firmware](https://github.com/RPi-Distro/bluez-firmware)、[firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree) - 构建文件系统的源仓库:[openEuler 20.03 LTS](http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/) - 镜像内置源仓库:[openEuler 20.03 LTS 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo) 2. openEuler 20.09 openEuler 20.09 的内测版本镜像,[下载](https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.09-aarch64-raspi.img.xz)。 该镜像的基本信息: - [更新日志](documents/changelog-20.09.md) - 发布时间:2020-09-04 - 大小:237 MiB - 操作系统版本:openEuler 20.09 - 内核版本:4.19.140-2008.3.0.0001 - 固件来源:[firmware](https://github.com/raspberrypi/firmware)、[bluez-firmware](https://github.com/RPi-Distro/bluez-firmware)、[firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree) - 构建文件系统的源仓库:[openEuler 20.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/Mainline/standard_aarch64/) - 镜像内置源仓库:[openEuler 20.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo) ## 使用镜像 镜像刷写 SD 卡并使用树莓派,详见以下文档: - [刷写镜像](documents/刷写镜像.md) - [树莓派使用](documents/树莓派使用.md) ## 镜像构建 ### 准备环境 本仓库的脚本运行环境要求如下: - 操作系统:openEuler、CentOS 7、CentOS 8 - 架构:AArch64,如树莓派 其他架构可以使用 [QEMU](https://www.qemu.org/) 模拟器搭建 AArch64 运行环境。 ### 构建镜像 详细过程参见 [openEuler 镜像的构建](documents/openEuler镜像的构建.md)。 #### 快速构建(无需编译内核,推荐) >![](public_sys-resources/icon-notice.gif) **须知:** >当前只支持 openEuler 20.09 版本。 使用已有的树莓派内核、固件、蓝牙等 RPM 包构建镜像。 构建镜像需执行命令: `sudo bash build-image.sh -d DIR -r REPO -n IMAGE_NAME` 各个参数意义: 1. -d, --dir DIR 构建镜像和临时文件的输出目录,默认为脚本所在目录。如果 `DIR` 不存在则会自动创建。 脚本运行结束后,会提示镜像的存储位置,默认保存在 `DIR/raspi_output/img/` 下。 2. -r, --repo REPO_INFO 开发源 repo 文件的 URL 或者路径,也可以是开发源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。 下面分别举例: - 开发源 repo 文件的 URL:*暂无* - 开发源的 repo 文件路径:`./openEuler-20.09.repo` 该文件的内容如下: ``` [MAINLINE] name=MAINLINE baseurl=http://119.3.219.20:82/openEuler:/Mainline/standard_aarch64/ enabled=1 gpgcheck=0 [EPOL] name=EPOL baseurl=http://119.3.219.20:82/openEuler:/Epol/standard_aarch64/ enabled=1 gpgcheck=0 ``` - 资源库的 baseurl 列表:`"http://119.3.219.20:82/openEuler:/Mainline/standard_aarch64/ http://119.3.219.20:82/openEuler:/Epol/standard_aarch64/"` 3. -n, --name IMAGE_NAME 构建的镜像名称。 例如,`openEuler-20.09.img`。默认为`openEuler-aarch64-raspi.img`,或者根据 `-r, --repo REPO_INFO` 参数自动生成。 4. -h, --help 显示帮助信息。 #### 完全构建(包括编译内核) 包含编译内核、下载树莓派相关固件等过程,速度相对较慢。 这里,提供两种构建方式。 ##### 主机上构建 构建镜像需执行命令: `sudo bash build-image-common.sh -n IMAGE_NAME -k KERNEL_URL -b KERNEL_BRANCH -c KERNEL_DEFCONFIG -r REPO --cores N` 各个参数意义: 1. -n, --name IMAGE_NAME 构建的镜像名称。 例如,`openEuler-20.03-LTS.img`。默认为`openEuler-aarch64-raspi.img`,或者根据 `-r, --repo REPO_INFO` 参数自动生成。 2. -k, --kernel KERNEL_URL 内核源码仓库的项目地址,默认为 `https://gitee.com/openeuler/raspberrypi-kernel.git`。 3. -b, --branch KERNEL_BRANCH 内核源码的对应分支,默认为 `master`。 4. -c, --config KERNEL_DEFCONFIG 内核编译使用的配置文件名称或路径,默认为 `openeuler-raspi_defconfig`。如果该参数为配置文件名称,请确保该文件在内核源码的目录 arch/arm64/configs 下。 5. -r, --repo REPO_INFO 开发源 repo 文件的 URL 或者路径,也可以是开发源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。 下面分别举例: - 开发源 repo 文件的 URL:`https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo` - 开发源的 repo 文件路径:`./openEuler-20.03-LTS.repo` 该文件内容参考 `https://gitee.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/ http://repo.openeuler.org/openEuler-20.03-LTS/source"` 6. --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` 注意!!!运行该脚本前,需安装 Docker 运行环境。该脚本会自动将 DOCKER_FILE 参数对应的 Docker 镜像导入本机系统中。 除参数 DOCKER_FILE 外,剩余参数与[主机上构建](#主机上构建)中对应参数一致: 1. -d, --docker DOCKER_FILE Docker 镜像的 URL 或者路径, 默认为 `https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz`。使用该默认参数时,脚本会自动下载 openEuler 20.03 LTS 的 Docker 镜像,并导入本机系统中。