postmarketOS通用安裝教學

這篇文章是postmarketOS的通用安裝教學,大部分支援的機型都能夠按照此步驟操作,將postmarketOS安裝至手機上,鮮少需要另外打patch的。

本文示範手動在電腦上建立postmarketOS安裝檔再刷入手機。我的電腦是Ubuntu 22.04,手機是小米Pocophone F1,已解鎖bootloader,安裝TWRP作為Recovery。

大部分的問題在postmarketOS Wiki都有解答。

1. 什麼是postmarketOS

Android基於Linux的核心研發而來,但跟一般的GNU/Linux仍有所差異。postmarketOS則是基於Alpine Linux,跟Ubuntu touch一樣,旨在為行動作業系統提供另一種選擇,將真正的Linux發行版安裝到裝置上。

postmarketOS的圖示看起來像回收符號。開發者的目標是給手機提供長達10年的系統更新,並儘量使用上游的主線Linux核心,而非Goole修改後用於Android的下游Linux核心。

跟Android比起來,postmarketOS的系統結構與電腦GNU/Linux系統較為類似,同樣使用X11或Wayland作為顯示協定,可以跑Phosh和Plasma Mobile桌面環境。Linx核心功能沒有像Android遭到刪減,所以postmarketOS預設就有root帳號,還可以跑電腦Linux程式,包括Docker。

2. postmarketOS系統要求

確保你有Android刷機相關的知識,知道如何解鎖bootloader、刷入ROM、使用第三方Recovery,並懂得如何使用Linux系統指令。

在開始安裝postmarketOS之前,你需要一台x86_64的Linux電腦,虛擬機也可以,WSL不行。

由於postmarketOS鎖定的目標是過季裝置,所以百款以上的舊型手機/,如Google Nexus 5、Samsung i9100都有人移植,比較新的機型如OnePlus 8亦有人進行移植工作。

準備好安裝postmarketOS到你的手機了? 先到postmarketOS Wiki瀏覽,看看你的機型是否有在裡面,沒有的話你也可以嘗試自行移植

截至2023年4月,postmarketOS裝置支援狀態仍以Pine64和Pursim公司的裝置為最佳(“Main"列表),其餘數十款Android裝置雖有缺陷但運作良好,收錄在社群支援的列表(“Community"列表)。postmarketOS每幾個月會發表一個穩定版本,位於Main和Community列表的裝置會一併收到更新。

“Testing"列表的裝置則是只要能開機的裝置都算在內,穩定度較差。

3. 安裝pmbootstrap

要安裝postmarketOS,第一個方法是從官網下載官方預先編譯的安裝檔並刷入。或是第二個方法:手動在電腦上建立安裝檔然後刷入手機,也就是本文所介紹的方法。

pmbootstrap是postmarketOS官方提供的工具,除了建立安裝檔案以外,亦能進行移植工作。

  1. 在Linux以pip安裝pmboostrap:
1
2
pip3 install --user pmbootstrap
source ~/.profile
  1. 安裝自動補完
1
sudo apt install python3-argcomplete
  1. 在bash shell的設定檔~/.bashrc加入以下內容
1
eval "$(register-python-argcomplete3 pmbootstrap)"

4. 選擇你的機型並設定選項

pmbootstrap在初始化時會從Gitlab上下載最新版的機型設定檔:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#初始化
pmbootstrap init

#按Enter使用預設工作目錄 (~/.local/var/pmbootstrap)
Work path: Enter

#更新頻道選擇edge,或者填入寫有Recommended for best stability的穩定版。
Channel: edge

#選擇手機廠牌
Vendor: xiaomi

#選擇手機的裝置代號
Device codename: beryllium

#建立pmOS的使用者帳戶
Username: User

#選擇桌面環境,XFCE4(x11)適合沒有硬體加速的裝置;Phosh(Wayland,需要硬體加速)適合當手機介面。在開機後可以再另外安裝其他桌面環境。
User Interface: phosh

#剩下全部Enter

這就是每次建立對應機型的安裝檔要先做的工作,你必須告訴pmbootstrap你的postmarketOS應該長什麼樣子,才能開始建立安裝檔案。

5. 選擇安裝postmarketOS到手機的方法

這個步驟就要建立安裝檔案了,主要有3種安裝postmarketOS的方法:

  1. 安裝至SD卡 (不會影響到原有手機系統,不推薦)
  2. 用fastboot刷入 (需清除資料,推薦)
  3. 用刷機包刷入 (需清除資料,不推薦)

除此之外還有一些比較奇怪的安裝方法,列在後面。

5.1. 安裝至SD卡

這個方法不會修改手機的資料,可以做雙系統,但是開機需要靠電腦下指令才能進入postmarketOS。注意有些手機可能不支援從fastboot以boot.img開機。

  1. SD卡插到電腦,用指令lsblk確定SD卡的裝置代號,以及掛載點:
1
sdb      8:16   1  29.7G  0 disk /media/ivon/E8D8-4246
  1. 先取消掛載
1
umount /media/ivon/E8D8-4246
  1. 然後再開始安裝
1
pmbootstrap install --sdcard=/dev/sdb
  1. pmbootstrap會自動格式化SD卡,並將系統安裝進去。過程中會要求建立使用者密碼,並會再確認是否要將SD卡格式化。

  2. 接著把SD卡裝到手機,讓手機進入fastboot模式,接到電腦,輸入指令開機:

1
pmbootstrap flasher boot

5.2. 用fastboot刷入

這個方法將清除手機所有的資料。

  1. 建立安裝檔
1
pmbootstrap install

2.手機進入fastboot模式,接到電腦刷入:

1
2
3
4
pmbootstrap flasher flash_rootfs

#如果刷入的分區太小,加上--partition參數,改刷入到其他分區:
pmbootstrap flasher flash_rootfs --partition userdata
  1. 再刷入kernel到boot分區,重開機:
1
2
pmbootstrap flasher flash_kernel
fastboot reboot

5.3. 用刷機包安裝

這個方法將清除手機所有的資料,可sideload或者傳輸刷機包到手機上再用TWRP安裝。

  1. 建立刷機包,大約5分鐘。
1
2
3
pmbootstrap install --android-recovery-zip
#如果要安裝到其他較大的分區,可以加上--partition的選項
pmbootstrap install --android-recovery-zip --recovery-install-partition=data
  1. 手機接上電腦,重開機進入TWRP。從電腦的工作目錄找到建立的pmos-*.zip刷機包,例如我的檔案是在~/.local/var/pmbootstrap/chroot_buildroot_aarch64/var/lib/postmarketos-android-recovery-installer

  2. 將檔案傳到手機,用TWRP安裝,之後重新開機。

  3. 將電腦上的pmbootstrap關閉:

1
pmbootstrap shutdown

5.4. 其他刷入方法

6. postmarketOS後續安裝優化

  1. 就算開機無法進入桌面,手機用USB線連著電腦的情況下,也能用SSH連線到手機:
1
2
#這個IP是固定的,只需將「@」前面改成你的使用者帳號
ssh [email protected]

假設你的裝置順利進入postmarketOS桌面環境,並且GPU加速、觸控、網路、音效都正常的話,接下來請參考這篇:postmarketOS使用技巧了解postmarketOS的設定眉角,以及如何將postmarketOS當作手機系統用。

7. 參考資料


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要登入Github帳號才能留言。支援markdown語法,方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。