蘋果系統(tǒng)的小伙伴在使用的時候,想要設(shè)置多系統(tǒng),但是自己不知道怎么進行設(shè)置。因此就讓小編給大家詳細的講講,想知道的可以一起來看看吧。
iPhone多系統(tǒng)設(shè)置方式介紹
關(guān)于iOS Boot Chains:
BootROM - LLB - iBoot - Kernel(普通啟動)
在普通啟動中,系統(tǒng)會層層驗證,只要有一環(huán)出現(xiàn)問題,設(shè)備的啟動就會中斷
在老版本的iOS系統(tǒng),可以通過nvram boot-args=xxxxxxxxx的方法設(shè)置boot-args,但很顯然,在新的iOS系統(tǒng)上這是無法實現(xiàn)的。
BootROM - iBSS - iBEC - Kernel(DFU啟動)
DFU啟動在設(shè)備準(zhǔn)備恢復(fù)系統(tǒng)時會用到,同樣層層驗證,但是,iBEC中的boot-args可以直接進行修改,原boot-args——“rd=md0………..”可在回復(fù)設(shè)備時啟動Ramdisk進行設(shè)備恢復(fù)。
修改iBEC實現(xiàn)Tethered Verbose Boot。關(guān)于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)核的引導(dǎo)并在新的分區(qū)啟動系統(tǒng)。
普通啟動Boot Chains在設(shè)備恢復(fù)固件時被flash到設(shè)備中,為了把我們所需的新的一組啟動鏈寫入設(shè)備,我們只需要修改固件中的manifest(all_flash),加入我們所需的啟動鏈即可,恢復(fù)該固件,即可完成啟動鏈寫入。
那么問題又來了,LLB如何找到它所需要引導(dǎo)的下一級鏈呢?發(fā)現(xiàn),在LLB,iBoot中,利用標(biāo)識尋找下一級啟動元素,既然如此,修改pwned iboot的標(biāo)識,同時patch LLB,使它尋找對應(yīng)的標(biāo)識,即可完成對應(yīng)啟動鏈的引導(dǎo)。
so,我做出了以下幾個patch:
1、LLB,iBoot幾處關(guān)于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,支持了一票設(shè)備,抽空對它的實現(xiàn)方法做了點分析。
首先CoolBooter并不需要flash,這讓它變得格外方便,不許要制作一個特別的固件來寫入啟動鏈
原理同樣是利用kloader,but!CoolBooter使用了winocm的multi_kloader來進行多個映像的加載
CoolBooter要求越獄環(huán)境,它直接在固件寫入后,將DFU啟動鏈放置于新分區(qū)中,準(zhǔn)備進行啟動。等會?!為什么DFU鏈可以用來正常啟動?這就要牽扯回iBEC的Boot-args設(shè)置了,原設(shè)置啟動Ramdisk,既然如此,直接修改為在新分區(qū)啟動即可進行引導(dǎo)。