<?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&#39;s Blog</title>
    <link>https://ivonblog.com/ja-jp/tags/linux-kernel/</link>
    <description>Recent content in Linux Kernel on Ivon&#39;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&#39;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;&#xA;&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;&#xA;&lt;p&gt;&lt;a href=&#34;https://ivonblog.com/ja-jp/posts/postmarketos-general-installation&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;pmbootstrap custom image&lt;/a&gt;の記事で、postmarketOSのイメージファイルを作成する方法に触れました。この方法は実際にはpmboostrapを使い、公式Gitlabリポジトリから各機種の設定ファイルをダウンロードし、プログラムで手作業風にビルドするものです。&lt;/p&gt;</description>
      <content:encoded>&lt;!-- Co-translated by ChatGPT --&gt;&#xA;&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;&#xA;&lt;p&gt;&lt;a href=&#34;https://ivonblog.com/ja-jp/posts/postmarketos-general-installation&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;pmbootstrap custom image&lt;/a&gt;の記事で、postmarketOSのイメージファイルを作成する方法に触れました。この方法は実際にはpmboostrapを使い、公式Gitlabリポジトリから各機種の設定ファイルをダウンロードし、プログラムで手作業風にビルドするものです。&lt;/p&gt;&#xA;&lt;p&gt;pmbootstrapには新しい機種を移植する機能もあります。ユーザーは自分で機種を追加し、&lt;a href=&#34;https://ivonblog.com/ja-jp/posts/sony-xperia-5-ii-postmarketos-porting&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;移植作業&lt;/a&gt;を進められます。&lt;/p&gt;&#xA;&lt;p&gt;ただし今回話すのは、既存機種の設定ファイルを変更し、システムビルド時の構成を変更する方法です。たとえば追加ドライバーをLinuxカーネルへ組み込む、デフォルトパッケージを追加する、といった操作です。これは&lt;code&gt;pmbootstrap init&lt;/code&gt;だけではやってくれません。そこまで甘くないので、&lt;code&gt;APKBUILD&lt;/code&gt;ファイルを変更する必要があります。&lt;/p&gt;&#xA;&lt;p&gt;文末には、変更後のシステムをインストールする手順と、postmarketOSイメージファイルをビルドする方法も載せます。&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;1. 機種設定ファイルの場所を探す&#xA;    &lt;div id=&#34;1-機種設定ファイルの場所を探す&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;APKBUILD&lt;/code&gt;ファイルは、Linuxカーネルをどう処理するかpmbootstrapへ伝えるスクリプトです。&lt;/p&gt;&#xA;&lt;p&gt;では、目的の機種の&lt;code&gt;APKBUILD&lt;/code&gt;はどこにあるのでしょうか？&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pmbootstrap init&lt;/code&gt;コマンドを使うと、pmbootstrapはGitlabリポジトリを1つ複製してきます。&lt;/p&gt;&#xA;&lt;p&gt;すべての機種設定ファイルはここにあります。&#xA;&lt;code&gt;~/.local/var/pmbootstrap/cache_git/pmaports/device/&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;postmarketOSでは、各機種に対応する&lt;code&gt;linux-&lt;/code&gt;始まりのディレクトリと&lt;code&gt;device-&lt;/code&gt;始まりのディレクトリがあります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;linux-&lt;/code&gt;の中にはLinuxカーネルのコンパイル関連設定が書かれています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;device-&lt;/code&gt;始まりのディレクトリには、その端末のハードウェア情報が入っています。&lt;/p&gt;&#xA;&lt;p&gt;たとえば、これは&lt;code&gt;pine64-pinetab2&lt;/code&gt;の場合です（注：執筆時点ではPinetab2のAPKBUILDはまだGitlabリポジトリに入っていなかったため、pull requestから手動でcloneしたものです）。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── device-pine64-pinetab2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── APKBUILD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── deviceinfo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── uboot-script.cmd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── linux-pine64-pinetab2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── APKBUILD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── config-pine64-pinetab2.aarch64&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&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;&#xA;&lt;p&gt;すでに移植されGitlabリポジトリに入った端末では、カーネルも通常postmarketOSのedge branchパッケージリポジトリに収録されるため、手動コンパイルは不要です。&lt;/p&gt;&#xA;&lt;p&gt;対応して、&lt;code&gt;device-&lt;/code&gt;始まりのディレクトリは&amp;quot;Device specific package&amp;quot;と呼ばれます。このパッケージには、その端末のその他の設定ファイルが含まれます。&lt;/p&gt;&#xA;&lt;p&gt;カスタムビルド設定をやると言ったからには、少し変更してみましょう。各端末にはビルド方法を記録したAPKBUILDファイルがあります。変更するのはこれです。&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;2. カーネルのAPKBUILDを変更する&#xA;    &lt;div id=&#34;2-カーネルのapkbuildを変更する&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;まず&lt;code&gt;pmbootstrap&lt;/code&gt;を実行し、ビルド対象の端末として&lt;code&gt;pine64-pinetab2&lt;/code&gt;を指定します。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;~/.local/var/pmbootstrap/cache_git/pmaports/device/linux-pine64-pinetab2&lt;/code&gt;ディレクトリへ入ります。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;APKBUILD&lt;/code&gt;ファイルが見えます。中身はシンプルで分かりやすく、bashを書いたことがある人なら読めるはずです。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── linux-pine64-pinetab2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── APKBUILD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── config-pine64-pinetab2.aarch64&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.postmarketos.org/wiki/Downstream_kernel_specific_package&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;公式Wiki Downstream kernel specific packageの説明&lt;/a&gt;によると、APKBUILDの中にカスタムのビルドコマンドを追加したり、GCCバージョンを指定したり、追加でpatchを当てたりできます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;まず見るべきなのは、カーネルソースコードをどう取得しているかです。PineTab2の場合、メンテナー自身のリポジトリからtarg.gzファイルをダウンロードし、それをpmbootstrapに渡してコンパイルしています。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Source&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;_tags&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;v6.6.4-danctnix2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;_config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;config-&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_flavor&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$arch&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pkgname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_tags&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.tar.gz::https://github.com/dreemurrs-embedded/linux-pinetab2/archive/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_tags&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$_config&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;builddir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$srcdir&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/linux-pinetab2-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;_tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;_outdir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&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;&#xA;&lt;ol start=&#34;6&#34;&gt;&#xA;&lt;li&gt;カーネルソースコードのURLが変わるたびに、通常はハッシュ値を再生成する必要があります。そのため端末で次のコマンドを実行し、pmbootstrapにハッシュ値を自動計算させてAPKBUILDへ書き戻します。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap checksum linux-pine64-pinetab2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;7&#34;&gt;&#xA;&lt;li&gt;その後、カーネルソースコードを操作できます。いくつかのカーネルオプションを有効化したいだけなら、kconfigへ入れば十分です。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;&#xA;&lt;ol start=&#34;8&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;kconfigで編集したカーネルオプションは、同じディレクトリ内の&lt;code&gt;config-&lt;/code&gt;始まりのファイルへ保存されます。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;その後、カーネルの再コンパイルを試します。pmbootstrapのカーネルビルドは、ARM chroot内でcross-compileする方式です。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# カーネルがpostmarketOSの要件を満たしているか確認する&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap kconfig check&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# コンパイル時は-j8を付けると高速化できる&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap build linux-pine64-pinetab2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;10&#34;&gt;&#xA;&lt;li&gt;まったく別のカーネルソースコードでコンパイルしたい場合は、自分で別ディレクトリに用意しておく必要があります（chroot内のものはアクセスしにくいです）。そして&lt;code&gt;--src&lt;/code&gt;でカーネルソースコードのパスをpmbootstrapへ伝えます。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap build linux-pine64-pinetab2 --src&lt;span class=&#34;o&#34;&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;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;3. 端末のAPKBUILDを変更する&#xA;    &lt;div id=&#34;3-端末のapkbuildを変更する&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;code&gt;~/.local/var/pmbootstrap/cache_git/pmaports/device/device-pine64-pinetab2&lt;/code&gt;ディレクトリへ入ると、次の内容があります。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── device-pine64-pinetab2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── APKBUILD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── deviceinfo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── uboot-script.cmd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;deviceinfo&lt;/code&gt;は主に機種のハードウェア情報で、&lt;code&gt;APKBUILD&lt;/code&gt;ファイルは端末の設定です。中身については&lt;a href=&#34;https://wiki.postmarketos.org/wiki/Device_specific_package&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Wiki Device specific packageの説明&lt;/a&gt;を参照してください。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&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;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;subpackages&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$pkgname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-kernel-v0:kernel_v0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$pkgname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-kernel-v2:kernel_v2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$pkgname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-x11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;x11&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;nv&#34;&gt;install_if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pkgname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pkgver&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-r&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pkgrel&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; xorg-server&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;nv&#34;&gt;depends&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;xf86-video-qxl&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;mkdir &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$subpkgdir&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;次に、device packageをビルドします。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap build device-pine64-pinetab2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;4. 完全なシステムイメージファイルを作成する&#xA;    &lt;div id=&#34;4-完全なシステムイメージファイルを作成する&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#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&#34; aria-label=&#34;アンカー&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;変更したシステムを端末へインストールする時間です。&lt;/p&gt;&#xA;&lt;p&gt;postmarketOSのビルド手順は&lt;a href=&#34;https://ivonblog.com/ja-jp/posts/postmarketos-general-installation&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;pmbootstrap custom image&lt;/a&gt;を参照してください。通常は次のビルド方法があります。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;SDカードへインストールする&lt;/li&gt;&#xA;&lt;li&gt;fastbootで書き込む&lt;/li&gt;&#xA;&lt;li&gt;書き込み用ZIPでインストールする&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;後ろ2つの方法は元Android端末向けです。私のPineTab 2のような端末はU-boot対応の開発ボードなので、システムをSDカードまたはeMMCへ書き込めば済みます。&lt;/p&gt;&#xA;&lt;p&gt;SDカードをPCへ挿し、lsblkでパーティションを確認してアンマウントします。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsblk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo umount /mnt/sdcard&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;次のコマンドを実行し、pmbootstrapにシステムをSDカードパーティションへ直接書き込ませます。途中でパスワード設定が必要です。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap install --dev&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/mmcblk0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;または、imageイメージファイルだけを作成します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;そしてtmpディレクトリからイメージファイルを取り出します。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pmbootstrap &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /tmp/postmarketOS-export&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp *.img /home/user/Downloads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;手動でddを使い、イメージファイルの内容をSDカードへ書き込みます。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;pine64-pinetab2.img &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/mmcblk0 &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1M &lt;span class=&#34;nv&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;progress &lt;span class=&#34;nv&#34;&gt;conv&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fsync&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;</content:encoded>
      
    </item>
    
  </channel>
</rss>
