【飞腾派4G版免费试用】第一章:从 Armbian 构建并安装 jammy 到飞腾派

电子说

1.2w人已加入

描述

从 Armbian 构建并安装 jammy 到飞腾派

前段时间在 licheepi 4A 上学习了一段时间的 Armbian 构建工程,同时为[Armbian/build]https://github.com/armbian/build 项目提交并合并了几个 pr.这次本着试试的态度尝试在飞腾派上通过 Armbian 构建出工程并计划提交到 Armbian 的上游。

经过一段时间的开发,目前已经可以编译出来 img 镜像

▸ ls output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img*
output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img
output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img.sha
output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img.txt

并经过特殊的手动烧写可以正常启动了。本章主要介绍下,现阶段如何使用 Armbian 构建出来的工程。

这部分代码,我整理好之后会尝试提交到[Armbian/build]https://github.com/armbian/build ,因为目前缺少打包 fip-all-sd-boot.bin 这部分内容,暂时代码还在我自己的仓库,如果大家感兴趣,欢迎大家尝试自己构建出飞腾派的 Armbian 镜像。我的仓库地址是[https://github.com/iysheng/build/tree/org_main]https://github.com/iysheng/build/tree/org_main

构建过程

下载 Armbian 的源码,并安装工具链到本地,考虑到网络问题,执行下述命令进行构建:

#!/bin/sh

export SHOW_LOG=yes
export SHOW_DEBUG=yes
export SHOW_COMMAND=yes
export NO_HOST_RELEASE_CHECK=yes
export GHCR_MIRROR=dockerproxy

./compile.sh build KERNEL_COMPILER=aarch64-none-linux-gnu- GITHUB_MIRROR=ghproxy REGIONAL_MIRROR=china BOARD=phytiumpi BRANCH=legacy BUILD_DESKTOP=no BUILD_MINIMAL=yes KERNEL_CONFIGURE=no RELEASE=jammy SKIP_EXTERNAL_TOOLCHAINS=yes

因为我是在 Fedora 38 PC上构建的而非官方建议的 Ubuntu 系列,所以我的代码中会有一些跳过 host 工具检查的地方,相信大家在编译过程中可以轻松解决这类命令找不到问题。

顺利构建完成后,就会在 output/images 目录下生成相应的 img 文件。

烧录过程

烧录过程着实让我研究了也会,经过几个小时的思考和测试,顺利的引导起来了系统。目前烧写分为如下几个步骤:

  1. 烧录网盘中的 fipsd-boot.bin 文件,这里面至少是由 uboot 的,有关这个文件是如何生成的?以及飞腾的启动引导流程,如果有了解的伙伴,希望可以指点指点。针对这个问题,我向萤火的技术支持也发送了邮件咨询,如果这部分内容我有进一步的了解,会继续填坑。
  2. 给sd卡分区,因为 Armbian 生成的 img,默认是包含有 boot 分区和 root 分区的,其中 boot 分区中包含了内核和设备树,root 分区包含的是根文件系统。具体如何分区呢,首先使用如下命令检查生成的 img 文件:
▸ fdisk -l output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img
Disk output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img: 1.27 GiB, 1367343104 bytes, 2670592 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: 0x2448961d

Device                                                                                     Boot  Start     End Sectors  Size Id Type
output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img1      131072  655359  524288  256M ea Linux extended boot
output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img2      655360 2670591 2015232  984M 83 Linux

严格按照镜像信息进行分区,分为两个区。分好之后是这样的:

red@phytiumpi:~$ fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 14.88 GiB, 15980298240 bytes, 31211520 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: 0x0001a0bd

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1      131072   655359   524288  256M 83 Linux
/dev/mmcblk0p2      655360 30867456 30212097 14.4G 83 Linux
  1. 从 img 中提取 boot 分区内容到 sd 卡对应的分区,有了第二步骤的基础,这里的命令就简单了:
▸ sudo dd if=output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img of=/dev/mmcblk0p1 skip=131072 count=524288 status=progress
266297856 bytes (266 MB, 254 MiB) copied, 31 s, 8.6 MB/s
524288+0 records in
524288+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 41.5903 s, 6.5 MB/s
  1. 从 img 中提取 root 分区内容到 sd 卡对应的分区,有了第三步骤的基础,这里的命令就更简单了:
▸ sudo dd if=output/images/Armbian-unofficial_24.2.0-trunk_Phytiumpi_jammy_legacy_5.10.153_minimal.img of=/dev/mmcblk0p2 skip=655360 count=2015232 status=progress
1025802752 bytes (1.0 GB, 978 MiB) copied, 149 s, 6.9 MB/s
2015232+0 records in
2015232+0 records out
1031798784 bytes (1.0 GB, 984 MiB) copied, 154.554 s, 6.7 MB/s

启动测试

烧录好镜像之后,就开始启动测试了,需要注意,修改 bootcmd 和 bootargs,分别如下:

Phytium-Pi#printenv bootcmd
bootcmd=ext4load mmc 0:1 0x90100000 Image;ext4load mmc 0:1 0x90000000 dtb/phytium/phytiumpi_firefly.dtb;booti 0x90100000 -:- 0x90000000
Phytium-Pi#printenv bootargs
bootargs=console=ttyAMA1,115200 earlycon=pl011,0x2800d000 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait  rw

接着就是引导启动了,首次会创建用户以及root密码等内容,这里就跳过了,这里展示几个系统截图:
命令
命令

因为为申请的项目偏向算法开发,所以对用户界面就没有过多要求,从我提供的构建脚本也可以看出,选择的是BUILD_DESKTOP=no BUILD_MINIMAL=yes 。本章暂时到这里了,更多内容敬请期待。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分