NEWS

新闻

了解openKylin最新资讯,关注社区和产品动态。

NEWS

Learn about the latest news.

openKylin嵌入式版本构建工具开源,手把手教你制作嵌入式镜像

2023-07-12 09:36:29

为便利开发者基于openKylin开源操作系统二进制软件包构建嵌入式操作系统镜像,社区Embedded SIG组开发了openKylin嵌入式版本构建工具V1.0。基于此工具,各位开发者可以灵活构建适合自己的openKylin嵌入式版本操作系统。


一、 构建工具介绍

openKylin嵌入式版本构建工具V1.0基于开源debootstrap命令进行封装,可基于openKylin的apt源制作嵌入式操作系统镜像。目前openKylin 1.0版本支持通过参数控制分别生成四款开发板的镜像:ARM64架构(双椒派、树莓派)、RISC-V架构(VisionFive2、Lotus2)镜像。

该工具在debootstrap基础上进行封装,并在制作镜像过程中预留参数,供开发者自行修改现有配置,或者新增配置,便于通过脚本生成所需要的系统镜像。

同时,该工具使用debootstrap生成基础rootfs,由于此时的rootfs是一个基础chroot环境,还不具备在上述4种开发板直接运行的能力,因此Embedded SIG组在此基础上增加了对文件系统定制修改的功能,主要是针对不同类型开发板,向文件系统中安装相应的软件包,并对系统做好相关配置,使制作好的文件系统可以直接在上述4种开发板上运行。


二、 构建工具特性

1.易用性强。openKylin嵌入式版本构建工具V1.0使用shell实现,结合实际项目经验设计构建接口。构建人员可快速构建,验证,发布嵌入式操作系统。

2.扩展性强。openKylin嵌入式版本构建工具V1.0依赖openKylin软件源构建嵌入式操作系统基座,构建人员可通过叠加额外软件源,定制系统文件等方式扩展嵌入式操作系统功能。可扩展性主要体现在以下三个方面:

  • 参数扩展:制作镜像用到的参数都预置在prop文件中,用户可以在制作命令后添加与prop中同名的参数覆盖原有参数,也可以自定义参数,参数格式以VK_开头,例如VK_VARNAME=foobar,此参数会在宿主机制作环境及chroot环境中全局生效,用户可以在脚本任意位置获取该变量的值,并进行相应的处理。
  • 任务扩展:默认情况下,任务变量的值为:VK_TASKS=rootfs,config,img,用户可以继续以逗号分隔,添加其他任务,如设置任务参数为:VK_TASKS=rootfs,config,img,funcname,并在functions.sh中添加函数do_funcname,即可实现对文件系统的修改。
  • 组件扩展:组件其实就是一组包的集合,目前默认集成的组件都写在order执行顺序的文件里,主要有工具组件,网络组件,ukui组件,用户可自行新增自定义组件,并将组件加到order文件中,即可将需要的包集成到系统中。

3.支持多架构。目前已支持ARM64架构(双椒派、树莓派)、RISC-V架构(VisionFive2、Lotus2)开发板的镜像生成。


三、 构建工具原理

主脚本:okbuild.sh


参数配置:prop文件


系统制作:shells目录下的脚本


镜像封装功能函数:functions.sh脚本

openKylin(开放麒麟)

四、 构建工具使用说明

1.获取源码


git clone https://gitee.com/openkylin/openkylin-embedded-builder.git


2.检查系统环境


安装必要的命令工具,并将okbuild.sh主脚本软链接到/usr/bin/okbuild.sh,方便后续制作镜像时使用


cd openkylin-embedded-builder ./check-env.sh


3.制作镜像


$ okbuild.sh --helpUSAGE:
okbuild.sh -p prop_chilliepi   # 双椒派okbuild.sh -p prop_rpi4b       # 树莓派okbuild.sh -p prop_vf2         # VisionFive2okbuild.sh -p prop_lotus2     # Lotus2开发板


五、开发板烧录、启动方法

用户名: openkylin, 密码: openkylin


1.双椒派开发板

1.1 镜像烧录

sudo tar xf openKylin-1.0-chilliepi-arm64.img.tar.gz -O | sudo dd of=/dev/ status=progress

双椒派开发板上推荐使用金士顿SDCard。1.2 启动系统

  • 插上电源, 快速按任意键, 使其到U-boot命令行界面。
  • 设置U-boot启动参数。
setenv bootargs console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/mmcblk1p2 rootdelay=3 rw;
setenv bootcmd 'mmc dev 1;fatload mmc 1:1 0x90000000 e2000d-chilli.dtb;fatload mmc 1:1 0x90100000 Image;booti 0x90100000 - 0x90000000;'saveenv
  • 拔掉电源,拔掉SDCard,插上SDCard,再插上电源,即可启动系统。


2.树莓派和VisionFive2开发板

2.1 镜像烧录

sudo tar xf openKylin-1.0.img.tar.gz -O | sudo dd of=/dev/<your sdcard> status=progress

2.2 启动系统

将烧录好的SDCard插入树莓派,插上电源即可启动。


3.Lotus2开发板

3.1 镜像烧录

首先将SD卡分区格式化,然后将文件系统解压到SD卡即可,以SD卡设备节点为/dev/sdb 为例:

# 分区、格式化sudo parted -s /dev/sdb mktable gptsudo parted -s /dev/sdb mkpart primary 1 100%sudo mkfs.ext4 -L system /dev/sdb1sudo mount /dev/sdb1 /mnt# 拷贝文件系统sudo tar xf openKylin-1.0-embedded-lotus2-riscv64.tar.gz -C /mntsyncsudo umount /mnt# 弹出SD卡sudo eject /dev/sdb

3.2 启动系统

Lotus2开发板没有图形显示接口,因此需要通过串口连接操作,使用双公头USB线将USB转串口与电脑连接,加电后可通过串口登录系统。


六、后续工作

Embedded SIG致力于打造openKylin嵌入式操作系统,提供常见工控总线、软实时、硬实时、虚拟化、web管理、轻量级、安全性等多种特性,繁荣openKylin系统生态。

非常感谢 Release SIG组zhangtianxiong、RISC-V SIG 组li-zhuohengq、Embedded-SIG组kylin-mayukun在开发过程中给予的帮助。后续,Embedded SIG将在以下方向继续开展工作:

  • VisionFive2 开发板图形版本支持
  • 其他开发板支持

欢迎感兴趣的小伙伴加入我们!

Embedded SIG主页地址:

https://gitee.com/openkylin/community/tree/master/sig/Embedded
openKylin嵌入式版本构建工具V1.0仓库地址:

https://gitee.com/openkylin/openkylin-embedded-builder