
??想了解更多關于開源的內容,請訪問:??
??51CTO 開源基礎軟件社區??
??https://ost.51cto.com??
一、簡介
一加6T在開源鴻蒙(OpenHarmony)的移植,主要利用工作之余的空閑時間移植,目前僅正常開機啟動,觸屏正常,最新已經初步支持GPU,其他功能就只能呵呵。OpenHarmony版本基于OpenHarmony 3.2 Beta5,內核基于Linux 6.1,同時也支持OpenHarmony的主線5.10內核版本(暫未使用)。
重要說明:
- 目前OpenHarmony只是初步適配,不適合使用,僅供學習用途,如果自己刷入后,手機變磚或其他問題,后果自行承擔。
- 雖然已經適配初步支持了GPU,但是還沒有適配2d圖形加速功能,普通的操作依然很卡,后續慢慢優化后釋放體驗包。
- 本文的目的是讓大家如何在手機上快速刷入OpenHarmony并針對刷機的一些要求和一些問題作簡明說明,移植不在本文討論范圍。
二、準備工作
1、確認系統分區
一加6T支持A/B分區功能,目前刷入的鏡像均在B分區。
一加6T的分區確認:
Model: SAMSUNG KLUDG4U1EA-B0C1 (scsi)
Disk /dev/block/sda: 125GB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 24.6kB 32.8kB 8192B ssd
2 32.8kB 33.6MB 33.6MB ext4 persist
3 33.6MB 34.6MB 1049kB misc
4 34.6MB 35.7MB 1049kB param
5 35.7MB 36.2MB 524kB keystore
6 36.2MB 36.7MB 524kB frp
7 36.7MB 305MB 268MB ext4 op2
8 305MB 316MB 10.5MB oem_dycnvbk
9 316MB 326MB 10.5MB oem_stanvbk
10 326MB 334MB 8290kB reserve1
11 334MB 351MB 16.6MB reserve2
12 351MB 352MB 524kB config
13 352MB 3350MB 2999MB ext2 system_a
14 3350MB 6349MB 2999MB ext2 system_b
15 6349MB 6454MB 105MB ext4 odm_a
16 6454MB 6559MB 105MB ext4 odm_b
17 6559MB 125GB 118GB ext4 userdata
其中刷機時,vender分區,對應手機的vender_b分區,實際對應分區號為/dev/block/sde44。
分區信息確認方法:
通過adb shell進入手機原系統進行確認,或進入TWRP采用parted命令行工具確認(可自行網上搜索使用方法,不在本文討論范圍之內)。
目前刷機包移植的OpenHarmony鏡像對應一加6T刷機分區如下:
OpenHarmony鏡像 | 分區號 | 分區名 | 備注 |
system.img | /dev/block/sda14 | system_b分區 | 系統分區 |
vendor.img | /dev/block/sde44 | vendor_b分區 | 廠商相關 |
userdata.img | /dev/block/sda17 | userdata分區 | 用戶(應用)數據,目前提供鏡的像只是放置了部分Linux社區圖片 |
boot.img | 不需關注 | boot_b分區 | 啟動相關 |
其中,system.img和userdata.img分區鏡像,目前OpenHarmony已經可以做到與芯片平臺無關,其他手機或開發板(arm或aarch64架構)理論上,在滿足基本存儲和硬件要求的情況下均可以通用(刷入)。
boot.img和vendor.img與芯片平臺相關,需要根據硬件適配和定制。
重要說明:
- 不符合上述分區的手機不建議刷入,如果強行刷入,后果自行承擔
- 刷機前請備份好系統數據,和boot鏡像。其中boot_a分區有可能需要被刷入覆蓋,尤其是Bootloader啟動的時候不選擇進入boot_b啟動,表現的現象就是一直進入Bootloader(可通過fastboot命令獲取當前啟動分區),此時可能需要將boot.img鏡像刷入boot_a分區
2、解鎖Bootloader
詳細方法可參考教程:??一加6、6T、7、7Pro 解鎖,刷入TWRP、Magisk、ROOT教程??
請在電腦(PC)安裝好fastboot命令行工具,刷機主要采用fastboot命令進行操作,也可以采用TWRP刷機(本文不再贅述)。
目前采用fastboot刷入系統,理論上適合支持fastboot燒錄更新系統的所有機型,無論是手機,還是各種開發板卡
3、下載鏡像包
目前適配一加6T手機的開源鴻蒙鏡像包,只是初步適配,不建議刷入,僅供學習OpenHarmony刷機使用。目前沒有2D加速,GPU版本體驗仍然很卡,請期待后續分享。
CPU版本鏡像:
鏈接: https://pan.baidu.com/s/1DQ7oZ7wQMNgSJxl4dnKrhw?pwd=zs35
提取碼: zs35
鏡像包目錄結構:
.
|-- README.md #本文檔
|-- figures #圖片
|-- images
|-- script #刷機BAT腳本
| |-- 0.unlock.bat
| |-- 1.flash_boot_a.bat
| |-- 1.flash_boot_b.bat
| |-- 2.flash_userdata.bat
| |-- 3.flash_vendor.bat
| |-- 4.flash_system.bat
| `-- 5.reboot.bat
`-- tools #工具
|-- android
| `-- parted
`-- windows
`-- platform-tools.zip # fastboot及adb工具
三、刷機步驟
目前僅提供簡單的BAT腳本進行刷機,在script目錄下,可按步驟執行腳本進行即可。
重要說明:
- 刷機前先進入Bootloader
- 每次刷入鏡像,如果連續刷入下一個鏡像,執行BAT腳本或輸入命令,命令行窗口等超過30s沒有返回,需再次進入Bootloader,再刷入想要刷入的鏡像。 如下狀態(建議進入Bootloader后,通過音量下鍵,先選擇到該項功能,按電源鍵即可再次進入Bootloader,請參考視頻操作)
步驟一、刷入boot.img
參考命令(如需刷入boot_a分區,改成boot_a及dtbo_a即可):
fastboot set_active b
fastboot erase dtbo_b
fastboot flash boot_b boot.img
步驟二、刷入userdata.img
參考命令:
fastboot erase userdata
fastboot flash userdata userdata.img
步驟三、刷入vendor.img
參考命令:
fastboot erase vendor_b
fastboot flash vendor_b vendor.img
步驟四、刷入system.img
參考命令:
fastboot erase system_b
fastboot flash system_b system.img
四、常見問題
1、刷完鏡像后,一直進入原系統
建議執行以下命令選擇B分區啟動嘗試,然后重啟:
2、刷完鏡像后,一直進Bootloader
用以下命令確認設備信息:
重點關注下系統從哪個分區啟動:
(bootloader) current-slot:a
(bootloader) has-slot:boot:yes
(bootloader) slot-retry-count:b:7
(bootloader) slot-unbootable:b:yes
(bootloader) slot-successful:b:no
(bootloader) slot-retry-count:a:2
(bootloader) slot-unbootable:a:yes
(bootloader) slot-successful:a:no
其中(bootloader) current-slot:a 表示當前從A分區啟動, 目前自己在調試用的機器,即使選擇B分區啟動,重啟后仍然選擇A分區啟動,暫時不確定原因,通過重新執行刷入boot_a和userdata解決。
說明:
如果刷入boot_a,原系統目前不能正常進入,如果有備份原boot_a分區鏡像,這里就體現了其重要性。
3、刷完鏡像后,能夠正常進入OpenHarmony,但顯示不出歡迎頁面
可能需要重新刷入userdata.img,請參考刷機步驟。
五、常用操作
1、進入Bootloader的方法
關機下長按音量上 + 電源鍵(或者開機后adb下運行adb reboot bootloader)
2、fastboot解鎖命令
說明:需進入Bootloader,一加6T手機進入Bootloader的方法: 關機下長按音量上 + 電源鍵(或者開機后adb下運行adb reboot bootloader)
3、輸出當前BL(Bootloader)鎖狀態
命令返回結果如下(僅供參考):
(bootloader) Verity mode: true
(bootloader) Device unlocked: true
(bootloader) Device critical unlocked: false
(bootloader) Charger screen enabled: true
(bootloader) enable_dm_verity: true
(bootloader) have_console: false
(bootloader) selinux_type: SELINUX_TYPE_INVALID
(bootloader) boot_mode: NORMAL_MODE
(bootloader) kmemleak_detect: false
(bootloader) force_training: 0
(bootloader) mount_tempfs: 0
(bootloader) op_abl_version: 0x31
(bootloader) cal_rebootcount: 0x31
OKAY [ 0.018s]
Finished. Total time: 0.019s
4、輸出該設備的所有信息
返回結果如下(僅供參考):
(bootloader) hw-revision:20001
(bootloader) unlocked:yes
(bootloader) off-mode-charge:1
(bootloader) charger-screen-enabled:1
... ...
(bootloader) has-slot:modem:yes
(bootloader) has-slot:system:yes
(bootloader) current-slot:a
(bootloader) has-slot:boot:yes
(bootloader) slot-retry-count:b:6
(bootloader) slot-unbootable:b:yes
(bootloader) slot-successful:b:no
(bootloader) slot-retry-count:a:6
(bootloader) slot-unbootable:a:yes
(bootloader) slot-successful:a:no
(bootloader) slot-count:2
(bootloader) secure:yes
(bootloader) serialno:567dc0e0
(bootloader) product:sdm845
(bootloader) max-download-size:536870912
(bootloader) kernel:uefi
all:
Finished. Total time: 0.469s
六、附錄
1、一加6T線刷包(救磚用)
鏈接: https://pan.baidu.com/s/1XSAF-yeP2RkhodPig5-gwQ?pwd=43j6
提取碼: 43j6
2、參考刷機視頻
??一加6T開源鴻蒙移植系列 - 完整刷機過程??
??想了解更多關于開源的內容,請訪問:??
??51CTO 開源基礎軟件社區??
??https://ost.51cto.com??