<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>IPhone on Ivon's Blog</title><link>https://ivonblog.com/ja-jp/tags/iphone/</link><description>Recent content in IPhone on Ivon's Blog</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><managingEditor>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</managingEditor><webMaster>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</webMaster><copyright>Ivon's Blog（ivonblog.com）の記事はご自由に共有いただけます。引用の際は、記事のURLを明記してください。特に明記されていない限り、すべての記事CC BY-SA 4.0 表示-継承 4.0 国際 ライセンスの下で提供されています。商用利用をご希望の場合は、お問い合わせください。</copyright><lastBuildDate>Mon, 07 Oct 2024 08:00:00 +0800</lastBuildDate><atom:link href="https://ivonblog.com/ja-jp/tags/iphone/index.xml" rel="self" type="application/rss+xml"/><follow_challenge><feedId>56005902658351104</feedId><userId>1132431067563556864</userId></follow_challenge><item><title>iPhone 6にLinuxシステムを入れる：checkra1n脱獄でpostmarketOSを動かす</title><link>https://ivonblog.com/ja-jp/posts/iphone-6-postmarketos/</link><pubDate>Mon, 07 Oct 2024 08:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/ja-jp/posts/iphone-6-postmarketos/</guid><description>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;p&gt;iOSデバイスでLinuxシステムを動かす試みについては、以前&lt;a href="https://ivonblog.com/posts/ios-ish-shell/" target="_blank" rel="noreferrer"&gt;iSH Shell Terminal&lt;/a&gt;と&lt;a href="https://ivonblog.com/posts/ios-utm-alpine-linux-vm/" target="_blank" rel="noreferrer"&gt;UTM VM&lt;/a&gt;のやり方を取り上げました。今回は、iPhoneへ直接Linuxシステムを入れることを試します。&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. 背景
 &lt;div id="1-背景" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-%e8%83%8c%e6%99%af" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;checkm8はAppleにとって近年最大級の脆弱性と言えます。checkra1nソフトウェアと組み合わせることで、起動前に脱獄操作を完了できます。2020年には、すごい人がProject Sandcastleを立ち上げ、iPhone 7でAndroid 10を動かすことに成功しました。作者はLinux kernelの移植にも着手し、Appleに訴えられかけたにもかかわらず、このプロジェクトは今も開発が続いています。&lt;/p&gt;</description><content:encoded>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;p&gt;iOSデバイスでLinuxシステムを動かす試みについては、以前&lt;a href="https://ivonblog.com/posts/ios-ish-shell/" target="_blank" rel="noreferrer"&gt;iSH Shell Terminal&lt;/a&gt;と&lt;a href="https://ivonblog.com/posts/ios-utm-alpine-linux-vm/" target="_blank" rel="noreferrer"&gt;UTM VM&lt;/a&gt;のやり方を取り上げました。今回は、iPhoneへ直接Linuxシステムを入れることを試します。&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. 背景
 &lt;div id="1-背景" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-%e8%83%8c%e6%99%af" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;checkm8はAppleにとって近年最大級の脆弱性と言えます。checkra1nソフトウェアと組み合わせることで、起動前に脱獄操作を完了できます。2020年には、すごい人がProject Sandcastleを立ち上げ、iPhone 7でAndroid 10を動かすことに成功しました。作者はLinux kernelの移植にも着手し、Appleに訴えられかけたにもかかわらず、このプロジェクトは今も開発が続いています。&lt;/p&gt;
