👉 歡迎加入T客邦telegram ( https://t.me/TechbangNEWS )
解決電子垃圾問題
每當Apple推出新版iOS時,大家最常討論的話題不外乎新版系統是否比較耗電,或是操作流暢度是否受到影響,雖然先前UL(原Futuremark)就透過透過iOS版3DMark驗證過新舊版iOS對效能測試的成績幾乎沒有影響,但也解釋因為新功能可能占用較多系統資源,或是為新裝置設計的App無法流暢地在舊裝置上運作,以及App是針對舊版本iOS最佳化等原因,造成體感效能低下的狀況。
而有些新功能或App需要在新版iOS才能運作,所以使用者可能因此將iOS升級至最新版,然而受限於Apple對iOS採「只升不降」的管理策略,一旦使用者更新iOS之後就不能降回舊版,所以日後如果覺得操作不流暢的話,也無法再降級回到舊版iOS。
雖然目前已經有手法能破解iOS的降級限制,但來自虛擬化技術公司Corellium的開發團隊則是採取更極端的做法,推出Project Sandcastle,著手開發支援iPhone的Android作業系統,希望能透過較為輕省的Android延長老舊裝置的使用壽命,進而達到減少電子廢棄物的目標。
一波三折的冒險旅程
Android是款具有相當彈性的作業系統,完成系統底層的Linux核心並不是太困難的工作,但是要搞定驅動程式可就讓人頭大了。Corellium憑藉著在虛擬化領域厚實的技術與經驗,完成了在虛擬機器上啟動系統核心的任務,並可做為開發過程的除錯平台。
接下來就是要考慮如何讀出系統資料,團隊參考了Samsung S3C系列SoC中的UART設計,並在修改後完成UART介面,接著自行開發了SPI控制器、模組的驅動程式。
接下來遇到的問題,是iPhone使用的SoC採用非標準的AIC中斷控制器,與AArch64(64bit Arm架構)使用的Arm GIC並不相同,而且計時器中斷(Timer Interrupt)的運作方式也不相容,因此開發中斷控制器驅動程式又是個繁重的任務。
在完成一連串的Linux核心開發之後,開發團隊接著進行Android的移植工作,他們解決了虛擬記憶體頁面、系統不支援32bit程式、缺少觸控螢幕與Wi-fi無線網路驅動程式等問題,開發了稱為OpenLauncher的啟動器,並編譯了燒錄用的映像檔,讓開發工作告一段落。
目前Project Sandcastle已經支援iPhone 6到11以及iPod 6、7等裝置,但各裝置都有部分功能尚未支援的狀況。
▲Forbes釋出了實際執行Sandcastle的展示影片,可以看到過程有使用Checkra1n越獄工具。
讀者可以在Project Sandcastle的官方網站查閱完整開發流程,並下載iPhone 7、7 Plus的測試版,但考量到Project Sandcastle仍然處於相對早期的開發階段,所以只建議進階使用者嘗試,至於一般使用者還是乖乖等後續更穩定的版本釋出後,再評估是否安裝。