!1 同步raspberrypi和rockchip仓库文档和脚本

From: @woqidaideshi 
Reviewed-by: @chainsx, @jianminw 
Signed-off-by: @jianminw
This commit is contained in:
openeuler-ci-bot 2024-11-11 07:22:42 +00:00 committed by Gitee
commit 8f60442dda
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
256 changed files with 40234 additions and 48 deletions

12
.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
/scripts/firmware
/scripts/firmware-nonfree
/scripts/bluez-firmware
/scripts/pi-bluetooth
/scripts/raspberrypi-kernel
/scripts/log
/scripts/tmp
/scripts/output*
/scripts/root
/scripts/boot
/scripts/rootfs*
/scripts/img

127
LICENSE Normal file
View File

@ -0,0 +1,127 @@
木兰宽松许可证, 第2版
木兰宽松许可证, 第2版
2020年1月 http://license.coscl.org.cn/MulanPSL2
您对“软件”的复制、使用、修改及分发受木兰宽松许可证第2版“本许可证”的如下条款的约束
0. 定义
“软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。
“贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。
“贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。
“法人实体”是指提交贡献的机构及其“关联实体”。
“关联实体”是指对“本许可证”下的行为方而言控制、受控制或与其共同受控制的机构此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。
1. 授予版权许可
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。
2. 授予专利许可
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。
3. 无商标许可
“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可但您为满足第4条规定的声明义务而必须使用除外。
4. 分发限制
您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。
5. 免责声明与责任限制
“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。
6. 语言
“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。
条款结束
如何将木兰宽松许可证第2版应用到您的软件
如果您希望将木兰宽松许可证第2版应用到您的新软件为了方便接收者查阅建议您完成如下三步
1 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;
2 请您在软件包的一级目录下创建以“LICENSE”为名的文件将整个许可证文本放入该文件中
3 请将如下声明文本放入每个源文件的头部注释中。
Copyright (c) [Year] [name of copyright holder]
[Software Name] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
Mulan Permissive Software LicenseVersion 2
Mulan Permissive Software LicenseVersion 2 (Mulan PSL v2)
January 2020 http://license.coscl.org.cn/MulanPSL2
Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions:
0. Definition
Software means the program and related documents which are licensed under this License and comprise all Contribution(s).
Contribution means the copyrightable work licensed by a particular Contributor under this License.
Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License.
Legal Entity means the entity making a Contribution and all its Affiliates.
Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, control means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity.
1. Grant of Copyright License
Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not.
2. Grant of Patent License
Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken.
3. No Trademark License
No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4.
4. Distribution Restriction
You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software.
5. Disclaimer of Warranty and Limitation of Liability
THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW ITS CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
6. Language
THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL.
END OF THE TERMS AND CONDITIONS
How to Apply the Mulan Permissive Software LicenseVersion 2 (Mulan PSL v2) to Your Software
To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps:
i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner;
ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package;
iii Attach the statement to the appropriate annotated syntax at the beginning of each source file.
Copyright (c) [Year] [name of copyright holder]
[Software Name] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.

9
OWNERS Normal file
View File

@ -0,0 +1,9 @@
maintainers:
- jianminw
- woqidaideshi
developers:
- earlytobed
- lukedyue
- daniao520
- wzqhwx
- tianbao

View File

