8.1 KiB
qubot BPI-M2C UniSoc SDK 設定紀錄
紀錄時間:2026-06-02 14:48 CST
目的
讓 ssh qubot 這台機器可以在:
/home/qubot/bpi/BPI-M2C/sync-20260524
下載並編譯本機已驗證過的 BPI-M2C UniSoc SDK 來源,來源對齊:
/media/pi/SMCI/bpi/unisoc/sync-20260524/source_sync_rls_25c
使用的 SDK 來源
選用 sync-20260524/source_sync_rls_25c,不是 trunk。
repo manifest 設定:
MANIFEST_URL=https://git.unisoc.com/gerrit/platform/cus-manifest
MANIFEST_BRANCH=bananapi/unc_linux_rls_25c
MANIFEST_FILE=default.xml
對應本機已成功出 PAC 的 build target:
./build.sh uis7885_2h10+wayland+wayland+sec+uboot22 userdebug
這個 target 會解析為:
MACHINENAME=uis7885-2h10
DISTRO=unisoc-wayland
IMAGENAME=unisoc-wayland-image
SECBOOT_ENABLE=sec
UNISOC_PRODUCT=uboot22
USERDEBUG=userdebug
本機曾成功產出的 PAC 路徑:
/media/pi/SMCI/bpi/unisoc/sync-20260524/source_sync_rls_25c/out/target/product/uis7885-2h10/cp_sign/QOGIRN6PRO_UIS7885_2H10_SEC/uis7885_2h10+wayland+wayland+sec+uboot22-userdebug-native_QOGIRN6PRO_UIS7885_2H10_SEC.pac
qubot 環境確認
遠端主機:
host: qubot
hostname: qubot-machine
user: qubot
kernel: Ubuntu 22.04 / Linux 6.8.0-94-generic
磁碟狀態重點:
/home/qubot本身在 root filesystem 上,最早檢查只剩約 20G,不適合放 SDK。/home/qubot/bpi掛在 NVMe:/dev/nvme0n1p1,容量約 3.6T。- 因此所有工作都放到
/home/qubot/bpi/BPI-M2C/sync-20260524。 - 2026-06-02 14:48 CST 檢查時,
/home/qubot/bpi剩餘約 334G。
工具與 Python:
repo: /home/qubot/.bin/repo
git: /usr/bin/git
python: /usr/bin/python -> Python 3.10.12
python3 Crypto.Signature: ok
sudo: ok
Crypto.Signature 很重要,因為 source/unisoc/trusty/halo-elf/Makefile 會用:
/usr/bin/python prebuilts/scripts/packimage_scripts/dynamicTA/signta.py
之前本機首次 full build 曾因 Crypto.Signature 缺失卡在 halo-ta,所以遠端先確認並安裝 python3-pycryptodome。
已建立的遠端目錄與腳本
遠端工作根目錄:
/home/qubot/bpi/BPI-M2C/sync-20260524
本機保留同一份 helper 紀錄:
/media/pi/SMCI/bpi/unisoc/sync-20260524/qubot-BPI-M2C
已建立腳本:
scripts/install_unisoc_deps_ubuntu2204.sh
scripts/sync_rls25c.sh
scripts/build_bpi_m2c_rls25c.sh
scripts/start_build_bpi_m2c_rls25c.sh
scripts/sync_then_build_bpi_m2c_rls25c.sh
scripts/start_sync_then_build_bpi_m2c_rls25c.sh
用途:
install_unisoc_deps_ubuntu2204.sh:安裝 Yocto/UniSoc 常見依賴與python3-pycryptodome。sync_rls25c.sh:用同一個 UniSoc manifest 重新下載或續跑repo sync。build_bpi_m2c_rls25c.sh:執行已知 BPI-M2C build target。sync_then_build_bpi_m2c_rls25c.sh:先 sync,sync 成功後自動 build。start_sync_then_build_bpi_m2c_rls25c.sh:背景啟動 sync 後自動 build 的長任務。
已執行過的主要步驟
1. 建立遠端 helper
先在本機建立 helper 目錄與 README/scripts,然後同步到遠端:
rsync -av /media/pi/SMCI/bpi/unisoc/sync-20260524/qubot-BPI-M2C/ \
qubot:/home/qubot/bpi/BPI-M2C/sync-20260524/
2. 安裝遠端依賴
在 qubot 執行:
cd /home/qubot/bpi/BPI-M2C/sync-20260524
./scripts/install_unisoc_deps_ubuntu2204.sh
結果:
python Crypto.Signature ok
UniSoc build dependencies are ready.
3. 嘗試從本機搬完整 source tree
本機大小:
/media/pi/SMCI/bpi/unisoc/sync-20260524: 173G
/media/pi/SMCI/bpi/unisoc/sync-20260524/source_sync_rls_25c: 105G
曾嘗試用 rsync 搬 source_sync_rls_25c,排除:
/build-*
/out
/sstate-cache
但透過目前 SSH/n2n 網路,實際速度只有 KB/s 級,不適合搬完整 SDK。
也嘗試過 tar stream,同樣速度很慢,所以停止。
停止後保留了 partial 目錄,未刪除:
source_sync_rls_25c.rsync-partial-20260602_130428
source_sync_rls_25c.tar-partial-20260602_130728
這些目錄不是正式 source tree。等正式 sync/build 完成後,可以再清理。
4. 改用 qubot 直接 repo sync
先確認 qubot 能連 UniSoc manifest:
git ls-remote https://git.unisoc.com/gerrit/platform/cus-manifest \
refs/heads/bananapi/unc_linux_rls_25c
結果可讀到分支,因此改為遠端直接下載:
cd /home/qubot/bpi/BPI-M2C/sync-20260524
JOBS=8 ./scripts/sync_rls25c.sh
repo init 成功:
repo has been initialized in /home/qubot/bpi/BPI-M2C/sync-20260524/source_sync_rls_25c
下載過程中確認已抓到多個重要 project,包括:
kernel/common
u-boot15 -> source/bsp/u-boot22
yocto/tarballs
pac-binary
linuxos/os/ubuntu_deb
vendor/sprd/release/idh/unc_linux_rls_25c
5. 評估 tarballs.git 的處理方式
最後卡比較久的是 yocto/tarballs。
本機對應 object repo:
/media/pi/SMCI/bpi/unisoc/sync-20260524/source_sync_rls_25c/.repo/project-objects/tarballs.git
大小約 35G,主要是一個大 pack:
pack-509afc6c0e1388268387707fb3a5e8f4469ef20a.pack
曾嘗試:
- 用 rsync 從本機預填
tarballs.git,速度仍只有 KB/s。 - 用本機 HTTP server 透過 LAN IP
192.168.50.188,qubot不可達。 - 改用 n2n IP
172.16.199.88/172.16.198.88,可達但只有約 50-80KB/s。
結論:本機直傳比 qubot 從 UniSoc Gerrit 下載更慢,因此放棄本機預填,恢復遠端 repo sync。
目前狀態
截至 2026-06-02 14:48 CST:
背景任務仍在跑:
pid=1763945
cmd=bash /home/qubot/bpi/BPI-M2C/sync-20260524/scripts/sync_then_build_bpi_m2c_rls25c.sh
log:
/home/qubot/bpi/BPI-M2C/sync-20260524/logs/sync-then-build-detached-20260602_135424.log
目前仍處於 repo sync 階段,還沒進入 build。正在處理:
yocto/tarballs
git index-pack --stdin --fix-thin --keep=fetch-pack
工作目錄總大小約:
/home/qubot/bpi/BPI-M2C/sync-20260524: 44G
磁碟剩餘:
/home/qubot/bpi: about 334G free
監看命令
看背景任務是否仍在:
ssh qubot 'ps -fp $(cat /home/qubot/bpi/BPI-M2C/sync-20260524/logs/sync-then-build.pid)'
看 log:
ssh qubot 'tail -f /home/qubot/bpi/BPI-M2C/sync-20260524/logs/sync-then-build-detached-20260602_135424.log'
看 repo sync 或 build 進程:
ssh qubot 'ps -eo pid,ppid,stat,etime,pcpu,pmem,cmd | grep -E "sync_then_build|repo/main.py|git .*fetch|git-remote-https|index-pack|build.sh" | grep -v grep'
看空間:
ssh qubot 'du -sh /home/qubot/bpi/BPI-M2C/sync-20260524; df -h /home/qubot/bpi'
看 tarballs.git pack 是否在增加:
ssh qubot 'find /home/qubot/bpi/BPI-M2C/sync-20260524/source_sync_rls_25c/.repo/project-objects/tarballs.git/objects/pack -maxdepth 1 -type f -printf "%TY-%Tm-%Td %TH:%TM %s %f\n" | sort | tail -10'
手動重跑方式
如果背景任務已退出,但 sync 沒完成:
ssh qubot
cd /home/qubot/bpi/BPI-M2C/sync-20260524
JOBS=8 ./scripts/sync_rls25c.sh
如果 sync 已完成但 build 沒有啟動:
ssh qubot
cd /home/qubot/bpi/BPI-M2C/sync-20260524
./scripts/build_bpi_m2c_rls25c.sh
如果要重新用背景方式跑 sync 後自動 build:
ssh qubot
cd /home/qubot/bpi/BPI-M2C/sync-20260524
./scripts/start_sync_then_build_bpi_m2c_rls25c.sh
build 成功後預期位置
若 build 成功,PAC 應出現在類似:
/home/qubot/bpi/BPI-M2C/sync-20260524/source_sync_rls_25c/out/target/product/uis7885-2h10/cp_sign/QOGIRN6PRO_UIS7885_2H10_SEC/
預期檔名格式:
uis7885_2h10+wayland+wayland+sec+uboot22-userdebug-native_QOGIRN6PRO_UIS7885_2H10_SEC.pac
後續清理建議
等 repo sync 與 build 都確認成功後,再考慮清理早期傳輸測試留下的 partial 目錄:
cd /home/qubot/bpi/BPI-M2C/sync-20260524
rm -rf source_sync_rls_25c.rsync-partial-* source_sync_rls_25c.tar-partial-*
不要在 repo sync/build 還沒完成前清理 source_sync_rls_25c 內部資料。