Porting custom rom to Acer Stream
Posted by tjwei on 星期三, 9月 21, 2011 with 17 comments
No download available yet.
以前剛接觸 Linux 時,興沖沖的重新編譯完 kernel,往往會發生開機只出現 Li 兩個字的慘劇 (原來應該是顯示 Lilo 後跑出一堆開機訊息,但是連 Lilo 四個字母都跑不完,機器就停在那裡了。)
由於 Acer Stream 都沒人弄 rom,只好自己弄。
一開始傻傻的編譯了一份 AOSP 的 system.img,想說至少可以開機吧,沒想到頗類似當年的 Li。所有程式無法執行,gdbserver 是跑起來了,只是跑起來才發現我是用 adb shell 進去而不是 ssh,網路根本沒跑起來。
還好現在網路發達,大部分的問題網路上都找得到答案。
當然找答案也是要有點方向。
一開始經由官方版本和AOSP的 linker/bin/lib 等等的組合,外加readelf 之後發現官方版本和自己編出的 linker 的 entry point 不同。 大致上猜出是 shared library 放置的記憶體位置問題。
搜尋了一下,發現這是 android prelink 以及 VMSPLIT_2G 的問題。所以這方面把 prelink map 平移一下即可。另外我也 complie 了一份 VMSPLIT_2G=n 的 kernel。
再 來就是 RGBA8888 的問題。 Stream 的 kernel 回報不正確的解析度,而且固定為 32bit 色彩 RGBA8888。32bit 用 #define 寫死了,無法 ioctl 設定。因此把這些 #define 改了,重編成 RGB565 的格式。
最後就是 Acer 的 kernel 大概因為用 zip 壓檔的緣故,很多檔案不見了。Linux 的 kernel 中有些檔案,檔名僅僅只有大小寫不同,但卻是兩個不同的檔。碰到這種除了大小寫外完全相同的檔名,Acer 用的 zip 就會只挑其中一個放入 zip 檔中。所以只好從其他地方的 source 補回來。
這樣之後,只要選對 kernel,很多 2.2 的 custom rom 都能開機到 GUI。我試過了
AOSP (full_passion, 改 prelink map),
liquid metal 官方 2.2
liquid miui
malez recovery (正常顯示)
基本上都沒怎麼改就能跑 GUI,不過當然硬體也都不太靈。
也試了 liquid metal 的 2.3.3 leak,不過不成功。
大概 kernel 至少要弄到 2.6.34 才行。
以前剛接觸 Linux 時,興沖沖的重新編譯完 kernel,往往會發生開機只出現 Li 兩個字的慘劇 (原來應該是顯示 Lilo 後跑出一堆開機訊息,但是連 Lilo 四個字母都跑不完,機器就停在那裡了。)
由於 Acer Stream 都沒人弄 rom,只好自己弄。
一開始傻傻的編譯了一份 AOSP 的 system.img,想說至少可以開機吧,沒想到頗類似當年的 Li。所有程式無法執行,gdbserver 是跑起來了,只是跑起來才發現我是用 adb shell 進去而不是 ssh,網路根本沒跑起來。
還好現在網路發達,大部分的問題網路上都找得到答案。
當然找答案也是要有點方向。
一開始經由官方版本和AOSP的 linker/bin/lib 等等的組合,外加readelf 之後發現官方版本和自己編出的 linker 的 entry point 不同。 大致上猜出是 shared library 放置的記憶體位置問題。
搜尋了一下,發現這是 android prelink 以及 VMSPLIT_2G 的問題。所以這方面把 prelink map 平移一下即可。另外我也 complie 了一份 VMSPLIT_2G=n 的 kernel。
再 來就是 RGBA8888 的問題。 Stream 的 kernel 回報不正確的解析度,而且固定為 32bit 色彩 RGBA8888。32bit 用 #define 寫死了,無法 ioctl 設定。因此把這些 #define 改了,重編成 RGB565 的格式。
最後就是 Acer 的 kernel 大概因為用 zip 壓檔的緣故,很多檔案不見了。Linux 的 kernel 中有些檔案,檔名僅僅只有大小寫不同,但卻是兩個不同的檔。碰到這種除了大小寫外完全相同的檔名,Acer 用的 zip 就會只挑其中一個放入 zip 檔中。所以只好從其他地方的 source 補回來。
這樣之後,只要選對 kernel,很多 2.2 的 custom rom 都能開機到 GUI。我試過了
AOSP (full_passion, 改 prelink map),
liquid metal 官方 2.2
liquid miui
malez recovery (正常顯示)
基本上都沒怎麼改就能跑 GUI,不過當然硬體也都不太靈。
也試了 liquid metal 的 2.3.3 leak,不過不成功。
大概 kernel 至少要弄到 2.6.34 才行。
Categories: android
17 意見:
大大,我們的STREAM能否自由就靠你了。加油!!!
支持您:)~~
松鼠人大哥:
謝謝你的工作!!我最近剛買了一隻Stream,昨天剛刷了你編輯的clockworkmod recovery。很期待你出一個custom rom,幾個歐國朋友也買這一款手機,他們很開心終於有天才開始在乎我們了~
你覺得LiquidNext編輯的rom如何?我本人用過,對這個rom很滿意……我還蠻喜歡MIUI可是對電池有太大的要求……
加油!!支持你!!!
謝謝支持。
LiquidNext 不錯,可能的話,也希望能弄出一樣好的 rom
其實好像也可以參考HTC Desire的rom,看來他們的配置都特別像,甚至屏幕都是一個樣子……
http://www.pocket-lint.com/news/34547/acer-stream-vs-htc-desire
acer官方後來有把kernel source放出下載,可以拿來怎麼用?
stream 給的 source 是 2.6.29,編譯是沒什麼問題,就是太舊了一點。
松鼠人:這個source的確很舊,你覺得換新一點的版本會有很大的變化嗎?
還有一件事情,我自己把cyanogenmod編譯好了,可是內核依然還有問題,你可以幫我看一下,再給我一些建議嗎?下載地址如下:
http://os-shots.com/cm-stream/
還有,你可不可以給我你編好的內核和boot.img嗎?謝謝幫忙~~
把 kernel 更新好了,其他問題就相對簡單。2.6.29 其實是 android 2.1 的 kernel,我不太清楚要跑 gingerbread 需要更改多少。
你能跑 cm6 了嗎?
編譯好的 kernel 還有 source 我可以放上。
不過我現在接觸我發展用的電腦的機會不多,所以要等一點時間才能把檔案上傳到 github,或者看看你編譯的檔案。
改了 split 3g 和 video bpp 的問題後,配合原來的 boot.img ,很多 2.2 的 firmware 可以開機到 GUI。
好的,謝謝你的分析和建議,我有時間的話也會看看cm6,到現在下載并研究的只是cm7……
很期待你分享自己編譯好的kernel!請問是哪個版本?你編譯時有沒有遇到什麽困難?還有,你的github帳號是什麽?
同時也想看看你跑GUI的2.2是哪一些,反應怎麼樣!
謝謝你的支持和工作~ 我知道很多人爲了這些而關注你的blog!
有俄國人做了一個rom
http://translate.google.com.tw/translate?hl=zh-TW&sl=ru&tl=en&u=http%3A%2F%2Facer-club.ru%2Ftopic%2F13542-custom-rom-darkfirmware-glacier-400721-%25D0%25B4%25D0%25BB%25D1%258F-acer-stream%2F
俄國人的韌體看起來挺不錯的
他們的韌體是看起來不錯,所以我下載了裝在我的stream上
說實話我有一點失望,雖然不需要wipe,這個韌體沒有什麽特別的變化;他們只是修改一下framework-res.apk、默認launcher等app……
安裝時,在recovery只會把system分割格式化,再考貝zip里的system檔案。
我最近還聯絡上一個法國人,他也想在stream上開發CM7,他可能會參考你的kernel代碼。
I'm author of russian custom ROM for a Stream. I don't have a Stream device and just for users delete all Acer's apps, set root, busybox and unified UI on HTC Sense-like interface. This is not a serious and I believe, what you can create really good custom rom for a Stream.
松鼠人加油,希望ACER STREAM 可以因你而復活 Orz
謝謝你的留言! 雖然很久沒有動了
也是拉 XD 反正都出這麼久了,乾脆放棄好了ww
我也是想老機新用看看 XD
張貼留言