@ -1,36 +1,334 @@
# SBC-sig
#### Description
The openEuler support for single-board computers
English | [简体中文](./README.md)
#### Software Architecture
Software architecture description
This repository is the main repository of the openEuler SBC (Single-Board Computer) SIG. It provides information related to SBC SIG, build scripts and documentation for openEuler images suitable for development boards such as [Raspberry Pi](https://gitee.com/openeuler/raspberrypi-kernel), [Rockchip](https://gitee.com/openeuler/rockchip-kernel) and [Allwinner](https://gitee.com/openeuler/allwinner-kernel).
#### Installation
<!-- TOC -->
1. xxxx
2. xxxx
3. xxxx
- [SBC-sig](#sbc-sig)
- [To Do List](#to-do-list)
- [How to collaborate](#how-to-collaborate)
- [File description](#file-description)
- [How to download latest image](#how-to-download-latest-image)
- [Raspberry Pi](#raspberry-pi)
- [Rockchip](#rockchip)
#### Instructions
<!-- /TOC -->
1. xxxx
2. xxxx
3. xxxx
## To Do List
1. Raspberry Pi
1. [Migrate openEuler to Raspberry Pi CM4](https://gitee.com/openeuler/raspberrypi/issues/I5CHSV)
2. Rockchip
1. [Migrate openEuler 22.09 to RK3399 SoCs](https://gitee.com/openeuler/rockchip/issues/I5CHNJ)
2. [Migrate openEuler 22.03 LTS (Next) to Rockchip SoCs](https://gitee.com/openeuler/rockchip/issues/I5CHO9)
3. [Migrate openEuler 22.03 LTS (Next) to ITX-3588J SoCs](https://gitee.com/openeuler/rockchip-kernel/issues/I5XTK1)
3. Allwinner
1. [Migrate openEuler 5.10 kernel to Allwinner SoCs](https://gitee.com/openeuler/allwinner-kernel/issues/I5CHOF)
#### Contribution
## How to collaborate
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
You can get introduction of openEuler SBC SIG from [sig-SBC](https://gitee.com/openeuler/community/tree/master/sig/sig-SBC).
- Issues: welcome to collaborate with us by creating new issues or reply opened issues. You can get repository list from [sig-SBC](https://gitee.com/openeuler/community/tree/master/sig/sig-SBC).
- Join Slack workspace: [openeuler-sbc](https://openeuler-sbc.slack.com)
- [Invite link](https://join.slack.com/t/openeuler-sbc/shared_invite/zt-uh95ug4n-yX7a~c7VrTEU64tZlX3Djw)
- Weekly meeting schedule
- Meeting Time: The 1st and 3rd Wednesday of each month, 17:00 - 17:30 UTC+8.
- Meeting Link: There are two methods to get the meeting link which will be updated before each meeting.
- Log in to the [openEuler Community](https://openeuler.org/) website, then view the booking information of `sig-SBC例会` in the meeting calendar.
- Search `openEuler` in mini programs of WeChat, add `OpenAtom openEuler mini program`. Then click `会议` and view the booking information of `sig-SBC例会`.
- [Meeting Agenda](https://etherpad.openeuler.org/p/sig-SBC-meetings)
- [Meeting Minutes](https://gitee.com/openeuler/SBC-sig/issues/IB2WFJ)
- Warmly welcome to submit Pull Requests.
#### Gitee Feature
## File description
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
>![](documents/public_sys-resources/icon-note.gif) **NOTE: **
>- Recommendation: use the latest images provided in the chapter [How to download latest image](#how-to-download-latest-image) of this documentation.
- [documents](./documents/):
- [Raspberry Pi](documents/树莓派.md)
- [Getting started with Raspberry Pi](documents/树莓派.md)
- [Install openEuler on an SD card](documents/raspberrypi/刷写镜像.md)
- [How to use Raspberry Pi](documents/raspberrypi/树莓派使用.md)
- [Building openEuler image for Raspberry Pi](documents/raspberrypi/openEuler镜像的构建.md)
- [Cross-compile the kernel](documents/raspberrypi/交叉编译内核.md)
- [Emulate Raspberry Pi with QEMU](documents/raspberrypi/QEMU启动树莓派.md)
- [Rockchip and other SoCs](documents/瑞芯微等开发板.md)
- [Getting started with Rockchip and other SoCs](documents/瑞芯微等开发板.md)
- [Building openEuler image for Rockchip development boards](documents/rockchip/openEuler镜像的构建.md)
- [Install an Image on an EMMC](documents/rockchip/刷写EMMC镜像.md)
- [Build images sequentially](documents/rockchip/顺序构建.md)
- [Compile the kernel of Firefly-RK3399 based on the Firefly SDK](documents/rockchip/基于Firefly-SDK编译Firefly-RK3399的内核镜像.md)
- [Packaging ITX-RK3588J Integrated Burn Write Image](documents/rockchip/打包ITX-RK3588J一体化烧写镜像.md)
- [Set up SELinux](documents/rockchip/设置SELinux.md)
- [Build an image using Docker](documents/rockchip/使用Docker构建镜像.md)
- [scripts](./scripts/):
- [Raspberry Pi](./scripts/raspberrypi): Script for building openEuler image for Raspberry Pi
- [Quickly Build (without kernel compilation)](scripts/raspberrypi/build-image.sh)
- [Build on host (with kernel compilation)](scripts/raspberrypi/build-image-common.sh)
- [Build in a Docker container (with kernel compilation)](scripts/raspberrypi/build-image-docker.sh)
- [Rockchip and other SoCs](./scripts/rockchip): Used to build openEuler images for Rockchip and other SoCs
- [One-time build images](scripts/rockchip/build.sh)
- [Build a boot Image](scripts/rockchip/build_boot.sh)
- [Build a rootfs Image](scripts/rockchip/build_rootfs.sh)
- [Compile u-boot](scripts/rockchip/build_u-boot.sh)
- [Generate a bootable image](scripts/rockchip/gen_image.sh)
## How to download latest image
### Raspberry Pi
Basic information of the images for Raspberry Pi is as follows. [more images](documents/images.en.md)
<table><thead align="left"><tr>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Version</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>System user(password)</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Release date</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Size</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Kernel version</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Repository of rootfs</strong></p></th>
</tr></thead>
<tbody>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>271 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>298 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-46.0.0.10</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.09/raspi_img/openEuler-24.09-raspi-aarch64.img.xz">openEuler 24.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/09/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>268 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>235 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.0 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>255 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-217.0.0.22</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP4/raspi_img/openEuler-22.03-LTS-SP4-raspi-aarch64.img.xz">openEuler 22.03 LTS SP4</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>229 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>214 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>330 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-30.0.0.6</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.03-LTS/raspi_img/openEuler-24.03-LTS-raspi-aarch64.img.xz">openEuler 24.03 LTS</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/04</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>244 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
</tbody></table>
### Rockchip
Basic information of the image is as follows:
<table><thead align="left"><tr>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Version</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>System User (Password)</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Release Date</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Size</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Kernel Version</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Repository of rootfs</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Image type</strong></p></th>
</tr></thead>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-20.03-LTS-rk3399-firefly-aarch64-alpha1.img.xz">openEuler 20.03 LTS Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>288 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo">openEuler 20.03 LTS repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-20.03-LTS-rk3399-firefly-aarch64-alpha1.tar.gz">openEuler 20.03 LTS Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>493 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo">openEuler 20.03 LTS repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed image for the EMMC</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-20.03-LTS-RockPi-4A-aarch64-alpha1.img.xz">openEuler 20.03 LTS RockPi-4A</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>295 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo">openEuler 20.03 LTS repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-21.09-Firefly-RK3399-aarch64-alpha1.img.xz">openEuler 21.09 Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>420 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-21.09-Firefly-RK3399-aarch64-alpha1.tar.gz">openEuler 21.09 Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>717 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed image for the EMMC</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-21.09-RockPi-4A-aarch64-alpha1.img.xz">openEuler 21.09 RockPi-4A</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>717 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3588/openEuler-22.03-LTS-ITX-3588J-aarch64-alpha1.img.xz">openEuler 22.03 Firefly ITX-3588J</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/7/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>494 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo">openEuler 22.03 repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3588/openEuler-22.03-LTS-rk3588-xfce.img.xz">openEuler 22.03 Firefly ITX-3588J + XFCE</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/7/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.9 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo">openEuler 22.03 repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>A compressed RAW original image</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-22.03-LTS-SP3-Firefly-RK3399-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/1/23</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>450 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></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>
</tr>
</tbody></table>

344
README.md
View File

@ -1,37 +1,333 @@
# SBC-sig
#### 介绍
The openEuler support for single-board computers
[English](./README.en.md) | 简体中文
#### 软件架构
软件架构说明
本仓库是 openEuler 社区 SBC (Single-Board Computer) SIG 组的主仓库,提供 SIG 组相关信息以及适用于[树莓派](https://gitee.com/openeuler/raspberrypi-kernel)、[Rockchip](https://gitee.com/openeuler/rockchip-kernel)、[全志](https://gitee.com/openeuler/allwinner-kernel)等开发板的 openEuler 镜像的构建脚本和相关文档。
<!-- TOC -->
#### 安装教程
- [SBC-sig](#sbc-sig)
- [To Do List](#to-do-list)
- [如何参与 SIG 组](#如何参与-sig-组)
- [文件说明](#文件说明)
- [最新镜像](#最新镜像)
- [树莓派](#树莓派)
- [瑞芯微等其他开发板](#瑞芯微等其他开发板)
1. xxxx
2. xxxx
3. xxxx
<!-- /TOC -->
## To Do List
#### 使用说明
1. 树莓派
1. [树莓派 CM4 核心板适配、测试](https://gitee.com/openeuler/raspberrypi/issues/I5CHSV)
2. Rockchip
1. [openEuler 22.09 适配到 RK3399](https://gitee.com/openeuler/rockchip/issues/I5CHNJ)
2. [openEuler 22.03 LTS (Next) 适配到 Rockchip 开发板](https://gitee.com/openeuler/rockchip/issues/I5CHO9)
3. [openEuler 22.03 LTS (Next) 适配到 ITX-3588J 开发板](https://gitee.com/openeuler/rockchip-kernel/issues/I5XTK1)
3. 全志
1. [openEuler 5.10 内核适配到全志开发板](https://gitee.com/openeuler/allwinner-kernel/issues/I5CHOF)
1. xxxx
2. xxxx
3. xxxx
## 如何参与 SIG 组
#### 参与贡献
SIG 组基本信息位于 [sig-SBC](https://gitee.com/openeuler/community/tree/master/sig/sig-SBC)。
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
- 建立或回复 issue欢迎通过建立或回复 issue 来讨论,此 SIG 组维护的仓库列表可在 [sig-SBC](https://gitee.com/openeuler/community/tree/master/sig/sig-SBC) 中查看。
- 加入 Slack 群组:[openeuler-sbc](https://openeuler-sbc.slack.com)
- [加入群组链接](https://join.slack.com/t/openeuler-sbc/shared_invite/zt-uh95ug4n-yX7a~c7VrTEU64tZlX3Djw)
- SIG 组会议:每个月的第一个和第三个周三下午 17:00 - 17:30 会进行一次讨论会议
- 会议链接:有以下两种获取方式
- [openEuler 社区网站](https://openeuler.org/)下的会议日历中查看 `sig-SBC例会` 预定信息。
- 微信小程序搜索 `openEuler`,添加 `OpenAtom openEuler` 小程序,可在其`会议`栏目查看 `sig-SBC例会` 预定信息。
- [会议议题](https://etherpad.openeuler.org/p/sig-SBC-meetings):每次会议前填写要讨论的议题,我们也会从 issue 列表中提取本周讨论的内容。
- [会议记录](https://gitee.com/openeuler/SBC-sig/issues/IB2WFJ):每次会议结束后会议结论会更新在此 issue 中。
- 重要的事说三遍:**欢迎提交 PR欢迎提交 PR欢迎提交 PR**
## 文件说明
#### 特技
>![](documents/public_sys-resources/icon-note.gif) **说明:**
>- 建议直接使用本文档 [最新镜像](#最新镜像) 章节中给出的 openEuler 的树莓派/RK3399等镜像。
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
- [documents](./documents/): 使用文档
- [树莓派](documents/树莓派.md)
- [树莓派快速入门](documents/树莓派.md)
- [刷写镜像](documents/raspberrypi/刷写镜像.md)
- [树莓派使用](documents/raspberrypi/树莓派使用.md)
- [openEuler 镜像的构建](documents/raspberrypi/openEuler镜像的构建.md)
- [交叉编译内核](documents/raspberrypi/交叉编译内核.md)
- [QEMU 启动树莓派](documents/raspberrypi/QEMU启动树莓派.md)
- [瑞芯微等其他开发板](documents/瑞芯微等开发板.md)
- [瑞芯微等快速入门](documents/瑞芯微等开发板.md)
- [openEuler镜像的构建](documents/rockchip/openEuler镜像的构建.md)
- [刷写EMMC镜像](documents/rockchip/刷写EMMC镜像.md)
- [顺序构建](documents/rockchip/顺序构建.md)
- [基于Firefly-SDK编译Firefly-RK3399的内核镜像](documents/rockchip/基于Firefly-SDK编译Firefly-RK3399的内核镜像.md)
- [打包 ITX-RK3588J 一体化烧写镜像](documents/rockchip/打包ITX-RK3588J一体化烧写镜像.md)
- [设置 SELinux](documents/rockchip/设置SELinux.md)
- [使用 Docker 构建镜像](documents/rockchip/使用Docker构建镜像.md)
- [scripts](./scripts/): 镜像构建脚本
- [树莓派](./scripts/raspberrypi): 构建 openEuler 树莓派镜像的脚本
- [快速构建(不编译内核)](scripts/raspberrypi/build-image.sh)
- [主机上构建(编译内核)](scripts/raspberrypi/build-image-common.sh)
- [Docker 容器中构建(编译内核)](scripts/raspberrypi/build-image-docker.sh)
- [瑞芯微等开发板](./scripts/rockchip): 构建 openEuler RK3399 等开发板镜像的脚本
- [一次构建脚本](scripts/rockchip/build.sh)
- [boot 镜像构建脚本](scripts/build_boot.sh)
- [rootfs 镜像构建脚本](scripts/build_rootfs.sh)
- [u-boot 编译脚本](scripts/rockchip/build_u-boot.sh)
- [可启动镜像生成脚本](scripts/rockchip/gen_image.sh)
## 最新镜像
### 树莓派
树莓派镜像的基本信息如下所示。[更多树莓派镜像](documents/raspberrypi/images.md)
<table><thead align="left"><tr>
<th class="cellrowborder" valign="top" width="10%"><p><strong>镜像版本</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>系统用户(密码)</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>发布时间</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>大小</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>内核版本</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>构建文件系统的源仓库</strong></p></th>
</tr></thead>
<tbody>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>271 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>298 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-46.0.0.10</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.09/raspi_img/openEuler-24.09-raspi-aarch64.img.xz">openEuler 24.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/09/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>268 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>235 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.0 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>255 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-217.0.0.22</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP4/raspi_img/openEuler-22.03-LTS-SP4-raspi-aarch64.img.xz">openEuler 22.03 LTS SP4</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>229 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>214 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>330 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-30.0.0.6</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.03-LTS/raspi_img/openEuler-24.03-LTS-raspi-aarch64.img.xz">openEuler 24.03 LTS</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/04</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>244 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
</tbody></table>
### 瑞芯微等其他开发板
镜像的基本信息如下所示:
<table><thead align="left"><tr>
<th class="cellrowborder" valign="top" width="10%"><p><strong>镜像版本</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>系统用户(密码)</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>发布时间</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>大小</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>内核版本</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>构建文件系统的源仓库</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>镜像类型</strong></p></th>
</tr></thead>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-20.03-LTS-rk3399-firefly-aarch64-alpha1.img.xz">openEuler 20.03 LTS Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>288 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo">openEuler 20.03 LTS 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-20.03-LTS-rk3399-firefly-aarch64-alpha1.tar.gz">openEuler 20.03 LTS Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>493 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo">openEuler 20.03 LTS 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>打包后的 EMMC 刷写文件</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-20.03-LTS-RockPi-4A-aarch64-alpha1.img.xz">openEuler 20.03 LTS RockPi-4A</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>295 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo">openEuler 20.03 LTS repository</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-21.09-Firefly-RK3399-aarch64-alpha1.img.xz">openEuler 21.09 Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>420 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-21.09-Firefly-RK3399-aarch64-alpha1.tar.gz">openEuler 21.09 Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>717 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>打包后的 EMMC 刷写文件</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-21.09-RockPi-4A-aarch64-alpha1.img.xz">openEuler 21.09 RockPi-4A</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/12/20</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>717 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3588/openEuler-22.03-LTS-ITX-3588J-aarch64-alpha1.img.xz">openEuler 22.03 Firefly ITX-3588J</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/7/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>494 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo">openEuler 22.03 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3588/openEuler-22.03-LTS-rk3588-xfce.img.xz">openEuler 22.03 Firefly ITX-3588J + XFCE 桌面</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/7/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.9 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo">openEuler 22.03 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
<tbody><tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-rk3399/openEuler-22.03-LTS-SP3-Firefly-RK3399-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 Firefly-RK3399</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/1/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>450 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0</p></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 源仓库</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>压缩后的 RAW 原始镜像</p></td>
</tr>
</tbody></table>

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

View File

@ -0,0 +1,121 @@
# 介绍
本文档主要介绍如何使用 [QEMU](https://www.qemu.org/) 模拟启动 openEuler 的树莓派镜像。
# 实验环境
- 操作系统EulixOS
- 架构x86_64
实验环境相关信息见下图:
![](images/QEMU实验环境.png)
# 安装 QEMU
1. 下载 QEMU
从 [QEMU](https://download.qemu.org/) 下载源码。我们这里下载当前最新版本 [QEMU 6.0.0](https://download.qemu.org/qemu-6.0.0.tar.xz)。执行命令:
`wget https://download.qemu.org/qemu-6.0.0.tar.xz`
2. 解压缩源码
`tar xvJf qemu-6.0.0.tar.xz`
3. 配置 QEMU
`./configure --target-list=arm-softmmu,aarch64-softmmu --enable-debug --enable-sdl`
可以通过命令 `./configure --help` 查看配置相关选项和帮助信息。
如配置失败,需根据提示解决问题。例如,可能需要安装依赖包 `SDL2-devel``meson``dnf -y install SDL2-devel meson`
4. 编译 QEMU
`make`
5. 安装 QEMU
`make install`
6. 查看 QEMU 版本
例如,通过命令 `qemu-system-aarch64 --version` 查看 qemu-system-aarch64 工具的版本。
# 准备 openEuler 镜像等文件
1. 下载 openEuler 的树莓派镜像
openEuler 的树莓派镜像下载链接详见 [SBC SIG 主仓库](https://gitee.com/openeuler/SBC-sig)。这里我们以 openEuler 社区发布的 openEuler 20.03 LTS SP1 版本的树莓派镜像为例,执行命令:
`wget https://repo.openeuler.org/openEuler-20.03-LTS-SP1/raspi_img/aarch64/openEuler-20.03-LTS-SP1-raspi-aarch64.img.xz`
镜像所在路径记为 IMG_DIR。
2. 解压缩镜像
`xz -d openEuler-20.03-LTS-SP1-raspi-aarch64.img.xz`
得到镜像文件 `openEuler-20.03-LTS-SP1-raspi-aarch64.img`
3. 提取 dtb 和 kernel8.img
1. 使用 losetup 将镜像文件虚拟成块设备
`losetup -f --show openEuler-20.03-LTS-SP1-raspi-aarch64.img`
例如,显示结果为 /dev/loop0。
2. 使用 kpartx 创建分区表 /dev/loop0 的设备映射
`kpartx -va /dev/loop0`
得到结果将 /dev/loop0 三个分区挂载了:
```
add map loop0p1 ...
add map loop0p2 ...
add map loop0p3 ...
```
执行 `ls /dev/mapper/loop0p*` 可以看到 openEuler-20.03-LTS-SP1-raspi-aarch64.img 的三个分区:
```
/dev/mapper/loop0p1 /dev/mapper/loop0p2 /dev/mapper/loop0p3
```
3. 挂载镜像的 boot 分区
创建挂载路径,如 /home/xxx/boot则需要执行命令 `mkdir /home/xxx/boot`。下面将该挂载路径记为 `BOOT_DIR`
挂载镜像的 boot 分区到 BOOT_DIR`mount /dev/mapper/loop0p1 BOOT_DIR`
4. 提取 dtb 和 kernel8.img 到 IMG_DIR
```
cd IMG_DIR
cp BOOT_DIR/kernel8.img ./
cp BOOT_DIR/*.dtb ./
```
# QEMU 模拟启动树莓派
1. 查看可供选择模拟的机器
`qemu-system-aarch64 -M help`
我们这里选择 `raspi3`
2. 模拟启动树莓派
```
cd IMG_DIR
qemu-system-aarch64 -M raspi3 -cpu cortex-a53 -m 1024 -kernel kernel8.img -dtb bcm2710-rpi-3-b.dtb -sd openEuler-20.03-LTS-SP1-raspi-aarch64.img -net user,hostfwd=tcp::6022-:22 -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p3 rootwait panic=1" -no-reboot -nographic
```
QEMU 相关命令及其参数可参考 [QEMU Quick Start](https://qemu-project.gitlab.io/qemu/system/quickstart.html)。
启动后根据提示输入用户名密码即可登录。如下图,登录成功后,输出显示当前系统相关信息。`ctl + a` 抬起后再输入 `x`,即可退出 QEMU 模拟器环境。
![](images/QEMU启动树莓派.png)

View File

@ -0,0 +1,79 @@
## Feature Release Log of openEuler 20.03 LTS SP1 Alpha Version (with DDE desktop environment and Chinese input method)
English | [简体中文](./changelog-20.03-LTS-SP1-DDE.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 1.1 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2104.1.0.0017
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2104.1.0.
##### Feature update
- Add Chinese input method.
- Fixed: can not find wireless device in RPi 400.
### 2021-01-19
#### Basic information
- Release date: 2021/01/19
- Size: 1.0 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.5.0.0013
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Feature update
- Install openssh-clients.
- Fixed: missing files' extended attributes.
### 2021-01-06
#### Basic information
- Release date: 2021/01/06
- Size: 1.0 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.5.0.0013
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2012.5.0.
##### Feature update
Extend the root partition automatically on boot.
### 2020-12-29
#### Basic information
- Release date: 2020/12/29
- Size: 1.0 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.3.0.0011
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)

View File

@ -0,0 +1,79 @@
## Feature Release Log of openEuler 20.03 LTS SP1 Alpha Version (with DDE desktop environment and Chinese input method)
[English](./changelog-20.03-LTS-SP1-DDE.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小1.1 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2104.1.0.0017
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2104.1.0。
##### 功能改动
- 添加中文输入法。
- 修复:在树莓派 400 中无法找到无线设备。
### 2021-01-19
#### 基本信息
- 发布时间2021/01/19
- 大小1.0 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.5.0.0013
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 功能改动
- 安装 openssh-clients。
- 修复:缺失文件扩展属性。
### 2021-01-06
#### 基本信息
- 发布时间2021/01/06
- 大小1.0 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.5.0.0013
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2012.5.0。
##### 功能改动
开机自动扩展根分区。
### 2020-12-29
#### 基本信息
- 发布时间2020/12/29
- 大小1.0 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.3.0.0011
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)

View File

@ -0,0 +1,79 @@
## Feature Release Log of openEuler 20.03 LTS SP1 Alpha Version (with UKUI desktop environment and Chinese input method)
English | [简体中文](./changelog-20.03-LTS-SP1-UKUI.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 1.1 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2104.1.0.0017
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2104.1.0.
##### Feature update
- Add Chinese input method.
- Fixed: can not find wireless device in RPi 400.
### 2021-01-19
#### Basic information
- Release date: 2021/01/19
- Size: 1.0 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.5.0.0013
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Feature update
- Install openssh-clients.
- Fixed: missing files' extended attributes.
### 2021-01-06
#### Basic information
- Release date: 2021/01/06
- Size: 1.0 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.5.0.0013
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2012.5.0.
##### Feature update
Extend the root partition automatically on boot.
### 2020-12-29
#### Basic information
- Release date: 2020/12/29
- Size: 1.0 GiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.3.0.0011
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)

View File

@ -0,0 +1,79 @@
## Feature Release Log of openEuler 20.03 LTS SP1 Alpha Version (with UKUI desktop environment and Chinese input method)
[English](./changelog-20.03-LTS-SP1-UKUI.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小1.1 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2104.1.0.0017
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2104.1.0。
##### 功能改动
- 添加中文输入法。
- 修复:在树莓派 400 中无法找到无线设备。
### 2021-01-19
#### 基本信息
- 发布时间2021/01/19
- 大小1.0 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.5.0.0013
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 功能改动
- 安装 openssh-clients。
- 修复:缺失文件扩展属性。
### 2021-01-06
#### 基本信息
- 发布时间2021/01/06
- 大小1.0 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.5.0.0013
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2012.5.0。
##### 功能改动
开机自动扩展根分区。
### 2020-12-29
#### 基本信息
- 发布时间2020/12/29
- 大小1.0 GiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.3.0.0011
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)

View File

@ -0,0 +1,78 @@
## Feature Release Log of openEuler 20.03 LTS SP1 Alpha Version
English | [简体中文](./changelog-20.03-LTS-SP1.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 236 MiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2104.1.0.0017
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2104.1.0.
##### Feature update
Fixed: can not find wireless device in RPi 400.
### 2021-01-19
#### Basic information
- Release date: 2021/01/19
- Size: 234 MiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.5.0.0013
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Feature update
- Install openssh-clients.
- Fixed: missing files' extended attributes.
### 2021-01-06
#### Basic information
- Release date: 2021/01/06
- Size: 239 MiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.5.0.0013
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2012.5.0.
##### Feature update
Extend the root partition automatically on boot.
### 2020-12-29
#### Basic information
- Release date: 2020/12/29
- Size: 238 MiB
- OS version: openEuler 20.03 LTS SP1
- Kernel version: 4.19.90-2012.3.0.0011
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP1 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP1 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)

View File

@ -0,0 +1,78 @@
## Feature Release Log of openEuler 20.03 LTS SP1 Alpha Version
[English](./changelog-20.03-LTS-SP1.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小236 MiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2104.1.0.0017
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2104.1.0。
##### 功能改动
修复:在树莓派 400 中无法找到无线设备。
### 2021-01-19
#### 基本信息
- 发布时间2021/01/19
- 大小234 MiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.5.0.0013
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 功能改动
- 安装 openssh-clients。
- 修复:缺失文件扩展属性。
### 2021-01-06
#### 基本信息
- 发布时间2021/01/06
- 大小239 MiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.5.0.0013
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2012.5.0。
##### 功能改动
开机自动扩展根分区。
### 2020-12-29
#### 基本信息
- 发布时间2020/12/29
- 大小238 MiB
- 操作系统版本openEuler 20.03 LTS SP1
- 内核版本4.19.90-2012.3.0.0011
- 固件来源:[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 SP1 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP1 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version (with DDE desktop environment and Chinese input method)
English | [简体中文](./changelog-20.03-LTS-SP2-DDE.md)
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 1.2 GiB
- OS version: openEuler 20.03 LTS SP2
- Kernel version: 4.19.90-2109.7.0.0031
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP2 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP2 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version (with DDE desktop environment and Chinese input method)
[English](./changelog-20.03-LTS-SP2-DDE.en.md) | 简体中文
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小1.2 GiB
- 操作系统版本openEuler 20.03 LTS SP2
- 内核版本4.19.90-2109.7.0.0031
- 固件来源:[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 SP2 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP2 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version (with UKUI desktop environment and Chinese input method)
English | [简体中文](./changelog-20.03-LTS-SP2-UKUI.md)
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 1.2 GiB
- OS version: openEuler 20.03 LTS SP2
- Kernel version: 4.19.90-2109.7.0.0031
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP2 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP2 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version (with UKUI desktop environment and Chinese input method)
[English](./changelog-20.03-LTS-SP2-UKUI.en.md) | 简体中文
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小1.2 GiB
- 操作系统版本openEuler 20.03 LTS SP2
- 内核版本4.19.90-2109.7.0.0031
- 固件来源:[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 SP2 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP2 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version (with Xfce desktop environment and Chinese input method)
English | [简体中文](./changelog-20.03-LTS-SP2-Xfce.md)
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 1.9 GiB
- OS version: openEuler 20.03 LTS SP2
- Kernel version: 4.19.90-2109.7.0.0031
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP2 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP2 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version (with Xfce desktop environment and Chinese input method)
[English](./changelog-20.03-LTS-SP2-Xfce.en.md) | 简体中文
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小1.9 GiB
- 操作系统版本openEuler 20.03 LTS SP2
- 内核版本4.19.90-2109.7.0.0031
- 固件来源:[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 SP2 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP2 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version
English | [简体中文](./changelog-20.03-LTS-SP2.md)
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 258 MiB
- OS version: openEuler 20.03 LTS SP2
- Kernel version: 4.19.90-2109.7.0.0031
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS SP2 repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS SP2 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 20.03 LTS SP2 Alpha Version
[English](./changelog-20.03-LTS-SP2.en.md) | 简体中文
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小258 MiB
- 操作系统版本openEuler 20.03 LTS SP2
- 内核版本4.19.90-2109.7.0.0031
- 固件来源:[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 SP2 每日构建的源仓库](http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS SP2 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo)

View File

@ -0,0 +1,181 @@
## Feature Release Log of openEuler 20.03 LTS Alpha Version
English | [简体中文](./changelog-20.03-LTS.md)
### 2021-01-19
#### Basic information
- Release date: 2021/01/19
- Size: 212 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2101.1.0
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2101.1.0.
##### Feature update
- Install openssh-clients.
- Fixed: missing files' extended attributes.
### 2021-01-06
#### Basic information
- Release date: 2021/01/06
- Size: 217 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2012.5.0
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### Updates
##### Feature update
Extend the root partition automatically on boot.
### 2020-12-29
#### Basic information
- Release date: 2020/12/29
- Size: 217 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2012.5.0
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository built daily](http://119.3.219.20:82/openEuler:/20.03:/LTS/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2012.5.0.
##### Feature update
- Install and start haveged service on boot.
- Fixed: fail to activate swap on boot.
### 2020-11-17
#### Basic information
- Release date: 2020/11/17
- Size: 224 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2010.2.0
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2010.2.0.
### 2020-10-27
#### Basic information
- Release date: 2020/10/27
- Size: 224 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2009.3.0.0003
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2009.3.0.
### 2020-08-10
#### Basic information
- Release date: 2020/08/10
- Size: 259 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2005.2.0.0002
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository](http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.90-2005.2.0.
### 2020-05-11
#### Basic information
- Release date: 2020/05/11
- Size: 245 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2003.4.0.0036
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository](http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)
#### Updates
##### Bluetooth
Start related services of bluetooth and bind Bluetooth devices by default.
### 2020-04-27
#### Basic information
- Release date: 2020/04/27
- Size: 240 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2003.4.0.0036
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository](http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)
#### Updates
##### Default time zone
Set default time zone as CST (UTC+8).
##### Hostname
Set hostname as openEuler.
##### Audio
Enable audio by default.
##### HCI UART protocol Broadcom
Set CONFIG_SERIAL_DEV_CTRL_TTYPORT and CONFIG_BT_HCIUART_BCM as 'y' to compile support for Broadcom protocol. The Broadcom protocol support enables Bluetooth HCI over serial port interface for Broadcom Bluetooth controllers.
### 2020-04-15
#### Basic information
- Release date: 2020/04/15
- Size: 241 MiB
- OS version: openEuler 20.03 LTS
- Kernel version: 4.19.90-2003.4.0.0036
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.03 LTS repository](http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/)
- Repository inside the image: [openEuler 20.03 LTS repository](https://gitee.com/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)

View File

@ -0,0 +1,181 @@
## Feature Release Log of openEuler 20.03 LTS Alpha Version
[English](./changelog-20.03-LTS.en.md) | 简体中文
### 2021-01-19
#### 基本信息
- 发布时间2021/01/19
- 大小212 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2101.1.0
- 固件来源:[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://119.3.219.20:82/openEuler:/20.03:/LTS/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2101.1.0。
##### 功能改动
- 安装 openssh-clients。
- 修复:缺失文件扩展属性。
### 2021-01-06
#### 基本信息
- 发布时间2021/01/06
- 大小217 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2012.5.0
- 固件来源:[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://119.3.219.20:82/openEuler:/20.03:/LTS/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### 更新说明
##### 功能改动
开机自动扩展根分区。
### 2020-12-29
#### 基本信息
- 发布时间2020/12/29
- 大小217 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2012.5.0
- 固件来源:[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://119.3.219.20:82/openEuler:/20.03:/LTS/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 20.03 LTS 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2012.5.0。
##### 功能改动
- 安装并开机启动 haveged 服务。
- 修复:树莓派开机激活交换分区失败。
### 2020-11-17
#### 基本信息
- 发布时间2020/11/17
- 大小224 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2010.2.0
- 固件来源:[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 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
- 镜像内置源仓库:[openEuler 20.03 LTS 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2010.2.0。
### 2020-10-27
#### 基本信息
- 发布时间2020/10/27
- 大小224 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2009.3.0.0003
- 固件来源:[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 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
- 镜像内置源仓库:[openEuler 20.03 LTS 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2009.3.0。
### 2020-08-10
#### 基本信息
- 发布时间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/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.90-2005.2.0。
### 2020-05-11
#### 基本信息
- 发布时间2020/05/11
- 大小245 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2003.4.0.0036
- 固件来源:[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/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)
#### 更新说明
##### 蓝牙
默认启动蓝牙相关服务,并绑定蓝牙设备。
### 2020-04-27
#### 基本信息
- 发布时间2020/04/27
- 大小240 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2003.4.0.0036
- 固件来源:[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/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)
#### 更新说明
##### 默认时区
设置默认时区为中国标准时间 (东八区)。
##### 主机名
设置主机名hostname为 openEuler。
##### 音频
默认开启音频。
##### HCI UART protocol Broadcom
设置 CONFIG_SERIAL_DEV_CTRL_TTYPORT 和 CONFIG_BT_HCIUART_BCM 为 'y',将 Broadcom 协议编译进内核。Broadcom 协议支持为 Broadcom 蓝牙控制器启用基于串行端口接口的 Bluetooth HCI。
### 2020-04-15
#### 基本信息
- 发布时间2020/04/15
- 大小241 MiB
- 操作系统版本openEuler 20.03 LTS
- 内核版本4.19.90-2003.4.0.0036
- 固件来源:[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/openeuler/raspberrypi/blob/master/scripts/config/openEuler-20.03-LTS.repo)

View File

@ -0,0 +1,107 @@
## Feature Release Log of openEuler 20.09 Alpha Version (with Xfce desktop environment)
English | [简体中文](./changelog-20.09-Xfce.md)
### 2021-01-19
#### Basic information
- Release date: 2021/01/19
- Size: 903 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.138-2008.1.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
- Repository inside the image: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Feature update
- Install openssh-clients.
- Fixed: missing files' extended attributes.
### 2021-01-06
#### Basic information
- Release date: 2021/01/06
- Size: 922 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.138-2008.1.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
- Repository inside the image: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Feature update
Extend the root partition automatically on boot.
### 2020-12-31
#### Basic information
- Release date: 2020/12/31
- Size: 923 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.138-2008.1.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
- Repository inside the image: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Feature update
Install xfce4-screensaver, which enables the screen lock feature.
### 2020-12-29
#### Basic information
- Release date: 2020/12/29
- Size: 876 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.138-2008.1.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
- Repository inside the image: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Feature update
- Install and start haveged service on boot.
- Fixed: fail to activate swap on boot.
### 2020-11-17
#### Basic information
- Release date: 2020/11/17
- Size: 875 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.138-2008.1.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
- Repository inside the image: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Feature update
Remove xfce4-screensaver, which means that the image does not have the screen lock feature.
### 2020-10-27
#### Basic information
- Release date: 2020/10/27
- Size: 875 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.138-2008.1.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)
- Repository inside the image: [openEuler 20.09 repository](https://repo.openeuler.org/openEuler-20.09/)

View File

@ -0,0 +1,107 @@
## Feature Release Log of openEuler 20.09 Alpha Version (with Xfce desktop environment)
[English](./changelog-20.09-Xfce.en.md) | 简体中文
### 2021-01-19
#### 基本信息
- 发布时间2021/01/19
- 大小903 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.138-2008.1.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 源仓库](https://repo.openeuler.org/openEuler-20.09/)
- 镜像内置源仓库:[openEuler 20.09 源仓库](https://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 功能改动
- 安装 openssh-clients。
- 修复:文件扩展属性缺失。
### 2021-01-06
#### 基本信息
- 发布时间2021/01/06
- 大小922 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.138-2008.1.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 源仓库](https://repo.openeuler.org/openEuler-20.09/)
- 镜像内置源仓库:[openEuler 20.09 源仓库](https://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 功能改动
开机自动扩展根分区。
### 2020-12-31
#### 基本信息
- 发布时间2020/12/31
- 大小923 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.138-2008.1.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 源仓库](https://repo.openeuler.org/openEuler-20.09/)
- 镜像内置源仓库:[openEuler 20.09 源仓库](https://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 功能改动
安装 xfce4-screensaver添加锁屏功能。
### 2020-12-29
#### 基本信息
- 发布时间2020/12/29
- 大小876 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.138-2008.1.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 源仓库](https://repo.openeuler.org/openEuler-20.09/)
- 镜像内置源仓库:[openEuler 20.09 源仓库](https://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 功能改动
- 安装并开机启动 haveged 服务。
- 修复:树莓派开机激活交换分区失败。
### 2020-11-17
#### 基本信息
- 发布时间2020/11/17
- 大小875 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.138-2008.1.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 源仓库](https://repo.openeuler.org/openEuler-20.09/)
- 镜像内置源仓库:[openEuler 20.09 源仓库](https://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 功能改动
删除 xfce4-screensaver 软件包,镜像默认无锁屏功能。
### 2020-10-27
#### 基本信息
- 发布时间2020/10/27
- 大小875 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.138-2008.1.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 源仓库](https://repo.openeuler.org/openEuler-20.09/)
- 镜像内置源仓库:[openEuler 20.09 源仓库](https://repo.openeuler.org/openEuler-20.09/)

View File

@ -0,0 +1,149 @@
## Feature Release Log of openEuler 20.09 Alpha Version
English | [简体中文](./changelog-20.09.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 236 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2104.1.0.0010
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- Repository inside the image: [openEuler 20.09 repository](http://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.140-2104.1.0.
##### Feature update
Fixed: can not find wireless device in RPi 400.
### 2021-01-19
#### Basic information
- Release date: 2021/01/19
- Size: 236 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2101.1.0.0007
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- Repository inside the image: [openEuler 20.09 repository](http://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.140-2101.1.0.
##### Feature update
- Install openssh-clients.
- Fixed: missing files' extended attributes.
### 2021-01-06
#### Basic information
- Release date: 2021/01/06
- Size: 243 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2012.2.0.0006
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- Repository inside the image: [openEuler 20.09 repository](http://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Feature update
Extend the root partition automatically on boot.
### 2020-12-29
#### Basic information
- Release date: 2020/12/29
- Size: 242 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2012.2.0.0006
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- Repository inside the image: [openEuler 20.09 repository](http://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.140-2012.2.0.
##### Feature update
- Install and start haveged service on boot.
- Fixed: fail to activate swap on boot.
### 2020-11-17
#### Basic information
- Release date: 2020/11/17
- Size: 239 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2011.1.0.0003
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- Repository inside the image: [openEuler 20.09 repository](http://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.140-2011.1.0.
##### Firmware
Update to the latest version of firmware:
- [firmware](https://github.com/raspberrypi/firmware): [1.20201022](https://github.com/raspberrypi/firmware/archive/1.20201022/firmware-1.20201022.tar.gz)
- [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware): [latest version](https://github.com/RPi-Distro/bluez-firmware/archive/a4e08822e3f24a6211f6ac94bc98b7ef87700c70/bluez-firmware-a4e08822e3f24a6211f6ac94bc98b7ef87700c70.tar.gz) (latest commitid [a4e08822e3f24a6211f6ac94bc98b7ef87700c70](https://github.com/RPi-Distro/bluez-firmware/commit/a4e08822e3f24a6211f6ac94bc98b7ef87700c70))
- [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree): [latest version](https://github.com/RPi-Distro/firmware-nonfree/archive/5113681d6dcd46581a1882cbeb3d5cf1ddbf7676/firmware-nonfree-5113681d6dcd46581a1882cbeb3d5cf1ddbf7676.tar.gz) (latest commitid [5113681d6dcd46581a1882cbeb3d5cf1ddbf7676](https://github.com/RPi-Distro/firmware-nonfree/commit/5113681d6dcd46581a1882cbeb3d5cf1ddbf7676))
##### Bluetooth
Update to [the latest version](https://github.com/RPi-Distro/pi-bluetooth/archive/a69d8f54901aab31f2f47e0cc4f9d2879e183f1d/pi-bluetooth-a69d8f54901aab31f2f47e0cc4f9d2879e183f1d.tar.gz) of [pi-bluetooth](https://github.com/RPi-Distro/pi-bluetooth).
### 2020-10-27
#### Basic information
- Release date: 2020/10/27
- Size: 238 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2009.4.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- Repository inside the image: [openEuler 20.09 repository](http://repo.openeuler.org/openEuler-20.09/)
#### Updates
##### Kernel
Update to the latest stable version of openEuler: 4.19.140-2009.4.0.
### 2020-09-04
#### Basic information
- Release date: 2020/09/04
- Size: 237 MiB
- OS version: openEuler 20.09
- Kernel version: 4.19.140-2008.3.0.0001
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 20.09 repository built daily](http://119.3.219.20:82/openEuler:/Mainline/standard_aarch64/)
- Repository inside the image: [openEuler 20.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)

View File

@ -0,0 +1,149 @@
## Feature Release Log of openEuler 20.09 Alpha Version
[English](./changelog-20.09.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小236 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.140-2104.1.0.0010
- 固件来源:[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 每日构建的源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- 镜像内置源仓库:[openEuler 20.09 源仓库](http://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.140-2104.1.0。
##### 功能改动
修复:在树莓派 400 中无法找到无线设备。
### 2021-01-19
#### 基本信息
- 发布时间2021/01/19
- 大小236 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.140-2101.1.0.0007
- 固件来源:[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 每日构建的源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- 镜像内置源仓库:[openEuler 20.09 源仓库](http://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.140-2101.1.0。
##### 功能改动
- 安装 openssh-clients。
- 修复:缺失文件扩展属性。
### 2021-01-06
#### 基本信息
- 发布时间2021/01/06
- 大小243 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.140-2012.2.0.0006
- 固件来源:[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 每日构建的源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- 镜像内置源仓库:[openEuler 20.09 源仓库](http://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 功能改动
开机自动扩展根分区。
### 2020-12-29
#### 基本信息
- 发布时间2020/12/29
- 大小242 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.140-2012.2.0.0006
- 固件来源:[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 每日构建的源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- 镜像内置源仓库:[openEuler 20.09 源仓库](http://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.140-2012.2.0。
##### 功能改动
- 安装并开机启动 haveged 服务。
- 修复:树莓派开机激活交换分区失败。
### 2020-11-17
#### 基本信息
- 发布时间2020/11/17
- 大小239 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.140-2011.1.0.0003
- 固件来源:[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 每日构建的源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- 镜像内置源仓库:[openEuler 20.09 源仓库](http://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.140-2011.1.0.0003。
##### 固件
更新到固件最新版本:
- [firmware](https://github.com/raspberrypi/firmware) 最新版本 [1.20201022](https://github.com/raspberrypi/firmware/archive/1.20201022/firmware-1.20201022.tar.gz)
- [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware) [最新版本](https://github.com/RPi-Distro/bluez-firmware/archive/a4e08822e3f24a6211f6ac94bc98b7ef87700c70/bluez-firmware-a4e08822e3f24a6211f6ac94bc98b7ef87700c70.tar.gz)(最新提交的 commitid[a4e08822e3f24a6211f6ac94bc98b7ef87700c70](https://github.com/RPi-Distro/bluez-firmware/commit/a4e08822e3f24a6211f6ac94bc98b7ef87700c70)
- [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree) [最新版本](https://github.com/RPi-Distro/firmware-nonfree/archive/5113681d6dcd46581a1882cbeb3d5cf1ddbf7676/firmware-nonfree-5113681d6dcd46581a1882cbeb3d5cf1ddbf7676.tar.gz)(最新提交的 commitid[5113681d6dcd46581a1882cbeb3d5cf1ddbf7676](https://github.com/RPi-Distro/firmware-nonfree/commit/5113681d6dcd46581a1882cbeb3d5cf1ddbf7676)
##### 蓝牙
更新到 [pi-bluetooth](https://github.com/RPi-Distro/pi-bluetooth) 的[最新版本](https://github.com/RPi-Distro/pi-bluetooth/archive/a69d8f54901aab31f2f47e0cc4f9d2879e183f1d/pi-bluetooth-a69d8f54901aab31f2f47e0cc4f9d2879e183f1d.tar.gz)(最新提交的 commitid[a69d8f54901aab31f2f47e0cc4f9d2879e183f1d](https://github.com/RPi-Distro/pi-bluetooth/commit/a69d8f54901aab31f2f47e0cc4f9d2879e183f1d))。
### 2020-10-27
#### 基本信息
- 发布时间2020/10/27
- 大小238 MiB
- 操作系统版本openEuler 20.09
- 内核版本4.19.140-2009.4.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 每日构建的源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo)
- 镜像内置源仓库:[openEuler 20.09 源仓库](http://repo.openeuler.org/openEuler-20.09/)
#### 更新说明
##### 内核
更新到 openEuler 最新稳定版本 4.19.140-2009.4.0。
### 2020-09-04
#### 基本信息
- 发布时间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)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version (with DDE desktop environment and Chinese input method)
English | [简体中文](./changelog-21.03-DDE.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 1.0 GiB
- OS version: openEuler 21.03
- Kernel version: 5.10.0-4.18.0.9
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.03 repository built daily](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.03 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version (with DDE desktop environment and Chinese input method)
[English](./changelog-21.03-DDE.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小1.0 GiB
- 操作系统版本openEuler 21.03
- 内核版本5.10.0-4.18.0.9
- 固件来源:[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 21.03 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.03 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version (with UKUI desktop environment and Chinese input method)
English | [简体中文](./changelog-21.03-UKUI.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 1.1 GiB
- OS version: openEuler 21.03
- Kernel version: 5.10.0-4.18.0.9
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.03 repository built daily](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.03 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version (with UKUI desktop environment and Chinese input method)
[English](./changelog-21.03-UKUI.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小1.1 GiB
- 操作系统版本openEuler 21.03
- 内核版本5.10.0-4.18.0.9
- 固件来源:[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 21.03 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.03 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version (with Xfce desktop environment and Chinese input method)
English | [简体中文](./changelog-21.03-Xfce.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 1.8 GiB
- OS version: openEuler 21.03
- Kernel version: 5.10.0-4.18.0.9
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.03 repository built daily](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.03 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version (with Xfce desktop environment and Chinese input method)
[English](./changelog-21.03-Xfce.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小1.8 GiB
- 操作系统版本openEuler 21.03
- 内核版本5.10.0-4.18.0.9
- 固件来源:[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 21.03 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.03 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version
English | [简体中文](./changelog-21.03.md)
### 2021-04-12
#### Basic information
- Release date: 2021/04/12
- Size: 220 MiB
- OS version: openEuler 21.03
- Kernel version: 5.10.0-4.18.0.9
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.03 repository built daily](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.03 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,15 @@
## Feature Release Log of openEuler 21.03 Alpha Version
[English](./changelog-21.03.en.md) | 简体中文
### 2021-04-12
#### 基本信息
- 发布时间2021/04/12
- 大小220 MiB
- 操作系统版本openEuler 21.03
- 内核版本5.10.0-4.18.0.9
- 固件来源:[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 21.03 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.03 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo)

View File

@ -0,0 +1,35 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with DDE desktop environment and Chinese input method)
English | [简体中文](./changelog-21.09-DDE.md)
### 2022-01-13
#### Basic information
- Release date: 2022/01/13
- Size: 1.2 GiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### Updates
##### Feature update
- Fixed: time synchronization server is set incorrectly.
- Fixed: the baseurl of EPOL repository is wrong.
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 1.2 GiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with DDE desktop environment and Chinese input method)
[English](./changelog-21.09-DDE.en.md) | 简体中文
### 2022-01-13
#### 基本信息
- 发布时间2022/01/13
- 大小1.2 GiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### 更新说明
##### 功能改动
- 修复:时钟同步服务器设置错误。
- 修复EPOL 软件源地址错误。
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小1.2 GiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,35 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with LXDE desktop environment and Chinese input method)
English | [简体中文](./changelog-21.09-LXDE.md)
### 2022-01-07
#### Basic information
- Release date: 2022/01/07
- Size: 548 MiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### Updates
##### Feature update
- Fixed: time synchronization server is set incorrectly.
- Fixed: the baseurl of EPOL repository is wrong.
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 548 MiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with LXDE desktop environment and Chinese input method)
[English](./changelog-21.09-LXDE.en.md) | 简体中文
### 2022-01-07
#### 基本信息
- 发布时间2022/01/07
- 大小548 MiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### 更新说明
##### 功能改动
- 修复:时钟同步服务器设置错误。
- 修复EPOL 软件源地址错误。
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小548 MiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,35 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with UKUI desktop environment and Chinese input method)
English | [简体中文](./changelog-21.09-UKUI.md)
### 2022-01-07
#### Basic information
- Release date: 2022/01/07
- Size: 1.3 GiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### Updates
##### Feature update
- Fixed: time synchronization server is set incorrectly.
- Fixed: the baseurl of EPOL repository is wrong.
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 1.3 GiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with UKUI desktop environment and Chinese input method)
[English](./changelog-21.09-UKUI.en.md) | 简体中文
### 2022-01-07
#### 基本信息
- 发布时间2022/01/07
- 大小1.3 GiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### 更新说明
##### 功能改动
- 修复:时钟同步服务器设置错误。
- 修复EPOL 软件源地址错误。
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小1.3 GiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with Xfce desktop environment and Chinese input method)
English | [简体中文](./changelog-21.09-Xfce.md)
### 2022-01-07
#### Basic information
- Release date: 2022/01/07
- Size: 1.9 GiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### Updates
##### Feature update
- Fixed: time synchronization server is set incorrectly.
- Fixed: the baseurl of EPOL repository is wrong.
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 1.9 GiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version (with Xfce desktop environment and Chinese input method)
[English](./changelog-21.09-Xfce.en.md) | 简体中文
### 2022-01-07
#### 基本信息
- 发布时间2022/01/07
- 大小1.9 GiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### 更新说明
##### 功能改动
- 修复:时钟同步服务器设置错误。
- 修复EPOL 软件源地址错误。
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小1.9 GiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version
English | [简体中文](./changelog-21.09.md)
### 2022-01-07
#### Basic information
- Release date: 2022/01/07
- Size: 241 MiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### Updates
##### Feature update
- Fixed: time synchronization server is set incorrectly.
- Fixed: the baseurl of EPOL repository is wrong.
### 2021-10-18
#### Basic information
- Release date: 2021/10/18
- Size: 242 MiB
- OS version: openEuler 21.09
- Kernel version: 5.10.0-5.10.0.8
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
- Repository of rootfs: [openEuler 21.09 repository built daily](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- Repository inside the image: [openEuler 21.09 repository](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,34 @@
## Feature Release Log of openEuler 21.09 Alpha Version
[English](./changelog-21.09.en.md) | 简体中文
### 2022-01-07
#### 基本信息
- 发布时间2022/01/07
- 大小241 MiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)
#### 更新说明
##### 功能改动
- 修复:时钟同步服务器设置错误。
- 修复EPOL 软件源地址错误。
### 2021-10-18
#### 基本信息
- 发布时间2021/10/18
- 大小242 MiB
- 操作系统版本openEuler 21.09
- 内核版本5.10.0-5.10.0.8
- 固件来源:[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 21.09 每日构建的源仓库](http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/)
- 镜像内置源仓库:[openEuler 21.09 源仓库](https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo)

View File

@ -0,0 +1,830 @@
## images
English | [简体中文](./images.md)
Basic information of the image is as follows:
<table><thead align="left"><tr>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Version</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>System user(password)</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Change log</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Release date</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Size</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Kernel version</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>Repository of rootfs</strong></p></th>
</tr></thead>
<tbody>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>271 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>298 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-46.0.0.10</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.09/raspi_img/openEuler-24.09-raspi-aarch64.img.xz">openEuler 24.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/09/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>268 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>235 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.0 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>255 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-217.0.0.22</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP4/raspi_img/openEuler-22.03-LTS-SP4-raspi-aarch64.img.xz">openEuler 22.03 LTS SP4</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>229 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>214 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>330 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-30.0.0.6</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.03-LTS/raspi_img/openEuler-24.03-LTS-raspi-aarch64.img.xz">openEuler 24.03 LTS</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/04</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>244 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>236 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>257 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.20</p></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>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP3/raspi_img/openEuler-22.03-LTS-SP3-raspi-aarch64.img.xz">openEuler 22.03 LTS SP3</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/02</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>229 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-raspberrypi/images/openEuler-23.09-raspi-aarch64.img.xz">openEuler 23.09 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/12/25</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>244 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.4.0-10.1.0.1</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.09/generic.repo">openEuler 23.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>253 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>274 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP2/raspi_img/openEuler-22.03-LTS-SP2-raspi-aarch64.img.xz">openEuler 22.03 LTS SP2</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/06/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>228 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-raspi-aarch64-alpha1.img.xz">openEuler 23.03 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>231 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-raspi-aarch64-alpha1.img.xz">openEuler 23.03 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>231 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 23.03 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-DDE-raspi-aarch64-alpha2.img.xz">openEuler 23.03 alpha2 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 23.03 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 23.03 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>333 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.3</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-23.03/raspi_img/openEuler-23.03-raspi-aarch64.img.xz">openEuler 23.03</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/03/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>223 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>240 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>266 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.19</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP1/raspi_img/openEuler-22.03-LTS-SP1-raspi-aarch64.img.xz">openEuler 22.03 LTS SP1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/12/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>234 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-raspi-aarch64-alpha1.img.xz">openEuler 22.09 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>237 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.09 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.09 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.09 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.09 alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>259 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.14</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.09/raspi_img/openEuler-22.09-raspi-aarch64.img.xz">openEuler 22.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/09/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>237 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.09/generic.repo">openEuler 22.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>234 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-LXDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS alpha1 (LXDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>655 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS alpha1 (EFI boot)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>568 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.14</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS/raspi_img/openEuler-22.03-LTS-raspi-aarch64.img.xz">openEuler 22.03 LTS</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/01</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>235 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS/generic.repo">openEuler 22.03 LTS repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>234 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-DDE-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.03-LTS-SP3/raspi_img/openEuler-20.03-LTS-SP3-raspi-aarch64.img.xz">openEuler 20.03 LTS SP3</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/01</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>259 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP3/generic.repo">openEuler 20.03 LTS SP3 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-raspi-aarch64-alpha2.img.xz">openEuler 21.09 alpha2</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>241 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-UKUI-raspi-aarch64-alpha2.img.xz">openEuler 21.09 alpha2 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-UKUI.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-DDE-raspi-aarch64-alpha2.img.xz">openEuler 21.09 alpha2 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-DDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/13</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-Xfce-raspi-aarch64-alpha2.img.xz">openEuler 21.09 alpha2 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-Xfce.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.9 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-LXDE-raspi-aarch64-alpha2.img.xz">openEuler 21.09 alpha2 (LXDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-LXDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>548 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-raspi-aarch64-alpha1.img.xz">openEuler 21.09 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>242 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 21.09 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-UKUI.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 21.09 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-DDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 21.09 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-Xfce.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-LXDE-raspi-aarch64-alpha1.img.xz">openEuler 21.09 alpha1 (LXDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-LXDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>548 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-21.09/raspi_img/openEuler-21.09-raspi-aarch64.img.xz">openEuler 21.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/09/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>243 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>258 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2-UKUI.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-DDE-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2-DDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2-Xfce.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.9 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.03-LTS-SP2/raspi_img/openEuler-20.03-LTS-SP2-raspi-aarch64.img.xz">openEuler 20.03 LTS SP2</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/07/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>264 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2106.3.0.0023</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo">openEuler 20.03 LTS SP2 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-raspi-aarch64-alpha1.img.xz">openEuler 21.03 alpha1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>220 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 21.03 alpha1 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03-UKUI.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-DDE-raspi-aarch64-alpha1.img.xz">openEuler 21.03 alpha1 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03-DDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.0 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 21.03 alpha1 (Xfce desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03-Xfce.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-21.03/raspi_img/openEuler-21.03-raspi-aarch64.img.xz">openEuler 21.03</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/01</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>237 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.17.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo">openEuler 21.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP1-raspi-aarch64-alpha4.img.xz">openEuler 20.03 LTS SP1 alpha4</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP1.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>236 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2104.1.0.0017</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/">openEuler 20.03 LTS SP1 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP1-UKUI-raspi-aarch64-alpha4.img.xz">openEuler 20.03 LTS SP1 alpha4 (UKUI desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP1-UKUI.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2104.1.0.0017</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/">openEuler 20.03 LTS SP1 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP1-DDE-raspi-aarch64-alpha4.img.xz">openEuler 20.03 LTS SP1 alpha4 (DDE desktop and Chinese input method)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP1-DDE.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2104.1.0.0017</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/">openEuler 20.03 LTS SP1 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.03-LTS-SP1/raspi_img/aarch64/openEuler-20.03-LTS-SP1-raspi-aarch64.img.xz">openEuler 20.03 LTS SP1</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2020/12/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>266 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2012.3.0.0011</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo">openEuler 20.03 LTS SP1 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.09-raspi-aarch64-alpha6.img.xz">openEuler 20.09 alpha6</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.09.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>236 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.140-2104.1.0.0010</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo">openEuler 20.09 repository built daily</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.09-Xfce-raspi-aarch64-alpha6.img.xz">openEuler 20.09 alpha6 (with Xfce desktop environment)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>root (openeuler)</li><li>pi (raspberry)</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.09-Xfce.en.md">ChangeLog</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/01/19</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>903 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.138-2008.1.0.0001</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.09/">openEuler 20.09 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.09/raspi_img/aarch64/openEuler-20.09-raspi-aarch64.img.xz">openEuler 20.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>root (openeuler)</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2020/09/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>259 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.138-2008.1.0.0001</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.09/">openEuler 20.09 repository</a></td>
</tr>
</tbody></table>
Other information:
- Firmware source: [firmware](https://github.com/raspberrypi/firmware), [bluez-firmware](https://github.com/RPi-Distro/bluez-firmware), [firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)

View File

@ -0,0 +1,820 @@
## 镜像
[English](./images.en.md) | 简体中文
镜像的基本信息如下所示:
<table><thead align="left"><tr>
<th class="cellrowborder" valign="top" width="10%"><p><strong>镜像版本</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>系统用户(密码)</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>更新日志</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>发布时间</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>大小</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>内核版本</strong></p></th>
<th class="cellrowborder" valign="top" width="10%"><p><strong>构建文件系统的源仓库</strong></p></th>
</tr></thead>
<tbody>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>271 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.09-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.09 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/10/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>298 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-46.0.0.10</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.09/raspi_img/openEuler-24.09-raspi-aarch64.img.xz">openEuler 24.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/09/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>268 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-45.0.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.09/generic.repo">openEuler 24.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>235 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.0 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP4-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP4 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/07/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>255 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-217.0.0.22</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP4/raspi_img/openEuler-22.03-LTS-SP4-raspi-aarch64.img.xz">openEuler 22.03 LTS SP4</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>229 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-209.0.0.21</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP4/generic.repo">openEuler 22.03 LTS SP4 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>214 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-DDE-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.7 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://mirror.iscas.ac.cn/eulixos/others/openeuler-raspberrypi/images/openEuler-24.03-LTS-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 24.03 LTS 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/24</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>330 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-30.0.0.6</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-24.03-LTS/raspi_img/openEuler-24.03-LTS-raspi-aarch64.img.xz">openEuler 24.03 LTS</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/06/04</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>244 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.6.0-26.0.0.4</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-24.03-LTS/generic.repo">openEuler 24.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>236 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP3-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP3 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/08</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>257 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.20</p></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 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP3/raspi_img/openEuler-22.03-LTS-SP3-raspi-aarch64.img.xz">openEuler 22.03 LTS SP3</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2024/01/02</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>229 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-182.0.0.19</p></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 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://eulixos.com/repo/others/openeuler-raspberrypi/images/openEuler-23.09-raspi-aarch64.img.xz">openEuler 23.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/12/25</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>244 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.4.0-10.1.0.1</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.09/generic.repo">openEuler 23.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>253 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP2-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP2 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/11/06</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>274 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP2/raspi_img/openEuler-22.03-LTS-SP2-raspi-aarch64.img.xz">openEuler 22.03 LTS SP2</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/06/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>228 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-153.12.0.17</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP2/generic.repo">openEuler 22.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-raspi-aarch64-alpha1.img.xz">openEuler 23.03 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>231 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 23.03 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.5 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-DDE-raspi-aarch64-alpha2.img.xz">openEuler 23.03 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.6 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 23.03 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-23.03-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 23.03 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/04/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>333 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.3</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-23.03/raspi_img/openEuler-23.03-raspi-aarch64.img.xz">openEuler 23.03</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/03/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>223 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>6.1.19-1.0.0.2</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-23.03/generic.repo">openEuler 23.03 repository</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>240 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-SP1-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS SP1 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2023/01/09</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>266 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.19</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS-SP1/raspi_img/openEuler-22.03-LTS-SP1-raspi-aarch64.img.xz">openEuler 22.03 LTS SP1</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/12/29</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>234 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-136.12.0.18</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS-SP1/generic.repo">openEuler 22.03 LTS SP1 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-raspi-aarch64-alpha1.img.xz">openEuler 22.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>237 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.09 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.09 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.09 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.09-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.09 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/10/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>259 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.14</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.09/standard_aarch64/aarch64/">openEuler 22.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.09/raspi_img/openEuler-22.09-raspi-aarch64.img.xz">openEuler 22.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/09/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>237 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-106.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.09/generic.repo">openEuler 22.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>234 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-DDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-LXDE-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS 内测版LXDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/11</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>655 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-22.03-LTS-UEFI-raspi-aarch64-alpha1.img.xz">openEuler 22.03 LTS 内测版EFI 引导启动)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>568 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.14</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/22.03:/LTS/standard_aarch64/aarch64/">openEuler 22.03 LTS 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-22.03-LTS/raspi_img/openEuler-22.03-LTS-raspi-aarch64.img.xz">openEuler 22.03 LTS</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/04/01</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>235 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-60.18.0.13</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-22.03-LTS/generic.repo">openEuler 22.03 LTS 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>234 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-DDE-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.4 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP3-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP3 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP3/standard_aarch64/aarch64/">openEuler 20.03 LTS SP3 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.03-LTS-SP3/raspi_img/openEuler-20.03-LTS-SP3-raspi-aarch64.img.xz">openEuler 20.03 LTS SP3</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/01</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>259 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2112.6.0.0037</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP3/generic.repo">openEuler 20.03 LTS SP3 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-raspi-aarch64-alpha2.img.xz">openEuler 21.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>241 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-UKUI-raspi-aarch64-alpha2.img.xz">openEuler 21.09 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog-21.09-UKUI.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-DDE-raspi-aarch64-alpha2.img.xz">openEuler 21.09 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-DDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/13</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-Xfce-raspi-aarch64-alpha2.img.xz">openEuler 21.09 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-Xfce.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.9 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-LXDE-raspi-aarch64-alpha2.img.xz">openEuler 21.09 内测版LXDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-LXDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2022/01/07</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>548 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-raspi-aarch64-alpha1.img.xz">openEuler 21.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>242 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 21.09 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-UKUI.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.3 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-DDE-raspi-aarch64-alpha1.img.xz">openEuler 21.09 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-DDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 21.09 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-Xfce.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.09-LXDE-raspi-aarch64-alpha1.img.xz">openEuler 21.09 内测版LXDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.09-LXDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>548 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.09/standard_aarch64/aarch64/">openEuler 21.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-21.09/raspi_img/openEuler-21.09-raspi-aarch64.img.xz">openEuler 21.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/09/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>243 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-5.10.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.09/generic.repo">openEuler 21.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>258 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2-UKUI.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-DDE-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2-DDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.2 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP2-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 20.03 LTS SP2 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP2-Xfce.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/10/18</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.9 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2109.7.0.0031</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP2/standard_aarch64/aarch64/">openEuler 20.03 LTS SP2 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.03-LTS-SP2/raspi_img/openEuler-20.03-LTS-SP2-raspi-aarch64.img.xz">openEuler 20.03 LTS SP2</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/07/14</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>264 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2106.3.0.0023</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP2/generic.repo">openEuler 20.03 LTS SP2 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-raspi-aarch64-alpha1.img.xz">openEuler 21.03 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>220 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-UKUI-raspi-aarch64-alpha1.img.xz">openEuler 21.03 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03-UKUI.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-DDE-raspi-aarch64-alpha1.img.xz">openEuler 21.03 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03-DDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.0 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-21.03-Xfce-raspi-aarch64-alpha1.img.xz">openEuler 21.03 内测版Xfce 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-21.03-Xfce.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.8 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.18.0.9</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/21.03/standard_aarch64/aarch64/">openEuler 21.03 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-21.03/raspi_img/openEuler-21.03-raspi-aarch64.img.xz">openEuler 21.03</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/01</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>237 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>5.10.0-4.17.0.8</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.repo">openEuler 21.03 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP1-raspi-aarch64-alpha4.img.xz">openEuler 20.03 LTS SP1 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP1.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>236 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2104.1.0.0017</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/">openEuler 20.03 LTS SP1 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP1-UKUI-raspi-aarch64-alpha4.img.xz">openEuler 20.03 LTS SP1 内测版UKUI 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP1-UKUI.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2104.1.0.0017</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/">openEuler 20.03 LTS SP1 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.03-LTS-SP1-DDE-raspi-aarch64-alpha4.img.xz">openEuler 20.03 LTS SP1 内测版DDE 桌面、中文输入法)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.03-LTS-SP1-DDE.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>1.1 GiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2104.1.0.0017</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="http://119.3.219.20:82/openEuler:/20.03:/LTS:/SP1/standard_aarch64/aarch64/">openEuler 20.03 LTS SP1 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.03-LTS-SP1/raspi_img/aarch64/openEuler-20.03-LTS-SP1-raspi-aarch64.img.xz">openEuler 20.03 LTS SP1</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</td>
<td class="cellrowborder" valign="top" width="10%"><p>2020/12/28</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>266 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.90-2012.3.0.0011</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.repo">openEuler 20.03 LTS SP1 源仓库</a></td>
</tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.09-raspi-aarch64-alpha6.img.xz">openEuler 20.09 内测版</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.09.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/04/12</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>236 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.140-2104.1.0.0010</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.09/generic.repo">openEuler 20.09 每日构建源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://isrc.iscas.ac.cn/eulixos/repo/others/openeuler-raspberrypi/images/openEuler-20.09-Xfce-raspi-aarch64-alpha6.img.xz">openEuler 20.09 内测版(包含 Xfce 桌面环境)</a></td>
<td class="cellrowborder" valign="top" width="10%"><ul><li>rootopeneuler</li><li>piraspberry</li></ul></td>
<td class="cellrowborder" valign="top" width="10%"><a href="changelog/changelog-20.09-Xfce.md">更新日志</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>2021/01/19</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>903 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.138-2008.1.0.0001</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.09">openEuler 20.09 源仓库</a></td>
</tr>
<tr>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.09/raspi_img/aarch64/openEuler-20.09-raspi-aarch64.img.xz">openEuler 20.09</a></td>
<td class="cellrowborder" valign="top" width="10%"><p>rootopeneuler</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>-</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>2020/09/30</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>259 MiB</p></td>
<td class="cellrowborder" valign="top" width="10%"><p>4.19.138-2008.1.0.0001</p></td>
<td class="cellrowborder" valign="top" width="10%"><a href="https://repo.openeuler.org/openEuler-20.09/">openEuler 20.09 源仓库</a></td>
</tr>
</tbody></table>
其他信息:
- 固件来源:[firmware](https://github.com/raspberrypi/firmware)、[bluez-firmware](https://github.com/RPi-Distro/bluez-firmware)、[firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -0,0 +1,560 @@
<!-- TOC -->
- [环境需求](#环境需求)
- [树莓派相关](#树莓派相关)
- [编译内核](#编译内核)
- [准备环境](#准备环境)
- [下载源码](#下载源码)
- [进入内核目录](#进入内核目录)
- [切换分支](#切换分支)
- [载入默认配置](#载入默认配置)
- [编译](#编译)
- [创建编译内核模块目录](#创建编译内核模块目录)
- [编译内核模块](#编译内核模块)
- [收集编译结果](#收集编译结果)
- [配置引导](#配置引导)
- [下载引导](#下载引导)
- [进入引导目录](#进入引导目录)
- [删除没有必要的文件](#删除没有必要的文件)
- [添加cmdline.txt](#添加cmdlinetxt)
- [boot 内容完善](#boot-内容完善)
- [将内核放进引导](#将内核放进引导)
- [将设备树文件放进引导](#将设备树文件放进引导)
- [树莓派固件和应用](#树莓派固件和应用)
- [下载固件和应用](#下载固件和应用)
- [制作 openEuler 的 rootfs](#制作-openeuler-的-rootfs)
- [创建 RPM 数据库](#创建-rpm-数据库)
- [下载安装 openEuler 发布包](#下载安装-openeuler-发布包)
- [安装 yum](#安装-yum)
- [添加 yum 源](#添加-yum-源)
- [安装 dnf](#安装-dnf)
- [安装必要软件](#安装必要软件)
- [添加配置文件](#添加配置文件)
- [添加 hosts](#添加-hosts)
- [网络相关](#网络相关)
- [rootfs 内容完善](#rootfs-内容完善)
- [将固件放进 rootfs](#将固件放进-rootfs)
- [将内核模块放进rootfs](#将内核模块放进rootfs)
- [rootfs设置](#rootfs设置)
- [制作镜像](#制作镜像)
- [生成镜像并分区挂载](#生成镜像并分区挂载)
- [计算镜像大小](#计算镜像大小)
- [创建空镜像](#创建空镜像)
- [镜像分区](#镜像分区)
- [使用 losetup 将磁盘镜像文件虚拟成块设备](#使用-losetup-将磁盘镜像文件虚拟成块设备)
- [使用 kpartx 创建分区表 /dev/loop0 的设备映射](#使用-kpartx-创建分区表-devloop0-的设备映射)
- [格式化分区](#格式化分区)
- [创建要挂载的根目录和 boot 分区路径](#创建要挂载的根目录和-boot-分区路径)
- [挂载根目录和 boot 分区](#挂载根目录和-boot-分区)
- [获取生成的 img 镜像的 blkid](#获取生成的-img-镜像的-blkid)
- [修改 fstab](#修改-fstab)
- [rootfs 拷贝到镜像](#rootfs-拷贝到镜像)
- [boot 引导拷贝到镜像](#boot-引导拷贝到镜像)
- [卸载镜像](#卸载镜像)
- [同步到盘](#同步到盘)
- [卸载](#卸载)
- [卸载镜像文件虚拟的块设备](#卸载镜像文件虚拟的块设备)
<!-- /TOC -->
>![](../public_sys-resources/icon-note.gif) **说明:**
>如需根据自身需求定制镜像,可参考本文档。
# 环境需求
- 操作系统openEuler 或 Centos 7/8
- 架构AArch64
- 硬盘存储不低于 50G
- 内存不低于 2G
- 可访问外网。
可以通过以下方式获取 AArch64 架构的运行环境:
- 使用 AArch64 架构的主机,例如树莓派
- 使用 [QEMU](https://www.qemu.org/) 模拟器搭建 AArch64 运行环境
# 树莓派相关
操作目录:${WORKDIR}
## 编译内核
### 准备环境
- 操作系统openEuler 或 CentOS 7/8
- 架构AArch64
除了使用 AArch64 架构的 openEuler 或 CentOS 7/8 运行环境,也可以采用交叉编译的方式编译内核,文档详见 [交叉编译内核](./交叉编译内核.md)。这里,我们在 AArch64 架构的服务器上编译内核。
### 下载源码
根据内核不同版本,需要下载不同仓库的不同分支:
1. 6.6 内核
- openEuler 24.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-6.6 && cd raspberrypi-kernel`
- openEuler 24.03 LTS`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-6.6 && cd raspberrypi-kernel`
2. 6.1 内核
- openEuler 23.03`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-23.03 && cd raspberrypi-kernel`
3. 5.10 内核
- openEuler 22.03 LTS SP4`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-5.10 && cd raspberrypi-kernel`
- openEuler 22.03 LTS SP3`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-5.10 && cd raspberrypi-kernel`
- openEuler 22.03 LTS SP2`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.03-LTS-SP2 && cd raspberrypi-kernel`
- openEuler 22.03 LTS SP1`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.03-LTS-SP1 && cd raspberrypi-kernel`
- openEuler 22.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.09 && cd raspberrypi-kernel`
- openEuler 22.03 LTS`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.03-LTS && cd raspberrypi-kernel`
- openEuler 21.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-21.09 && cd raspberrypi-kernel`
- openEuler 21.03`git clone git@gitee.com:openeuler/kernel.git -b openEuler-21.03 && cd kernel`
4. 4.19 内核
- openEuler 20.03 LTS`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-20.03-LTS && cd raspberrypi-kernel`
- openEuler 20.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-20.09 && cd raspberrypi-kernel`
下面编译时可能还需要 bison、flex、build-essential 等,根据提示安装即可。
### 载入默认配置
根据内核不同版本,需要载入不同的默认配置:
1. 6.6 内核
- openEuler 24.09`make bcm2711_defconfig`
- openEuler 24.03 LTS`make bcm2711_defconfig`
2. 6.1 内核
- openEuler 23.03`make bcm2711_defconfig`
3. 5.10 内核
- openEuler 22.03 LTS SP4`make bcm2711_defconfig`
- openEuler 22.03 LTS SP3`make bcm2711_defconfig`
- openEuler 22.03 LTS SP2`make bcm2711_defconfig`
- openEuler 22.03 LTS SP1`make bcm2711_defconfig`
- openEuler 22.09`make bcm2711_defconfig`
- openEuler 22.03 LTS`make bcm2711_defconfig`
- openEuler 21.09`make bcm2711_defconfig`
- openEuler 21.03`make bcm2711_defconfig`
4. 4.19 内核
- openEuler 20.03 LTS`make openeuler-raspi_defconfig`
- openEuler 20.09`make openeuler-raspi_defconfig`
对应的 defconfig 文件在 ./arch/arm64/configs 下。
### 编译
`make ARCH=arm64 -j4`
### 创建编译内核模块目录
`mkdir ${WORKDIR}/ouput`
### 编译内核模块
`make INSTALL_MOD_PATH=${WORKDIR}/output/ modules_install`
在 ${WORKDIR}/output 文件夹下会生成 lib 文件夹。
### 收集编译结果
1. 内核
`cp ${WORKDIR}/raspberrypi-kernel/arch/arm64/boot/Image ${WORKDIR}/output/`
2. 设备树文件等
`cp ${WORKDIR}/raspberrypi-kernel/arch/arm64/boot/dts/broadcom/*.dtb ${WORKDIR}/output/`
`mkdir ${WORKDIR}/output/overlays`
`cp ${WORKDIR}/raspberrypi-kernel/arch/arm64/boot/dts/overlays/*.dtb* ${WORKDIR}/output/overlays/`
至此,所有内核及内核模块相关内容都在 ${WORKDIR}/output 下了。
## 配置引导
### 下载引导
`cd ${WORKDIR}`
`git clone --depth=1 https://github.com/raspberrypi/firmware`
得到文件 ${WORKDIR}/firmware 。
### 进入引导目录
`cd ${WORKDIR}/firmware/boot`
### 删除没有必要的文件
`rm *.dtb cmdline.txt kernel*.img`
### 添加cmdline.txt
`touch cmdline.txt`
写入新系统的内核参数:
`console=serial0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait`
### boot 内容完善
#### 将内核放进引导
`cp ${WORKDIR}/output/Image ${WORKDIR}/firmware/boot/kernel8.img`
#### 将设备树文件放进引导
`cp ${WORKDIR}/output/*.dtb ${WORKDIR}/firmware/boot/`
`cp ${WORKDIR}/output/overlays/* ${WORKDIR}/firmware/boot/overlays/`
## 树莓派固件和应用
### 下载固件和应用
1. 进入下载目录
`cd ${WORKDIR}`
2. 下载 bluez-firmware
`git clone --depth=1 https://github.com/RPi-Distro/bluez-firmware`
得到文件 ${WORKDIR}/bluez-firmware。
3. 下载 firmware-nonfree
`git clone --depth=1 -b buster https://github.com/RPi-Distro/firmware-nonfree`
得到文件 ${WORKDIR}/firmware-nonfree。
4. 下载 pi-bluetooth
`git clone https://github.com/RPi-Distro/pi-bluetooth`
得到文件 ${WORKDIR}/pi-bluetooth。
# 制作 openEuler 的 rootfs
操作目录:${WORKDIR}
## 创建 RPM 数据库
`mkdir ${WORKDIR}/rootfs`
`mkdir -p ${WORKDIR}/rootfs/var/lib/rpm`
`rpm --root ${WORKDIR}/rootfs/ --initdb`
## 下载安装 openEuler 发布包
`rpm -ivh --nodeps --root ${WORKDIR}/rootfs/ http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/Packages/openEuler-release-20.03LTS-33.oe1.aarch64.rpm`
会在 ${WORKDIR}/rootfs 下生成三个文件夹:
etc/ usr/ var/
## 安装 yum
### 添加 yum 源
`mkdir ${WORKDIR}/rootfs/etc/yum.repos.d`
`curl -o ${WORKDIR}/rootfs/etc/yum.repos.d/openEuler-20.03-LTS.repo https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo`
### 安装 dnf
`dnf --installroot=${WORKDIR}/rootfs/ install dnf --nogpgcheck -y`
### 安装必要软件
`dnf --installroot=${WORKDIR}/rootfs/ makecache`
`dnf --installroot=${WORKDIR}/rootfs/ install -y alsa-utils wpa_supplicant vim net-tools iproute iputils NetworkManager openssh-server passwd hostname ntp bluez pulseaudio-module-bluetooth`
## 添加配置文件
### 添加 hosts
`cp /etc/hosts ${WORKDIR}/rootfs/etc/hosts`
### 网络相关
1. 设置 DNS
`cp -L /etc/resolv.conf ${WORKDIR}/rootfs/etc/resolv.conf`
编辑添加 nameserver
`vim ${WORKDIR}/rootfs/etc/resolv.conf`
内容:
```
nameserver 8.8.8.8
nameserver 114.114.114.114
```
2. 设置 IP 自动获取
`mkdir ${WORKDIR}/rootfs/etc/sysconfig/network-scripts`
`vim ${WORKDIR}/rootfs/etc/sysconfig/network-scripts/ifcfg-eth0`
内容:
```
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=851a6f36-e65c-3a43-8f4a-78fd0fc09dc9
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
DEVICE=eth0
```
## rootfs 内容完善
### 将固件放进 rootfs
```
mkdir -p ${WORKDIR}/rootfs/lib/firmware ${WORKDIR}/rootfs/usr/bin ${WORKDIR}/rootfs/lib/udev/rules.d ${WORKDIR}/rootfs/lib/systemd/system
cp ${WORKDIR}/bluez-firmware/broadcom/* ${WORKDIR}/rootfs/lib/firmware/
cp -r ${WORKDIR}/firmware-nonfree/brcm/ ${WORKDIR}/rootfs/lib/firmware/
wget https://raw.githubusercontent.com/RPi-Distro/raspberrypi-sys-mods/master/etc.armhf/udev/rules.d/99-com.rules -P ${WORKDIR}/rootfs/lib/udev/rules.d/
cp pi-bluetooth/usr/bin/* ${WORKDIR}/rootfs/usr/bin/
cp pi-bluetooth/lib/udev/rules.d/90-pi-bluetooth.rules ${WORKDIR}/rootfs/lib/udev/rules.d/
cp pi-bluetooth/debian/pi-bluetooth.bthelper\@.service ${WORKDIR}/rootfs/lib/systemd/system/bthelper\@.service
cp pi-bluetooth/debian/pi-bluetooth.hciuart.service ${WORKDIR}/rootfs/lib/systemd/system/hciuart.service
```
蓝牙相关固件放到 ${WORKDIR}/rootfs/lib/firmware/brcm/ 下:
```
mv ${WORKDIR}/rootfs/lib/firmware/BCM43430A1.hcd ${WORKDIR}/rootfs/lib/firmware/brcm/
mv ${WORKDIR}/rootfs/lib/firmware/BCM4345C0.hcd ${WORKDIR}/rootfs/lib/firmware/brcm/
```
### 将内核模块放进rootfs
`cp -r ${WORKDIR}/output/lib/modules ${WORKDIR}/rootfs/lib/`
## rootfs设置
1. 挂载必要的路径
`mount --bind /dev ${WORKDIR}/rootfs/dev`
`mount -t proc /proc ${WORKDIR}/rootfs/proc`
`mount -t sysfs /sys ${WORKDIR}/rootfs/sys`
2. run chroot
`chroot ${WORKDIR}/rootfs /bin/bash`
3. 开机自启sshd
`systemctl enable sshd`
4. 设置root密码
`passwd root`
输入要设置的root密码。
5. 设置主机名
`echo openEuler > /etc/hostname`
6. 设置默认时区为东八区
`ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime`
7. 开机自启 hciuart
`systemctl enable hciuart`
8. 退出
`exit`
9. 取消临时挂载的目录
`umount -l ${WORKDIR}/rootfs/dev`
`umount -l ${WORKDIR}/rootfs/proc`
`umount -l ${WORKDIR}/rootfs/sys`
# 制作镜像
## 生成镜像并分区挂载
### 计算镜像大小
`du -sh --block-size=1MiB ${WORKDIR}/rootfs`
`du -sh --block-size=1MiB ${WORKDIR}/firmware/boot`
得到总大小后略加 1100MiB 即可,将该大小记为 `SIZE`
### 创建空镜像
`cd ${WORKDIR}`
`dd if=/dev/zero of=openEuler_raspi.img bs=1M count=SIZE`
其中 `SIZE` 为前面计算得到的镜像大小,最终生成空的镜像文件 ${WORKDIR}/openEuler_raspi.img。
### 镜像分区
执行 `fdisk openEuler_raspi.img` 后,根据提示依次输入:
1. 输入 `p`,查看分区信息,可以看到当前无分区。
2. 输入 `n`,创建分区。
3. 输入 `p` 或直接按 `Enter`,创建 `Primary` 类型的分区。
4. 输入 `1` 或直接按 `Enter`,创建序号为 `1` 的分区。
5. 输入 `8192`,输入第一个分区的起始扇区号。
6. 输入 `593919`,输入第一个分区的末尾扇区号。
7. 输入 `t`,设置分区类型。因为当前只有一个分区,会默认设置第一个分区的分区类型。
8. 输入 `c`,设置第一个分区类型为 W95 FAT32 (LBA)。
9. 输入 `a`,设置引导分区。因为当前只有一个分区,会默认设置第一个分区为引导分区。至此第一个分区分区完成。
10. 输入 `p`,查看当前分区情况,可以看到当前有一个分区。
11. 输入 `n`,创建分区。
12. 输入 `p` 或直接按 `Enter`,创建 `Primary` 类型的分区。
13. 输入 `2` 或直接按 `Enter`,创建序号为 `2` 的分区。
14. 输入 `593920`,输入第二个分区的起始扇区号。
15. 输入 `1593343`,输入第二个分区的末尾扇区号。
16. 输入 `t`,设置分区类型。
17. 输入 `2` 或直接按 `Enter`,选择要设置的分区序号。
18. 输入 `82`,设置第二个分区类型为 Linux swap / Solaris至此第二个分区分区完成。
19. 输入 `p`,查看当前分区情况,可以看到当前有两个分区。
20. 输入 `n`,创建分区。
21. 输入 `p` 或直接按 `Enter`,创建 `Primary` 类型的分区。
22. 输入 `3` 或直接按 `Enter`,创建序号为 `3` 的分区。
23. 输入 `1593344`,输入第三个分区的起始扇区号。
24. 按 `Enter`,输入第三个分区的末尾扇区号,使用最后一个扇区号作为第三个分区的末尾扇区号。
25. 输入 `t`,设置分区类型。
26. 输入 `3` 或直接按 `Enter`,选择要设置的分区序号。
27. 输入 `83`,设置第三个分区类型为 Linux。至此第三个分区分区完成。
28. 输入 `p`,查看当前分区情况,可以看到当前有三个分区。
29. 输入 `w`,写入并退出。
### 使用 losetup 将磁盘镜像文件虚拟成块设备
`losetup -f --show openEuler_raspi.img`
例如,显示结果为 /dev/loop0。
### 使用 kpartx 创建分区表 /dev/loop0 的设备映射
`kpartx -va /dev/loop0`
得到结果将 /dev/loop0 三个分区挂载了:
```
add map loop0p1 ...
add map loop0p2 ...
add map loop0p3 ...
```
运行 `ls /dev/mapper/loop0p*` 可以看到分区分别对应刚才为 openEuler_raspi.img 做的三个分区:
```
/dev/mapper/loop0p1 /dev/mapper/loop0p2 /dev/mapper/loop0p3
```
### 格式化分区
1. 格式化 boot 分区
`mkfs.vfat -n boot /dev/mapper/loop0p1`
2. 格式化交换分区
`mkswap /dev/mapper/loop0p2 --pagesize 4096`
3. 格式化根目录分区
`mkfs.ext4 /dev/mapper/loop0p3`
### 创建要挂载的根目录和 boot 分区路径
`mkdir ${WORKDIR}/root ${WORKDIR}/boot`
### 挂载根目录和 boot 分区
`mount -t vfat -o uid=root,gid=root,umask=0000 /dev/mapper/loop0p1 ${WORKDIR}/boot/`
`mount -t ext4 /dev/mapper/loop0p3 ${WORKDIR}/root/`
### 获取生成的 img 镜像的 blkid
执行命令 blkid 得到三个分区的 UUID例如
```
/dev/mapper/loop0p1: SEC_TYPE="msdos" LABEL="boot" UUID="2785-C7C3" TYPE="vfat" PARTUUID="e0a091bd-01"
/dev/mapper/loop0p2: UUID="a451bee4-4384-48a2-8d5a-d09c2dd9a1a2" TYPE="swap" PARTUUID="e0a091bd-02"
/dev/mapper/loop0p3: UUID="67b5fc1c-9cd3-4884-968c-4ca35e5ae154" TYPE="ext4" PARTUUID="e0a091bd-03"
```
## 修改 fstab
`vim ${WORKDIR}/rootfs/etc/fstab`
内容:
```
UUID=67b5fc1c-9cd3-4884-968c-4ca35e5ae154 / ext4 defaults,noatime 0 0
UUID=2785-C7C3 /boot vfat defaults,noatime 0 0
UUID=a451bee4-4384-48a2-8d5a-d09c2dd9a1a swap swap defaults,noatime 0 0
```
## rootfs 拷贝到镜像
`rsync -avHAXq ${WORKDIR}/rootfs/* ${WORKDIR}/root`
## boot 引导拷贝到镜像
`cd ${WORKDIR}/firmware/boot`
`tar cf ${WORKDIR}/boot.tar ./`
`cd ${WORKDIR}/boot`
`tar xf ${WORKDIR}/boot.tar -C .`
## 卸载镜像
### 同步到盘
`sync`
### 卸载
`umount ${WORKDIR}/root`
`umount ${WORKDIR}/boot`
### 卸载镜像文件虚拟的块设备
`kpartx -d /dev/loop0`
`losetup -d /dev/loop0`
这样,最终就生成了需要的 openEuler_raspi.img 镜像文件。
之后就可以使用镜像刷写 SD 卡并使用树莓派了,详见 [刷写镜像](./刷写镜像.md) 和 [树莓派使用](./树莓派使用.md)。

View File

@ -0,0 +1,162 @@
<!-- TOC -->
- [介绍](#介绍)
- [实验环境](#实验环境)
- [安装依赖软件](#安装依赖软件)
- [编译](#编译)
- [下载内核源码](#下载内核源码)
- [进入内核源码](#进入内核源码)
- [切换分支](#切换分支)
- [设置环境变量](#设置环境变量)
- [载入默认配置](#载入默认配置)
- [编译内核](#编译内核)
- [创建编译内核模块目录](#创建编译内核模块目录)
- [编译内核模块](#编译内核模块)
- [收集编译结果](#收集编译结果)
- [验证内核可用性](#验证内核可用性)
- [将内核模块放进rootfs](#将内核模块放进rootfs)
- [将内核放进引导](#将内核放进引导)
- [将设备树文件放进引导](#将设备树文件放进引导)
<!-- /TOC -->
# 介绍
>![](../public_sys-resources/icon-note.gif) **说明:**
>如需根据自身需求定制内核,可参考本文档。
目前 openEuler 树莓派版本只支持 AArch64 架构。
编译内核时,除了使用 AArch64 架构的运行环境,也可以采用交叉编译的方式。这里,我们以 ubuntu16.04 x86_64 的服务器上编译内核为例,介绍交叉编译的过程。
# 实验环境
- 操作系统ubuntu16.04
- 架构x86_64
# 安装依赖软件
`apt-get install build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu bc libssl-dev -y`
# 编译
操作目录:${WORKDIR}
## 下载内核源码
根据内核不同版本,需要下载不同仓库的不同分支:
1. 6.6 内核
- openEuler 24.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-6.6 && cd raspberrypi-kernel`
- openEuler 24.03 LTS`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-6.6 && cd raspberrypi-kernel`
2. 6.1 内核
- openEuler 23.03`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-23.03 && cd raspberrypi-kernel`
3. 5.10 内核
- openEuler 22.03 LTS SP4`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-5.10 && cd raspberrypi-kernel`
- openEuler 22.03 LTS SP3`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b OLK-5.10 && cd raspberrypi-kernel`
- openEuler 22.03 LTS SP2`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.03-LTS-SP2 && cd raspberrypi-kernel`
- openEuler 22.03 LTS SP1`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.03-LTS-SP1 && cd raspberrypi-kernel`
- openEuler 22.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.09 && cd raspberrypi-kernel`
- openEuler 22.03 LTS`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-22.03-LTS && cd raspberrypi-kernel`
- openEuler 21.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-21.09 && cd raspberrypi-kernel`
- openEuler 21.03`git clone git@gitee.com:openeuler/kernel.git -b openEuler-21.03 && cd kernel`
4. 4.19 内核
- openEuler 20.03 LTS`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-20.03-LTS && cd raspberrypi-kernel`
- openEuler 20.09`git clone git@gitee.com:openeuler/raspberrypi-kernel.git -b openEuler-20.09 && cd raspberrypi-kernel`
## 设置环境变量
`export ARCH=arm64`
`export CROSS_COMPILE=aarch64-linux-gnu-`
## 载入默认配置
根据内核不同版本,需要载入不同的默认配置:
1. 6.6 内核
- openEuler 24.09`make bcm2711_defconfig`
- openEuler 24.03 LTS`make bcm2711_defconfig`
2. 6.1 内核
- openEuler 23.03`make bcm2711_defconfig`
3. 5.10 内核
- openEuler 22.03 LTS SP4`make bcm2711_defconfig`
- openEuler 22.03 LTS SP3`make bcm2711_defconfig`
- openEuler 22.03 LTS SP2`make bcm2711_defconfig`
- openEuler 22.03 LTS SP1`make bcm2711_defconfig`
- openEuler 22.09`make bcm2711_defconfig`
- openEuler 22.03 LTS`make bcm2711_defconfig`
- openEuler 21.09`make bcm2711_defconfig`
- openEuler 21.03`make bcm2711_defconfig`
4. 4.19 内核
- openEuler 20.03 LTS`make openeuler-raspi_defconfig`
- openEuler 20.09`make openeuler-raspi_defconfig`
对应的 defconfig 文件在 ./arch/arm64/configs 下。
## 编译内核
`make -j9`
## 创建编译内核模块目录
`mkdir ${WORKDIR}/ouput`
## 编译内核模块
`make INSTALL_MOD_PATH=${WORKDIR}/output/ modules_install`
在 ${WORKDIR}/output 文件夹下会生成 lib 文件夹。
## 收集编译结果
1. 内核
`cp ${WORKDIR}/raspberrypi-kernel/arch/arm64/boot/Image ${WORKDIR}/output/`
2. 设备树文件等
`cp ${WORKDIR}/raspberrypi-kernel/arch/arm64/boot/dts/broadcom/*.dtb ${WORKDIR}/output/`
`mkdir ${WORKDIR}/output/overlays`
`cp ${WORKDIR}/raspberrypi-kernel/arch/arm64/boot/dts/overlays/*.dtb* ${WORKDIR}/output/overlays/`
至此,所有内核及内核模块相关内容都在 ${WORKDIR}/output 下了。
# 验证内核可用性
使用一个之前刷好 openEuler 树莓派镜像的 SD 卡,直接插到 Linux 主机上SD 会默认挂载其 boot 分区和 根目录分区。这里其挂载路径分别表示为 ${boot} 和 ${rootfs}将上面编译好的内核放置到SD卡对应分区。
## 将内核模块放进rootfs
`cp -r ${WORKDIR}/output/lib/modules ${rootfs}/lib/`
## 将内核放进引导
`cp ${WORKDIR}/output/Image ${boot}/kernel8.img`
## 将设备树文件放进引导
`cp ${WORKDIR}/output/*.dtb ${boot}/`
`cp ${WORKDIR}/output/overlays/* ${boot}/overlays/`
之后,参考 [树莓派使用](./树莓派使用.md) 使用该 SD 卡启用树莓派,验证功能:
![](images/验证内核.jpg)

View File

@ -0,0 +1,131 @@
<!-- TOC -->
- [实验环境](#实验环境)
- [获取树莓派 img 镜像](#获取树莓派-img-镜像)
- [刷写 SD 卡](#刷写-sd-卡)
- [Windows 环境](#windows-环境)
- [格式化 SD 卡](#格式化-sd-卡)
- [写入 SD 卡](#写入-sd-卡)
- [Linux 环境](#linux-环境)
- [查看磁盘分区信息](#查看磁盘分区信息)
- [卸载 SD 卡挂载点](#卸载-sd-卡挂载点)
- [写入 SD 卡](#写入-sd-卡-1)
- [Mac 环境](#mac-环境)
- [查看磁盘分区信息](#查看磁盘分区信息-1)
- [卸载 SD 卡挂载点](#卸载-sd-卡挂载点-1)
- [写入 SD 卡](#写入-sd-卡-2)
- [树莓派使用](#树莓派使用)
<!-- /TOC -->
# 实验环境
- Windows10/Linux/Mac
- 树莓派 3B/3B+/4B/400
- 8G 及以上的 Micro SD 卡
# 获取树莓派 img 镜像
下载适配树莓派的最新 openEuler 镜像,下面以获取 `openEuler-20.03-LTS-aarch64-raspi.img.xz` 镜像为例。
# 刷写 SD 卡
下面分别介绍 Windows、Linux、Mac 下的刷机步骤。
## Windows 环境
### 格式化 SD 卡
请按照以下步骤格式化 SD 卡:
1. 下载并安装格式化 SD 卡工具,以下操作以 SD Card Formatter 格式化工具为例。
2. 打开 SD Card Formatter`Select card` 中选择需要格式化的 SD 卡的盘符。
若 SD 卡之前未安装过镜像,盘符只有一个。在 `Select card` 中选择需要格式化的 SD 卡对应盘符。
若 SD 卡之前安装过镜像,盘符会有一个或多个。如下图所示,该 SD 卡对应三个盘符E、G、H。在 `Select card` 中选择需要格式化的 SD 卡对应 boot 分区盘符 E。
![](images/盘符.jpg)
3. 在 `Formatting options` 中选择格式化方式。默认为 `Quick format`
4. 单击 `Format` 开始格式化。界面通过进度条显示格式化进度。
5. 格式化完成后会弹出 `Formatting was successfully completed` 的提示框,单击 `确定` 完成格式化。
如下图所示,格式化后 SD 卡的盘符只有一个。
![](images/格式化后盘.png)
### 写入 SD 卡
>![](../public_sys-resources/icon-notice.gif) **须知:**
>如果获取的是压缩后的镜像文件 `openEuler-20.03-LTS-aarch64-raspi.img.xz`,需要先将压缩文件解压得到 `openEuler-20.03-LTS-aarch64-raspi.img` 镜像文件。
请按照以下步骤将 img 格式的镜像文件写入 SD 卡:
1. 下载并安装刷写镜像的工具,以下操作以 Win32 Disk Imager 工具为例。
2. 右键选择“以管理员身份运行”,打开 Win32 Disk Imager。
3. 在“映像文件”中选择 img 格式的镜像文件路径。
4. 在“设备”中选择待写入的 SD 卡盘符。
5. 单击“写入”。如下图所示,界面通过任务进度条显示写入 SD 卡的进度。
![](images/写入SD.png)
6. 写入完成后会弹出 “写入成功” 的提示框单击“OK”完成写入。
如下图所示写入成功后SD 卡自动分区后的盘符为三个。
![](images/盘符.jpg)
## Linux 环境
### 查看磁盘分区信息
执行 `fdisk -l` 获取 SD 卡磁盘信息,例如 SD 卡对应磁盘为 /dev/sdb。
### 卸载 SD 卡挂载点
1. 执行 `df -lh` 命令查看当前已挂载的卷。
2. 如果 SD 卡对应的分区未挂载,则跳过该步骤;如果 SD 卡对应分区已挂载,如 SD 卡对应的两个分区 /dev/sdb1 和 /dev/sdb3 已挂载,则需要卸载对应分区,执行以下命令:
`umount /dev/sdb1`
`umount /dev/sdb3`
### 写入 SD 卡
1. 如果获取的是压缩后的镜像,需要先执行 `xz -d openEuler-20.03-LTS-aarch64-raspi.img.xz` 命令将压缩文件解压得到 `openEuler-20.03-LTS-aarch64-raspi.img` 镜像文件;否则,跳过该步骤。
2. 将镜像 `openEuler-20.03-LTS-aarch64-raspi.img` 刷写入 SD 卡,执行以下命令:
`dd bs=4M if=openEuler-20.03-LTS-aarch64-raspi.img of=/dev/sdb`
>![](../public_sys-resources/icon-note.gif) **说明:**
>一般情况下,将块大小设置为 4M。如果写入失败或者写入的镜像无法使用可以尝试将块大小设置为 1M 重新写入,但是设置为 1M 比较耗时。
## Mac 环境
### 查看磁盘分区信息
执行 `diskutil list` 获取 SD 卡磁盘信息,例如 SD 卡对应磁盘为 /dev/disk3。
### 卸载 SD 卡挂载点
1. 执行 `df -lh` 命令查看当前已挂载的卷。
2. 如果 SD 卡对应的分区未挂载,则跳过该步骤;如果 SD 卡对应分区已挂载,如 SD 卡对应的两个分区 /dev/disk3s1 和 /dev/disk3s3 已挂载,则需要卸载对应分区,执行以下命令:
`diskutil umount /dev/disk3s1`
`diskutil umount /dev/disk3s3`
### 写入 SD 卡
1. 如果获取的是压缩后的镜像,需要先执行 `xz -d openEuler-20.03-LTS-aarch64-raspi.img.xz` 命令将压缩文件解压得到 `openEuler-20.03-LTS-aarch64-raspi.img` 镜像文件;否则,跳过该步骤。
2. 将镜像 `openEuler-20.03-LTS-aarch64-raspi.img` 刷入 SD 卡,执行以下命令:
`dd bs=4m if=openEuler-20.03-LTS-aarch64-raspi.img of=/dev/sdb`
>![](../public_sys-resources/icon-note.gif) **说明:**
>一般情况下,将块大小设置为 4m。如果写入失败或者写入的镜像无法使用可以尝试将块大小设置为 1m 重新写入,但是设置为 1m 比较耗时。
# 树莓派使用
SD 卡刷好镜像之后,就可以使用树莓派了,详见 [树莓派使用](./树莓派使用.md)。

View File

@ -0,0 +1,707 @@
<!-- TOC -->
- [启用树莓派](#启用树莓派)
- [根目录分区扩展](#根目录分区扩展)
- [查看磁盘分区信息](#查看磁盘分区信息)
- [分区扩容](#分区扩容)
- [查看扩容后磁盘分区信息](#查看扩容后磁盘分区信息)
- [增大未加载的文件系统大小](#增大未加载的文件系统大小)
- [查看磁盘空间信息](#查看磁盘空间信息)
- [wifi 连接](#wifi-连接)
- [查看 IP 和网卡信息](#查看-ip-和网卡信息)
- [连接 wifi](#连接-wifi)
- [查看 IP 和无线网卡信息](#查看-ip-和无线网卡信息)
- [音频](#音频)
- [开启音频](#开启音频)
- [安装音频播放软件](#安装音频播放软件)
- [播放音频](#播放音频)
- [音频输出配置](#音频输出配置)
- [HDMI](#hdmi)
- [耳机插孔](#耳机插孔)
- [自动(默认)](#自动默认)
- [蓝牙](#蓝牙)
- [开启蓝牙](#开启蓝牙)
- [查看蓝牙设备](#查看蓝牙设备)
- [连接蓝牙](#连接蓝牙)
- [播放音乐](#播放音乐)
- [文件传输](#文件传输)
- [GPIO](#gpio)
- [简介](#简介)
- [UART](#uart)
- [UART 连线](#uart-连线)
- [串口通信](#串口通信)
- [蓝牙使用 PL011 UART禁用串口](#蓝牙使用-pl011-uart禁用串口)
- [蓝牙使用 PL011 UART串口使用 mini UART](#蓝牙使用-pl011-uart串口使用-mini-uart)
- [禁用蓝牙,串口使用 PL011 UART](#禁用蓝牙串口使用-pl011-uart)
- [蓝牙使用 mini UART串口使用 PL011 UART](#蓝牙使用-mini-uart串口使用-pl011-uart)
- [WiringPi](#wiringpi)
- [下载 WiringPi](#下载-wiringpi)
- [安装 WiringPi](#安装-wiringpi)
- [使用 WiringPi](#使用-wiringpi)
<!-- /TOC -->
# 启用树莓派
版本要求:树莓派 3B/3B+/4B/400。
默认用户名:
- root密码openeuler
- pi密码raspberry。
将刷写镜像后的 SD 卡插入树莓派,通电启用。
登录树莓派有以下两种方式:
1. 本地登录
树莓派连接显示器(树莓派视频输出接口为 Micro HDMI、键盘、鼠标后启动树莓派可以看到树莓派启动日志输出到显示器上。待树莓派启动成功输入用户名root和密码openeuler登录。目前openEuler 系统无桌面环境,添加桌面支持相关进度可关注 [期望增加桌面支持](https://gitee.com/openeuler/raspberrypi/issues/I1F21F),欢迎大家参与。
2. ssh 远程登录
1. DHCP 自动获取 IP
树莓派默认采用 DHCP 的方式自动获取 IP。如果树莓派连接已知路由器可登录路由器查看新增的 IP 即为树莓派 IP。
![](images/获取IP.png)
从上图看到,树莓派对应 IP 为192.168.31.109,使用命令 `ssh root@192.168.31.109` 后输入密码 `openeuler`,即可远程登录树莓派。
如下图,登录成功后,树莓派即显示本机相关信息,包括本机 IP。
![](images/登录树莓派.png)
2. 设置固定 IP
1. 将树莓派的 SD 卡借助读卡器插到装有 Linux 操作系统的个人电脑电脑中会读到两个分区boot 分区和根目录分区。根目录分区挂载路径记为 `<ROOT_DIR>`
2. 修改 `<ROOT_DIR>` 目录下的文件 `etc/sysconfig/network-scripts/ifcfg-eth0`,主要修改内容有:
- `BOOTPROTO` 设置为 `static`
- 添加 `IPADDR``NETMASK``GATEWAY` 等字段。
例如,我们设置树莓派 IP 为 192.168.31.109,同时根据实际情况设置其子网掩码和网关。最终,`<ROOT_DIR>/etc/sysconfig/network-scripts/ifcfg-eth0` 的内容如下:
```
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=851a6f36-e65c-3a43-8f4a-78fd0fc09dc9
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
DEVICE=eth0
IPADDR=192.168.31.109
NETMASK=255.255.255.0
GATEWAY=192.168.31.1
```
3. 在电脑中选择 SD 卡挂载的任一盘符,右键选择 `弹出上级驱动器`,待提示 `驱动器已成功弹出` 后拔出读卡器。
4. 将 SD 卡插入树莓派,并通电启动。
5. 树莓派启动成功后,使用命令 `ssh root@192.168.31.109` 后输入密码 `openeuler`,即可远程登录树莓派。
# 根目录分区扩展
默认根目录分区空间比较小,在使用之前,需要对分区进行扩容。
## 查看磁盘分区信息
执行 `fdisk -l` 命令查看磁盘分区信息。命令和回显如下:
```
# fdisk -l
Disk /dev/mmcblk0: 14.86 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf2dc3842
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 8192 593919 585728 286M c W95 FAT32 (LBA)
/dev/mmcblk0p2 593920 1593343 999424 488M 82 Linux swap / Solaris
/dev/mmcblk0p3 1593344 5044223 3450880 1.7G 83 Linux
```
SD 卡对应盘符为 /dev/mmcblk0包括 3 个分区,分别为
- /dev/mmcblk0p1引导分区
- /dev/mmcblk0p2交换分区
- /dev/mmcblk0p3根目录分区
这里我们需要将根目录分区 `/dev/mmcblk0p3` 进行扩容。
## 分区扩容
执行 `fdisk /dev/mmcblk0` 命令进入到交互式命令行界面,按照以下步骤扩展分区,如下图所示。
1. 输入 `p`,查看分区信息。
记录分区 `/dev/mmcblk0p3` 的起始扇区号,即 `/dev/mmcblk0p3` 分区信息中 `Start` 列的值,示例中为 `1593344`
2. 输入 `d`,删除分区。
3. 输入 `3` 或直接按 `Enter`,删除序号为 `3` 的分区,即 `/dev/mmcblk0p3` 分区。
4. 输入 `n`,创建新的分区。
5. 输入 `p` 或直接按 `Enter`,创建 `Primary` 类型的分区。
6. 输入 `3` 或直接按 `Enter`,创建序号为 `3` 的分区,即 `/dev/mmcblk0p3` 分区。
7. 输入新分区的起始扇区号,即第 `1` 步中记录的起始扇区号,示例中为 `1593344`
>![](../public_sys-resources/icon-notice.gif) **须知:**
>请勿直接按“Enter”或使用默认参数。
8. 按 `Enter`,使用默认的最后一个扇区号作为新分区的终止扇区号。
9. 输入 `N`,不修改扇区标记。
10. 输入 `w`,保存分区设置并退出交互式命令行界面。
![](images/分区扩容.png)
## 查看扩容后磁盘分区信息
执行 `fdisk -l` 命令查看磁盘分区信息,以确保磁盘分区正确。命令和回显如下:
```
# fdisk -l
Disk /dev/mmcblk0: 14.86 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf2dc3842
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 8192 593919 585728 286M c W95 FAT32 (LBA)
/dev/mmcblk0p2 593920 1593343 999424 488M 82 Linux swap / Solaris
/dev/mmcblk0p3 1593344 31116287 29522944 14.1G 83 Linux
```
## 增大未加载的文件系统大小
`resize2fs /dev/mmcblk0p3`
## 查看磁盘空间信息
执行 `df -lh` 命令查看磁盘空间信息,以确保根目录分区已扩展。
>![](../public_sys-resources/icon-notice.gif) **须知:**
>如果根目录分区未扩展,可执行 `reboot` 命令重启树莓派之后再执行 `resize2fs /dev/mmcblk0p3`
# wifi 连接
## 查看 IP 和网卡信息
`ip a`
获取无线网卡 wlan0 信息:
```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:50:de:57 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.109/24 brd 192.168.31.255 scope global dynamic noprefixroute eth0
valid_lft 41570sec preferred_lft 41570sec
inet6 fe80::cd39:a969:e647:3043/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether e2:e6:99:89:47:0c brd ff:ff:ff:ff:ff:ff
```
## 连接 wifi
这里我们介绍连接 wifi 的三种方式nmcli 命令行、nmtui 字符界面、编辑配置文件。
1. nmcli 命令行
1. 扫描可以连接的 wifi 信息
`nmcli dev wifi`
2. 连接 wifi
`nmcli dev wifi connect SSID password PWD`
其中,`SSID` 为上一步扫描到的可供连接的 wifi 的 SSID`PWD` 为对应 wifi 的密码。例如,`SSID``openEuler-wifi`,密码为 `12345678`,则连接该 wifi 命令为:`nmcli dev wifi connect openEuler-wifi password 12345678`,连接成功提示:
```
Device 'wlan0' successfully activated with '26becaab-4adc-4c8e-9bf0-1d63cf5fa3f1'.
```
>![](../public_sys-resources/icon-note.gif) **说明:**
>如果使用 nmcli 命令连接失败,例如提示 `Error: Connection activation failed: (7) Secrets were required, but not provided.` 等错误,可尝试使用 nmtui 字符界面连接 wifi。
2. nmtui 字符界面
执行 `nmtui` 命令进入到 nmtui 字符界面,按照以下步骤连接 wifi。
1. 选择 `Edit a connection`,按 `Enter` 进入编辑网络连接窗口。
2. 按下键盘右方向键选择 `Add`,按 `Enter` 进入新建网络连接窗口。
3. 连接类型选择 `Wi-Fi` ,然后按下键盘右方向键选择 `Create`,按 `Enter` 进入 wifi 编辑连接信息的界面。
4. wifi 连接信息界面主要需要编辑以下内容,其他信息根据实际情况而定。编辑结束后选择 `OK`,按 `Enter` 完成编辑并回退到编辑网络连接窗口。
1. `Profile name` 栏输入该 wifi 连接的名称,这里可以使用默认名称,如 `Wi-Fi connection 1`
2. `Device` 栏输入要使用的无线网卡接口,这里输入 `wlan0`
3. `SSID` 栏输入要连接的 wifi 的 SSID
4. `Security` 栏选择 wifi 密码加密方式,这里根据实际情况选择,例如选择 `WPA & WPA2 Personal`
5. `Password` 栏输入 wifi 密码。
5. 选择 `Back` 回退到最初的 nmtui 字符界面。
6. 选择 `Activate a connection`,按 `Enter` 进入激活网络连接窗口。
7. 查看添加的 wifi 连接是否已激活(已激活的连接名称前有 `*` 标记)。如果未激活,选择该 wifi 连接,然后按下键盘右方向键选择 `Activate`,按 `Enter` 激活该连接。待激活完成后,选择 `Back`,按 `Enter` 退出该激活界面,回退到最初的 nmtui 字符界面。
8. 选择 `Quit`,然后按下键盘右方向键选择 `OK`,按 `Enter` 退出 nmtui 字符界面。
3. 编辑配置文件
1. 添加配置文件 /etc/sysconfig/network-scripts/ifcfg-`SSID`。例如,文件内容如下:
```
ESSID=SSID
MODE=Managed
KEY_MGMT=WPA-PSK
SECURITYMODE=open
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=SSID
UUID=66d533cf-525d-46af-a17f-000465660b75
DEVICE=wlan0
ONBOOT=yes
```
>![](../public_sys-resources/icon-notice.gif) **须知:**
>- 上述 `SSID` 为之前扫描到的可供连接的 wifi 的 SSID。如果 SSID 中包含特殊字符,需将该文件中的 SSID 使用单引号括起来。
>- 该 WiFi 连接为自动分配 IP如需要设置静态 IP请参考 `启用树莓派` 章节 `ssh 远程登录``设置固定 IP` 的方法。
2. 添加配置文件 /etc/sysconfig/network-scripts/keys-`SSID`。例如,文件内容如下:
```
WPA_PSK=PWD
```
>![](../public_sys-resources/icon-notice.gif) **须知:**
>- 上述 `SSID` 为之前扫描到的可供连接的 wifi 的 SSID。
>- 上述 `PWD` 为对应 wifi 的密码。如果密码中包含特殊字符,需将密码使用单引号括起来。
3. 执行命令 `systemctl restart NetworkManager` 重启 NetworkManager 服务,或者执行命令 `reboot` 重启树莓派。
## 查看 IP 和无线网卡信息
`ip a`
```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:50:de:57 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.109/24 brd 192.168.31.255 scope global dynamic noprefixroute eth0
valid_lft 41386sec preferred_lft 41386sec
inet6 fe80::cd39:a969:e647:3043/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether dc:a6:32:50:de:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.110/24 brd 192.168.31.255 scope global dynamic noprefixroute wlan0
valid_lft 43094sec preferred_lft 43094sec
inet6 fe80::394:d086:27fa:deba/64 scope link noprefixroute
valid_lft forever preferred_lft forever
```
# 音频
## 开启音频
编辑 /boot/config.txt
`vim /boot/config.txt`
添加内容:
```
dtparam=audio=on
```
重启树莓派。
## 安装音频播放软件
这里以使用 mpg123 为例。
```
dnf install mpg123
```
## 播放音频
`mpg123 xxx.mp3`
## 音频输出配置
详细信息可参考[树莓派官方文档](https://www.raspberrypi.org/documentation/),如:[audio-config](https://www.raspberrypi.org/documentation/configuration/audio-config.md)。
树莓派有两种音频输出模式HDMI 和耳机插孔。可以根据需要更换输出模式。
如果您的 HDMI 显示器或电视具有内置扬声器,则可以通过 HDMI 电缆播放音频,但您可以将其切换到耳机或插入耳机插孔的其他扬声器。如果显示器有扬声器,则默认情况下声音通过 HDMI 输出;如果没有,则通过耳机插孔输出。这可能不是所需的输出设置,或者自动检测不准确,在这种情况下,您可以手动切换输出。
可以通过输入命令将音频输出切换到对应模式。
### HDMI
`amixer cset numid=3 2`
### 耳机插孔
`amixer cset numid=3 1`
### 自动(默认)
`amixer cset numid=3 0`
# 蓝牙
## 开启蓝牙
需要保证蓝牙已经开启,例如,如果树莓派启用了串口功能,`/boot/config.txt` 中会有配置项 `dtoverlay=pi3-disable-bt`,使用蓝牙则需要取消该配置项,请删除或注释。如果修改过`/boot/config.txt`的配置内容,需要重启树莓派。
## 查看蓝牙设备
`hciconfig`
例如,这里查看到的信息如下:
```
hci0: Type: Primary Bus: UART
BD Address: AA:AA:AA:AA:AA:AA ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:66475718 acl:151850 sco:0 events:1760 errors:0
TX bytes:13827 acl:117 sco:0 commands:996 errors:0
```
## 连接蓝牙
执行 `bluetoothctl` 命令进入到交互式命令行界面,按照以下步骤连接蓝牙设备。
1. 输入 `power on` 开启控制器电源。
2. 输入 `agent on` 启用代理。
3. 输入 `default-agent` 设置默认代理连接。
4. 输入 `scan on` 搜索周边蓝牙设备。
这里看到要连接的目标蓝牙设备对应的 MAC 地址,记为 `target-MAC`
5. 输入 `pair target-MAC` 配对目标蓝牙设备。
这里,可能会出现的问题:
1. Failed to pair: org.bluez.Error.AuthenticationCanceled
解决:多次配对后仍然提示该错误,请重启 bluetooth 服务。
```
systemctl restart bluetooth
```
6. 输入 `trust target-MAC` 信任目标蓝牙设备。
这一步可忽略。
7. 输入 `connect target-MAC` 连接目标蓝牙设备。
连接成功后,则会在该交互式命令行界面显示进入到目标蓝牙设备。
这里,可能会出现的问题:
1. Attempting to connect to XX:XX:XX:XX:XX:XX
Failed to connect: org.bluez.Error.Failed
解决:重启 pluseaudio。
```
pulseaudio -k
pulseaudio --start
```
如果重启多次仍然无效。在 `bluetoothctl` 交互命令中删除对应蓝牙设备信息:`remove target-MAC`,然后按照 `pair``trust``connect` 的过程连接蓝牙。
## 播放音乐
`target-MAC` 对应的设备上`设置->蓝牙`会显示已经连接到树莓派的蓝牙设备。该设备播放音乐,就可以通过树莓派收听。
>![](../public_sys-resources/icon-notice.gif) **须知:**
>要保证树莓派已经开启音频。
## 文件传输
按照以下步骤通过蓝牙传输文件。
1. 下载软件 obexftp
需要下载三个包lib64obexftp、lib64openobex、obexftp可在 [地址](https://rpmfind.net/linux/mageia/distrib/cauldron/aarch64/media/core/release/) 下载其最新版本。以我们下载时对应版本为例,执行以下命令:
```
wget https://rpmfind.net/linux/mageia/distrib/cauldron/aarch64/media/core/release/lib64obexftp0-0.24-17.mga8.aarch64.rpm
wget https://rpmfind.net/linux/mageia/distrib/cauldron/aarch64/media/core/release/lib64openobex1-1.7.2-3.mga8.aarch64.rpm
wget https://rpmfind.net/linux/mageia/distrib/cauldron/aarch64/media/core/release/obexftp-0.24-17.mga8.aarch64.rpm
```
2. 安装 obexftp执行以下命令
```
rpm -i lib64obexftp0-0.24-17.mga8.aarch64.rpm
rpm -i lib64openobex1-1.7.2-3.mga8.aarch64.rpm
rpm -i obexftp-0.24-17.mga8.aarch64.rpm
```
3. 查看文件传输的 channel执行下面的命令
`sdptool browse target-MAC`
查看结果:
```
Browsing target-MAC ...
...
Browsing target-MAC ...
Service Search failed: Invalid argument
Service Name: OBEX Phonebook Access Server
Service RecHandle: 0x1000b
Service Class ID List:
"Phonebook Access - PSE" (0x112f)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 19
"OBEX" (0x0008)
Profile Descriptor List:
"Phonebook Access" (0x1130)
Version: 0x0101
Service Name: OBEX Object Push
Service RecHandle: 0x1000c
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 12
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0102
...
```
看到其中 `Service Name: OBEX Object Push` 下的 ` Channel: 12`
4. 传输文件
待传输的文件路径记为 `file-path`,执行以下命令:
`obexftp -b target-MAC -B 12 -U NONE -p file-path`
之后就可以在`target-MAC` 对应的设备上选择接收文件,进行文件传输。
# GPIO
## 简介
树莓派的一个强大特性是沿着板的上边缘有一排 GPIO通用输入/输出)管脚。在所有当前的树莓派板上都可以找到一个 40 针 GPIO 引脚(在树莓派 Zero 和 Pi Zero W 上未填充)。在树莓派 1B+2014年之前电路板包含较短的 26 针引脚。以树莓派 4B 为例,其 40 针脚见下图:
![](images/GPIO针脚.png)
GPIO 是个比较重要的概念。用户可以通过 GPIO 口和硬件进行数据交互(如 UART控制硬件工作如 LED、蜂鸣器等读取硬件的工作状态信号如中断信号等。GPIO 口的使用非常广泛。举例来说40 个针脚中,有固定输出的 5V2、4号PIN、3.3V1、17号PIN和地线Ground6、9、14、20、25、30、34、39。如果一个电路两端接在 5V 和地线之间,该电路就会获得 5V 的电压输入,相当于给树莓派通电,注意,此时就不可以再通过树莓派提供的电源同时通电。有一些针脚除了 GPIO 功能外还提供了高级端口功能。例如GPIO14 和 GPIO15 就可以充当 UART 端口。下面,我们以使用 UARTGPIO14 和 GPIO15进行串口通信为例介绍如何使用树莓派 GPIO。
## UART
通用异步收发传输器Universal Asynchronous Receiver/Transmitter),通常称作 UART是一种串行通信协议其中数据是串行传输的一次传输一个字节的数据即逐位传输。作为把并行输入信号转成串行输出信号的芯片UART 通常被集成于其他通讯接口的连结上。
树莓派有两个内置 UART。一个是硬件串口PL011 UART可以独立调整串口的速率和模式在操作系统中对应文件 /dev/ttyAMA0一个是迷你串口mini UART在操作系统中对应文件 /dev/ttyS0。在树莓派 2B/2B+ 等这些老版的树莓派上PL011 UART 作为主 UART 用于 Linux 控制台,可用于外部的 UART 通信,因此可以独立调整串口的速率和模式;而在树莓派 Zero W、树莓派 3 及 3 以上版本PL011 UART 作为辅助 UART 分配给了新增的板载蓝牙模块mini UART 作为主 UART 用于 Linux 控制台进行串口通信。这里提到的主 UART 是分配给 Linux 控制台的 UART在操作系统中对应文件 /dev/serial0如果启用另一个 UART 则被称为辅助 UART在操作系统中对应文件/dev/serial1如果启用
mini UART 没有时钟源,必须由内核提供时钟参考源,它使用与 GPU 核心频率相关的频率。因此,随着 GPU 核心频率的变化mini UART 的频率也会发生变化,从而改变 UART 的波特率。这使得 mini UART 不稳定,可能导致数据丢失或损坏。要使 mini UART 稳定需要修复核心频率。此外mini UART 没有奇偶校验支持。而 PL011 UART 是一款稳定的高性能 UART比 mini UART 更高的吞吐量。因此,虽然 mini UART 也可以用于串口通信或者板载蓝牙,我们建议选择树莓派的 PL011 UART。
下面以树莓派 4B 为例,介绍不同配置下的串口通信以及板载蓝牙的使用情况。
### UART 连线
为了和树莓派串口通信,我们将树莓派的 UART 针脚连接到个人电脑(下面简称 PC上。
UART 的端口至少有 RX、TX 和地线三个针脚。RX 负责读取TX 负责输出。如果有两个 UART 端口,它们的连接方式如下:
![](images/UART连接.png)
在树莓派 4B 等设备中TX 和 RX 就是 GPIO14 和 GPIO15 针脚。因此,我们把树莓派的针脚和外接设备(这里,我们使用 PC按照上图的方式连接起来就可以实现在树莓派和外接设备之间的串口通信。
一般的 PC 都没有暴露在外的 UART 针脚。为了通过 UART 来连接树莓派和 PC需要一个 USB 和 UART 的转换器。这个转换器的一端是 USB 接口,插入 PC 的 USB 口;另一端是 UART 的针脚,可以按照 上图的方式连接到树莓派的 UART 针脚。连线示意图如下:
![](images/UART连接PC.png)
>![](../public_sys-resources/icon-notice.gif) **须知:**
>如果你连接树莓派 UART 针脚所使用的杜邦线不止有三个接口,不要连接树莓派的 5V 或 3.3V 的针脚。如果一个电路两端接在 5V 和地线之间,该电路就会获得 5V 的电压输入,相当于给树莓派通电。此时,如果同时接通树莓派电源设备,会烧坏树莓派!
连接好之后,就可以实现树莓派和 PC 通信。Windows 中可以利用串口通信的图形化软件来和树莓派进行串口通信。注意,根据树莓派配置文件 boot/config.txt 中形如 `console=serial0,115200` 的配置项,串口通信的图形化软件中选择对应串口的波特率应设置为 115200。
### 串口通信
由于树莓派 4B 中默认情况下PL011 UART 分配给了新增的板载蓝牙模块mini UART 用于 Linux 控制台进行串口通信。为了实现串口通信,我们可以使用 mini UART也可以占用 PL011 UART。如果串口通信占用 PL011 UART板载蓝牙就需要禁用或者使用 mini UART。
>![](../public_sys-resources/icon-note.gif) **说明:**
>注意树莓派的配置文件 /boot/config.txt 中 `enable_uart` 这个配置项,`enable_uart` 的默认值取决于 UART 的实际角色。
>- 如果将 ttyAMA0 分配给蓝牙模块(默认),则 `enable_uart` 默认为 0即不启用 GPIO 串口;
>- 如果将 mini UART 分配给蓝牙模块(`dtoverlay=pi3-miniuart-bt`),则 `enable_uart` 默认值为 1即启用 GPIO 串口(使用 PL011 UART
>- 如果禁用蓝牙(`dtoverlay=pi3-disable-bt`),则默认将 ttyAMA0 分配给串口通信模块(使用 PL011 UART
下面我们总结一下不同情况下的配置。
#### 蓝牙使用 PL011 UART禁用串口
默认情况下PL011 UART 作为辅助 UART 分配给了新增的板载蓝牙模块,在操作系统中对应文件 /dev/ttyAMA0/dev/serial1mini UART 作为主 UART 分配给 Linux 控制台进行串口通信,该配置由 `enable_uart` 决定,默认为 0表示不启用即默认禁用串口通信。
命令 `ls -l /dev/serial*`,可以看到如下信息:
```
lrwxrwxrwx 1 root root 7 Sep 3 2019 /dev/serial1 -> ttyAMA0
```
#### 蓝牙使用 PL011 UART串口使用 mini UART
PL011 UART 作为辅助 UART 分配给新增的板载蓝牙模块,在操作系统中对应文件 /dev/ttyAMA0/dev/serial1mini UART 作为主 UART 分配给 Linux 控制台进行串口通信,在操作系统中对应文件 /dev/ttyS0/dev/serial0
按照以下步骤进行设置:
1. 执行 `vim /boot/config.txt` 命令编辑配置文件。
添加:
```
enable_uart=1
```
该配置项会同时将核心频率固定到 250MHz无需设置 core_freq。
2. 执行命令 `systemctl enable hciuart` 设置 hciuart 服务开机启动(默认已设置)。如果已设置,则跳过该步骤。
3. 执行 `reboot` 命令重启树莓派。
4. 查看串口输出结果
执行 `ls -l /dev/serial*` 命令,可以看到如下信息:
```
lrwxrwxrwx 1 root root 5 Sep 3 2019 /dev/serial0 -> ttyS0
lrwxrwxrwx 1 root root 7 Sep 3 2019 /dev/serial1 -> ttyAMA0
```
在 PC 的串口通信图形化软件上,可以看到树莓派的开机日志以及树莓派上通过命令 `echo "hello" > /dev/serial0` 向串口输出的信息。见下图:
![](images/串口输出.png)
#### 禁用蓝牙,串口使用 PL011 UART
PL011 UART 作为主 UART 分配给 Linux 控制台用于串口通信,在操作系统中对应文件 /dev/ttyAMA0/dev/serial0
按照以下步骤进行设置:
1. 执行 `vim /boot/config.txt` 命令编辑配置文件。
添加:
```
dtoverlay=pi3-disable-bt
```
2. 执行 `systemctl disable hciuart` 命令取消 hciuart 服务开机启动。否则hciuart 服务会默认开机启动,且启动失败。
3. 执行 `reboot` 命令重启树莓派。
4. 查看串口输出结果
执行 `ls -l /dev/serial*` 命令,可以看到如下信息:
```
lrwxrwxrwx 1 root root 7 Sep 3 2019 /dev/serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Sep 3 2019 /dev/serial1 -> ttyS0
```
在 PC 的串口通信图形化软件上,可以看到树莓派的开机日志以及树莓派上通过命令 `echo "hello" > /dev/serial0` 向串口输出的信息。
#### 蓝牙使用 mini UART串口使用 PL011 UART
PL011 UART 作为主 UART 分配给 Linux 控制台用于串口通信,在操作系统中对应文件 /dev/ttyAMA0/dev/serial0mini UART 作为辅助 UART 分配给新增的板载蓝牙模块,在操作系统中对应文件 /dev/ttyS0/dev/serial1
按照以下步骤进行设置:
1. 执行 `vim /boot/config.txt` 命令编辑配置文件。
添加:
```
core_freq=250
dtoverlay=pi3-miniuart-bt
```
>![](../public_sys-resources/icon-notice.gif) **须知:**
>这里需要设置 core_freq=250。
2. 执行命令 `systemctl enable hciuart` 设置 hciuart 服务开机启动(默认已设置)。如果已设置,则跳过该步骤。
3. 执行 `reboot` 命令重启树莓派。
4. 查看串口输出结果
执行 `ls -l /dev/serial*` 命令,可以看到如下信息:
```
lrwxrwxrwx 1 root root 7 Sep 3 2019 /dev/serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 Sep 3 2019 /dev/serial1 -> ttyS0
```
在 PC 的串口通信图形化软件上,可以看到树莓派的开机日志以及树莓派上通过命令 `echo "hello" > /dev/serial0` 向串口输出的信息。
## WiringPi
WiringPi 是应用于树莓派平台的 GPIO 控制库函数,包括一套 GPIO 控制命令可以控制树莓派GPIO管脚。WiringPi 是可以扩展的,用户可以利用 WiringPi 的内部模块或把自定义的扩展模块集成到 WiringPi 中以扩展更多的 GPIO 接口或支持更多的功能。
当前,[官方](http://wiringpi.com/download-and-install/) 提供的链接无法下载 WiringPi这里使用 [WiringPi 下载链接](https://github.com/WiringPi/WiringPi)。
### 下载 WiringPi
`git clone https://github.com/WiringPi/WiringPi.git`
### 安装 WiringPi
`cd WiringPi`
`sudo ./build`
>![](../public_sys-resources/icon-notice.gif) **须知:**
>当前系统默认未安装 sudo、make、gcc等使用命令 `dnf install -y sudo make gcc` 安装。
### 使用 WiringPi
`gpio -v`
`gpio readall`
![](images/WiringPi.png)
注意,使用命令 `gpio readall`,可能会报错:
```
wiringPiSetup: mmap (GPIO) failed: Operation not permitted
```
解决方法,编辑 `/boot/cmdline.txt` 添加内容 `iomem=relaxed`,执行 `reboot` 命令重启树莓派。
当前,`/boot/cmdline.txt` 最终内容为:
```
console=serial0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline iomem=relaxed rootwait
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,551 @@
- [描述](#描述)
- [准备编译环境](#准备编译环境)
- [基于主线 u-boot 编译启动文件](#基于主线-u-boot-编译启动文件)
- [编译 u-boot](#编译-u-boot)
- [基于 openEuler 内核编译内核镜像](#基于-openeuler-内核编译内核镜像)
- [编译内核代码](#编译内核代码)
- [构建 boot 镜像](#构建-boot-镜像)
- [构建 rootfs 镜像](#构建-rootfs-镜像)
- [创建 RPM 数据库](#创建-rpm-数据库)
- [下载安装 openEuler 发布包](#下载安装-openeuler-发布包)
- [添加 yum 源](#添加-yum-源)
- [安装 dnf](#安装-dnf)
- [安装必要软件](#安装必要软件)
- [添加配置文件](#添加配置文件)
- [rootfs 设置](#rootfs-设置)
- [制作 openEuler 镜像](#制作-openeuler-镜像)
- [创建镜像](#创建镜像)
- [创建空镜像](#创建空镜像)
- [镜像分区](#镜像分区)
- [创建分区表](#创建分区表)
- [镜像分区](#镜像分区-1)
- [设置 boot 分区为可启动](#设置-boot-分区为可启动)
- [使用 losetup 将磁盘镜像文件虚拟成块设备](#使用-losetup-将磁盘镜像文件虚拟成块设备)
- [使用 kpartx 创建分区表 /dev/loop0 的设备映射](#使用-kpartx-创建分区表-devloop0-的设备映射)
- [写入 u-boot](#写入-u-boot)
- [格式化分区](#格式化分区)
- [创建要挂载的根目录和 boot 分区路径](#创建要挂载的根目录和-boot-分区路径)
- [挂载根目录和 boot 分区](#挂载根目录和-boot-分区)
- [获取生成的 img 镜像的 blkid](#获取生成的-img-镜像的-blkid)
- [修改 fstab](#修改-fstab)
- [rootfs 拷贝到镜像](#rootfs-拷贝到镜像)
- [boot 引导拷贝到镜像](#boot-引导拷贝到镜像)
- [卸载镜像](#卸载镜像)
- [同步到盘](#同步到盘)
- [卸载](#卸载)
- [卸载镜像文件虚拟的块设备](#卸载镜像文件虚拟的块设备)
# 描述
本文档介绍如何构建适用于 Rockchip 开发板的 openEuler 镜像。
# 准备编译环境
1. 系统要求。
- 操作系统openEuler
- 架构AArch64
2. 安装依赖包
```
dnf makecache
dnf install git wget make gcc bison dtc m4 flex bc openssl-devel tar dosfstools rsync parted dnf-plugins-core tar
```
3. 创建工作目录
```
WORKDIR=$(pwd)/build
mkdir $WORKDIR
cd $WORKDIR
```
# 基于主线 u-boot 编译启动文件
## 编译 u-boot
1. 下载源码
```
cd $WORKDIR
git clone --branch v2020.10 https://github.com/u-boot/u-boot.git
```
2. 获取 ARM-Trusted-Firmware
```
cd u-boot
wget -O bl31.elf https://github.com/rockchip-linux/rkbin/raw/master/bin/rk33/rk3399_bl31_v1.35.elf
```
3. 编译 u-boot
```
make ARCH=arm firefly-rk3399_defconfig
make ARCH=arm -j$(nproc)
make ARCH=arm u-boot.itb -j$(nproc)
```
4. 收集编译结果
将生成的 idbloader.img 和 u-boot.itb 文件复制到工作目录。
```
cp idbloader.img $WORKDIR
cp idbloader.img $WORKDIR
cd $WORKDIR
```
# 基于 openEuler 内核编译内核镜像
## 编译内核代码
1. 下载源码
```
cd $WORKDIR
git clone --branch openEuler-20.03-LTS https://gitee.com/openeuler/rockchip-kernel.git
```
2. 编译内核,生成内核映像文件 Image 和设备树文件
```
cd rockchip-kernel
make O=test firefly_linux_defconfig
make O=test Image
make O=test dtbs
```
3. 收集编译结果
将编译生成的内核映像文件 Image 和设备树文件复制到工作目录。
```
cp test/arch/arm64/boot/Image $WORKDIR/kernel8.img
cp test/arch/arm64/boot/dts/rockchip/firefly-rk3399.dtb $WORKDIR
```
# 构建 boot 镜像
1. 创建 boot 工作目录
```
cd $WORKDIR
mkdir -p boot/extlinux
```
2. 设置内核启动项
将以下内容写进 boot/extlinux/extlinux.conf
label openEuler
kernel /kernel8.img
fdt /firefly-rk3399.dtb
append earlyprintk console=ttyS2,1500000 rw root=/dev/mmcblk1p5 rootfstype=ext4 init=/sbin/init rootwait"
3. 内核映像文件和设备树文件放入 boot 目录
```
cp $WORKDIR/kernel8.img boot
cp $WORKDIR/firefly-rk3399.dtb boot
```
4. 构建 boot 镜像
1. 创建空镜像
`dd if=/dev/zero of=boot.img bs=1M count=32`
2. 格式化为 fat 文件格式
`sudo mkfs.fat boot.img`
3. 创建临时目录
`mkdir tmp`
4. 将 boot.img 挂载到临时目录
`sudo mount boot.img tmp/`
5. 填充镜像内容
`cp -r boot/* tmp/`
6. 取消挂载 boot.img
`umount tmp`
# 构建 rootfs 镜像
## 创建 RPM 数据库
```
cd $WORKDIR
mkdir rootfs
mkdir -p rootfs/var/lib/rpm
rpm --root $WORKDIR/rootfs/ --initdb
```
## 下载安装 openEuler 发布包
```
rpm -ivh --nodeps --root $WORKDIR/rootfs/ http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/Packages/openEuler-release-20.03LTS-33.oe1.aarch64.rpm
```
执行此操作会在/root/rootfs下生成3个文件夹如下
![releaseyum](images/releaseyum.png)
## 添加 yum 源
```
mkdir $WORKDIR/rootfs/etc/yum.repos.d`
curl -o $WORKDIR/rootfs/etc/yum.repos.d/openEuler-20.03-LTS.repo https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo
```
![addrepo](images/addrepo.png)
## 安装 dnf
`dnf --installroot=$WORKDIR/rootfs/ install dnf --nogpgcheck -y`
## 安装必要软件
```
dnf --installroot=$WORKDIR/rootfs/ makecache
dnf --installroot=$WORKDIR/rootfs/ install -y alsa-utils wpa_supplicant vim net-tools iproute iputils NetworkManager openssh-server passwd hostname ntp bluez pulseaudio-module-bluetooth
```
## 添加配置文件
1. 设置 DNS
```
cp -L /etc/resolv.conf ${WORKDIR}/rootfs/etc/resolv.conf
vim $WORKDIR/rootfs/etc/resolv.conf
```
添加内容:
```
nameserver 8.8.8.8
nameserver 114.114.114.114
```
2. 设置 IP 自动获取
```
mkdir $WORKDIR/rootfs/etc/sysconfig/network-scripts
vim $WORKDIR/rootfs/etc/sysconfig/network-scripts/ifup-eth0
```
内容:
```
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=851a6f36-e65c-3a43-8f4a-78fd0fc09dc9
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
DEVICE=eth0
```
3. 拷贝 wifi 配置文件,蓝牙启动文件
1. 下载 [无线配置目录](../../scripts/rockchip/bin/wireless) 到 $WORKDIR
2. 拷贝文件 :
```
mkdir $WORKDIR/rootfs/system
cp -r $WORKDIR/wireless/system/* $WORKDIR/rootfs/system/
cp $WORKDIR/wireless/rcS.sh $WORKDIR/rootfs/etc/profile.d/
cp $WORKDIR/wireless/enable_bt $WORKDIR/rootfs/usr/bin/
chmod +x $WORKDIR/rootfs/usr/bin/enable_bt $WORKDIR/rootfs/etc/profile.d/rcS.sh
```
4. 设置 NTP 服务器
```
sed -i 's/#NTP=/NTP=0.cn.pool.ntp.org/g' $WORKDIR/rootfs/etc/systemd/timesyncd.conf
sed -i 's/#FallbackNTP=/FallbackNTP=1.asia.pool.ntp.org 2.asia.pool.ntp.org/g' $WORKDIR/rootfs/etc/systemd/timesyncd.conf
```
5. 添加第一次开机扩容脚本
`$WORKDIR/rootfs/etc/rc.d/init.d/expand-rootfs.sh` 写入以下内容:
echo "#!/bin/bash
# chkconfig: - 99 10
# description: expand rootfs
ROOT_PART="$(findmnt / -o source -n)" # /dev/mmcblk1p5
ROOT_DEV="/dev/$(lsblk -no pkname "$ROOT_PART")" # /dev/mmcblk1
PART_NUM="$(echo "$ROOT_PART" | grep -o "[[:digit:]]*$")" # 5
cat << EOF | gdisk $ROOT_DEV
p
w
Y
Y
EOF
parted -s $ROOT_DEV -- resizepart $PART_NUM 100%
resize2fs $ROOT_PART
ln -s /system/etc/firmware /etc/firmware
if [ -f /etc/rc.d/init.d/expand-rootfs.sh ];then rm /etc/rc.d/init.d/expand-rootfs.sh; fi" >> ${WORKDIR}/rootfs/etc/rc.d/init.d/expand-rootfs.sh
设置可执行权限:
`chmod +x $WORKDIR/rootfs/etc/rc.d/init.d/expand-rootfs.sh`
## rootfs 设置
1. 挂载必要的路径
mount --bind /dev $WORKDIR/rootfs/dev
mount -t proc /proc $WORKDIR/rootfs/proc
mount -t sysfs /sys $WORKDIR/rootfs/sys
2. run chroot
`chroot $WORKDIR/rootfs /bin/bash`
3. 设置 root 密码
`passwd root`
输入要设置的 root 密码。
4. 设置主机名
`echo openEuler > /etc/hostname`
5. 设置默认时区为东八区
`ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime`
6. 设置第一次开机扩容脚本,然后退出
```
chkconfig --add expand-rootfs.sh
chkconfig expand-rootfs.sh on
exit
```
7. 取消临时挂载的目录
```
umount -l $WORKDIR/rootfs/dev
umount -l $WORKDIR/rootfs/proc
umount -l $WORKDIR/rootfs/sys
```
8. 制作镜像
1. dd 创建镜像:
`dd if=/dev/zero of=rootfs.img bs=1M count=3000`
2. 格式化镜像:
`mkfs.ext4 rootfs.img`
3. 创建挂载目录
```
mkdir rootfsimg
```
4. 挂载镜像
```
mount rootfs.img rootfsimg/
```
5. rootfs 拷贝到挂载目录
```
cp -rfp rootfs/* rootfsimg/
```
6. 卸载镜像
`umount rootfsimg/`
7. 修复文件系统
```
e2fsck -p -f rootfs.img
resize2fs -M rootfs.img
```
# 制作 openEuler 镜像
基于以上章节生成的文件,制作用于刷写到 SD 卡的 openEuler 镜像。
## 创建镜像
### 创建空镜像
```
cd $WORKDIR
dd if=/dev/zero of=openeuler-rk3399.img bs=1MiB count=3072 status=progress && sync
```
注意这里创建了一个大小为3G的文件可以根据实际情况适当调整。
### 镜像分区
#### 创建分区表
`parted openeuler-rk3399.img mktable gpt`
#### 镜像分区
执行 `fdisk openeuler-rk3399.img` 后,根据提示依次输入:
1. 输入 p查看分区信息可以看到当前无分区。
2. 输入 n创建 idbloader 分区。
3. 输入 p 或直接按 Enter创建 Primary 类型的分区。
4. 输入 1 或直接按 Enter创建序号为 1 的分区。
5. 输入 64输入第一个分区的起始扇区号。
6. 输入 16383输入第一个分区的末尾扇区号。
7. 输入 p查看当前分区情况可以看到当前有一个分区。
8. 输入 n创建 u-boot 分区。
9. 输入 p 或直接按 Enter创建 Primary 类型的分区。
10. 输入 2 或直接按 Enter创建序号为 2 的分区。
11. 输入 16384输入第二个分区的起始扇区号。
12. 输入 24575输入第二个分区的末尾扇区号。
13. 输入 p查看当前分区情况可以看到当前有两个分区。
14. 输入 n创建 trust 分区。
15. 输入 p 或直接按 Enter创建 Primary 类型的分区。
16. 输入 3 或直接按 Enter创建序号为 3 的分区。
17. 输入 24576输入第二个分区的起始扇区号。
18. 输入 32767输入第二个分区的末尾扇区号。
19. 输入 p查看当前分区情况可以看到当前有三个分区。
20. 输入 n创建 boot 分区。
21. 输入 p 或直接按 Enter创建 Primary 类型的分区。
22. 输入 4 或直接按 Enter创建序号为 4 的分区。
23. 输入 32768输入第二个分区的起始扇区号。
24. 输入 262143输入第二个分区的末尾扇区号。
25. 输入 p查看当前分区情况可以看到当前有四个分区。
26. 输入 n创建 root 分区。
27. 输入 p 或直接按 Enter创建 Primary 类型的分区。
28. 输入 5 或直接按 Enter创建序号为 5 的分区。
29. 输入 262144输入第三个分区的起始扇区号。
30. 按 Enter输入第三个分区的末尾扇区号使用最后一个扇区号作为第五个分区的末尾扇区号。
31. 输入 p查看当前分区情况可以看到当前有五个分区。
32. 输入 w写入并退出。
#### 设置 boot 分区为可启动
`parted openeuler-rk3399.img -s set 4 boot on`
## 使用 losetup 将磁盘镜像文件虚拟成块设备
`losetup -f --show openeuler-rk3399.img`
例如,显示结果为 /dev/loop0。
## 使用 kpartx 创建分区表 /dev/loop0 的设备映射
`kpartx -va /dev/loop0`
得到结果将 /dev/loop0 五个分区挂载了:
```
add map loop0p1 ...
add map loop0p2 ...
add map loop0p3 ...
add map loop0p4 ...
add map loop0p5 ...
```
运行 `ls /dev/mapper/loop0p*` 可以看到分区分别对应刚才为 openeuler-rk3399.img 做的五个分区:
```
/dev/mapper/loop0p1 /dev/mapper/loop0p2 /dev/mapper/loop0p3 /dev/mapper/loop0p4 /dev/mapper/loop0p5
```
## 写入 u-boot
1. 写入 idbloader.img。
`dd if=idbloader.img of=/dev/mapper/loop0p1`
2. 写入 u-boot.itb。
`dd if=u-boot.itb of=/dev/mapper/loop0p2`
## 格式化分区
1. 格式化 boot 分区
`mkfs.vfat -n boot /dev/mapper/loop0p4`
3. 格式化 root 分区
`mkfs.ext4 /dev/mapper/loop0p5`
## 创建要挂载的根目录和 boot 分区路径
`mkdir $WORKDIR/rootp $WORKDIR/bootp`
## 挂载根目录和 boot 分区
`mount -t vfat -o uid=root,gid=root,umask=0000 /dev/mapper/loop0p4 $WORKDIR/bootp/`
`mount -t ext4 /dev/mapper/loop0p5 $WORKDIR/rootp/`
## 获取生成的 img 镜像的 blkid
执行命令 blkid 得到三个分区的 UUID例如
```
...
/dev/mapper/loop0p4: SEC_TYPE="msdos" LABEL="boot" UUID="2785-C7C3" TYPE="vfat" PARTUUID="e0a091bd-04"
/dev/mapper/loop0p5: UUID="67b5fc1c-9cd3-4884-968c-4ca35e5ae154" TYPE="ext4" PARTUUID="e0a091bd-05"
```
## 修改 fstab
`vim $WORKDIR/rootfs/etc/fstab`
内容:
```
UUID=67b5fc1c-9cd3-4884-968c-4ca35e5ae154 / ext4 defaults,noatime 0 0
UUID=2785-C7C3 /boot vfat defaults,noatime 0 0
```
## rootfs 拷贝到镜像
`rsync -avHAXq $WORKDIR/rootfs/* $WORKDIR/rootp`
## boot 引导拷贝到镜像
`cp -r $WORKDIR/boot/* $WORKDIR/bootp`
## 卸载镜像
### 同步到盘
`sync`
### 卸载
`umount $WORKDIR/root`
`umount $WORKDIR/boot`
### 卸载镜像文件虚拟的块设备
`kpartx -d /dev/loop0`
`losetup -d /dev/loop0`
这样,最终就生成了需要的 openeuler-rk3399.img 镜像文件。
之后就可以使用镜像刷写 SD 卡并使用 Firefly-RK3399 了。

View File

@ -0,0 +1,139 @@
- [描述](#描述)
- [准备环境](#准备环境)
- [安装 Docker 及 qemu-user-static-aarch64](#安装-docker-及-qemu-user-static-aarch64)
- [openEuler/CentOS](#openeulercentos)
- [Debian/Ubuntu](#debianubuntu)
- [拉取 openEuler Docker 镜像](#拉取-openeuler-docker-镜像)
- [运行 openEuler Docker 容器](#运行-openeuler-docker-容器)
- [容器内安装 Git 来拉取构建框架](#容器内安装-git-来拉取构建框架)
- [容器内拉取并运行构建框架](#容器内拉取并运行构建框架)
- [将容器内构建好的镜像复制到主机](#将容器内构建好的镜像复制到主机)
## 描述
本文介绍了如何使用 Docker 来运行 rockchip 的 openEuler 构建框架。
## 准备环境
- 操作系统openEuler, CentOS, Ubuntu, Debian
- 架构aarch64, x86_64
## 安装 Docker 及 qemu-user-static-aarch64
### openEuler/CentOS
```
dnf makecache
dnf install docker -y
```
如果是 `aarch64` 架构的构建主机,可以跳过以下步骤;如果是 `x86_64` 架构的构建主机,则还需要执行以下步骤来安装 `qemu-user-static-aarch64`
```
wget https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64/os/Packages/q/qemu-user-static-aarch64-8.2.2-1.fc40.x86_64.rpm
rpm -ivh qemu-user-static-aarch64-8.2.2-1.fc40.x86_64.rpm
```
### Debian/Ubuntu
```
apt-get update
apt-get install docker.io -y
```
如果是 `aarch64` 架构的构建主机,可以跳过以下步骤;如果是 `x86_64` 架构的构建主机,则还需要执行以下步骤来安装 `qemu-user-static`
```
apt-get install qemu-user-static -y
```
## 拉取 openEuler Docker 镜像
```
docker pull --platform=linux/arm64 openeuler/openeuler:22.03-lts
```
- `--platform=linux/arm64` 的意思是拉取 `arm64` 的镜像,如果在 `x86_64` 架构的构建主机上进行拉取的话,需要软件 QEMU 来模拟运行。
- `openeuler/openeuler` 对应的 tag `22.03-lts` 可以在以下页面查阅:
https://hub.docker.com/r/openeuler/openeuler
执行以上命令的输出如下:
```
[root@localhost ~]# docker pull --platform=linux/arm64 openeuler/openeuler:22.03-lts
22.03-lts: Pulling from openeuler/openeuler
69c9100b5f7b: Pull complete
249b19ca6efa: Pull complete
Digest: sha256:ce16fc3edbd44ca0dcbc3d5c01f8e09242c7e73471f18b948d0add0f180d1a17
Status: Downloaded newer image for openeuler/openeuler:22.03-lts
docker.io/openeuler/openeuler:22.03-lts
```
## 运行 openEuler Docker 容器
```
docker run --privileged --name openEuler-2203-aarch64 -it openeuler/openeuler:22.03-lts
```
- `--privileged` 表示以特权模式运行,因为构建过程包括镜像的分区和挂载,需要启用特权模式。
- `--name openEuler-2403-aarch64` 将镜像的名字设置为 openEuler-2403-aarch64。
- `openeuler/openeuler:22.03-lts` 表示运行之前拉取的版本。
执行以上命令的输出如下:
```
[root@localhost ~]# docker run --privileged --name openEuler-2403-aarch64 -it openeuler/openeuler:22.03-lts
WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v4) and no specific platform was requested
Welcome to 6.6.0-28.0.0.34.oe2403.x86_64
System information as of time: Thu Oct 31 03:33:33 UTC 2024
System load: 0.07
Processes: 5
Memory used: 8.1%
Swap used: 0%
Usage On: 13%
Users online: 0
[root@5999265a441f /]#
```
如果是 `aarch64` 架构的构建主机,则不会出现 `WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v4) and no specific platform was requested` 的警告信息。
查看 Docker 是否成功使用 QEMU 模拟 `aarch64` 架构(`aarch64` 架构的构建主机则不需要这一步骤)。
```
[root@5999265a441f /]# arch
aarch64
```
## 容器内安装 Git 来拉取构建框架
```
dnf makecache
dnf install git -y
```
## 容器内拉取并运行构建框架
过程参见[镜像构建](../瑞芯微等开发板.md#镜像构建)。
## 将容器内构建好的镜像复制到主机
脚本执行完成后,会在 Docker 容器中脚本所在目录的 build/YYYY-MM-DD 文件夹下生成 openEuler 镜像文件。
假设构建框架 rockchip 文件夹的在 Docker 容器里的绝对路径为:/root/rockchip使用以下命令来拷贝 openEuler 镜像文件到构建主机:
```
docker cp openEuler-2203-aarch64:/root/rockchip/build/YYYY-MM-DD/openEuler-VERSION-BOARD-ARCH-RELEASE.img.xz /root
```
- `openEuler-2203-aarch64` 为 Docker 容器的名称。
- `/root/rockchip/build/YYYY-MM-DD/openEuler-VERSION-BOARD-ARCH-RELEASE.img.xz` 为 Docker 容器内 openEuler 镜像的绝对路径。
- `/root` 为拷贝 openEuler 镜像文件到构建主机的目标路径。

View File

@ -0,0 +1,161 @@
- [描述](#描述)
- [使用 Windows 刷写](#使用-windows-刷写)
- [使用打包后的 EMMC 刷写文件](#使用打包后的-emmc-刷写文件)
- [使用压缩后的 RAW 原始镜像](#使用压缩后的-raw-原始镜像)
- [使用 Linux 刷写](#使用-linux-刷写)
- [使用 SD 镜像启动后进入系统刷写](#使用-sd-镜像启动后进入系统刷写)
# 描述
本文档以为 Firefly ROC-RK3588S-PC 开发板刷写镜像为例,介绍了如何将 EMMC 刷写文件刷写入 EMMC。
# 使用 Windows 刷写
## 使用打包后的 EMMC 刷写文件
1. 本方法仅适用于 RK3399。
2. 生成的刷写文件压缩包为 build 下的 openEuler-VERSION-BOARD-RELEASE.tar.gz将其解压。
3. 下载 [RKDevTool 工具](http://www.t-firefly.com/doc/download/page/id/3.html#other_374)。
4. 进入 Loader 模式
1. 使用 Type-C data cable 连接好开发板和主机。
2. 使开发板进入 Loader 模式。
- 按住开发板上的 RECOVERY (恢复)键并保持
- 短按一下 RESET复位
- 大约两秒钟后,松开 RECOVERY 键
![loader](images/loader.png)
5. 切换至下载镜像页,勾选需要烧录的分区,可以多选。
6. 确保映像文件的路径和刷入地址正确,点击路径右边的空白表格单元格选择对应的文件。
![emmcaddress](images/rk3399-emmcaddress.png)
7. 点击执行按钮开始升级,升级结束后开发板会自动重启。
## 使用压缩后的 RAW 原始镜像
1. 本方法适用于 Rk3399/RK3588。
2. 刷写所需要的文件:
1. 生成的刷写文件压缩包为 build 下或项目主页发布的的压缩后的 RAW 原始镜像需要解压openEuler-VERSION-BOARD-RELEASE.img.xz。
2. 项目主页 scripts/bin 目录下提供的:
- 如果是 RK3399使用 [rk3399_loader.bin](../../scripts/rockchip/bin/rk3399_loader.bin)
- 如果是 RK3588使用 [rk3588_loader.bin](../../scripts/rockchip/bin/rk3588_loader.bin)
3. 下载版本不小于 2.92 的 [RKDevTool 工具](https://dl.radxa.com/tools/windows/windows_RKDevTool_Release_v2.92.zip)。
4. 进入 Maskrom 模式
1. 使用 Type-C data cable 连接好开发板和主机。
2. 使开发板进入 Maskrom 模式。
1. 如果开发板有 Maskrom 按键。
- 按住开发板上的 Maskrom 键并保持;
- 插上电源线;
- 在 RKDevTool 显示“发现一个 MASKROM 设备后”,松开 Maskrom 键。
2. 如果开发板没有 Maskrom 按键(例如 Firefly-RK3399
- 开发板开机,登录到开发板后,清除 EMMC 上的引导程序,此时开发板会自动进入 maskrom 模式。
```
dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=8
reboot
```
5. 切换至下载镜像页,勾选需要烧录的分区,可以多选。
6. 按照图片顺序进行操作:
1. 两者地址都为 `0x00000000`,确保刷入地址正确。
2. 点击路径右边的空白表格单元格选择:
- 如果是 RK3399选择 rk3399_loader.bin
- 如果是 RK3588选择 rk3588_loader.bin
3. 点击路径右边的空白表格单元格选择 openEuler-VERSION-BOARD-RELEASE.img。
4. 双击 system 项目的“储存”栏,选择储存为 EMMC。
5. 勾选“强制按地址写”。
6. 点击执行,开始刷写。
![emmcaddress](images/emmcaddress.png)
7. 刷写成功界面如下,刷写结束后开发板会自动重启。
![completely](images/completely.png)
# 使用 Linux 刷写
1. 本方法仅支持 RK3399。
2. 生成的刷写文件压缩包为 build 下的 openEuler-VERSION-BOARD-RELEASE.tar.gz将其解压。
3. 编译安装 rkdeveloptool ,具体可以参考 [Rockchip 官方 wiki - rkdeveloptool](http://opensource.rock-chips.com/wiki_Rkdeveloptool)
1. 下载源码
`git clone https://github.com/rockchip-linux/rkdeveloptool.git`
2. 编译安装
`cd rkdeveloptool`
`autoreconf -i`
`./configure`
`make`
`make install`
4. 开发板开机,登录到开发板后,清除 EMMC 上的引导程序,此时开发板会自动进入 maskrom 模式
```
dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=8
reboot
```
使用 Type-C data cable 连接好开发板和主机,使用 `lsusb` 命令看到以下信息即为成功进入 Maskrom Mode
RK3399 显示如下
![rk3399-maskrommode](images/rk3399-maskrommode.png)
5. 刷写镜像等文件到 EMMC如下:
```
cd build
rkdeveloptool db rk3399_loader.bin
rkdeveloptool gpt rk3399_parameter.gpt
rkdeveloptool wl 0x40 idbloader.img
rkdeveloptool wl 0x4000 u-boot.itb
rkdeveloptool wl 0x8000 boot.img
rkdeveloptool wl 0x80000 rootfs.img
rkdeveloptool rd
```
# 使用 SD 镜像启动后进入系统刷写
1. 确保能使用 SD 镜像成功启动并进入系统,此处不限系统,例如 Firefly/Radxa 提供的官方 Debian/Ubuntu 系统。
2. 准备好项目主页提供或者根据项目脚本生成的`压缩后的 SD 卡启动文件`
3. 使用 `lsblk` 查找并确认 EMMC 盘符,使用 SD 镜像启动后的 EMMC 盘符通常同时符合以下两个特点:
1. 盘符以 `mmcblk` 开头。
2. 未被挂载为根目录和 `/boot` 目录。
4. 刷写系统。(在 Firefly ROC-RK3588S-PC 和 Firefly ITX-RK3588 上EMMC 盘符为 `mmcblk0`,此处以 `mmcblk0`为例)
`xzcat openEuler-VERSION-BOARD-ARCH-RELEASE.img.xz | dd of=/dev/mmcblk0 status=prgress`
5. 关机后取下 SD 卡,然后再启动开发板即可。

View File

@ -0,0 +1,88 @@
- [描述](#描述)
- [基于 openEuler 内核制作 Firefly-RK3399 内核镜像](#基于-openeuler-内核制作-firefly-rk3399-内核镜像)
- [准备编译环境](#准备编译环境)
- [编译内核代码](#编译内核代码)
- [准备 Firefly SDK 环境](#准备-firefly-sdk-环境)
- [重新构建 boot.img](#重新构建-bootimg)
# 描述
本文档介绍基于 Firefly SDK 交叉编译出适用于 Firefly RK3399 的内核镜像。
# 基于 openEuler 内核制作 Firefly-RK3399 内核镜像
## 准备编译环境
1. 系统要求。
- 操作系统Ubuntu 16.04
- 架构x86_64
2. 安装依赖包。
```
apt-get install build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu bc libssl-dev -y
```
## 编译内核代码
1. 克隆代码。
`git clone --branch dev-4.19 https://gitee.com/openeuler/rockchip-kernel.git`
2. 设置环境变量。
```
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
```
3. 构建 Image 和 dtb 文件。
```
cd rockchip-kernel
make O=test firefly_linux_defconfig
make O=test Image
make O=test dtbs
```
说明:生成的 Image 文件与 dtb 文件所在路径为 rockchip-kernel/test/。
## 准备 Firefly SDK 环境
1. 下载 [Firefly_Linux_SDK 源码包](http://www.t-firefly.com/doc/download/page/id/3.html#other_186)。
2. 解压并同步代码。
```
cat rk3399_linux_release_v2.5.1_20210301_split_dir/*firefly_split* | tar -xzv
cd rk3399_linux_release_v2.5.1_20210301
ls -al
.repo/repo/repo sync -l
.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all
```
3. 安装依赖包。
```
sudo apt-get install expect-dev repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo liblz4-tool genext2fs lib32stdc++6 expect
```
4. 选择配置文件。
`./build.sh firefly-rk3399-buildroot.mk`
5. 编译 kernel。
`./build.sh kernel`
## 重新构建 boot.img
1. 将上述 [编译内核代码](#编译内核代码) 步骤中生成的 Image 和 dts 替换到 Firefly SDK 环境中(进行拷贝操作即可)。
Firefly SDK 环境中 Image 和 dts 所在路径: rk3399_linux_release_v2.5.1_20210301/kernel/arch/arm64/boot/。
2. 生成 boot.img。
在 rk3399_linux_release_v2.5.1_20210301/kernel 目录下执行
`make rk3399-firefly.img`
该命令执行完成后在 rk3399_linux_release_v2.5.1_20210301/rockdev 目录下生成 boot.img。

View File

@ -0,0 +1,26 @@
- [描述](#描述)
- [打包 ITX-RK3588J 一体化烧写镜像](#打包-ITX-RK3588J-一体化烧写镜像)
- [准备打包环境](#准备打包环境)
- [运行打包脚本](#运行打包脚本)
# 描述
本文档介绍在 x86_64 主机上运行打包一体化烧写镜像。
# 打包 ITX-RK3588J 一体化烧写镜像
## 准备打包环境
1. 在 aarch64 主机上成功完成[顺序构建](顺序构建.md)中的:“构建 boot 镜像”、“构建 rootfs 镜像”这两步。
2. 在以下环境主机中,克隆本项目,将 aarch64 主机完成以上步骤的 `build` 目录下 `boot.img``rootfs.img` 复制到对应目录中。
3. 打包环境系统要求。
- 操作系统openEuler 22.03 LTS
- 架构x86_64
## 运行打包脚本
```
sudo bash gen_image-x86_64.sh
```

View File

@ -0,0 +1,111 @@
- [描述](#描述)
- [什么是 SELinux](#什么是-selinux)
- [检查 SELinux 状态](#检查-selinux-状态)
- [设置 SELinux 为许可状态](#设置-selinux-为许可状态)
- [永久设置 SELinux 为许可状态 (不推荐)](#永久设置-selinux-为许可状态-不推荐)
## 描述
本文介绍了如何在 openEuler 中设置 SELinux 状态。
## 什么是 SELinux
SELinux 是一个提供强制访问控制的安全模块,限制进程对系统资源的访问。
当 SELinux 开启且强制执行时,它会阻止 chroot 其他系统的根目录修改密码,因为安全策略限制这些操作。
设置 SELinux 为许可模式会增加安全风险,使系统更易受到攻击,在充分了解设置 SELinux 为许可模式将对你的系统造成影响之后再进行以下操作。
## 检查 SELinux 状态
1. 使用 `getenforce` 查看 SELinux 状态:
```
[root@localhost ~]# getenforce
Enforcing
```
如果为 `Enforcing` 则表示 SELinux 为开启状态且强制执行。
2. 使用 `sestatus` 查看 SELinux 状态
```
[root@localhost ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
```
如果为 `Current mode: enforcing` 则表示 SELinux 为开启状态且强制执行。
## 设置 SELinux 为许可状态
使用 `setenforce 0` 来将 SELinux 暂时设置为许可状态
```
[root@localhost ~]# setenforce 0
```
查看修改后的 SELinux 状态:
```
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
```
## 永久设置 SELinux 为许可状态 (不推荐)
编辑 /etc/selinux/config 文件
完整内容如下:
```
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
```
`SELINUX=enforcing` 修改为 `SELINUX=permissive` 然后重启即可。
重启后再查看 SELinux 状态如下:
```
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
```

View File

@ -0,0 +1,135 @@
# 顺序单独构建
- [顺序单独构建](#顺序单独构建)
- [准备环境](#准备环境)
- [编译 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 -r REPO_INFO -b KERNEL_BRANCH -d DTB_NAME -s SPEC`
**说明: 基于 build_rootfs.sh 提供的默认参数,执行 sudo ./build_rootfs.sh 可生成 Firefly-RK3399 的 rootfs 分区镜像 rootfs.img。**
各个参数意义:
1. -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/`
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. -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
显示帮助信息。

244
documents/树莓派.md Normal file
View File

@ -0,0 +1,244 @@
# 树莓派
本文档提供 [树莓派](https://gitee.com/openeuler/raspberrypi-kernel)、[Rockchip](https://gitee.com/openeuler/rockchip)的 openEuler 镜像的构建脚本和相关文档。
<!-- TOC -->
- [树莓派](#树莓派)
- [文件说明](#文件说明)
- [最新镜像](#最新镜像)
- [使用镜像](#使用镜像)
- [镜像构建](#镜像构建)
- [准备环境](#准备环境)
- [构建镜像](#构建镜像)
- [快速构建(无需编译内核,推荐)](#快速构建无需编译内核推荐)
- [完全构建(包括编译内核)](#完全构建包括编译内核)
- [主机上构建](#主机上构建)
- [Docker 容器内构建](#docker-容器内构建)
<!-- /TOC -->
## 文件说明
>![](public_sys-resources/icon-note.gif) **说明:**
>- 建议直接使用本文档 [最新镜像](#最新镜像) 章节中给出的 openEuler 的树莓派镜像。
>- 如需根据自身需求定制镜像,可参考 [openEuler 镜像的构建](raspberrypi/openEuler镜像的构建.md) 和 [交叉编译内核](raspberrypi/交叉编译内核.md)。
- [树莓派](./raspberrypi): 使用文档
- [刷写镜像](raspberrypi/刷写镜像.md)
- [树莓派使用](raspberrypi/树莓派使用.md)
- [openEuler 镜像的构建](raspberrypi/openEuler镜像的构建.md)
- [交叉编译内核](raspberrypi/交叉编译内核.md)
- [QEMU 启动树莓派](raspberrypi/QEMU启动树莓派.md)
- [openEuler 20.03 LTS SP2 更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2.md)
- [openEuler 20.03 LTS SP2 内测版UKUI 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2-UKUI.md)
- [openEuler 20.03 LTS SP2 内测版DDE 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2-DDE.md)
- [openEuler 20.03 LTS SP2 内测版Xfce 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-20.03-LTS-SP2-Xfce.md)
- [openEuler 21.09 更新日志](raspberrypi/changelog/changelog-21.09.md)
- [openEuler 21.09 内测版UKUI 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-21.09-UKUI.md)
- [openEuler 21.09 内测版DDE 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-21.09-DDE.md)
- [openEuler 21.09 内测版Xfce 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-21.09-Xfce.md)
- [openEuler 21.09 内测版LXDE 桌面、中文输入法)更新日志](raspberrypi/changelog/changelog-21.09-LXDE.md)
- [scripts](../scripts/raspberrypi): 构建 openEuler 树莓派镜像的脚本
- [快速构建(不编译内核)](../scripts/raspberrypi/build-image.sh)
- [主机上构建(编译内核)](../scripts/raspberrypi/build-image-common.sh)
- [Docker 容器中构建(编译内核)](../scripts/raspberrypi/build-image-docker.sh)
## 最新镜像
[所有镜像](raspberrypi/images.md)。
其他信息:
- 固件来源:[firmware](https://github.com/raspberrypi/firmware)、[bluez-firmware](https://github.com/RPi-Distro/bluez-firmware)、[firmware-nonfree](https://github.com/RPi-Distro/firmware-nonfree)
## 使用镜像
镜像刷写 SD 卡并使用树莓派,详见以下文档:
- [刷写镜像](raspberrypi/刷写镜像.md)
- [树莓派使用](raspberrypi/树莓派使用.md)
## 镜像构建
### 准备环境
本仓库的脚本运行环境要求如下:
- 操作系统openEuler、CentOS 7、CentOS 8
- 架构AArch64如树莓派
其他架构可以使用 [QEMU](https://www.qemu.org/) 模拟器搭建 AArch64 运行环境。
### 构建镜像
详细过程参见 [openEuler 镜像的构建](raspberrypi/openEuler镜像的构建.md)。
构建脚本见 [scripts/raspberrypi](../scripts/raspberrypi)。
#### 快速构建(无需编译内核,推荐)
>![](public_sys-resources/icon-notice.gif) **须知:**
>当前支持多个 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 版本。
>如果构建包含 Xfce/UKUI/DDE 桌面环境的镜像,需要注意三点:
>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 版本。
>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 版本。
>3. 根据需要设置 -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 文件的 URL`https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-21.03/generic.repo`
- 开发源的 repo 文件路径:
- `./openEuler-21.03.repo`:生成 openEuler 21.03 版本的镜像,该文件内容参考 <https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-21.03/generic.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 桌面及必要的配套软件(不包括中文字体以及输入法)。
- rpmlist 文件路径,其中包含镜像中要安装的软件列表,内容参考 [rpmlist](../scripts/raspberrypi/config/rpmlist)。
默认使用 `headless` 选项。
5. -h, --help
显示帮助信息。
#### 完全构建(包括编译内核)
包含编译内核、下载树莓派相关固件等过程,速度相对较慢。
这里,提供两种构建方式。
>![](public_sys-resources/icon-notice.gif) **须知:**
>当前支持三个 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 版本。
>如果构建包含 Xfce/UKUI/DDE 桌面环境的镜像,需要注意四点:
>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 21.03:需要选择 [openEuler 内核](https://gitee.com/openeuler/kernel) 的 [openEuler-21.03](https://gitee.com/openeuler/kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-20.03-LTS](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-20.03-LTS/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-20.03-LTS`
> - openEuler 21.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-21.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-21.09/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-21.09`
> - openEuler 22.03 LTS需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-22.03-LTS/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-22.03-LTS`
> - openEuler 22.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-22.09/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-22.09`
> - openEuler 22.03 LTS SP1需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS-SP1](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-23.03](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-23.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-23.03`
> - openEuler 22.03 LTS SP2需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS-SP2](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [OLK-5.10](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [OLK-6.6](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 版本,需要选择对应内核源码和分支。
> - openEuler 20.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-20.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-20.03-LTS](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-20.03-LTS/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-20.03-LTS`
> - openEuler 21.03:需要选择 [openEuler 内核](https://gitee.com/openeuler/kernel) 的 [openEuler-21.03](https://gitee.com/openeuler/kernel/tree/openEuler-21.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/kernel.git`-b/--branch` 设置为 `openEuler-21.03`。
> - openEuler 21.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-21.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-21.09/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-21.09`
> - openEuler 22.03 LTS需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-22.03-LTS/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-22.03-LTS`
> - openEuler 22.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-22.09/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-22.09`
> - openEuler 22.03 LTS SP1需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS-SP1](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-23.03](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-23.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-23.03`
> - openEuler 22.03 LTS SP2需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS-SP2](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [OLK-5.10](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [OLK-6.6](https://gitee.com/openeuler/raspberrypi-kernel/tree/OLK-6.6/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `OLK-6.6`
>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 版本。
> - openEuler 20.03 LTS SP1/20.03 LTS SP2/20.03 LTS SP3需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-20.03-LTS](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-20.03-LTS/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-20.03-LTS`
> - openEuler 21.03:需要选择 [openEuler 内核](https://gitee.com/openeuler/kernel) 的 [openEuler-21.03](https://gitee.com/openeuler/kernel/tree/openEuler-21.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/kernel.git`-b/--branch` 设置为 `openEuler-21.03`。
> - openEuler 21.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-21.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-21.09/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-21.09`
> - openEuler 22.03 LTS需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-22.03-LTS/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-22.03-LTS`
> - openEuler 22.09:需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.09](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-22.09/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-22.09`
> - openEuler 22.03 LTS SP1需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS-SP1](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-23.03](https://gitee.com/openeuler/raspberrypi-kernel/tree/openEuler-23.03/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `openEuler-23.03`
> - openEuler 22.03 LTS SP2需要选择 [openEuler-RaspberryPi 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [openEuler-22.03-LTS-SP2](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [OLK-5.10](https://gitee.com/openeuler/raspberrypi-kernel/tree/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 内核](https://gitee.com/openeuler/raspberrypi-kernel) 的 [OLK-6.6](https://gitee.com/openeuler/raspberrypi-kernel/tree/OLK-6.6/) 分支,即将参数 `-k/--kernel` 设置为 `git@gitee.com:openeuler/raspberrypi-kernel.git``-b/--branch` 设置为 `OLK-6.6`
>4. 根据需要设置 -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.git``git@gitee.com:openeuler/kernel.git`
3. -b, --branch KERNEL_BRANCH
内核源码的对应分支,默认为 `openEuler-20.03-LTS`,推荐使用分支 `openEuler-21.09``openEuler-20.03-LTS``openEuler-20.09`
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/raw/openEuler-20.03-LTS-SP1/generic.repo`
- 开发源的 repo 文件路径:
- `./openEuler-20.03-LTS-SP1.repo`:生成 openEuler 20.03 LTS SP1 版本的镜像,该文件内容参考 <https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS-SP1/generic.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 桌面及必要的配套软件(不包括中文字体以及输入法)。
- rpmlist 文件路径,该文件包含镜像中要安装的软件列表,内容参考 [rpmlist](../scripts/raspberrypi/config-common/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 镜像,并导入本机系统中。

View File

@ -0,0 +1,287 @@
# 瑞芯微等开发板
本仓库提供适用于 Rockchip 等开发板的 openEuler 镜像的构建脚本和相关文档。
<!-- TOC -->
- [瑞芯微等开发板](#瑞芯微等开发板)
- [文件说明](#文件说明)
- [最新镜像](#最新镜像)
- [镜像构建](#镜像构建)
- [准备环境](#准备环境)
- [一次构建](#一次构建)
- [顺序构建](#顺序构建)
- [刷写镜像](#刷写镜像)
- [刷写到 SD 卡](#刷写到-sd-卡)
- [刷写到 EMMC](#刷写到-emmc)
- [问题汇总](#问题汇总)
<!-- /TOC -->
## 文件说明
- [documents](./rockchip): 使用文档
- [openEuler镜像的构建](rockchip/openEuler镜像的构建.md)
- [刷写EMMC镜像](rockchip/刷写EMMC镜像.md)
- [顺序构建](rockchip/顺序构建.md)
- [基于Firefly-SDK编译Firefly-RK3399的内核镜像](rockchip/基于Firefly-SDK编译Firefly-RK3399的内核镜像.md)
- [打包 ITX-RK3588J 一体化烧写镜像](rockchip/打包ITX-RK3588J一体化烧写镜像.md)
- [设置 SELinux](rockchip/设置SELinux.md)
- [使用 Docker 构建镜像](rockchip/使用Docker构建镜像.md)
- [scripts](../scripts/rockchip): 构建 openEuler RK3399 等开发板镜像的脚本
- [一次构建脚本](../scripts/rockchip/build.sh)
- [boot 镜像构建脚本](../scripts/rockchip/build_boot.sh)
- [rootfs 镜像构建脚本](../scripts/rockchip/build_rootfs.sh)
- [u-boot 编译脚本](../scripts/rockchip/build_u-boot.sh)
- [可启动镜像生成脚本](../scripts/rockchip/gen_image.sh)
## 最新镜像
镜像下载连接及基本信息见 [瑞芯微等其他开发板](../README.md#瑞芯微等其他开发板)。
## 镜像构建
>![](public_sys-resources/icon-notice.gif) **须知:**
>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 当前支持 openEuler 版本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 开发板
详细过程参见 [openEuler 镜像的构建](rockchip/openEuler镜像的构建.md)。
构建脚本见 [scripts/rockchip](../scripts/rockchip)。
### 一次构建
构建镜像需执行命令:
`sudo bash build.sh -n NAME -k KERNEL_URL -b KERNEL_BRANCH -c BOARD_CONFIG -r REPO_INFO -d DTB_NAME -s SPEC`
**说明: 基于 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](#刷写到-emmc) 中介绍SD 卡刷写过程在 [刷写到 SD 卡](#刷写到-sd-卡) 中介绍。
各个参数意义:
1. -n, --name IMAGE_NAME
构建的镜像名称,例如:`openEuler-20.03-LTS-Firefly-RK3399-aarch64-alpha1``openEuler-21.09-Firefly-RK3399-aarch64-alpha1`
2. -k, --kernel KERNEL_URL
内核源码仓库的项目地址,默认为 `https://gitee.com/openeuler/rockchip-kernel.git`。可根据需要设置为 `git@gitee.com:openeuler/rockchip-kernel.git``git@gitee.com:openeuler/kernel.git`
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.09
4. -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`
5. -r, --repo REPO_INFO
开发源 repo 文件的 URL 或者路径,也可以是开发源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。
下面分别举例:
- 开发源 repo 文件的 URL`https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/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/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/`
6. -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`
7. -p, --platform PLATFORM
开发板所使用的平台目前支持的平台有rockchip、phytium默认为 `rockchip`
8. -s, --spec SPEC
构建的镜像版本:
- `headless`,无图形界面版的镜像。
- `xfce`,带 Xfce 桌面以及中文字体、输入法等全部配套软件。
- `ukui`,带 UKUI 桌面及必要的配套软件(不包括中文字体以及输入法)。
- `dde`,带 DDE 桌面及必要的配套软件(不包括中文字体以及输入法)。
- rpmlist 文件路径,其中包含镜像中要安装的软件列表,内容参考 [rpmlist](../scripts/rockchip/configs/rpmlist)。
默认使用 `headless` 选项。
9. -h, --help
显示帮助信息。
适用的 RK3399 开发板:
已经测试的开发板如下,其他类型 Rockchip 开发板适用情况待测试。
1. Firefly-RK3399
已测试的版本如下:
- openEuler-20.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-20.03-LTS-Firefly-RK3399-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-20.03-LTS -c firefly-rk3399_defconfig -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo -d rk3399-firefly -p rockchip -s headless`
- openEuler-22.03-LTS-SP3构建命令如下
`sudo bash build.sh -n openEuler-22.03-LTS-SP3-Firefly-RK3399-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-SP3 -c firefly-rk3399_defconfig -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP3/generic.repo -d rk3399-firefly -p rockchip -s headless`
2. RockPi-4A
已测试的版本如下:
- openEuler-20.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-20.03-LTS-RockPi-4A-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-20.03-LTS -c rock-pi-4-rk3399_defconfig -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo -d rk3399-rock-pi-4a -p rockchip -s headless`
- openEuler-22.03-LTS构建命令如下
`sudo bash build.sh -n openEuler-22.03-LTS-RockPi-4A-aarch64-alpha1 -k https://gitee.com/openeuler/kernel.git -b openEuler-22.03-LTS -c rock-pi-4-rk3399_defconfig -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo -d rk3399-rock-pi-4a -p rockchip -s headless`
适用的 RK3588 开发板:
已经测试的开发板如下,其他类型 RK3588 开发板适用情况待测试。
1. Firefly ITX-3588J
已测试的版本如下:
- openEuler-22.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-22.03-RK3588-Firefly-ITX-3588J-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-RK3588 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo -d rk3588-firefly-itx-3588j -p rockchip -s headless`
2. Firefly ROC-RK3588S-PC
已测试的版本如下:
- openEuler-22.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-Station-M3-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-RK3588 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo -d rk3588s-roc-pc -p rockchip -s headless`
3. Radxa Rock-5B
已测试的版本如下:
- openEuler-22.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-Rock5B-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-RK3588 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo -d rk3588-rock-5b -p rockchip -s headless`
适用的 RK356X 开发板:
已经测试的开发板如下,其他类型 RK356X 开发板适用情况待测试。
1. Firefly ROC-RK3566-PC
已测试的版本如下:
- openEuler-22.03-LTS-SP2构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-SP2-Station-M2-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-SP2 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP2/generic.repo -d rk3566-roc-pc -p rockchip -s headless`
- openEuler-22.03-LTS-SP3构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-SP3-Station-M2-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-SP3 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP3/generic.repo -d rk3566-roc-pc -p rockchip -s headless`
- openEuler-24.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-24.03-LTS-Station-M2-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-24.03-LTS -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-24.03-LTS/generic.repo -d rk3566-roc-pc -p rockchip -s headless`
2. Firefly ROC-RK3568-PC-SE
已测试的版本如下:
- openEuler-22.03-LTS-SP2构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-SP2-ROC-RK3568-PC-SE-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-SP2 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP2/generic.repo -d rk3568-roc-pc-se -p rockchip -s headless`
- openEuler-22.03-LTS-SP3构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-SP3-ROC-RK3568-PC-SE-aarch64-alpha1 -k https://gitee.com/openeuler/rockchip-kernel.git -b openEuler-22.03-LTS-SP3 -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS-SP3/generic.repo -d rk3568-roc-pc-se -p rockchip -s headless`
适用的 Phytium 开发板:
已经测试的开发板如下,其他类型 Phytium 开发板适用情况待测试。
1. Phytium Pi 4GB
已测试的版本如下:
- openEuler-22.03-LTS-SP3构建命令如下:
`sudo bash build.sh -n openEuler-22.03-LTS-PhytiumPi-4GB-aarch64-alpha1 -k https://gitee.com/openeuler/phytium-kernel.git -b openEuler-22.03-LTS-Phytium -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-22.03-LTS/generic.repo -d phytiumpi_firefly -p phytium -s headless`
- openEuler-24.03-LTS构建命令如下:
`sudo bash build.sh -n openEuler-24.03-LTS-PhytiumPi-4GB-aarch64-alpha1 -k https://gitee.com/openeuler/phytium-kernel.git -b openEuler-24.03-LTS-Phytium -c none -r https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-24.03-LTS/generic.repo -d phytiumpi_firefly -p phytium -s headless`
### 顺序构建
依次执行脚本构建生成压缩后的 SD 卡启动镜像和打包后的 EMMC 刷写文件,过程参考[顺序构建](rockchip/顺序构建.md)。
## 刷写镜像
### 刷写到 SD 卡
将压缩后的 RAW 原始镜像解压后写入 SD 卡,请参考[树莓派镜像烧录](raspberrypi/刷写镜像.md),过程中所用到的镜像应为本项目提供适用于 Rockchip 开发板的镜像。
>注意:由于 Firefly-RK3399 与其他 RK3399 开发板不同,会优先启动 EMMC 上的系统,在 Firefly-RK3399 上使用 SD 卡启动镜像之前需要清除 EMMC 上的系统,上电后需要按下电源键来启动。
### 刷写到 EMMC
将 openEuler 安装到 EMMC详见[刷写EMMC镜像](rockchip/刷写EMMC镜像.md)。
## 问题汇总
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`
遇到这一类问题有以下解决方法,如果有更多方法,欢迎反馈:
- [使用 Docker 构建镜像(推荐)](rockchip/使用Docker构建镜像.md)
- [设置 SELinux](rockchip/设置SELinux.md)

View File

@ -0,0 +1,640 @@
#!/bin/bash
set -e
__usage="
Usage: build-image-common [OPTIONS]
Build raspberrypi image.
Options:
-n, --name IMAGE_NAME The raspberrypi image name to be built.
-k, --kernel KERNEL_URL The URL of kernel source's repository, which defaults to https://gitee.com/openeuler/raspberrypi-kernel.git.
-b, --branch KERNEL_BRANCH The branch name of kernel source's repository, which defaults to openEuler-20.03-LTS.
-c, --config KERNEL_DEFCONFIG The name/path of defconfig file when compiling kernel, which defaults to openeuler-raspi_defconfig.
-r, --repo REPO_INFO Required! The URL/path of target repo file or list of repo's baseurls which should be a space separated list.
-s, --spec SPEC The image's specification: headless, xfce, ukui, dde or the file path of rpmlist. The default is headless.
--cores N The number of cpu cores to be used during making.
-h, --help Show command help.
"
help()
{
echo "$__usage"
exit $1
}
parseargs()
{
if [ "x$#" == "x0" ]; then
return 1
fi
while [ "x$#" != "x0" ];
do
if [ "x$1" == "x-h" -o "x$1" == "x--help" ]; then
return 1
elif [ "x$1" == "x" ]; then
shift
elif [ "x$1" == "x-n" -o "x$1" == "x--name" ]; then
img_name=`echo $2`
shift
shift
elif [ "x$1" == "x-k" -o "x$1" == "x--kernel" ]; then
kernel_url=`echo $2`
shift
shift
elif [ "x$1" == "x-b" -o "x$1" == "x--branch" ]; then
kernel_branch=`echo $2`
shift
shift
elif [ "x$1" == "x-c" -o "x$1" == "x--config" ]; then
default_defconfig=`echo $2`
shift
shift
elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then
repo_file=`echo $2`
shift
shift
elif [ "x$1" == "x-s" -o "x$1" == "x--spec" ]; then
spec_param=`echo $2`
shift
shift
elif [ "x$1" == "x--cores" ]; then
make_cores=`echo $2`
shift
shift
else
echo `date` - ERROR, UNKNOWN params "$@"
return 2
fi
done
}
ERROR(){
echo `date` - ERROR, $* | tee -a ${log_dir}/${builddate}.log
}
LOG(){
echo `date` - INFO, $* | tee -a ${log_dir}/${builddate}.log
}
UMOUNT_ALL(){
set +e
if grep -q "${rootfs_dir}/dev " /proc/mounts ; then
umount -l ${rootfs_dir}/dev
fi
if grep -q "${rootfs_dir}/proc " /proc/mounts ; then
umount -l ${rootfs_dir}/proc
fi
if grep -q "${rootfs_dir}/sys " /proc/mounts ; then
umount -l ${rootfs_dir}/sys
fi
set -e
}
LOSETUP_D_IMG(){
set +e
if [ -d ${root_mnt} ]; then
if grep -q "${root_mnt} " /proc/mounts ; then
umount ${root_mnt}
fi
fi
if [ -d ${boot_mnt} ]; then
if grep -q "${boot_mnt} " /proc/mounts ; then
umount ${boot_mnt}
fi
fi
if [ "x$device" != "x" ]; then
kpartx -d ${device}
losetup -d ${device}
device=""
fi
if [ -d ${root_mnt} ]; then
rm -rf ${root_mnt}
fi
if [ -d ${boot_mnt} ]; then
rm -rf ${boot_mnt}
fi
set -e
}
INSTALL_PACKAGES(){
for item in $(cat $1)
do
dnf --installroot=${rootfs_dir}/ install -y $item
if [ $? == 0 ]; then
LOG install $item.
else
ERROR can not install $item.
fi
done
}
prepare(){
if [ ! -d ${tmp_dir} ]; then
mkdir -p ${tmp_dir}
else
rm -rf ${tmp_dir}/*
fi
kernel_name=${kernel_url##*/}
kernel_name=${kernel_name%.*}
if [ "x$default_defconfig" == "x" ] ; then
default_defconfig=$kernel_defconfig
elif [ -f $default_defconfig ]; then
cp $default_defconfig ${tmp_dir}/
kernel_defconfig=${tmp_dir}/${default_defconfig##*/}
else
echo `date` - ERROR, config file $default_defconfig can not be found.
exit 2
fi
if [ "x$spec_param" == "xheadless" ] || [ "x$spec_param" == "x" ]; then
:
elif [ "x$spec_param" == "xxfce" ] || [ "x$spec_param" == "xukui" ] || [ "x$spec_param" == "xdde" ]; then
CONFIG_RPM_LIST=${euler_dir}/rpmlist-${spec_param}
elif [ -f ${spec_param} ]; then
cp ${spec_param} ${tmp_dir}/
spec_file_name=${spec_param##*/}
CONFIG_RPM_LIST=${tmp_dir}/${spec_file_name}
else
echo `date` - ERROR, please check your params in option -s or --spec.
exit 2
fi
if [ "x$repo_file" == "x" ] ; then
echo `date` - ERROR, \"-r REPO_INFO or --repo REPO_INFO\" missing.
help 2
elif [ "x${repo_file:0:4}" == "xhttp" ]; then
if [ "x${repo_file:0-5}" == "x.repo" ]; then
wget ${repo_file} -P ${tmp_dir}/
repo_file_name=${repo_file##*/}
repo_file=${tmp_dir}/${repo_file_name}
else
repo_file_name=tmp.repo
repo_file_tmp=${tmp_dir}/${repo_file_name}
index=1
for baseurl in ${repo_file// / }
do
echo [repo${index}] >> ${repo_file_tmp}
echo name=repo${index} to build raspi image >> ${repo_file_tmp}
echo baseurl=${baseurl} >> ${repo_file_tmp}
echo enabled=1 >> ${repo_file_tmp}
echo gpgcheck=0 >> ${repo_file_tmp}
echo >> ${repo_file_tmp}
index=$(($index+1))
done
repo_file=${repo_file_tmp}
fi
else
if [ ! -f $repo_file ]; then
echo `date` - ERROR, repo file $repo_file can not be found.
exit 2
else
cp $repo_file ${tmp_dir}/
repo_file_name=${repo_file##*/}
repo_file=${tmp_dir}/${repo_file_name}
fi
fi
repo_suffix=${repo_file_name%.*}
if [ "x$img_name" == "x" ]; then
if [[ "${repo_suffix}" =~ ^${OS_NAME}.* ]]; then
img_name=${repo_suffix}
else
img_name=${OS_NAME}
fi
img_name=${img_name}-raspi-aarch64-${buildid}.img
else
if [ "x${img_name:0-4}" != "x.img" ]; then
img_name=${img_name}.img
fi
fi
img_file=${img_dir}/${img_name}
if [ ! -d ${log_dir} ]; then
mkdir -p ${log_dir}
fi
LOG "prepare begin..."
dnf clean all
dnf makecache
dnf install -y bison flex openssl-devel bc wget dnf-plugins-core rsync parted dosfstools grep bash xz kpartx
repo_info_names=`cat ${repo_file} | grep "^\["`
repo_baseurls=`cat ${repo_file} | grep "^baseurl="`
index=1
for repo_name in ${repo_info_names}
do
repo_name_list[$index]=${repo_name:1:-1}
index=$((index+1))
done
index=1
for baseurl in ${repo_baseurls}
do
repo_info="${repo_info} --repofrompath ${repo_name_list[$index]}-tmp,${baseurl:8}"
index=$((index+1))
done
set +e
os_release_name=${OS_NAME}-release
dnf ${repo_info} --disablerepo="*" --downloaddir=${tmp_dir}/ download ${os_release_name}
if [ $? != 0 ]; then
ERROR "Fail to download ${os_release_name}!"
exit 2
fi
os_release_name=`ls -r ${tmp_dir}/${os_release_name}*.rpm 2>/dev/null| head -n 1`
if [ -z "${os_release_name}" ]; then
ERROR "${os_release_name} can not be found!"
exit 2
fi
wget https://raw.githubusercontent.com/RPi-Distro/raspberrypi-sys-mods/master/etc.armhf/udev/rules.d/99-com.rules -P ${tmp_dir}/
if [ $? -ne 0 ]; then
cp ${euler_dir}/99-com.rules ${tmp_dir}/
fi
wget https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/plain/regulatory.db.p7s -P ${tmp_dir}/
if [ $? -ne 0 ]; then
cp ${euler_dir}/regulatory.db.p7s ${tmp_dir}/
fi
wget https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/plain/regulatory.db -P ${tmp_dir}/
if [ $? -ne 0 ]; then
cp ${euler_dir}/regulatory.db ${tmp_dir}/
fi
set -e
if [ ! -d ${img_dir} ]; then
mkdir -p ${img_dir}
fi
LOG "prepare end."
}
update_firmware_app(){
LOG "update firmware and app begin..."
cd "${workdir}"
######## firmware
if [[ ! -d firmware ]]; then
git clone --depth=1 https://github.com/raspberrypi/firmware
if [[ $? -eq 0 ]]; then
LOG "clone firmware done."
else
ERROR "clone firmware failed."
exit 1
fi
else
cd firmware
git pull origin master
cd ../
fi
######## bluez-firmware
if [[ ! -d bluez-firmware ]]; then
git clone --depth=1 https://github.com/RPi-Distro/bluez-firmware
if [[ $? -eq 0 ]]; then
LOG "clone bluez-firmware done."
else
ERROR "clone bluez-firmware failed."
exit 1
fi
else
cd bluez-firmware
git pull origin master
cd ../
fi
######## firmware-nonfree
if [[ ! -d firmware-nonfree ]]; then
git clone --depth=1 -b buster https://github.com/RPi-Distro/firmware-nonfree
if [[ $? -eq 0 ]]; then
LOG "clone firmware-nonfree done."
else
ERROR "clone firmware-nonfree failed."
exit 1
fi
else
cd firmware-nonfree
git pull origin master
cd ../
fi
######## pi-bluetooth
if [[ ! -d pi-bluetooth ]]; then
git clone https://github.com/RPi-Distro/pi-bluetooth
if [[ $? -eq 0 ]]; then
LOG "clone pi-bluetooth done."
else
ERROR "clone pi-bluetooth failed."
exit 1
fi
else
cd pi-bluetooth
git pull origin master
cd ../
fi
LOG "update firmware and app end."
}
make_kernel(){
LOG "make kernel(${default_defconfig}) begin..."
kernel_dir_tmp=$1
cd "${kernel_dir_tmp}"
if [ "x${kernel_defconfig:0:1}" != "x/" ]; then
if [ ! -f arch/arm64/configs/${kernel_defconfig} ]; then
ERROR "config file ${kernel_defconfig} can not be found in kernel source".
exit 2
fi
kernel_commitid=$(git rev-parse HEAD)
output_dir=${output_dir}/${kernel_commitid}
if [ -f ${output_dir}/.${kernel_defconfig}.DONE ] ; then
LOG This kernel has already been built successfully before. Use the last built kernel image.
return 0
fi
kernel_defconfig=arch/arm64/configs/${kernel_defconfig}
fi
find ${output_dir}/ -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
make distclean
cp ${kernel_defconfig} .config
make ARCH=arm64 olddefconfig
kernel_defconfig=${kernel_defconfig##*/}
make ARCH=arm64 -j${make_cores}
if [[ $? -eq 0 ]]; then
mkdir -p ${output_dir}
make ARCH=arm64 INSTALL_MOD_PATH=${output_dir}/ modules_install
if [[ $? -eq 0 ]]; then
cp arch/arm64/boot/Image ${output_dir}/
cp arch/arm64/boot/dts/broadcom/*.dtb ${output_dir}/
mkdir ${output_dir}/overlays
cp arch/arm64/boot/dts/overlays/*.dtb* ${output_dir}/overlays/
LOG "kernel content in ${output_dir}."
else
ERROR "modules install failed!"
exit 1
fi
else
ERROR "make ARCH=arm64 -j${make_cores} failed!"
exit 1
fi
touch ${output_dir}/.${kernel_defconfig}.DONE
LOG "make kernel(${default_defconfig}) end."
}
update_kernel(){
LOG "update kernel begin..."
cd "${workdir}"
kernel_dir=""
for file in `ls`
do
if [[ ${file} = ${kernel_name} && -d ${file}/.git ]]; then
kernel_dir=${workdir}/${file}
break
fi
done
if [[ ${kernel_dir} = "" ]]; then
git clone ${kernel_url}
if [[ $? -eq 0 ]]; then
LOG "clone ${kernel_name} done."
else
ERROR "clone ${kernel_name} failed."
exit 1
fi
kernel_dir=${workdir}/${kernel_name}
else
cd "${kernel_name}"
remote_url_exist=`git remote -v | grep "origin"`
remote_url=`git ls-remote --get-url origin`
if [[ ${remote_url_exist} = "" || ${remote_url} != ${kernel_url} ]]; then
cd ../
rm -rf ${kernel_name}
git clone ${kernel_url}
if [[ $? -eq 0 ]]; then
LOG "clone ${kernel_name} done."
else
ERROR "clone ${kernel_name} failed."
exit 1
fi
fi
fi
cd "${kernel_dir}"
make distclean
cur_branch=`git branch | grep \*`
cur_branch=${cur_branch##*\ }
exist_branch=0
if [[ ${cur_branch} = ${kernel_branch} ]]; then
exist_branch=1
else
for branch in `git branch -a`
do
branch=${branch##*\ }
if [[ ${branch} = ${kernel_branch} ]]; then
exist_branch=1
git checkout ${kernel_branch}
break
fi
done
if [[ ${exist_branch} -eq 0 ]]; then
git fetch origin
for branch in `git branch -a`
do
branch=${branch##*\ }
if [[ ${branch} = "remotes/origin/${kernel_branch}" ]]; then
git checkout remotes/origin/${kernel_branch}
git checkout -b ${kernel_branch}
LOG "git checkout -b ${kernel_branch} done."
exist_branch=1
break
fi
done
fi
fi
if [[ ${exist_branch} -eq 0 ]]; then
ERROR "no ${kernel_branch} found."
exit 1
else
git fetch origin
git reset --hard remotes/origin/${kernel_branch}
make_kernel ${kernel_dir}
fi
LOG "update kernel end."
}
make_rootfs(){
LOG "make rootfs for ${repo_file} begin..."
if [[ -d ${rootfs_dir} ]]; then
UMOUNT_ALL
rm -rf ${rootfs_dir}
fi
mkdir -p ${rootfs_dir}/var/lib/rpm
rpm --root ${rootfs_dir} --initdb
rpm -ivh --nodeps --root ${rootfs_dir}/ ${os_release_name}
mkdir -p ${rootfs_dir}/etc/rpm
chmod a+rX ${rootfs_dir}/etc/rpm
echo "%_install_langs en_US" > ${rootfs_dir}/etc/rpm/macros.image-language-conf
if [[ ! -d ${rootfs_dir}/etc/yum.repos.d ]]; then
mkdir -p ${rootfs_dir}/etc/yum.repos.d
fi
cp ${repo_file} ${rootfs_dir}/etc/yum.repos.d/tmp.repo
set +e
INSTALL_PACKAGES $CONFIG_RPM_LIST
cat ${rootfs_dir}/etc/systemd/timesyncd.conf | grep "^NTP=*"
if [ $? -ne 0 ]; then
sed -i -e '/^#NTP=/cNTP=0.cn.pool.ntp.org' ${rootfs_dir}/etc/systemd/timesyncd.conf
sed -i -e 's/#FallbackNTP=/FallbackNTP=1.asia.pool.ntp.org 2.asia.pool.ntp.org /g' ${rootfs_dir}/etc/systemd/timesyncd.conf
fi
set -e
cp ${euler_dir}/hosts ${rootfs_dir}/etc/hosts
if [ ! -d $rootfs_dir/etc/sysconfig/network-scripts ]; then
mkdir -p $rootfs_dir/etc/sysconfig/network-scripts
fi
cp ${euler_dir}/ifcfg-eth0 $rootfs_dir/etc/sysconfig/network-scripts/ifcfg-eth0
mkdir -p ${rootfs_dir}/lib/firmware ${rootfs_dir}/usr/bin ${rootfs_dir}/lib/udev/rules.d ${rootfs_dir}/lib/systemd/system
cp ${workdir}/bluez-firmware/broadcom/* ${rootfs_dir}/lib/firmware/
cp -r ${workdir}/firmware-nonfree/brcm/ ${rootfs_dir}/lib/firmware/
mv ${rootfs_dir}/lib/firmware/BCM43430A1.hcd ${rootfs_dir}/lib/firmware/brcm/
mv ${rootfs_dir}/lib/firmware/BCM4345C0.hcd ${rootfs_dir}/lib/firmware/brcm/
cp ${tmp_dir}/regulatory.db* ${rootfs_dir}/lib/firmware/
cp ${tmp_dir}/*.rules ${rootfs_dir}/lib/udev/rules.d/
cp ${workdir}/pi-bluetooth/usr/bin/* ${rootfs_dir}/usr/bin/
cp ${workdir}/pi-bluetooth/lib/udev/rules.d/90-pi-bluetooth.rules ${rootfs_dir}/lib/udev/rules.d/
cp ${workdir}/pi-bluetooth/debian/pi-bluetooth.bthelper\@.service ${rootfs_dir}/lib/systemd/system/bthelper\@.service
cp ${workdir}/pi-bluetooth/debian/pi-bluetooth.hciuart.service ${rootfs_dir}/lib/systemd/system/hciuart.service
cp -r ${output_dir}/lib/modules ${rootfs_dir}/lib/
mkdir -p ${rootfs_dir}/usr/share/licenses/raspi
cp ${euler_dir}/License/* ${rootfs_dir}/usr/share/licenses/raspi/
cp ${euler_dir}/chroot.sh ${rootfs_dir}/chroot.sh
if [ ! -d ${rootfs_dir}/etc/rc.d/init.d ]; then
mkdir -p ${rootfs_dir}/etc/rc.d/init.d
fi
cp ${euler_dir}/extend-root.sh ${rootfs_dir}/etc/rc.d/init.d/extend-root.sh
chmod +x ${rootfs_dir}/chroot.sh
mount --bind /dev ${rootfs_dir}/dev
mount -t proc /proc ${rootfs_dir}/proc
mount -t sysfs /sys ${rootfs_dir}/sys
chroot ${rootfs_dir} /bin/bash -c "echo 'Y' | /chroot.sh ${spec_param}"
UMOUNT_ALL
rm ${rootfs_dir}/etc/yum.repos.d/tmp.repo
rm ${rootfs_dir}/chroot.sh
LOG "make rootfs for ${repo_file} end."
}
make_img(){
LOG "make ${img_file} begin..."
device=""
LOSETUP_D_IMG
size=`du -sh --block-size=1MiB ${rootfs_dir} | cut -f 1 | xargs`
size=$(($size+1150))
losetup -D
dd if=/dev/zero of=${img_file} bs=1MiB count=$size && sync
parted ${img_file} mklabel msdos mkpart primary fat32 8192s 593919s
parted ${img_file} -s set 1 boot
parted ${img_file} mkpart primary linux-swap 593920s 1593343s
parted ${img_file} mkpart primary ext4 1593344s 100%
device=`losetup -f --show -P ${img_file}`
LOG "after losetup: ${device}"
trap 'LOSETUP_D_IMG' EXIT
LOG "image ${img_file} created and mounted as ${device}"
kpartx -va ${device}
loopX=${device##*\/}
partprobe ${device}
bootp=/dev/mapper/${loopX}p1
swapp=/dev/mapper/${loopX}p2
rootp=/dev/mapper/${loopX}p3
LOG "bootp: " ${bootp} "rootp: " ${rootp}
mkfs.vfat -n boot ${bootp}
mkswap ${swapp} --pagesize 4096
mkfs.ext4 ${rootp}
mkdir -p ${root_mnt} ${boot_mnt}
mount -t vfat -o uid=root,gid=root,umask=0000 ${bootp} ${boot_mnt}
mount -t ext4 ${rootp} ${root_mnt}
prefix_len=${#loopX}
let prefix_len=prefix_len+13
fstab_array=("" "" "" "")
for line in `blkid | grep /dev/mapper/${loopX}p`
do
partuuid=${line#*PARTUUID=\"}
fstab_array[${line:$prefix_len:1}]=${partuuid%%\"*}
done
echo "PARTUUID=${fstab_array[3]} / ext4 defaults,noatime 0 0" > ${rootfs_dir}/etc/fstab
echo "PARTUUID=${fstab_array[1]} /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab
echo "PARTUUID=${fstab_array[2]} swap swap defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab
cp -rf --preserve=mode,timestamps --no-preserve=ownership ${workdir}/firmware/boot/* ${boot_mnt}/
pushd ${boot_mnt}/
rm -f *.dtb cmdline.txt kernel.img kernel7.img kernel7l.img
cp ${euler_dir}/config.txt ./
echo "console=serial0,115200 console=tty1 root=PARTUUID=${fstab_array[3]} rootfstype=ext4 elevator=deadline rootwait net.ifnames=0" > cmdline.txt
popd
cp --preserve=mode,timestamps --no-preserve=ownership ${output_dir}/Image ${boot_mnt}/kernel8.img
cp --preserve=mode,timestamps --no-preserve=ownership ${output_dir}/*.dtb ${boot_mnt}/
cp --preserve=mode,timestamps --no-preserve=ownership ${output_dir}/overlays/* ${boot_mnt}/overlays/
rm -rf ${rootfs_dir}/boot
rsync -avHAXq ${rootfs_dir}/* ${root_mnt}
pushd ${root_mnt}
for tmpdir in `ls ${output_dir}/lib/modules`
do
if [ -d ./lib/modules/${tmpdir} ]; then
if [ -L ./lib/modules/${tmpdir}/build ]; then
rm -rf ./lib/modules/${tmpdir}/build
fi
if [ -L ./lib/modules/${tmpdir}/source ]; then
rm -rf ./lib/modules/${tmpdir}/source
fi
fi
done
popd
sync
sleep 10
LOSETUP_D_IMG
rm -rf ${rootfs_dir}
losetup -D
pushd ${img_dir}
if [ -f ${img_file} ]; then
sha256sum $(basename ${img_file}) > ${img_file}.sha256sum
xz -T 20 -z -c ${img_file} > ${img_file}.xz
sha256sum $(basename ${img_file}.xz) > ${img_file}.xz.sha256sum
LOG "made sum files for ${img_file}"
fi
popd
LOG "write ${img_file} done."
LOG "make ${img_file} end."
}
if [ "$EUID" -ne 0 ]; then
echo `date` - ERROR, Please run as root!
exit
fi
kernel_url="https://gitee.com/openeuler/raspberrypi-kernel.git"
kernel_branch="openEuler-20.03-LTS"
kernel_defconfig="openeuler-raspi_defconfig"
default_defconfig=""
make_cores=$(nproc)
parseargs "$@" || help $?
OS_NAME=openEuler
cur_dir=$(cd $(dirname $0);pwd)
workdir=${cur_dir}
if [ "x${workdir}" == "x/" ]; then
workdir=/raspi_output_common
else
workdir=${workdir}/raspi_output_common
fi
buildid=$(date +%Y%m%d%H%M%S)
builddate=${buildid:0:8}
tmp_dir=${workdir}/tmp
log_dir=${workdir}/log
img_dir=${workdir}/img
output_dir=${workdir}/output
rootfs_dir=${workdir}/rootfs
root_mnt=${workdir}/root
boot_mnt=${workdir}/boot
euler_dir=${cur_dir}/config-common
CONFIG_RPM_LIST=${euler_dir}/rpmlist
trap 'UMOUNT_ALL' EXIT
UMOUNT_ALL
prepare
IFS=$'\n'
update_firmware_app
update_kernel
make_rootfs
make_img

View File

@ -0,0 +1,186 @@
#!/bin/bash
set -e
__usage="
Usage: build-image-docker [OPTIONS]
Build raspberrypi image.
Options:
-d, --docker DOCKER_FILE The URL/path of the Docker image, which defaults to https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz
-n, --name IMAGE_NAME The raspberrypi image name to be built.
-k, --kernel KERNEL_URL The URL of kernel source's repository, which defaults to https://gitee.com/openeuler/raspberrypi-kernel.git.
-b, --branch KERNEL_BRANCH The branch name of kernel source's repository, which defaults to openEuler-20.03-LTS.
-c, --config KERNEL_DEFCONFIG The name/path of defconfig file when compiling kernel, which defaults to openeuler-raspi_defconfig.
-r, --repo REPO_INFO Required! The URL/path of target repo file or list of repo's baseurls which should be a space separated list.
-s, --spec SPEC The image's specification: headless, xfce, ukui, dde or the file path of rpmlist. The default is headless.
--cores N The number of cpu cores to be used during making.
-h, --help Show command help.
"
help()
{
echo "$__usage"
exit $1
}
parseargs()
{
if [ "x$#" == "x0" ]; then
return 1
fi
while [ "x$#" != "x0" ];
do
if [ "x$1" == "x-h" -o "x$1" == "x--help" ]; then
return 1
elif [ "x$1" == "x" ]; then
shift
elif [ "x$1" == "x-d" -o "x$1" == "x--docker" ]; then
docker_file=`echo $2`
shift
shift
elif [ "x$1" == "x-n" -o "x$1" == "x--name" ]; then
img_name=`echo $2`
params="${params} -n ${img_name}"
shift
shift
elif [ "x$1" == "x-k" -o "x$1" == "x--kernel" ]; then
kernel_url=`echo $2`
params="${params} -k ${kernel_url}"
shift
shift
elif [ "x$1" == "x-b" -o "x$1" == "x--branch" ]; then
kernel_branch=`echo $2`
params="${params} -b ${kernel_branch}"
shift
shift
elif [ "x$1" == "x-c" -o "x$1" == "x--config" ]; then
default_defconfig=`echo $2`
if [ "x$default_defconfig" != "x" ]; then
if [ ! -f $default_defconfig ]; then
echo `date` - ERROR, config file $default_defconfig can not be found.
exit 2
else
cp $default_defconfig ${params_dir}/
defconfig_name=${default_defconfig##*/}
default_defconfig=${params_dir_indocker}/${defconfig_name}
fi
fi
params="${params} -c ${default_defconfig}"
shift
shift
elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then
repo_file=`echo $2`
if [ "x$repo_file" != "x" -a "x${repo_file:0:4}" != "xhttp" ]; then
if [ ! -f $repo_file ]; then
echo `date` - ERROR, repo file $repo_file can not be found.
exit 2
else
cp $repo_file ${params_dir}/
repo_file_name=${repo_file##*/}
repo_file=${params_dir_indocker}/${repo_file_name}
fi
fi
params="${params} -r ${repo_file}"
shift
shift
elif [ "x$1" == "x-s" -o "x$1" == "x--spec" ]; then
spec_param=`echo $2`
if [ "x$spec_param" == "xheadless" ] || [ "x$spec_param" == "x" ] \
|| [ "x$spec_param" == "xxfce" ] || [ "x$spec_param" == "xukui" ] \
|| [ "x$spec_param" == "xdde" ]; then
:
elif [ -f $spec_param ]; then
cp $spec_param ${params_dir}/
spec_file_name=${spec_param##*/}
$spec_param=${params_dir_indocker}/${spec_file_name}
else
echo `date` - ERROR, please check your params in option -s or --spec.
exit 2
fi
params="${params} -s ${spec_param}"
shift
shift
elif [ "x$1" == "x--cores" ]; then
make_cores=`echo $2`
params="${params} --cores ${make_cores}"
shift
shift
else
echo `date` - ERROR, UNKNOWN params "$@"
return 2
fi
done
}
ERROR(){
echo `date` - ERROR, $* | tee -a ${log_dir}/${builddate}.log
}
LOG(){
echo `date` - INFO, $* | tee -a ${log_dir}/${builddate}.log
}
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"
workdir=${cur_dir}/raspi_output_common
buildid=$(date +%Y%m%d%H%M%S)
builddate=${buildid:0:8}
log_dir=${workdir}/log
params_dir=${workdir}/params
euler_dir=${cur_dir}/config-common
params_dir_indocker=/work/raspi_output_common/params
if [ -d ${params_dir} ]; then
rm -rf ${params_dir}
fi
mkdir -p ${params_dir}
parseargs "$@" || help $?
if [ "x${docker_file:0:4}" == "xhttp" ]; then
wget ${docker_file} -P ${params_dir}/
elif [ -f $docker_file ]; then
cp ${docker_file} ${params_dir}/
else
echo `date` - ERROR, docker file $docker_file can not be found.
exit 2
fi
if [ "x$repo_file" == "x" ] ; then
echo `date` - ERROR, \"-r REPO_INFO or --repo REPO_INFO\" missing.
help 2
fi
if [ ! -d ${log_dir} ]; then
mkdir ${log_dir}
fi
docker_file_name=${docker_file##*/}
docker_img_name=`docker load --input ${params_dir}/${docker_file_name}`
docker_img_name=${docker_img_name##*: }
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 docker run --rm --privileged=true \
-v ${cur_dir}/build-image-common.sh:/work/build-image-common.sh \
-v ${euler_dir}:/work/config-common \
-v ${cur_dir}/config:/work/config \
-v ${workdir}:/work/raspi_output_common \
${docker_img_name}-${buildid} ${params}
docker run --rm --privileged=true \
-v ${cur_dir}/build-image-common.sh:/work/build-image-common.sh \
-v ${euler_dir}:/work/config-common \
-v ${cur_dir}/config:/work/config \
-v ${workdir}:/work/raspi_output_common \
${docker_img_name}-${buildid} ${params}
chmod -R a+r ${workdir}/img
docker image rm ${docker_img_name}-${buildid}
LOG
LOG Done.

View File

@ -0,0 +1,395 @@
#!/bin/bash
set -e
__usage="
Usage: build-image [OPTIONS]
Build raspberrypi image.
Options:
-d, --dir DIR The directory for storing the image and other temporary files, which defaults to be the directory in which the script resides. If the DIR does not exist, it will be created automatically.
-r, --repo REPO_INFO Required! The URL/path of target repo file or list of repo's baseurls which should be a space separated list.
-n, --name IMAGE_NAME The raspberrypi image name to be built.
-s, --spec SPEC The image's specification: headless, xfce, ukui, dde or the file path of rpmlist. The default is headless.
-h, --help Show command help.
"
help()
{
echo "$__usage"
exit $1
}
parseargs()
{
if [ "x$#" == "x0" ]; then
return 1
fi
while [ "x$#" != "x0" ];
do
if [ "x$1" == "x-h" -o "x$1" == "x--help" ]; then
return 1
elif [ "x$1" == "x" ]; then
shift
elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then
repo_file=`echo $2`
shift
shift
elif [ "x$1" == "x-n" -o "x$1" == "x--name" ]; then
img_name=`echo $2`
shift
shift
elif [ "x$1" == "x-d" -o "x$1" == "x--dir" ]; then
workdir=`echo $2`
shift
shift
elif [ "x$1" == "x-s" -o "x$1" == "x--spec" ]; then
spec_param=`echo $2`
shift
shift
else
echo `date` - ERROR, UNKNOWN params "$@"
return 2
fi
done
}
ERROR(){
echo `date` - ERROR, $* | tee -a ${log_dir}/${builddate}.log
}
LOG(){
echo `date` - INFO, $* | tee -a ${log_dir}/${builddate}.log
}
UMOUNT_ALL(){
set +e
if grep -q "${rootfs_dir}/dev " /proc/mounts ; then
umount -l ${rootfs_dir}/dev
fi
if grep -q "${rootfs_dir}/proc " /proc/mounts ; then
umount -l ${rootfs_dir}/proc
fi
if grep -q "${rootfs_dir}/sys " /proc/mounts ; then
umount -l ${rootfs_dir}/sys
fi
set -e
}
LOSETUP_D_IMG(){
set +e
if [ -d ${root_mnt} ]; then
if grep -q "${root_mnt} " /proc/mounts ; then
umount ${root_mnt}
fi
fi
if [ -d ${boot_mnt} ]; then
if grep -q "${boot_mnt} " /proc/mounts ; then
umount ${boot_mnt}
fi
fi
if [ "x$device" != "x" ]; then
kpartx -d ${device}
losetup -d ${device}
device=""
fi
if [ -d ${root_mnt} ]; then
rm -rf ${root_mnt}
fi
if [ -d ${boot_mnt} ]; then
rm -rf ${boot_mnt}
fi
set -e
}
INSTALL_PACKAGES(){
for item in $(cat $1)
do
dnf --installroot=${rootfs_dir}/ install -y $item
if [ $? == 0 ]; then
LOG install $item.
else
ERROR can not install $item.
fi
done
}
prepare(){
if [ ! -d ${tmp_dir} ]; then
mkdir -p ${tmp_dir}
else
rm -rf ${tmp_dir}/*
fi
if [ "x$spec_param" == "xheadless" ] || [ "x$spec_param" == "x" ]; then
:
elif [ "x$spec_param" == "xxfce" ] || [ "x$spec_param" == "xukui" ] || [ "x$spec_param" == "xdde" ]; then
CONFIG_RPM_LIST=${euler_dir}/rpmlist-${spec_param}
elif [ -f ${spec_param} ]; then
cp ${spec_param} ${tmp_dir}/
spec_file_name=${spec_param##*/}
CONFIG_RPM_LIST=${tmp_dir}/${spec_file_name}
else
echo `date` - ERROR, please check your params in option -s or --spec.
exit 2
fi
if [ "x$repo_file" == "x" ] ; then
echo `date` - ERROR, \"-r REPO_INFO or --repo REPO_INFO\" missing.
help 2
elif [ "x${repo_file:0:4}" == "xhttp" ]; then
if [ "x${repo_file:0-5}" == "x.repo" ]; then
wget ${repo_file} -P ${tmp_dir}/
repo_file_name=${repo_file##*/}
repo_file=${tmp_dir}/${repo_file_name}
else
repo_file_name=tmp.repo
repo_file_tmp=${tmp_dir}/${repo_file_name}
index=1
for baseurl in ${repo_file// / }
do
echo [repo${index}] >> ${repo_file_tmp}
echo name=repo${index} to build raspi image >> ${repo_file_tmp}
echo baseurl=${baseurl} >> ${repo_file_tmp}
echo enabled=1 >> ${repo_file_tmp}
echo gpgcheck=0 >> ${repo_file_tmp}
echo >> ${repo_file_tmp}
index=$(($index+1))
done
repo_file=${repo_file_tmp}
fi
else
if [ ! -f $repo_file ]; then
echo `date` - ERROR, repo file $repo_file can not be found.
exit 2
else
cp $repo_file ${tmp_dir}/
repo_file_name=${repo_file##*/}
repo_file=${tmp_dir}/${repo_file_name}
fi
fi
repo_suffix=${repo_file_name%.*}
if [ "x$img_name" == "x" ]; then
if [[ "${repo_suffix}" =~ ^${OS_NAME}.* ]]; then
img_name=${repo_suffix}
else
img_name=${OS_NAME}
fi
img_name=${img_name}-raspi-aarch64.img
else
if [ "x${img_name:0-4}" != "x.img" ]; then
img_name=${img_name}.img
fi
fi
img_file=${img_dir}/${img_name}
if [ ! -d ${log_dir} ]; then
mkdir -p ${log_dir}
fi
LOG "prepare begin..."
dnf clean all
dnf makecache
dnf install -y dnf-plugins-core rsync parted dosfstools grep bash xz kpartx
if [ -d ${rootfs_dir} ]; then
rm -rf ${rootfs_dir}
fi
if [ ! -d ${img_dir} ]; then
mkdir -p ${img_dir}
fi
repo_info_names=`cat ${repo_file} | grep "^\["`
repo_baseurls=`cat ${repo_file} | grep "^baseurl="`
index=1
for repo_name in ${repo_info_names}
do
repo_name_list[$index]=${repo_name:1:-1}
index=$((index+1))
done
index=1
for baseurl in ${repo_baseurls}
do
repo_info="${repo_info} --repofrompath ${repo_name_list[$index]}-tmp,${baseurl:8}"
index=$((index+1))
done
set +e
os_release_name=${OS_NAME}-release
dnf ${repo_info} --disablerepo="*" --downloaddir=${tmp_dir}/ download ${os_release_name}
if [ $? != 0 ]; then
ERROR "Fail to download ${os_release_name}!"
exit 2
fi
os_release_name=`ls -r ${tmp_dir}/${os_release_name}*.rpm 2>/dev/null| head -n 1`
if [ -z "${os_release_name}" ]; then
ERROR "${os_release_name} can not be found!"
exit 2
fi
set -e
LOG "prepare end."
}
make_rootfs(){
LOG "make rootfs for ${repo_file} begin..."
if [[ -d ${rootfs_dir} ]]; then
UMOUNT_ALL
rm -rf ${rootfs_dir}
fi
mkdir -p ${rootfs_dir}/var/lib/rpm
rpm --root ${rootfs_dir} --initdb
rpm -ivh --nodeps --root ${rootfs_dir}/ ${os_release_name}
mkdir -p ${rootfs_dir}/etc/rpm
chmod a+rX ${rootfs_dir}/etc/rpm
echo "%_install_langs en_US" > ${rootfs_dir}/etc/rpm/macros.image-language-conf
if [[ ! -d ${rootfs_dir}/etc/yum.repos.d ]]; then
mkdir -p ${rootfs_dir}/etc/yum.repos.d
fi
cp ${repo_file} ${rootfs_dir}/etc/yum.repos.d/tmp.repo
dnf --installroot=${rootfs_dir}/ makecache
set +e
INSTALL_PACKAGES $CONFIG_RPM_LIST
cat ${rootfs_dir}/etc/systemd/timesyncd.conf | grep "^NTP=*"
if [ $? -ne 0 ]; then
sed -i -e '/^#NTP=/cNTP=0.cn.pool.ntp.org' ${rootfs_dir}/etc/systemd/timesyncd.conf
sed -i -e 's/#FallbackNTP=/FallbackNTP=1.asia.pool.ntp.org 2.asia.pool.ntp.org /g' ${rootfs_dir}/etc/systemd/timesyncd.conf
fi
set -e
cp ${euler_dir}/hosts ${rootfs_dir}/etc/hosts
if [ ! -d $rootfs_dir/etc/sysconfig/network-scripts ]; then
mkdir -p $rootfs_dir/etc/sysconfig/network-scripts
fi
cp ${euler_dir}/ifcfg-eth0 $rootfs_dir/etc/sysconfig/network-scripts/ifcfg-eth0
mkdir -p ${rootfs_dir}/lib/udev/rules.d
if [ ! -d ${rootfs_dir}/usr/share/licenses/raspi ]; then
mkdir -p ${rootfs_dir}/usr/share/licenses/raspi
fi
cp ${euler_dir}/*.rules ${rootfs_dir}/lib/udev/rules.d/
cp ${euler_dir}/LICENCE.* ${rootfs_dir}/usr/share/licenses/raspi/
cp ${euler_dir}/chroot.sh ${rootfs_dir}/chroot.sh
if [ ! -d ${rootfs_dir}/etc/rc.d/init.d ]; then
mkdir -p ${rootfs_dir}/etc/rc.d/init.d
fi
cp ${euler_dir}/extend-root.sh ${rootfs_dir}/etc/rc.d/init.d/extend-root.sh
echo net.ipv4.conf.wlan0.rp_filter=0 >> ${rootfs_dir}/etc/sysctl.conf
chmod +x ${rootfs_dir}/chroot.sh
mount --bind /dev ${rootfs_dir}/dev
mount -t proc /proc ${rootfs_dir}/proc
mount -t sysfs /sys ${rootfs_dir}/sys
chroot ${rootfs_dir} /bin/bash -c "echo 'Y' | /chroot.sh ${spec_param}"
UMOUNT_ALL
rm ${rootfs_dir}/etc/yum.repos.d/tmp.repo
rm ${rootfs_dir}/chroot.sh
LOG "make rootfs for ${repo_file} end."
}
make_img(){
LOG "make ${img_file} begin..."
device=""
LOSETUP_D_IMG
size=`du -sh --block-size=1MiB ${rootfs_dir} | cut -f 1 | xargs`
size=$(($size+1500))
losetup -D
dd if=/dev/zero of=${img_file} bs=1MiB count=$size && sync
parted ${img_file} mklabel msdos mkpart primary fat32 8192s 593919s
parted ${img_file} -s set 1 boot
parted ${img_file} mkpart primary linux-swap 593920s 1593343s
parted ${img_file} mkpart primary ext4 1593344s 100%
device=`losetup -f --show -P ${img_file}`
LOG "after losetup: ${device}"
trap 'LOSETUP_D_IMG' EXIT
LOG "image ${img_file} created and mounted as ${device}"
kpartx -va ${device}
loopX=${device##*\/}
partprobe ${device}
bootp=/dev/mapper/${loopX}p1
swapp=/dev/mapper/${loopX}p2
rootp=/dev/mapper/${loopX}p3
LOG "bootp: " ${bootp} "rootp: " ${rootp}
mkfs.vfat -n boot ${bootp}
mkswap ${swapp} --pagesize 4096
mkfs.ext4 ${rootp}
mkdir -p ${root_mnt} ${boot_mnt}
mount -t vfat -o uid=root,gid=root,umask=0000 ${bootp} ${boot_mnt}
mount -t ext4 ${rootp} ${root_mnt}
prefix_len=${#loopX}
let prefix_len=prefix_len+13
fstab_array=("" "" "" "")
for line in `blkid | grep /dev/mapper/${loopX}p`
do
partuuid=${line#*PARTUUID=\"}
fstab_array[${line:$prefix_len:1}]=${partuuid%%\"*}
done
echo "PARTUUID=${fstab_array[3]} / ext4 defaults,noatime 0 0" > ${rootfs_dir}/etc/fstab
echo "PARTUUID=${fstab_array[1]} /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab
echo "PARTUUID=${fstab_array[2]} swap swap defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab
if [ -d ${rootfs_dir}/boot/grub2 ]; then
rm -rf ${rootfs_dir}/boot/grub2
fi
cp -a ${rootfs_dir}/boot/* ${boot_mnt}/
cp ${euler_dir}/config.txt ${boot_mnt}/
echo "console=serial0,115200 console=tty1 root=PARTUUID=${fstab_array[3]} rootfstype=ext4 elevator=deadline rootwait net.ifnames=0" > ${boot_mnt}/cmdline.txt
rm -rf ${rootfs_dir}/boot
rsync -avHAXq ${rootfs_dir}/* ${root_mnt}
sync
sleep 10
LOSETUP_D_IMG
rm -rf ${rootfs_dir}
losetup -D
pushd ${img_dir}
if [ -f ${img_file} ]; then
sha256sum $(basename ${img_file}) > ${img_file}.sha256sum
xz -T 20 -z -c ${img_file} > ${img_file}.xz
sha256sum $(basename ${img_file}.xz) > ${img_file}.xz.sha256sum
LOG "made sum files for ${img_file}"
fi
popd
LOG "write ${img_file} done."
LOG "make ${img_file} end."
}
if [ "$EUID" -ne 0 ]; then
echo `date` - ERROR, Please run as root!
exit
fi
cur_dir=$(cd $(dirname $0);pwd)
workdir=${cur_dir}
parseargs "$@" || help $?
if [ "x$workdir" == "x" ]; then
echo `date` - ERROR, \"-d DIR or --dir DIR\" missing.
help 2
elif [ ! -d ${workdir} ]; then
echo `date` - INFO, output dir ${workdir} does not exists.
mkdir -p ${workdir}
echo `date` - INFO, output dir: ${workdir} created.
fi
OS_NAME=openEuler
workdir=$(cd $workdir; pwd)
if [ "x${workdir}" == "x/" ]; then
workdir=/raspi_output
else
workdir=${workdir}/raspi_output
fi
tmp_dir=${workdir}/tmp
log_dir=${workdir}/log
img_dir=${workdir}/img
rootfs_dir=${workdir}/rootfs
root_mnt=${workdir}/root
boot_mnt=${workdir}/boot
euler_dir=${cur_dir}/config
CONFIG_RPM_LIST=${euler_dir}/rpmlist
builddate=$(date +%Y%m%d)
trap 'UMOUNT_ALL' EXIT
UMOUNT_ALL
prepare
IFS=$'\n'
make_rootfs
make_img

View File

@ -0,0 +1 @@
../config/99-com.rules

View 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-common.sh"]

View File

@ -0,0 +1,356 @@
NOTE! This copyright does *not* cover user programs that use kernel
services by normal system calls - this is merely considered normal use
of the kernel, and does *not* fall under the heading of "derived work".
Also note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.
Also note that the only valid version of the GPL as far as the kernel
is concerned is _this_ particular version of the license (ie v2, not
v2.2 or v3.x or whatever), unless explicitly otherwise stated.
Linus Torvalds
----------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -0,0 +1,31 @@
Copyright (c) 2006, Broadcom Corporation.
Copyright (c) 2015, Raspberry Pi (Trading) Ltd
All rights reserved.
Redistribution. Redistribution and use in binary form, without
modification, are permitted provided that the following conditions are
met:
* This software may only be used for the purposes of developing for,
running or using a Raspberry Pi device, or authorised derivative
device manufactured via the element14 Raspberry Pi Customization Service
* Redistributions must reproduce the above copyright notice and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of Broadcom Corporation nor the names of its suppliers
may be used to endorse or promote products derived from this software
without specific prior written permission.
DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

View File

@ -0,0 +1,65 @@
SOFTWARE LICENSE AGREEMENT
The accompanying software in binary code form (“Software”), is licensed to you,
or, if you are accepting on behalf of an entity, the entity and its affiliates
exercising rights hereunder (“Licensee”) subject to the terms of this software
license agreement (“Agreement”), unless Licensee and Broadcom Corporation
(“Broadcom”) execute a separate written software license agreement governing
use of the Software. ANY USE, REPRODUCTION, OR DISTRIBUTION OF THE SOFTWARE
CONSTITUTES LICENSEES ACCEPTANCE OF THIS AGREEMENT.
1. License. Subject to the terms and conditions of this Agreement,
Broadcom hereby grants to Licensee a limited, non-exclusive, non-transferable,
royalty-free license: (i) to use and integrate the Software with any other
software; and (ii) to reproduce and distribute the Software complete,
unmodified, and as provided by Broadcom, solely for use with Broadcom
proprietary integrated circuit product(s) sold by Broadcom with which the
Software was designed to be used, or their successors.
2. Restrictions. Licensee shall distribute Software with a copy of this
Agreement. Licensee shall not remove, efface or obscure any copyright or
trademark notices from the Software. Reproductions of the Broadcom copyright
notice shall be included with each copy of the Software, except where such
Software is embedded in a manner not readily accessible to the end user.
Licensee shall not: (i) use, license, sell or otherwise distribute the Software
except as provided in this Agreement; (ii) attempt to modify in any way,
reverse engineer, decompile or disassemble any portion of the Software; or
(iii) use the Software or other material in violation of any applicable law or
regulation, including but not limited to any regulatory agency. This Agreement
shall automatically terminate upon Licensees failure to comply with any of the
terms of this Agreement. In such event, Licensee will destroy all copies of the
Software and its component parts.
3. Ownership. The Software is licensed and not sold. Title to and
ownership of the Software, including all intellectual property rights thereto,
and any portion thereof remain with Broadcom or its licensors. Licensee hereby
covenants that it will not assert any claim that the Software created by or for
Broadcom infringe any intellectual property right owned or controlled by
Licensee.
4. Disclaimer. THE SOFTWARE IS OFFERED “AS IS,” AND BROADCOM PROVIDES AND
GRANTS AND LICENSEE RECEIVES NO SUPPORT AND NO WARRANTIES OF ANY KIND, EXPRESS
OR IMPLIED, BY STATUTE, COMMUNICATION OR CONDUCT WITH LICENSEE, OR OTHERWISE.
BROADCOM SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A SPECIFIC PURPOSE, OR NONINFRINGEMENT CONCERNING THE SOFTWARE OR
ANY UPGRADES TO OR DOCUMENTATION FOR THE SOFTWARE. WITHOUT LIMITATION OF THE
ABOVE, BROADCOM GRANTS NO WARRANTY THAT THE SOFTWARE IS ERROR-FREE OR WILL
OPERATE WITHOUT INTERRUPTION, AND GRANTS NO WARRANTY REGARDING ITS USE OR THE
RESULTS THEREFROM INCLUDING, WITHOUT LIMITATION, ITS CORRECTNESS, ACCURACY, OR
RELIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM
OR ANY OF ITS LICENSORS HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER FOR BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR
OTHERWISE, ARISING OUT OF THIS AGREEMENT OR USE, REPRODUCTION, OR DISTRIBUTION
OF THE SOFTWARE, INCLUDING BUT NOT LIMITED TO LOSS OF DATA AND LOSS OF PROFITS,
EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THESE
LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
LIMITED REMEDY.
5. Export Laws. LICENSEE UNDERSTANDS AND AGREES THAT THE SOFTWARE IS
SUBJECT TO UNITED STATES AND OTHER APPLICABLE EXPORT-RELATED LAWS AND
REGULATIONS AND THAT LICENSEE MAY NOT EXPORT, RE-EXPORT OR TRANSFER THE
SOFTWARE OR ANY DIRECT PRODUCT OF THE SOFTWARE EXCEPT AS PERMITTED UNDER THOSE
LAWS. WITHOUT LIMITING THE FOREGOING, EXPORT, RE-EXPORT, OR TRANSFER OF THE
SOFTWARE TO CUBA, IRAN, NORTH KOREA, SUDAN, AND SYRIA IS PROHIBITED.

View File

@ -0,0 +1,32 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: pi-bluetooth
Source: https://github.com/RPi-Distro/pi-bluetooth
Files: *
Copyright: 2016 Raspberry Pi (Trading) Ltd.
License: BSD-3-Clause
License: BSD-3-Clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1 @@
../../config/LICENCE.raspberrypi-sys-mods

View File

@ -0,0 +1,16 @@
Copyright (c) 2008, Luis R. Rodriguez <mcgrof@gmail.com>
Copyright (c) 2008, Johannes Berg <johannes@sipsolutions.net>
Copyright (c) 2008, Michael Green <Michael.Green@Atheros.com>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View File

@ -0,0 +1 @@
../config/chroot.sh

View File

@ -0,0 +1 @@
../config/config.txt

View File

@ -0,0 +1 @@
../config/extend-root.sh

View File

@ -0,0 +1 @@
../config/hosts

View File

@ -0,0 +1 @@
../config/ifcfg-eth0

Some files were not shown because too many files have changed in this diff Show More