postmarketOS Netboot讓手機從網路開機

Netboot技術允許裝置透過網路開機,透過USB網路存取遠端檔案系統。

這就有點像是LiveUSB,因為可以讓Android機器暫時用pmbootstrap傳過去的boot.img開機(甚至不用寫入boot分區),然後讀取放在電腦上的rootfs。不用洗掉整個Android ROM,也可以「試用」postmarketOS。

這裡我使用的手機為紅米Note 5,此機型已有人移植,不過狀態頂多是能開機的程度。

首先執行pmbootstrap init,設定機型為xiaomi-whyred,接著我們要修改核心設定檔。

1. 讓Linux核心支援Netboot

  1. 用指令檢查該機型的核心有無開啟Netboot支援:
1
pmbootstrap kconfig check --netboot linux-xiaomi-whyred
  1. 沒有在官方推薦機型的應該是不會啟用Netboot,所以會得到此結果:
1
2
WARNING: linux-xiaomi-whyred/config-xiaomi-whyred.aarch64: CONFIG_BLK_DEV_NBD should be set.
ERROR: kconfig check failed!
  1. 執行kconfig修改核心設定檔。
1
pmbootstrap kconfig edit
  1. CONFIG_BLK_DEV_NBD的位置如下:
1
2
3
4
5
6
7
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. 修改好之後重新編譯核心。
1
pmbootstrap build linux-xiaomi-whyred

2. 使用Netboot開機

  1. 製作postmarketOS的檔案系統。extra-space是rootfs的大小。
1
pmbootstrap --extra-space 3000 install --no-sparse
  1. 讓手機進入fastboot,接到電腦,用postmarketOS開機。手機會處在postmarketOS的logo,並等待NBD連線。
1
2
pmbootstrap initfs hook_add netboot
pmbootstrap flasher boot
  1. 確認防火牆有開啟9999通訊埠,執行netboot伺服器:
1
pmbootstrap netboot serve
  1. 手機應該會亮起螢幕,開機進入postmarketOS系統,或者可以透過這個固定的IP位址SSH進手機:
1
ssh user@172.16.42.1
  1. 由於檔案系統是從電腦掛載的,因此使用時手機必須接著線,否則檔案系統就會停擺。將postmarketOS關機之後重開機就會回到原本系統。至於Netboot的檔案系統則是位於~/.local/var/pmbootstrap/images_netboot/

參考資料

如果本網站文章對您有幫助,歡迎贊助我。