蘋果系統(tǒng)的小伙伴在使用的時候,想要設置多系統(tǒng),但是自己不知道怎么進行設置。因此就讓小編給大家詳細的講講,想知道的可以一起來看看吧。
iPhone多系統(tǒng)設置方式介紹
關于iOS Boot Chains:
BootROM - LLB - iBoot - Kernel(普通啟動)
在普通啟動中,系統(tǒng)會層層驗證,只要有一環(huán)出現(xiàn)問題,設備的啟動就會中斷
在老版本的iOS系統(tǒng),可以通過nvram boot-args=xxxxxxxxx的方法設置boot-args,但很顯然,在新的iOS系統(tǒng)上這是無法實現(xiàn)的。
BootROM - iBSS - iBEC - Kernel(DFU啟動)
DFU啟動在設備準備恢復系統(tǒng)時會用到,同樣層層驗證,但是,iBEC中的boot-args可以直接進行修改,原boot-args——“rd=md0………..”可在回復設備時啟動Ramdisk進行設備恢復。
修改iBEC實現(xiàn)Tethered Verbose Boot。關于Ph0en1x:
我在我之前放出的Ph0en1x_S 雙系統(tǒng)自制固件中,成功實現(xiàn)了iOS雙系統(tǒng)的完美切換,而實現(xiàn)完美切換,重點就在于Boot Chains的交換,即如何從iOS 7的啟動鏈切換到iOS X的啟動鏈。而wincom所開發(fā)的kloader,正好能夠滿足這第一步的需求,如果我們使用普通啟動Boot-Chains的話,就能夠通過kloader加載pwned LLB,pwned LLB加載pwned iBoot,在pwned iBoot中修改boot path,進行boot-args重定向,就能夠?qū)崿F(xiàn)對另一內(nèi)核的引導并在新的分區(qū)啟動系統(tǒng)。
普通啟動Boot Chains在設備恢復固件時被flash到設備中,為了把我們所需的新的一組啟動鏈寫入設備,我們只需要修改固件中的manifest(all_flash),加入我們所需的啟動鏈即可,恢復該固件,即可完成啟動鏈寫入。
那么問題又來了,LLB如何找到它所需要引導的下一級鏈呢?發(fā)現(xiàn),在LLB,iBoot中,利用標識尋找下一級啟動元素,既然如此,修改pwned iboot的標識,同時patch LLB,使它尋找對應的標識,即可完成對應啟動鏈的引導。
so,我做出了以下幾個patch:
1、LLB,iBoot幾處關于check的patch
2、啟動元素的尋找
3、iBoot中Boot-args重定向,并修改為rd=disk0s1s3 -v amfi=0xff cs_enforcement_disabled=1
4、iBoot中Boot Path指向iOS 6 kernelcache的存放地址
kloader LLB, it works!
ah其實我是想放出iPhone 5的雙系統(tǒng)的,結(jié)果JonathanSeals一下放出了CoolBooter,支持了一票設備,抽空對它的實現(xiàn)方法做了點分析。
首先CoolBooter并不需要flash,這讓它變得格外方便,不許要制作一個特別的固件來寫入啟動鏈
原理同樣是利用kloader,but!CoolBooter使用了winocm的multi_kloader來進行多個映像的加載
CoolBooter要求越獄環(huán)境,它直接在固件寫入后,將DFU啟動鏈放置于新分區(qū)中,準備進行啟動。等會?!為什么DFU鏈可以用來正常啟動?這就要牽扯回iBEC的Boot-args設置了,原設置啟動Ramdisk,既然如此,直接修改為在新分區(qū)啟動即可進行引導。