&lt;p&gt;最近ではLineageOSの移植版も開発されています。たとえば&lt;a href="https://github.com/LineageOS/android_device_apple_snowcastle" target="_blank" rel="noreferrer"&gt;Android device tree for &amp;ldquo;snowcastle&amp;rdquo;&lt;/a&gt;は、対応するiPhoneで最新のAndroid 16を動かせます。&lt;/p&gt;
&lt;p&gt;数年後、さらに多くの開発者が他のiPhone上でLinuxを動かそうと試みました。checkm8が依存する脆弱性はA7 ~ A11チップにしか対応していません。つまりiPhone 5S ~ iPhone Xのデバイスです。それより古いもの、あるいは新しいものはどちらも無理です。&lt;/p&gt;
&lt;p&gt;理想的には、iPhone 7が現在比較的状態のよいデバイスです。AFPSにpostmarketOSをマウントして起動でき、さらにはWaylandを動かせるようにした開発者までいます。残念ながら僕はこの機種を持っていません。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/iphone-6-postmarketos/images/70ee4748eef92335554a6c2cad052a8d.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;僕の手元にはcheckm8に対応する古いiOSデバイスが2台あります。iPhone SE (iOS 15)とiPod touch 6 (iOS 12)です。ネット上にはLinuxの起動に成功した事例が多くありますが、彼らのiOSバージョンは書かれていません。iOS 15以上ではpalera1nでしか脱獄できず、&lt;code&gt;palera1n -p -f&lt;/code&gt;コマンドでpongoOS Shellを起動する必要がありますが、僕が試したところ別の問題がありました。そこでiPod touch 6を使ってテストします。この機種のプロセッサはiPhone 6に近いので、理論上はいけるはずです。&lt;/p&gt;
&lt;p&gt;では、どうやってLinuxを動かすのか？まずcheckra1nでpongoOS Shellに入り、そこからLinuxの起動を誘導します。&lt;/p&gt;
&lt;p&gt;どのLinuxディストリビューションを選ぶのか？RedditではUbuntuをコンパイルして起動した人がいて、TwitterでもAsahi Linuxを動かした人がいます（文末の参考資料を参照）。ただ、postmarketOS Wikiには成功写真がより多く載っており、このコミュニティはLinuxモバイルデバイスの話題に比較的関心があるので、このディストリビューションをベースに試します。&lt;/p&gt;
&lt;p&gt;その後の方法は2つあります。1つ目はLinuxをramdiskとしてコンパイルして起動する方法で、再起動するとデータは消えます。&lt;/p&gt;
&lt;p&gt;2つ目は&lt;a href="https://ivonblog.com/ja-jp/posts/postmarketos-netboot/" target="_blank" rel="noreferrer"&gt;pmbootstrap Netboot &lt;/a&gt;を使ってネットワークブートする方法です。再起動後もデータはやはり消えますが、rootfsはPC側に残ります。&lt;/p&gt;
&lt;p&gt;うん、なので厳密に言えば、これらはどれもiPhoneへLinuxシステムを本当に「インストール」しているわけではありません。システムはiPhoneのディスクに実際には書き込まれず、一時的にLinuxで起動しているだけです。現状どの方法でも、Linuxへ起動するにはPCによる誘導に依存する必要があります。&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. 準備するもの
 &lt;div id="2-準備するもの" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-%e6%ba%96%e5%82%99%e3%81%99%e3%82%8b%e3%82%82%e3%81%ae" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LinuxまたはMacのPC。僕はUbuntu 24.04を使いました&lt;/li&gt;
&lt;li&gt;checkra1nに対応するiOSデバイス。つまりA7 ~ A11チップ、iPhone 5S ~ iPhone Xのデバイスです。僕はiPod touch 6を使い、システムバージョンはiOS 12.5.7です。&lt;/li&gt;
&lt;li&gt;Lightning to USB OTGアダプタ、マウスとキーボード。Linuxにはタッチドライバがないため、iPhone起動後はキーボードとマウスで操作する必要があります。SSHコマンドでX11を操作するのに慣れているなら、なくてもまあ構いません。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;3. pongoOSをコンパイルする
 &lt;div id="3-pongoosをコンパイルする" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-pongoos%e3%82%92%e3%82%b3%e3%83%b3%e3%83%91%e3%82%a4%e3%83%ab%e3%81%99%e3%82%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;pongoOSはiOS XNU kernelを読み込む前に実行されるプログラムです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;pongoOSをコンパイルする前に、checkr1anに依存します。（paler1anではpongoOSをコンパイルする必要はありません）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://checkra.in/releases/#all-downloads" target="_blank" rel="noreferrer"&gt;公式サイト&lt;/a&gt;からcheckra1n実行ファイルをダウンロードし、システムディレクトリへ入れます&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://assets.checkra.in/downloads/linux/cli/x86_64/dac9968939ea6e6bfbdedeb41d7e2579c4711dc2c5083f91dced66ca397dc51d/checkra1n
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mv checkra1n /usr/bin/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;LinuxにClang 11をインストールします&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install clang-11 xdd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;checkra1nのパッケージリポジトリからld64とcctools-stripをインストールします。他のディストリビューションでは、新しいClang向けに手動でコンパイルする必要があります。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;deb https://assets.checkra.in/debian /&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/checkra1n.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-key adv --fetch-keys https://assets.checkra.in/debian/archive.key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install ld64 cctools-strip&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;pongoOSのソースコードを取得してコンパイルします。konradybcioのforkを使います。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/konradybcio/pongoOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; pongoOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/usr/lib/llvm-11/lib/&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;EMBEDDED_CC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/usr/bin/clang-11&amp;#34;&lt;/span&gt; &lt;span class="nv"&gt;EMBEDDED_LDFLAGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-fuse-ld&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin/ld64 &lt;span class="nv"&gt;STRIP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;cctools-strip make all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;注：pongoOSのソースコードは長らく更新されていないため、コンパイルに失敗することがあります。macOS仮想マシンでコンパイルしてもよいです。以下はmacOS VenturaでXcodeを使ってコンパイルするコマンドです：&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;xcode-select --install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/konradybcio/pongoOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; pongoOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make all&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;最終的に&lt;code&gt;build/Pongo.bin&lt;/code&gt;が得られます。&lt;/p&gt;

