<?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>Linux Kernel on Ivon's Blog</title><link>https://ivonblog.com/ja-jp/tags/linux-kernel/</link><description>Recent content in Linux Kernel 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>Sun, 17 Mar 2024 17:00:00 +0800</lastBuildDate><atom:link href="https://ivonblog.com/ja-jp/tags/linux-kernel/index.xml" rel="self" type="application/rss+xml"/><follow_challenge><feedId>56005902658351104</feedId><userId>1132431067563556864</userId></follow_challenge><item><title>pmbootstrapでカスタムシステムimageをビルドし、カーネルAPKBUILD設定を変更する</title><link>https://ivonblog.com/ja-jp/posts/pmbootstrap-build-custom-image/</link><pubDate>Sun, 17 Mar 2024 17:00:00 +0800</pubDate><author>infoivonblog.nkfjt@aleeas.com (Ivon Huang)</author><guid>https://ivonblog.com/ja-jp/posts/pmbootstrap-build-custom-image/</guid><description>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;p&gt;Building your own custom postmarketOS image with custom kernels and settings. Then flash it to the device or build an image.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ivonblog.com/ja-jp/posts/postmarketos-general-installation" target="_blank" rel="noreferrer"&gt;pmbootstrap custom image&lt;/a&gt;の記事で、postmarketOSのイメージファイルを作成する方法に触れました。この方法は実際にはpmboostrapを使い、公式Gitlabリポジトリから各機種の設定ファイルをダウンロードし、プログラムで手作業風にビルドするものです。&lt;/p&gt;</description><content:encoded>&lt;!-- Co-translated by ChatGPT --&gt;
&lt;p&gt;Building your own custom postmarketOS image with custom kernels and settings. Then flash it to the device or build an image.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ivonblog.com/ja-jp/posts/postmarketos-general-installation" target="_blank" rel="noreferrer"&gt;pmbootstrap custom image&lt;/a&gt;の記事で、postmarketOSのイメージファイルを作成する方法に触れました。この方法は実際にはpmboostrapを使い、公式Gitlabリポジトリから各機種の設定ファイルをダウンロードし、プログラムで手作業風にビルドするものです。&lt;/p&gt;
&lt;p&gt;pmbootstrapには新しい機種を移植する機能もあります。ユーザーは自分で機種を追加し、&lt;a href="https://ivonblog.com/ja-jp/posts/sony-xperia-5-ii-postmarketos-porting" target="_blank" rel="noreferrer"&gt;移植作業&lt;/a&gt;を進められます。&lt;/p&gt;
&lt;p&gt;ただし今回話すのは、既存機種の設定ファイルを変更し、システムビルド時の構成を変更する方法です。たとえば追加ドライバーをLinuxカーネルへ組み込む、デフォルトパッケージを追加する、といった操作です。これは&lt;code&gt;pmbootstrap init&lt;/code&gt;だけではやってくれません。そこまで甘くないので、&lt;code&gt;APKBUILD&lt;/code&gt;ファイルを変更する必要があります。&lt;/p&gt;
&lt;p&gt;文末には、変更後のシステムをインストールする手順と、postmarketOSイメージファイルをビルドする方法も載せます。&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-%e6%a9%9f%e7%a8%ae%e8%a8%ad%e5%ae%9a%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e5%a0%b4%e6%89%80%e3%82%92%e6%8e%a2%e3%81%99" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;APKBUILD&lt;/code&gt;ファイルは、Linuxカーネルをどう処理するかpmbootstrapへ伝えるスクリプトです。&lt;/p&gt;
&lt;p&gt;では、目的の機種の&lt;code&gt;APKBUILD&lt;/code&gt;はどこにあるのでしょうか？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pmbootstrap init&lt;/code&gt;コマンドを使うと、pmbootstrapはGitlabリポジトリを1つ複製してきます。&lt;/p&gt;
&lt;p&gt;すべての機種設定ファイルはここにあります。
&lt;code&gt;~/.local/var/pmbootstrap/cache_git/pmaports/device/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;postmarketOSでは、各機種に対応する&lt;code&gt;linux-&lt;/code&gt;始まりのディレクトリと&lt;code&gt;device-&lt;/code&gt;始まりのディレクトリがあります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;linux-&lt;/code&gt;の中にはLinuxカーネルのコンパイル関連設定が書かれています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;device-&lt;/code&gt;始まりのディレクトリには、その端末のハードウェア情報が入っています。&lt;/p&gt;
&lt;p&gt;たとえば、これは&lt;code&gt;pine64-pinetab2&lt;/code&gt;の場合です（注：執筆時点ではPinetab2のAPKBUILDはまだGitlabリポジトリに入っていなかったため、pull requestから手動でcloneしたものです）。&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;├── device-pine64-pinetab2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── APKBUILD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── deviceinfo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── uboot-script.cmd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── linux-pine64-pinetab2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── APKBUILD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── config-pine64-pinetab2.aarch64&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;すべての端末がメインラインカーネルを使えるわけではないため、postmarketOSでは各端末ごとにLinuxカーネル設定ファイルがあります。postmarketOSの設計では、多くの端末のLinuxカーネルはAPKパッケージになっており、&amp;ldquo;Downstream kernel specific package&amp;quot;と呼ばれます。これは上で述べた&lt;code&gt;linux-&lt;/code&gt;始まりのディレクトリに対応します。&lt;/p&gt;
&lt;p&gt;すでに移植されGitlabリポジトリに入った端末では、カーネルも通常postmarketOSのedge branchパッケージリポジトリに収録されるため、手動コンパイルは不要です。&lt;/p&gt;
&lt;p&gt;対応して、&lt;code&gt;device-&lt;/code&gt;始まりのディレクトリは&amp;quot;Device specific package&amp;quot;と呼ばれます。このパッケージには、その端末のその他の設定ファイルが含まれます。&lt;/p&gt;
&lt;p&gt;カスタムビルド設定をやると言ったからには、少し変更してみましょう。各端末にはビルド方法を記録したAPKBUILDファイルがあります。変更するのはこれです。&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. カーネルのAPKBUILDを変更する
 &lt;div id="2-カーネルのapkbuildを変更する" 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-%e3%82%ab%e3%83%bc%e3%83%8d%e3%83%ab%e3%81%aeapkbuild%e3%82%92%e5%a4%89%e6%9b%b4%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;code&gt;pmbootstrap&lt;/code&gt;を実行し、ビルド対象の端末として&lt;code&gt;pine64-pinetab2&lt;/code&gt;を指定します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;~/.local/var/pmbootstrap/cache_git/pmaports/device/linux-pine64-pinetab2&lt;/code&gt;ディレクトリへ入ります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;APKBUILD&lt;/code&gt;ファイルが見えます。中身はシンプルで分かりやすく、bashを書いたことがある人なら読めるはずです。&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;└── linux-pine64-pinetab2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── APKBUILD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── config-pine64-pinetab2.aarch64&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;&lt;a href="https://wiki.postmarketos.org/wiki/Downstream_kernel_specific_package" target="_blank" rel="noreferrer"&gt;公式Wiki Downstream kernel specific packageの説明&lt;/a&gt;によると、APKBUILDの中にカスタムのビルドコマンドを追加したり、GCCバージョンを指定したり、追加でpatchを当てたりできます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;まず見るべきなのは、カーネルソースコードをどう取得しているかです。PineTab2の場合、メンテナー自身のリポジトリからtarg.gzファイルをダウンロードし、それをpmbootstrapに渡してコンパイルしています。&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="c1"&gt;# Source&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_tags&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;v6.6.4-danctnix2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;config-&lt;/span&gt;&lt;span class="nv"&gt;$_flavor&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$arch&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;	&lt;/span&gt;&lt;span class="nv"&gt;$pkgname&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;$_tags&lt;/span&gt;&lt;span class="s2"&gt;.tar.gz::https://github.com/dreemurrs-embedded/linux-pinetab2/archive/&lt;/span&gt;&lt;span class="nv"&gt;$_tags&lt;/span&gt;&lt;span class="s2"&gt;.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;	&lt;/span&gt;&lt;span class="nv"&gt;$_config&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;builddir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$srcdir&lt;/span&gt;&lt;span class="s2"&gt;/linux-pinetab2-&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_outdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;out&amp;#34;&lt;/span&gt;&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;カーネルソースコードのURLが変わるたびに、通常はハッシュ値を再生成する必要があります。そのため端末で次のコマンドを実行し、pmbootstrapにハッシュ値を自動計算させてAPKBUILDへ書き戻します。&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 checksum linux-pine64-pinetab2&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;その後、カーネルソースコードを操作できます。いくつかのカーネルオプションを有効化したいだけなら、kconfigへ入れば十分です。&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 kconfig edit linux-pine64-pinetab2&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;kconfigで編集したカーネルオプションは、同じディレクトリ内の&lt;code&gt;config-&lt;/code&gt;始まりのファイルへ保存されます。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;その後、カーネルの再コンパイルを試します。pmbootstrapのカーネルビルドは、ARM chroot内でcross-compileする方式です。&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="c1"&gt;# カーネルがpostmarketOSの要件を満たしているか確認する&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap kconfig check
