OnePlus6T OpenHarmony簡明刷機(jī)指南
一、簡介
一加6T在開源鴻蒙(OpenHarmony)的移植,主要利用工作之余的空閑時間移植,目前僅正常開機(jī)啟動,觸屏正常,最新已經(jīng)初步支持GPU,其他功能就只能呵呵。OpenHarmony版本基于OpenHarmony 3.2 Beta5,內(nèi)核基于Linux 6.1,同時也支持OpenHarmony的主線5.10內(nèi)核版本(暫未使用)。
重要說明:
目前OpenHarmony只是初步適配,不適合使用,僅供學(xué)習(xí)用途,如果自己刷入后,手機(jī)變磚或其他問題,后果自行承擔(dān)。
雖然已經(jīng)適配初步支持了GPU,但是還沒有適配2d圖形加速功能,普通的操作依然很卡,后續(xù)慢慢優(yōu)化后釋放體驗包。
本文的目的是讓大家如何在手機(jī)上快速刷入OpenHarmony并針對刷機(jī)的一些要求和一些問題作簡明說明,移植不在本文討論范圍。
二、準(zhǔn)備工作
1、確認(rèn)系統(tǒng)分區(qū)
一加6T支持A/B分區(qū)功能,目前刷入的鏡像均在B分區(qū)。
一加6T的分區(qū)確認(rèn):
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
其中刷機(jī)時,vender分區(qū),對應(yīng)手機(jī)的vender_b分區(qū),實際對應(yīng)分區(qū)號為/dev/block/sde44。
分區(qū)信息確認(rèn)方法:
通過adb shell進(jìn)入手機(jī)原系統(tǒng)進(jìn)行確認(rèn),或進(jìn)入TWRP采用parted命令行工具確認(rèn)(可自行網(wǎng)上搜索使用方法,不在本文討論范圍之內(nèi))。
目前刷機(jī)包移植的OpenHarmony鏡像對應(yīng)一加6T刷機(jī)分區(qū)如下:
OpenHarmony鏡像分區(qū)號分區(qū)名備注system.img/dev/block/sda14system_b分區(qū)系統(tǒng)分區(qū)vendor.img/dev/block/sde44vendor_b分區(qū)廠商相關(guān)userdata.img/dev/block/sda17userdata分區(qū)用戶(應(yīng)用)數(shù)據(jù),目前提供鏡的像只是放置了部分Linux社區(qū)圖片boot.img不需關(guān)注boot_b分區(qū)啟動相關(guān)
其中,system.img和userdata.img分區(qū)鏡像,目前OpenHarmony已經(jīng)可以做到與芯片平臺無關(guān),其他手機(jī)或開發(fā)板(arm或aarch64架構(gòu))理論上,在滿足基本存儲和硬件要求的情況下均可以通用(刷入)。
boot.img和vendor.img與芯片平臺相關(guān),需要根據(jù)硬件適配和定制。
重要說明:
不符合上述分區(qū)的手機(jī)不建議刷入,如果強(qiáng)行刷入,后果自行承擔(dān)
刷機(jī)前請備份好系統(tǒng)數(shù)據(jù),和boot鏡像。其中boot_a分區(qū)有可能需要被刷入覆蓋,尤其是Bootloader啟動的時候不選擇進(jìn)入boot_b啟動,表現(xiàn)的現(xiàn)象就是一直進(jìn)入Bootloader(可通過fastboot命令獲取當(dāng)前啟動分區(qū)),此時可能需要將boot.img鏡像刷入boot_a分區(qū)
2、解鎖Bootloader
詳細(xì)方法可參考教程:一加6、6T、7、7Pro 解鎖,刷入TWRP、Magisk、ROOT教程
請在電腦(PC)安裝好fastboot命令行工具,刷機(jī)主要采用fastboot命令進(jìn)行操作,也可以采用TWRP刷機(jī)(本文不再贅述)。
目前采用fastboot刷入系統(tǒng),理論上適合支持fastboot燒錄更新系統(tǒng)的所有機(jī)型,無論是手機(jī),還是各種開發(fā)板卡
3、下載鏡像包
目前適配一加6T手機(jī)的開源鴻蒙鏡像包,只是初步適配,不建議刷入,僅供學(xué)習(xí)OpenHarmony刷機(jī)使用。目前沒有2D加速,GPU版本體驗仍然很卡,請期待后續(xù)分享。
CPU版本鏡像:
鏈接: https://pan.baidu.com/s/1DQ7oZ7wQMNgSJxl4dnKrhw?pwd=zs35?
提取碼: zs35
鏡像包目錄結(jié)構(gòu)
.
|-- README.md? ? ? ? ? ? ? ? #本文檔
|-- figures? ? ? ? ? ? ? ? ? #圖片
|-- images
|-- script? ? ? ? ? ? ? ? ? ?#刷機(jī)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工具
```
三、刷機(jī)步驟
目前僅提供簡單的BAT腳本進(jìn)行刷機(jī),在script目錄下,可按步驟執(zhí)行腳本進(jìn)行即可。
重要說明:
刷機(jī)前先進(jìn)入Bootloader
每次刷入鏡像,如果連續(xù)刷入下一個鏡像,執(zhí)行BAT腳本或輸入命令,命令行窗口等超過30s沒有返回,需再次進(jìn)入Bootloader,再刷入想要刷入的鏡像。 如下狀態(tài)(建議進(jìn)入Bootloader后,通過音量下鍵,先選擇到該項功能,按電源鍵即可再次進(jìn)入Bootloader,請參考視頻操作)
步驟一、刷入boot.img
參考命令(如需刷入boot_a分區(qū),改成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、刷完鏡像后,一直進(jìn)入原系統(tǒng)
建議執(zhí)行以下命令選擇B分區(qū)啟動嘗試,然后重啟:
fastboot set_active b
2、刷完鏡像后,一直進(jìn)Bootloader
用以下命令確認(rèn)設(shè)備信息:
fastboot getvar all
重點關(guān)注下系統(tǒng)從哪個分區(qū)啟動:
(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 表示當(dāng)前從A分區(qū)啟動, 目前自己在調(diào)試用的機(jī)器,即使選擇B分區(qū)啟動,重啟后仍然選擇A分區(qū)啟動,暫時不確定原因,通過重新執(zhí)行刷入boot_a和userdata解決。
說明:
如果刷入boot_a,原系統(tǒng)目前不能正常進(jìn)入,如果有備份原boot_a分區(qū)鏡像,這里就體現(xiàn)了其重要性。
3、刷完鏡像后,能夠正常進(jìn)入OpenHarmony,但顯示不出歡迎頁面
可能需要重新刷入userdata.img,請參考刷機(jī)步驟。
五、常用操作
1.進(jìn)入Bootloader的方法
關(guān)機(jī)下長按音量上 + 電源鍵(或者開機(jī)后adb下運行adb reboot bootloader)
2.fastboot解鎖命令
fastboot oem unlock
說明:需進(jìn)入Bootloader,一加6T手機(jī)進(jìn)入Bootloader的方法: 關(guān)機(jī)下長按音量上 + 電源鍵(或者開機(jī)后adb下運行adb reboot bootloader)
3. 輸出當(dāng)前BL(Bootloader)鎖狀態(tài)
fastboot oem device-info
命令返回結(jié)果如下(僅供參考):
(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.輸出該設(shè)備的所有信息
fastboot getvar all
返回結(jié)果如下(僅供參考):
(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
六、附錄
一加6T線刷包(救磚用)
鏈接: https://pan.baidu.com/s/1XSAF-yeP2RkhodPig5-gwQ?pwd=43j6
提取碼: 43j6