&lt;h2 class="relative group"&gt;4. Linux kernelをコンパイルする
 &lt;div id="4-linux-kernelをコンパイルする" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-linux-kernel%e3%82%92%e3%82%b3%e3%83%b3%e3%83%91%e3%82%a4%e3%83%ab%e3%81%99%e3%82%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;コンパイル依存パッケージをインストールします&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install build-essential clang libncurses5 flex git bc bison&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;konradybcioが提供するlinux-apple kernelソースコードを取得します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/konradybcio/linux-apple
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; linux-apple&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;SoMainlineが提供するdefconfigを取得します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://raw.githubusercontent.com/SoMainline/linux-apple-resources/master/example.config -O ./.config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;PAGESIZEを調整します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make &lt;span class="nv"&gt;ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;arm64 &lt;span class="nv"&gt;LLVM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; menuconfig&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="5"&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;/&lt;/code&gt;を押して検索し、&lt;code&gt;_PAGE&lt;/code&gt;と入力して1を押します&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PAGESIZEは、A8プロセッサなら4K、A9プロセッサ以上なら16Kに設定します。その後Exitを押して、.configを保存します。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/iphone-6-postmarketos/images/Screenshot_20241004_215131.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;kernelをコンパイルします&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make &lt;span class="nv"&gt;ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;arm64 &lt;span class="nv"&gt;LLVM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; -j&lt;span class="k"&gt;$(&lt;/span&gt;nproc&lt;span class="k"&gt;)&lt;/span&gt; Image.lzma dtbs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="8"&gt;
&lt;li&gt;
&lt;p&gt;最終的に&lt;code&gt;arch/arm64/boot/Image.lzma&lt;/code&gt;が得られます&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;dtbpackスクリプトを取得し、Linux kernelのあるディレクトリへ置きます&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget https://raw.githubusercontent.com/SoMainline/linux-apple-resources/master/dtbpack.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x dtbpack.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="10"&gt;
&lt;li&gt;dtbpackを生成します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./dtbpack.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;5. postmarketOSのrootfsをコンパイルする
 &lt;div id="5-postmarketosのrootfsをコンパイルする" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#5-postmarketos%e3%81%aerootfs%e3%82%92%e3%82%b3%e3%83%b3%e3%83%91%e3%82%a4%e3%83%ab%e3%81%99%e3%82%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://ivonblog.com/posts/postmarketos-general-installation/" target="_blank" rel="noreferrer"&gt;pmbootstrap&lt;/a&gt;をインストールします&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;初期化します。機種はapple-iphone6を選びます。デスクトップ環境はxfce4を選びます。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;rootfsを作成します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;6. Linuxへ起動する
 &lt;div id="6-linuxへ起動する" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#6-linux%e3%81%b8%e8%b5%b7%e5%8b%95%e3%81%99%e3%82%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://ivonblog.com/posts/linux-access-ios-files/" target="_blank" rel="noreferrer"&gt;libimobiledevice&lt;/a&gt;を設定し、LinuxがiPhoneを認識できることを確認します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iPhoneをPCに接続し、手動でDFUモードに入ります：電源を切り、5秒待ちます。電源ボタンを3秒押し続け、続いて電源ボタン＋Homeボタンを10秒押し、それから電源ボタンを離してHomeボタンを押し続けます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DFUに入ったことを確認したら、pongoOSソースコードのディレクトリで端末を開き、checkra1nでpongoOS Shellへ入ります&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; pongoOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo checkra1n -v -V -p -c -k ./build/Pongo.bin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&gt;
