メインコンテンツへスキップ

postmarketOS Netbootでスマホをネットワーク起動する

·
カテゴリー スマートフォン 真のLinuxスマホ
タグ PostmarketOS
目次

Netboot技術は、デバイスをネットワーク経由で起動し、USBネットワーク経由でリモートファイルシステムへアクセスできるようにするものです。

これは少しLiveUSBに似ています。Android端末を、pmbootstrapが送ったboot.imgで一時的に起動し(bootパーティションへ書き込む必要すらありません)、PC上に置いたrootfsを読み込めるからです。Android ROM全体を消さなくても、postmarketOSを「試用」できます。

ここで使うスマホはRedmi Note 5です。この機種はすでに誰かが移植していますが、状態はせいぜい起動できる程度です。

まずpmbootstrap initを実行し、機種をxiaomi-whyredに設定します。続いてカーネル設定ファイルを変更します。

1. LinuxカーネルにNetbootをサポートさせる
#

  1. コマンドで、その機種のカーネルがNetbootサポートを有効にしているか確認します:
pmbootstrap kconfig check --netboot linux-xiaomi-whyred
  1. 公式推奨機種に入っていないものは、おそらくNetbootが有効化されていません。そのため、この結果になります:
WARNING: linux-xiaomi-whyred/config-xiaomi-whyred.aarch64: CONFIG_BLK_DEV_NBD should be set.
ERROR: kconfig check failed!
  1. kconfigを実行してカーネル設定ファイルを変更します。
pmbootstrap kconfig edit
  1. CONFIG_BLK_DEV_NBDの位置は以下です:
Symbol: BLK_DEV_NBD [=n]
Type  : tristate
Prompt: Network block device support
Location:
 -> Device Drivers
     -> Block devices (BLK_DEV [=y])
        -> Network block device support
  1. 変更後、カーネルを再コンパイルします。
pmbootstrap build linux-xiaomi-whyred

2. Netbootで起動
#

  1. postmarketOSのファイルシステムを作成します。extra-spaceはrootfsのサイズです。
pmbootstrap --extra-space 3000 install --no-sparse
  1. スマホをfastbootに入れ、PCに接続し、postmarketOSで起動します。スマホはpostmarketOSのlogo画面で止まり、NBD接続を待ちます。
pmbootstrap initfs hook_add netboot
pmbootstrap flasher boot
  1. ファイアウォールで9999ポートが開いていることを確認し、netbootサーバーを実行します:
pmbootstrap netboot serve
  1. スマホの画面が点灯し、postmarketOSシステムへ起動するはずです。あるいは、この固定IPアドレスからSSHでスマホへ入れます:
ssh user@172.16.42.1
  1. ファイルシステムはPCからマウントされているため、使用中はスマホをケーブル接続したままにする必要があります。そうしないとファイルシステムが止まります。postmarketOSをシャットダウンして再起動すると元のシステムへ戻ります。Netbootのファイルシステムは~/.local/var/pmbootstrap/images_netboot/にあります。

参考資料

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。