&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="c1"&gt;# コンパイル時は-j8を付けると高速化できる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pmbootstrap build linux-pine64-pinetab2&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;まったく別のカーネルソースコードでコンパイルしたい場合は、自分で別ディレクトリに用意しておく必要があります（chroot内のものはアクセスしにくいです）。そして&lt;code&gt;--src&lt;/code&gt;でカーネルソースコードのパスをpmbootstrapへ伝えます。&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 build linux-pine64-pinetab2 --src&lt;span class="o"&gt;=&lt;/span&gt;/home/user/Downloads/linux-pinetab2-kernel&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;3. 端末のAPKBUILDを変更する
 &lt;div id="3-端末のapkbuildを変更する" 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-%e7%ab%af%e6%9c%ab%e3%81%aeapkbuild%e3%82%92%e5%a4%89%e6%9b%b4%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;code&gt;~/.local/var/pmbootstrap/cache_git/pmaports/device/device-pine64-pinetab2&lt;/code&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;├── device-pine64-pinetab2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── APKBUILD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── deviceinfo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── uboot-script.cmd&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;
&lt;p&gt;&lt;code&gt;deviceinfo&lt;/code&gt;は主に機種のハードウェア情報で、&lt;code&gt;APKBUILD&lt;/code&gt;ファイルは端末の設定です。中身については&lt;a href="https://wiki.postmarketos.org/wiki/Device_specific_package" target="_blank" rel="noreferrer"&gt;Wiki Device specific packageの説明&lt;/a&gt;を参照してください。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;たとえば、&lt;code&gt;subpackages&lt;/code&gt;に追加パッケージをインストールする指示を追加します（複数パッケージは空白で区切ります）。ここではWikiの例を引用し、&lt;code&gt;$pkgname-x11&lt;/code&gt;というsubpackageを追加し、さらに&lt;code&gt;x11()&lt;/code&gt;関数を追加して、&lt;code&gt;xf86-video-qxl&lt;/code&gt;パッケージをインストールするよう指示しています。&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="nv"&gt;subpackages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$pkgname&lt;/span&gt;&lt;span class="s2"&gt;-kernel-v0:kernel_v0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$pkgname&lt;/span&gt;&lt;span class="s2"&gt;-kernel-v2:kernel_v2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$pkgname&lt;/span&gt;&lt;span class="s2"&gt;-x11
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&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;x11&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="nv"&gt;install_if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$pkgname&lt;/span&gt;&lt;span class="s2"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$pkgver&lt;/span&gt;&lt;span class="s2"&gt;-r&lt;/span&gt;&lt;span class="nv"&gt;$pkgrel&lt;/span&gt;&lt;span class="s2"&gt; xorg-server&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="nv"&gt;depends&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;xf86-video-qxl&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	mkdir &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$subpkgdir&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&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;次に、device packageをビルドします。&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 build device-pine64-pinetab2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 class="relative group"&gt;4. 完全なシステムイメージファイルを作成する
 &lt;div id="4-完全なシステムイメージファイルを作成する" 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-%e5%ae%8c%e5%85%a8%e3%81%aa%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%82%a4%e3%83%a1%e3%83%bc%e3%82%b8%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b" aria-label="アンカー"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;変更したシステムを端末へインストールする時間です。&lt;/p&gt;
