2020.03.06 09:00

在iPhone上改裝執行Android作業系統!Project Sandcastle想讓無法升級iOS的舊iPhone 重生

ADVERTISEMENT

iPhone向來採用封閉的生態系統,在一般情況下只允許由官方App Store安裝App,也不允許安裝舊版iOS作業系統,更是禁止自行安裝第三方作業系統、Rom,讓手機只能安裝「越來越肥大」的新版iOS。現在Project Sandcastle的出現一改這個問題,讓iPhone能夠安裝並執行Android作業系統。

解決電子垃圾問題

每當Apple推出新版iOS時,大家最常討論的話題不外乎新版系統是否比較耗電,或是操作流暢度是否受到影響,雖然先前UL(原Futuremark)就透過透過iOS版3DMark驗證過新舊版iOS對效能測試的成績幾乎沒有影響,但也解釋因為新功能可能占用較多系統資源,或是為新裝置設計的App無法流暢地在舊裝置上運作,以及App是針對舊版本iOS最佳化等原因,造成體感效能低下的狀況。

而有些新功能或App需要在新版iOS才能運作,所以使用者可能因此將iOS升級至最新版,然而受限於Apple對iOS採「只升不降」的管理策略,一旦使用者更新iOS之後就不能降回舊版,所以日後如果覺得操作不流暢的話,也無法再降級回到舊版iOS。

ADVERTISEMENT

雖然目前已經有手法能破解iOS的降級限制,但來自虛擬化技術公司Corellium的開發團隊則是採取更極端的做法,推出Project Sandcastle,著手開發支援iPhone的Android作業系統,希望能透過較為輕省的Android延長老舊裝置的使用壽命,進而達到減少電子廢棄物的目標。

ADVERTISEMENT

一波三折的冒險旅程

Android是款具有相當彈性的作業系統,完成系統底層的Linux核心並不是太困難的工作,但是要搞定驅動程式可就讓人頭大了。Corellium憑藉著在虛擬化領域厚實的技術與經驗,完成了在虛擬機器上啟動系統核心的任務,並可做為開發過程的除錯平台。

接下來就是要考慮如何讀出系統資料,團隊參考了Samsung S3C系列SoC中的UART設計,並在修改後完成UART介面,接著自行開發了SPI控制器、模組的驅動程式。

ADVERTISEMENT

接下來遇到的問題,是iPhone使用的SoC採用非標準的AIC中斷控制器,與AArch64(64bit Arm架構)使用的Arm GIC並不相同,而且計時器中斷(Timer Interrupt)的運作方式也不相容,因此開發中斷控制器驅動程式又是個繁重的任務。

在完成一連串的Linux核心開發之後,開發團隊接著進行Android的移植工作,他們解決了虛擬記憶體頁面、系統不支援32bit程式、缺少觸控螢幕與Wi-fi無線網路驅動程式等問題,開發了稱為OpenLauncher的啟動器,並編譯了燒錄用的映像檔,讓開發工作告一段落。

目前Project Sandcastle已經支援iPhone 6到11以及iPod 6、7等裝置,但各裝置都有部分功能尚未支援的狀況。

ADVERTISEMENT

▲Forbes釋出了實際執行Sandcastle的展示影片,可以看到過程有使用Checkra1n越獄工具。

讀者可以在Project Sandcastle的官方網站查閱完整開發流程,並下載iPhone 7、7 Plus的測試版,但考量到Project Sandcastle仍然處於相對早期的開發階段,所以只建議進階使用者嘗試,至於一般使用者還是乖乖等後續更穩定的版本釋出後,再評估是否安裝。

ADVERTISEMENT