概述
Devteam最近幾個月來一直在嘗試運用雙重啟動進行iphone的越獄,但是因為目前還有幾項先進的技術還在研發階段(許多仍然沒有公開),我想還是先向那些想嘗試利用雙重啟動來破解iPhone手機(或OS’S)的朋友們公布下面這項令人叫絕的破解方法吧?! ?/P>
下面我將使用一部已越獄的iPhone1.1.4手機,并利用1.1.1固件向你展示此破解過程。為了實現破解,我將在手機上創建一個新的分區,并在該分區上安裝1.1.1固件,然后將手機升級到1.1.4版本。但采用這一步驟使得這一分區存在一定缺陷,這時i可以雙重重啟iphone手機,利用已存在的1.1.1分區安裝1.1.4分區。一旦安裝成功,你就可以改變你的分區點,然后再安裝OpenSSH.
一旦你的雙版本OS可以使用了,你就可以通過改變啟動設置來隨意在兩個版本的OS之間進行切換了。
例如:nvram boot-args=“rd=disk0s3 -v”
聲明:
以下破解過程,向其他所有的破解方法一樣,可能導致你的手機永久性損壞,無法修復。因此我們對提供的下述信息不做任何保證。所有后果一律自付。
破解流程:
第一步:如必要,降級iTunes
在寫該破解過程的時候,iPHUC還不支持iTunes 7.6.因為我不確定你的iPHUC是否已經升級,所以我假設你的iPHUC版本是和我的一樣的。
如果情況確實如此,那么你可能要用iTunes7.5或更低的版本。如果必要,退出至~/Music/iTunes library,刪除iTunes。
在OS X上, 你可以做如下操作:
#rm -rf /applications/iTunes.app
# rm -rf/System/Library/PRivateFrameworks/MobileDevice.framework
# mv~/Music/iTunes ~/Music/iTunes.7.6
現在下載并安裝iTunes 7.5
第二步:安裝iPHUC
如果你需要iPHUC , 打開它,再打開jailbreak.jar, 解壓iPHUC?! ?BR> 注意:iPHUC有許多版本不兼容,因此除非你有它的更新版本,否則我們在此推薦你用這個版本。
第三步:如必要,降級(或升級)iPhone軟件
此時你必須從一個已經越獄的iPhone手機軟件入手,比如1.1.1或更高版本。1.0.x則不能進行以下操作,除非你是在最近45周或更短的時間內擁有了iPhone手機。如果你運行1.1.4版本,則你可以把他降級到1.1.1. 如果你運行1.0.X,你需要將其升級至1.1.1除非你擁有的并非是真的1.0.x版本手機。一旦你運行1.1.1,用*#307#破解進入 Safari 并通過http://www.jailbreakme.com.安裝AppSnapp.這樣就可以激活你的手機把installer放在SpringBoard目錄下。更加詳細的流程請參看http://www.pantsland.com/2007/12 ... ctions-with-unlock/ 用APPTapp 安裝BSD subsystem 和SSH 使其與1.1.1版本兼容。
第四步:通過1.1.1ramdisk安裝必要的工具
從1.1.1或1.0.2ramdisk中找到下列文件:
fdisk
newfs_hfs
fsck_hfs
mount_hfs
umount
注意:只有ramdisk上的fdisk版本才可以在iPhone手機上運行。如果你使用錯誤,fdisk會顯示“不能識別”。用scp.從ramdisk上安裝binaries到/usr/sbin到你的1.1.1版本上,并運行。# chmod 755 /usr/sbin/*
第五步:設置分區欄
這步,我們調整 /private/var分區,并創建第三個分區,disk0s3,這樣可以刪除/private/var。所以你需要做的第一件事是建立一個/private/var的備份。這時你的/private/var將有300MB大小。如果你愿意,你可以體制該操作,盡管使你的手機具有雙重重啟功能是有一定價值的。
# tar -cf /private.tar--preserve /private/var # (ignore the errors)
現在,卸載:
# umount -f/private/var
下一步,運行fdisk:
# fdisk -e/dev/disk0
如果你按上面的操作運行,運行錯誤,那么可能你運行的是另一個版本的fdisk,而不是上面我們說的那個版本。如果真的遇到這種情況,用全程路徑找到有上面那個版本fdisk的ramdisk。你可以通過減少cyliner的大小來編輯分區2,一個cyliner, 即s1,是+ delta大小,即在s1和s2之間(通常為120或123)。對于iPhone來說, 差不多是153720cyliners.下一步,編輯分區3,一般與分區1和分區2同樣間距(盡管沒必要),大小與分區1一樣(iPhone為153600,iPod為76800)
最后分區大小如下:
4GB iPhone:
Disk: /dev/disk0 geometry: 983/32/63[1982464 sectors]
Sector size: 2048 bytes
Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start -size]
------------------------------------------------------------------------
1: AF 0 1 1 - 1023 254 63 [ 63 - 153600] HFS+
2: AF 1023 25463 - 1023 254 63 [ 153663 - 1674861] HFS+
3: AF 1023 254 63 - 1023 25463 [ 1828644 - 153600] HFS+
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
8GBiPhone:
Disk: /dev/disk0 geometry: 983/64/63 [3964928 sectors]
Sectorsize: 2048 bytes
Offset: 0 Signature: 0xAA55
Starting Ending
#: idcyl hd sec - cyl hd sec [ start -size]
------------------------------------------------------------------------
1: AF 0 1 1 - 1023 254 63 [ 63 - 153600] HFS+
2: AF 1023 25463 - 1023 254 63 [ 153663 - 3657665] HFS+
3: AF 1023 254 63 - 1023254 63 [ 3811328 - 153600] HFS+
4: 00 0 0 0 - 0 0 0 [ 0 - 0]unused
16GB iPod Touch:
Disk: /dev/disk0 geometry: 983/64/63 [3964928sectors]
Sector size: 4096 bytes
Offset: 0 Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start -size]
------------------------------------------------------------------------
1: AF 0 1 1 - 1023 254 63 [ 63 - 76800] HFS+
2: AF 1023 25463 - 1023 254 63 [ 76863 - 3811059] HFS+
3: AF 1023 254 63 - 1023 25463 [ 3887922 - 77006] HFS+
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
8GB iPodTouch:
Disk: /dev/disk0 geometry: 983/64/63 [3964928 sectors]
Sectorsize: 2048 bytes
Offset: 0 Signature: 0xAA55
Starting Ending
#: idcyl hd sec - cyl hd sec [ start -size]
------------------------------------------------------------------------
1: AF 0 1 1 - 1023 254 63 [ 63 - 153600] HFS+
2: AF 1023 25463 - 1023 254 63 [ 153720 - 3657465] HFS+
3: AF 1023 254 63 - 1023254 63 [ 3811185 - 153600] HFS+
4: 00 0 0 0 - 0 0 0 [ 0 - 0]unused
記得必要動分區1,否則你可能刪除了OS。若果操作正確,此時可以用fdisk重寫你的分區欄。完成后,你需要同步上述命令行:#sync; sync; sync; 現在,第三分區已經可以建設好了。因為某些原因,disk0s2被移動到了/dev下的disk0s4處。所以你需要把它移回來。
# mv /dev/disk0s4 /dev/disk0s2
# mv/dev/rdisk0s4 /dev/rdisk0s2
第六步:恢復/private/var
改變分區使得你不得不刪除/private/var,所以此時你需要將它恢復到正常狀態。為此,格式化/private/var,然后extract 你的 tarball
newfs_hfs /dev/disk0s2
mount-t hfs /dev/disk0s2 /private/var
cd /private/var
tar -xvf/private.tar
mv ./private/var/* /private/var && rm -rf./private
第七步:復制OS分區復制OS分區(disk0s1)到你新建的分區(disk0s3).為了避免錯誤,先將root設置為只讀:
# mount -o ro /
然后,用dd復制原盤:
# ddif=/dev/rdisk0s1 of=/dev/rdisk0s3 bs=4096
這將需要幾分鐘,一旦完成,運行fsck:
#fsck_hfs /dev/disk0s3
現在,重新將root 設置為read-write,
重新設置新分區:
# mount -orw /
# mkdir /mnt
# mount -t hfs /dev/disk0s3 /mnt
第八步:設置新的重啟分區
一旦你設置了新的重啟分區,你需要將它在root內進行更改、首先,編輯/mnt/etc/fstab以便你可以將root從disk0s1改為/as/dev/disk0s3。其次,你需要進行symlink破解。蘋果在升級過程會通過查找/sbin/launchd.文件檢測到可疑分區。如果檢測到,就會無法升級。幸運的是,其只在分目錄下查找可疑分區不在根目錄下查找,所以如果我們移動sbin到“mysbin”,然后鏈接/sbin →/mysbin,那么就不會被檢測到。(因為mysbin實際在/mnt目錄下),但是分區被作為root時鏈接就會起作用了:
# cd/mnt
# mv sbin mysbin
# ln -s /mysbinsbin
注意:檢查確定你鏈接到/mysbin,而不是mysbin.
現在就可以安全卸載/mnt了?! ?BR>然后,你也可以從/private/var中刪除其他Installer caches。# find /private/var -name Installer-exec rm -rf {} /;
第九步:從新分區啟動
當啟動iphone時,三個主要的nvramvalues就可以使用了:
Auto-boot (true):決定iphone是否自動啟動還是進入安全模式
Boot-partition(0):確定root分區號(Zero-indexed)
boot-args(empty):用來設置root工具和verbose模式
運行上述程序以便iphone可以使用新分區:
# nvram boot-partition=2
# nvram boot-args="rd=disk0s3-v"
# nvram auto-boot=true
# sync
#reboot
運行“mount”以確定你的手機是在新分區運行,這樣就可以看到根文件系統是在disk0s3下運行,而不是在disk0s1下運行。
如果不能正常啟動,可以嘗試利用iPHUC啟動:
# iphuc
#: enterrecovery (if necessary)
#:cmd setenv/ boot-args/ rd=disk0s3/ -v
#: cmd setenv/ boot-partition/2
#: cmd setenv/ auto-boot/ true
#: cmd saveenv
#: cmdfsboot
如果運行沒有任何反應,通過Home+power試著進入恢復模式直到你看到指示告訴你“連接iTunes”。
第十步:升級到1.1.4
升級回到7.6版本 在OSX狀態下,1.1.4版本只能在iTunes7.6版本下升級。而在windows 下,iTunes7.5就足夠了。否則你需要暫時將iTunes升級到7.6版本?! ?BR>升級iTunes,點擊“Check for updates”。它可能推薦你下載1.1.4版本,這時你只需點擊“Downloadonly”,一旦你下載了1.1.4,按“update”鍵(而不是“restore”)。這樣就可以只更新OS分區,不用刷掉以前的東西。如果iTunes沒有顯示數字錯誤,那么恭喜你?,F在你就擁有一部可以重啟多版本的iPhone手機了。你仍然可以在你的手機上看到“Connect toiTunes”圖標。降級到7.5版本 真是個致命傷。iPHUC不支持7.6版本,如果你需要升級到7.6,那么現在你需要降級到7.5來完成此過程。
第十一步:利用iPHUC啟動1.1.1版本
查看1.1.4ipsw文件,你會看到kernel cache.用iPHUC復制kernel cache到iPhone:
# iphuc
#:filecopytophone kernelcache.release.s5l8900xrb
現在,輸入下列iPHUC命令到root.
#: cmd setenv/ boot-args/ "rd=disk0s3/ -v"
#: cmd setenv auto-boottrue
#: cmd saveenv
#: cmd bootx
第十二步:設置1.1.4分區,運行shop
一旦從新啟動回到了1.1.1版本,你就能夠設置1.1.4分區?! ?BR># fsck_hfs /dev/disk0s1
# mkdir /mnt
# mount -t hfs/dev/disk0s1/mnt
首先檢查fsck,以防iPhone禁止你設置?! ?BR>現在開始安裝。通過/mnt你可以設置read-write1.1.4.你可以改變master.passward 文件,安裝OpenSSH,或安裝其他你想安裝的軟件。但要確保編輯fstab為read-write根文件系統。運行mobile Terminal, 你需要進行如下操作使其可以在未授權情況下可以運行:
1.從http://iphone.natetrue.com 安裝BSD_Base 和BSD_Extras
2.復制Terminal.app 到/mnt/Applications
3. mkdir -p/mnt/usr/local/arm-apple-darwin/
4. ln -s /usr/lib/mnt/usr/local/arm-apple-darwin/lib
5. cp -p /mnt/bin/bash/mnt/bin/sh
6. chmod 4755 /mnt/usr/bin/login
7. Edit/mnt/etc/master.passwd to put your own passWord in
當你想要回到1.1.4啟動時,
senvram up:
# nvram boot-partition=0
# nvram boot-args=""
# nvramauto-boot=true
# sync
#reboot
完成!現在你就可以在兩個版本下雙啟動了。你還可以將此程序應用到1.2或其它版本固件上。
新聞熱點
疑難解答
圖片精選