Orange Pi Zero 2W開發板, 自行編譯好的Android 12映像檔, 如何燒到SD卡, 才能成功開機?

 Orange Pi官方網站, 可以找到Orange Pi Zero 2W的使用手冊, 一個370頁的PDF檔案, 其中有一個章節提到如何編譯Android 12的原始檔, 如下圖:

第一步是下載原始檔, 由官網給定的Google Drive: H618_Android12_Source, 將原始檔下載下來, 因為原始檔太大, 被壓縮後還要分成多個檔案。約40GB的大小, 用100mbps的網速, 也花了半小時以上的時間才完成。接下來依手冊說明操作, 先檢查MD5, 確認檔案沒有缺損問題。就可以把多個檔案合併回一個壓縮檔了。然後解壓縮成一個原始檔目錄, 再將Orange Pi Zero 2W特定的修改碼(opizero2w_android12_patches.tar.gz)解壓縮後, 複製到原始檔的目錄去。 

第二步是編譯原始碼, 如下圖, 手冊是說, 需要一台跑Ubuntu 22.04的電腦, 16GB以上的記憶體, 以及200GB以上的硬碟空間, CPU當然是愈快愈好。

因為我之前剛裝好一台Ubuntu 24.04的電腦, 雖然版本比較新, 可能會碰到一些問題, 但還是先嘗試一下, 看可不可以。果不期然, 在安裝編譯所需的套件時, 就有兩個套件找不到無法安裝:
lib32ncurses5-dev和 libncurses5。就先試著安裝libncurses6, 想可能版本有更新, 也許就可以用了。但其實後面就碰到困難, 編譯會失敗!

如下圖, 在 make -j8 這行指令下下去之後, 就出現錯誤。
錯誤訊息是libncurses.so.5檔案不存在之類的, Google了一下, 發現libncurses-so-5-library-missing-in-ubuntu-22-04-installation-for-arm64-rapsberr這個討論串, 看來似乎是發問者, 最後自己找到答案, 回來留下了解法。因為他的文字說明, 沒操作過的, 一開始不太能看得懂。我解釋一下:
1. 如果是64位元的Ubuntu, 需先設定i386外國架構(foreight architecture)。
----> $ sudo dpkg --add-architecture i386
2. 要修改/etc/apt/sources.list.d/ubuntu.sources這個檔案。
----> 如下圖, 在http://security.ubuntu.com/ubuntu下方的Suites:項目後面, 加入focal-security
然後, 更新一下:
$ sudo apt update
就可以安裝libncurses5:i386
$ sudo apt install libncurses5:i386
做完這些, 我再試著重新編譯Android原始檔, 結果還是有錯誤!
因此, 試著再裝套件
$ sudo apt install libncurses5
然後重試, 結果就編譯成功了。
會出現以下訊息:
#### build completed successfully (01:03:13 (hh:mm:ss)) ####
表示在這台機器上編譯花了1小時3分鐘! make -j8的意思, 好像是說用8個進程來編, 那也許使用16個進程(make -j16), 可以在半小時內編完哦! 我還沒去試, 不過想來是如此。

最後下pack, 就如手冊所說, 在longan/out目錄下會找到一個h618_android12_p2_uart0.img的映像檔。然後呢? 要怎樣才能讓這個img檔跑起來?

首先, 之前由官網下載的img檔, 依手冊的說明, 都是使用balenaEtcher來燒錄到SD卡。所以試著用同樣的方法來燒, 結果打開img檔, 就出現錯誤訊息:

不信, 硬燒下去, 結果就是無法開機。

接著, 找了網路上是否有人碰過同樣的問題, 結果發現H618有很多開發板, 像是Banana Pi, 他們都用PhoenixCard這個燒錄軟體來燒。注意是版本V4.2.8。

試著用PhoenixCard, 選啟動卡, 燒卡。再開機看看, 結果:

又失敗了!


看了一下, 就只是在燒錄前要先把SD卡, 先用SD Card Formatter這個軟體把SD卡格式化一下。這個地方不一樣, 還是用PhoenixCard來做燒錄的動作。原本不太相信, 姑且試之, 沒想到, 就成功了。

留言

這個網誌中的熱門文章

D-BUS學習筆記

Cisco Switch學習筆記: EtherChannel

Cisco Switch學習筆記: interface的封包錯誤統計