&lt;li&gt;
&lt;p&gt;この時点でiOSデバイスの画面にpongoOS Shellが表示されます
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/iphone-6-postmarketos/images/20241005_115452.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;postmarketOSのnetbootを起動します&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap initfs hook_add netboot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap export&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&gt;
&lt;li&gt;LinuxのinitramfsをiOSデバイスへ転送します&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; pongoOS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 scripts/load_linux.py -k &lt;span class="s2"&gt;&amp;#34;linux-apple核心目錄/arch/arm64/boot/Image.lzma&amp;#34;&lt;/span&gt; -d &lt;span class="s2"&gt;&amp;#34;linux-apple核心目錄/dtbpack&amp;#34;&lt;/span&gt; -r /tmp/postmarketOS-export/initramfs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="7"&gt;
&lt;li&gt;
&lt;p&gt;Linuxの起動を待ちます&amp;hellip;結果はkernel panic。クソ。
&lt;figure&gt;
 &lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://static.ivonblog.com/posts/iphone-6-postmarketos/images/Screenshot_20241005-220705.webp"
 onerror="this.onerror=null;this.src='https://ivonblog.com/images/unable-to-load-the-image-pepe.webp'"
 &gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;正常に起動する場合は、さらにNetbootのrootfsを送れば、Linuxシステムへ入れます。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap netboot serve
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh user@172.16.42.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;7. まとめ
 &lt;div id="7-まとめ" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#7-%e3%81%be%e3%81%a8%e3%82%81" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;毎回こういうことをやるたびに、この曲を思い出します。It&amp;rsquo;s all a waste of time again.




&lt;div style="position: relative; padding-bottom: 56.25%; overflow: hidden;"&gt;
 &lt;iframe style="position: absolute; width: 100%; height: 100%;"
 src="http://www.youtube.com/embed/rIjW7wKzU7s" allowfullscreen frameborder="0" loading="lazy"&gt;
 &lt;/iframe&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;現時点では実用性はありません。ドライバ対応が悪いAndroid機に無理やりpostmarketOSを焼くようなものです。最大の問題はやはりドライバの対応状況が悪いこと。&lt;a href="https://github.com/SoMainline/linux-apple-resources" target="_blank" rel="noreferrer"&gt;SoMainline提供的表格&lt;/a&gt;を見ればわかりますが、ほぼすべてのハードウェア機能にバツが付いています。&lt;/p&gt;
&lt;p&gt;それに、Appleデバイスのドライバをいったい誰がリバースエンジニアリングできるのでしょうか？Asahi Linuxのような熱意ある開発者はいるのでしょうか？しかもLinuxの起動自体、まだハードウェア脆弱性頼みです。&lt;/p&gt;
&lt;p&gt;起動していくつかLinuxプログラムを動かせる以外、発展性はあまりありません。&lt;/p&gt;
&lt;p&gt;より現実的な戦略としては、iOSデバイス上でJITアクセラレーション付きのUTM仮想マシンを動かし、その中でLinux仮想マシンを走らせるほうが実用的かもしれません。&lt;/p&gt;

&lt;h2 class="relative group"&gt;参考資料
 &lt;div id="参考資料" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%8f%82%e8%80%83%e8%b3%87%e6%96%99" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/SoMainline/linux-apple-resources" target="_blank" rel="noreferrer"&gt;Resources for Linux on checkm8able iDevices - Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.postmarketos.org/wiki/Apple_iPhone_6_%28apple-iphone6%29" target="_blank" rel="noreferrer"&gt;Apple iPhone 6 (apple-iphone6) - postmarketOS Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://project-insanity.org/2020/04/16/running-postmarketos-on-iphone-7/" target="_blank" rel="noreferrer"&gt;Running postmarketOS on iPhone 7 - project-insanity.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://project-insanity.org/2020/04/22/linux-with-wayland-is-now-running-on-iphone-7/" target="_blank" rel="noreferrer"&gt;Linux with Wayland is now running on iPhone 7 - project-insanity.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.reddit.com/r/linux/comments/kvmsfd/success_iphone_7_booting_ubuntu_2004_to_full/" target="_blank" rel="noreferrer"&gt;SUCCESS: iPhone 7 booting Ubuntu 20.04 to full gnome-shell desktop GUI - Reddit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/konradybcio/status/1531963130934329344" target="_blank" rel="noreferrer"&gt;Linux on iPad Air 2 - Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://ivonblog.com/ja-jp/posts/iphone-6-postmarketos/featured.webp"/></item></channel></rss>