&lt;p&gt;postmarketOSのビルド手順は&lt;a href="https://ivonblog.com/ja-jp/posts/postmarketos-general-installation" target="_blank" rel="noreferrer"&gt;pmbootstrap custom image&lt;/a&gt;を参照してください。通常は次のビルド方法があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;SDカードへインストールする&lt;/li&gt;
&lt;li&gt;fastbootで書き込む&lt;/li&gt;
&lt;li&gt;書き込み用ZIPでインストールする&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;後ろ2つの方法は元Android端末向けです。私のPineTab 2のような端末はU-boot対応の開発ボードなので、システムをSDカードまたはeMMCへ書き込めば済みます。&lt;/p&gt;
&lt;p&gt;SDカードをPCへ挿し、lsblkでパーティションを確認してアンマウントします。&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;lsblk
&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 umount /mnt/sdcard&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;次のコマンドを実行し、pmbootstrapにシステムをSDカードパーティションへ直接書き込ませます。途中でパスワード設定が必要です。&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;pmbootstrap install --dev&lt;span class="o"&gt;=&lt;/span&gt;/dev/mmcblk0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;または、imageイメージファイルだけを作成します。&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;pmbootstrap install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;そしてtmpディレクトリからイメージファイルを取り出します。&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;pmbootstrap &lt;span class="nb"&gt;export&lt;/span&gt;
&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; /tmp/postmarketOS-export
&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;cp *.img /home/user/Downloads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;手動でddを使い、イメージファイルの内容をSDカードへ書き込みます。&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;sudo dd &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pine64-pinetab2.img &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/mmcblk0 &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1M &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;progress &lt;span class="nv"&gt;conv&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fsync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded></item></channel></rss>