Netboot技術は、デバイスをネットワーク経由で起動し、USBネットワーク経由でリモートファイルシステムへアクセスできるようにするものです。
これは少しLiveUSBに似ています。Android端末を、pmbootstrapが送ったboot.imgで一時的に起動し(bootパーティションへ書き込む必要すらありません)、PC上に置いたrootfsを読み込めるからです。Android ROM全体を消さなくても、postmarketOSを「試用」できます。
ここで使うスマホはRedmi Note 5です。この機種はすでに誰かが移植していますが、状態はせいぜい起動できる程度です。
まずpmbootstrap initを実行し、機種をxiaomi-whyredに設定します。続いてカーネル設定ファイルを変更します。
1. LinuxカーネルにNetbootをサポートさせる#
- コマンドで、その機種のカーネルがNetbootサポートを有効にしているか確認します:
pmbootstrap kconfig check --netboot linux-xiaomi-whyred- 公式推奨機種に入っていないものは、おそらくNetbootが有効化されていません。そのため、この結果になります:
WARNING: linux-xiaomi-whyred/config-xiaomi-whyred.aarch64: CONFIG_BLK_DEV_NBD should be set.
ERROR: kconfig check failed!- kconfigを実行してカーネル設定ファイルを変更します。
pmbootstrap kconfig editCONFIG_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- 変更後、カーネルを再コンパイルします。
pmbootstrap build linux-xiaomi-whyred2. Netbootで起動#
- postmarketOSのファイルシステムを作成します。extra-spaceはrootfsのサイズです。
pmbootstrap --extra-space 3000 install --no-sparse- スマホをfastbootに入れ、PCに接続し、postmarketOSで起動します。スマホはpostmarketOSのlogo画面で止まり、NBD接続を待ちます。
pmbootstrap initfs hook_add netboot
pmbootstrap flasher boot- ファイアウォールで9999ポートが開いていることを確認し、netbootサーバーを実行します:
pmbootstrap netboot serve- スマホの画面が点灯し、postmarketOSシステムへ起動するはずです。あるいは、この固定IPアドレスからSSHでスマホへ入れます:
ssh user@172.16.42.1- ファイルシステムはPCからマウントされているため、使用中はスマホをケーブル接続したままにする必要があります。そうしないとファイルシステムが止まります。postmarketOSをシャットダウンして再起動すると元のシステムへ戻ります。Netbootのファイルシステムは
~/.local/var/pmbootstrap/images_netboot/にあります。
参考資料

