從 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 文件。
燒錄過程
燒錄過程著實讓我研究了也會,經過幾個小時的思考和測試,順利的引導起來了系統。目前燒寫分為如下幾個步驟:
- 燒錄網盤中的 fipsd-boot.bin 文件,這里面至少是由 uboot 的,有關這個文件是如何生成的?以及飛騰的啟動引導流程,如果有了解的伙伴,希望可以指點指點。針對這個問題,我向螢火的技術支持也發送了郵件咨詢,如果這部分內容我有進一步的了解,會繼續填坑。
- 給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
- 從 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
- 從 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
。本章暫時到這里了,更多內容敬請期待。
審核編輯:湯梓紅
-
SD卡
+關注
關注
2文章
559瀏覽量
63798 -
命令
+關注
關注
5文章
678瀏覽量
21984 -
腳本
+關注
關注
1文章
387瀏覽量
14831 -
飛騰派
+關注
關注
2文章
9瀏覽量
205
發布評論請先 登錄
相關推薦
評論