<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          16 歲高中生成功在 iPhone 7 上安裝 Ubuntu 20.04 桌面!

          共 18561字,需瀏覽 38分鐘

           ·

          2021-02-05 20:41

          點(diǎn)擊上方“逆鋒起筆”,公眾號回復(fù) 編程資源
             
          領(lǐng)取大佬們推薦的學(xué)習(xí)資料



          往日回顧:視頻下載神器,支持 80+ 網(wǎng)站,比迅雷還快!


               

             正文   


          近日,國外一名 16 歲的開發(fā)者發(fā)布了一則視頻,展示自己為一臺已經(jīng)無法正常使用的 iPhone 7 成功移植了 Ubuntu 20.04,并將其作為服務(wù)器來使用。

          發(fā)布視頻的開發(fā)者網(wǎng)名為 Daniel Rodriguez[1],是一名在校高中生。據(jù) Daniel 介紹,他使用的 iPhone7 來自他的外婆,這臺手機(jī)的屏幕、電源等硬件設(shè)備基本上保存完好,但由于 NVMe NAND 已經(jīng)完全無法訪問,這意味著這臺手機(jī)將永遠(yuǎn)無法再運(yùn)行 iOS 系統(tǒng),基本上已經(jīng)相當(dāng)于一塊磚頭。于是他拿到這臺手機(jī),萌生了改造它的想法。

          Daniel[2] 參考并使用了 checkra1n[3]linux-sandcastle[4]projectsandcastle[5] 等開源項(xiàng)目,同時(shí)自己編寫了網(wǎng)橋設(shè)置 script/udev 規(guī)則[6]來實(shí)現(xiàn)這一復(fù)雜的工作。最終成功在這臺壞掉的 iPhone7 上運(yùn)行了 Ubuntu 20.04 。


          來觀摩下他的改造步驟。

          準(zhǔn)備工作

          • NFS 服務(wù)、dhcp 服務(wù)
          • 越獄工具 checkra1n 0.10.2-beta[7]
          • Kernel fork for h9x/A10[8]
          • projectsandcastle 工具[9]。projectsandcastle 是一款針對 iPhone 的 Android/Linux 支持工具,該工具可以給廣大研究人員提供很多實(shí)用工具。
          • 你還需要一個(gè)運(yùn)行在 arm64 平臺中的 Ubuntu 系統(tǒng)來進(jìn)行編譯,或者你也可以使用交叉編譯器,當(dāng)然最方便的是使用 ??docker buildx
          • 網(wǎng)橋設(shè)置 script/udev 規(guī)則[10]

          1. 構(gòu)建 Rootfs

          debootstrap 是 Ubuntu 提供的用于建立精簡 Ubuntu 系統(tǒng)的方案,可以在指定的目錄下安裝一個(gè)精簡的 Ubuntu 系統(tǒng),除了一些配置以外,其內(nèi)容與使用 Ubuntu 安裝鏡像第一階段安裝的內(nèi)容基本相同。首先要在 arm64 架構(gòu)的 Ubuntu 中安裝 debootstrap:

          $ sudo apt-get install debootstrap -y

          假設(shè)你的 nfs 服務(wù)提供的文件目錄為 /mnt/nfsrootarm64。然后執(zhí)行以下命令:

          $ sudo debootstrap focal /mnt/nfsrootarm64

          # chroot 進(jìn)入新系統(tǒng)
          $ chroot /mnt/nfsrootarm64

          # 安裝必要工具
          $ apt install vim network-manager openssh-server
          # 修復(fù) LC_ALL 錯(cuò)誤,選擇 en_US.utf-8 作為默認(rèn)值。
          $ dpkg-reconfigure locales
          # 修復(fù)時(shí)區(qū)
          $ dpkg-reconfigure tzdata
          # 添加用戶
          $ adduser 
          $ adduser   sudo
          # 添加 focal-updates, focal-backports 和 focal-security
          $ vim /etc/apt/sources.list

          2. 編譯內(nèi)核

          克隆 Sandcastle 內(nèi)核項(xiàng)目[11],執(zhí)行以下命令生成配置文件:

          $ make hx_h9p_defconfig

          然后修改 .config 文件,改動部分如下:

          • CONFIG_USB_ETH=y
          • CONFIG_NFS_FS=y
          • CONFIG_IP_PNP=y
          • CONFIG_IP_PNP_DHCP=y
          • CONFIG_BLK_DEV_INITRD=n // (none needed, otherwise it'll complain about wanting one)
          • CONFIG_CMDLINE="earlycon=hx_uart,0x20a0c0000 console=tty0 root=/dev/nfs rw nfsroot= :/nfsrootarm64,vers=4,tcp init=/usr/bin/systemd rootwait ip=dhcp g_ether.host_addr=12:a5:cf:42:92:fd g_ether.dev_addr=5e:bc:ca:27:92:b1 g_ether.idVendor=1317 g_ether.idProduct=42146 mitigations=off"
            • 可以替換其中的 MAC 地址,不替換也無所謂
            • 替換 NFS Server 的地址
          • CONFIG_ROOT_NFS=y
          • CONFIG_CMDLINE_FORCE=y
          • CONFIG_DEBUG_INFO=n // 可以大大加快編譯速度

          直接編譯:

          $ make -j 4 Image

          編譯完成后,執(zhí)行以下命令生成設(shè)備樹,后面 PongoOS 會用到:

          $ ./dtbpack.sh

          最后生成 PongoOS 啟動鏡像:

          $ lzma -z --stdout arch/arm64/boot/Image > ../Image.lzma

          3. 通過 pongoOS 加載內(nèi)核和設(shè)備樹

          克隆 projectsandcastle 項(xiàng)目:

          $ git clone https://github.com/corellium/projectsandcastle

          然后進(jìn)入 loader 目錄,直接運(yùn)行以下命令進(jìn)行編譯:

          $ cc -O2 -Wall load-linux.c -lusb-1.0 -o load-linux

          4. 設(shè)置網(wǎng)絡(luò)

          克隆作者的項(xiàng)目:

          $ git clone https://github.com/newperson1746/iphone7-linux-nfsroot

          你可以編輯 ethbridge.sh 來修改網(wǎng)卡名,使其可以作為 udev 接受的參數(shù),不過我比較懶,就不改了。

          關(guān)注公眾號 逆鋒起筆,回復(fù) pdf,下載你需要的各種學(xué)習(xí)資料。

          編輯 70-iphone7.rules,將 MAC 地址修改為步驟 2 中設(shè)置的 MAC 地址。然后將 70-iphone7.rules 移動到 /etc/udev/rules.d 目錄中,執(zhí)行以下命令:

          $ sudo udevadm control --reload

          5. 最后的大招

          • 首先重啟 iPhone 7 進(jìn)入恢復(fù)模式:
          1. 將 iPhone 用數(shù)據(jù)線和電腦上的 iTunes 連接;

          2. 將 iPhone 關(guān)機(jī);

          3. 同時(shí)按下電源鍵“音量 -”鍵,看到蘋果 Logo 也不要松開,直到看到下面這個(gè)界面;

          4. 此時(shí)手機(jī)已進(jìn)入恢復(fù)模式。

          • 然后啟動越獄工具 checkra1n,不加任何參數(shù)。
          • 點(diǎn)擊 start,然后根據(jù)提示進(jìn)入 DFU 模式。一但進(jìn)入了 DFU 模式,在手機(jī)嘗試啟動進(jìn)入 iOS 系統(tǒng)之前立即按下 CTRL-C 鍵。
          • 執(zhí)行命令 checkra1n -cpE 進(jìn)入 PongoOS 的命令行模式。
          • 執(zhí)行命令 load-linux  進(jìn)入 Ubuntu 系統(tǒng)。

          接下來你就會在屏幕上看到 Ubuntu 會自動配置 DHCP,掛載 rootfs,然后啟動 systemd,進(jìn)入登錄提示!

          你可以通過 DHCP 服務(wù)器來查看它的 IP 地址,最后通過 ssh 連接到 iPhone!

          以上就是在 iPhone 7 中安裝 Ubuntu 20.04(不帶桌面)的所有步驟,如果你想安裝桌面版,可以參考作者的改進(jìn)版[13]

          總結(jié)

          盡管有網(wǎng)友夸贊其為天才少年,但 Daniel 本人仍然十分謙遜。他表示這些工作都要?dú)w功于 Corellium 和 checkra1n 項(xiàng)目的開發(fā)人員,Linus Torvalds 以及 Linux 內(nèi)核的所有貢獻(xiàn)者,Ubuntu 和 Debian 維護(hù)者等等。“他們是為這個(gè)項(xiàng)目制作所有作品的真正英雄,而我只是恰好在 iPhone 上很好地組裝了這些前輩們留下的拼圖。”Daniel 說。

          參考資料

          [1]

          Daniel Rodriguez: https://www.youtube.com/channel/UCQrHIS1NFfD06-yE5tdbBUw

          [2]

          Daniel: https://www.youtube.com/channel/UCQrHIS1NFfD06-yE5tdbBUw

          [3]

          checkra1n: https://checkra.in/releases/0.10.2-beta#all-downloads

          [4]

          linux-sandcastle: https://github.com/corellium/linux-sandcastle

          [5]

          projectsandcastle: https://github.com/corellium/projectsandcastle.git

          [6]

          網(wǎng)橋設(shè)置 script/udev 規(guī)則: https://github.com/newperson1746/iphone7-linux-nfsroot

          [7]

          checkra1n 0.10.2-beta: https://checkra.in/releases/0.10.2-beta#all-downloads

          [8]

          Kernel fork for h9x/A10: https://github.com/corellium/linux-sandcastle

          [9]

          projectsandcastle 工具: https://github.com/corellium/projectsandcastle.git

          [10]

          網(wǎng)橋設(shè)置 script/udev 規(guī)則: https://github.com/newperson1746/iphone7-linux-nfsroot

          [11]

          Sandcastle 內(nèi)核項(xiàng)目: https://github.com/corellium/linux-sandcastle

          [12]

          <: https://172.16.13.1

          [13]

          作者的改進(jìn)版: https://www.reddit.com/r/linux/comments/kvmsfd/success_iphone_7_booting_ubuntu_2004_to_full/


          PS:歡迎在留言區(qū)留下你的觀點(diǎn),一起討論提高。如果今天的文章讓你有新的啟發(fā),歡迎轉(zhuǎn)發(fā)分享給更多人。

          版權(quán)申明:內(nèi)容來源網(wǎng)絡(luò),版權(quán)歸原創(chuàng)者所有。除非無法確認(rèn),我們都會標(biāo)明作者及出處,如有侵權(quán)煩請告知,我們會立即刪除并表示歉意。謝謝!


          猜你還想看

          2020 網(wǎng)絡(luò)流行語大全!你知道幾個(gè)?
          程序員才能懂的 22 張高度內(nèi)涵圖!!
          一套屬于前端的版本控制系統(tǒng)!更新!!不求人!!!

                                        
          支持下 
          瀏覽 17
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一本到高清色情久久无码中文 | 天天射天天干亚洲69 | 爱液视频网站 | 思思热视频在线 | 人人妻人人躁人人DVD |