Netboot技術允許裝置透過網路開機,透過USB網路存取遠端檔案系統。
這就有點像是LiveUSB,因為可以讓Android機器暫時用pmbootstrap傳過去的boot.img開機(甚至不用寫入boot分區),然後讀取放在電腦上的rootfs。不用洗掉整個Android ROM,也可以「試用」postmarketOS。
這裡我使用的手機為紅米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 edit
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
- 修改好之後重新編譯核心。
pmbootstrap build linux-xiaomi-whyred
2. 使用Netboot開機#
- 製作postmarketOS的檔案系統。extra-space是rootfs的大小。
pmbootstrap --extra-space 3000 install --no-sparse
- 讓手機進入fastboot,接到電腦,用postmarketOS開機。手機會處在postmarketOS的logo,並等待NBD連線。
pmbootstrap initfs hook_add netboot
pmbootstrap flasher boot
- 確認防火牆有開啟9999通訊埠,執行netboot伺服器:
pmbootstrap netboot serve
- 手機應該會亮起螢幕,開機進入postmarketOS系統,或者可以透過這個固定的IP位址SSH進手機:
- 由於檔案系統是從電腦掛載的,因此使用時手機必須接著線,否則檔案系統就會停擺。將postmarketOS關機之後重開機就會回到原本系統。至於Netboot的檔案系統則是位於
~/.local/var/pmbootstrap/images_netboot/
。
參考資料