OnePlus6T OpenHarmony简明刷机指南 原创 精华

AlgoIdeas
发布于 2023-2-13 08:02
浏览
11收藏

一、简介

一加6T在开源鸿蒙(OpenHarmony)的移植,主要利用工作之余的空闲时间移植,目前仅正常开机启动,触屏正常,最新已经初步支持GPU,其他功能就只能呵呵。OpenHarmony版本基于OpenHarmony 3.2 Beta5,内核基于Linux 6.1,同时也支持OpenHarmony的主线5.10内核版本(暂未使用)。

重要说明:

  1. 目前OpenHarmony只是初步适配,不适合使用,仅供学习用途,如果自己刷入后,手机变砖或其他问题,后果自行承担。

  2. 虽然已经适配初步支持了GPU,但是还没有适配2d图形加速功能,普通的操作依然很卡,后续慢慢优化后释放体验包。

  3. 本文的目的是让大家如何在手机上快速刷入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与芯片平台相关,需要根据硬件适配和定制。

重要说明:

  1. 不符合上述分区的手机不建议刷入,如果强行刷入,后果自行承担

  2. 刷机前请备份好系统数据,和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目录下,可按步骤执行脚本进行即可。

重要说明:

  1. 刷机前先进入Bootloader

  2. 每次刷入镜像,如果连续刷入下一个镜像,执行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分区启动尝试,然后重启:

fastboot set_active b

2、刷完镜像后,一直进Bootloader

用以下命令确认设备信息:

fastboot getvar all

重点关注下系统从哪个分区启动:

(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解锁命令

fastboot oem unlock

说明:需进入Bootloader,一加6T手机进入Bootloader的方法: 关机下长按音量上 + 电源键(或者开机后adb下运行adb reboot bootloader)

3. 输出当前BL(Bootloader)锁状态

fastboot oem device-info

命令返回结果如下(仅供参考):

(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.输出该设备的所有信息
fastboot getvar all

返回结果如下(仅供参考):

(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开源鸿蒙移植系列 - 完整刷机过程

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2023-2-13 19:38:30修改
14
收藏 11
回复
举报
12条回复
按时间正序
/
按时间倒序
离北况归
离北况归

🤩老师厉害

回复
2023-2-13 08:48:05
红叶亦知秋
红叶亦知秋

刷机刷起来!

回复
2023-2-13 10:01:36
longlong899
longlong899

膜拜大佬!

回复
2023-2-13 10:41:04
躺在屋顶赏
躺在屋顶赏

膜拜大佬,Orz,,,刷起来

回复
2023-2-13 15:24:06
Whyalone
Whyalone

刷机包都出来了,666666

1
回复
2023-2-13 18:08:50
6btb
6btb

大神你好!

鸿蒙操作系统非常令人期待,从事鸿蒙相关系统软件开发前景一片光明!

目前看来,虽然华为贡献了其基本构架,但跟进使用的手机制造商使用的还不多,也许他们各自有顾虑吧。

但是对于我们普通手机用户来说,又非常希望能够在其他品牌手机上使用鸿蒙。

具体情况是:

很多用户手里还有已经被厂家抛弃的、不再给予支持维护的机型。但是很多用户并不想丢弃这些手机,它们拿来当通讯工具、社交工具,还是绰绰有余的。

例如前几年出货量非常大的、硬件至今不算太落后的“酷派——改变者S1”,以及“乐视——乐Pro3”手机。这两款手机的硬件配置几乎一模一样),两机加起来的出货量近2000万台。目前很多人还在使用这两款手机,希望得到新的鸿蒙系统,延续手机寿命。但是,这两个厂家已经不再支持维护这2款手机。


希望大神方面可以考虑接受用户的众筹,即我们每个手机拥有者自愿付出一笔费用,请鸿蒙开发方为这两款手机打造一个鸿蒙系统。在开发前可以接受预订,达到一定金额后招兵买马开发。后续的升级版本可以再合理收费嘛。


我想,这样的开发难度不会很大,而且潜在的用户数量非常巨大。这些用户将来很可能成为鸿蒙下一个产品的忠实用户。


唯一的问题是,原有的手机商家会干涉嘛?有没有法律方面的障碍?

4
回复
2023-2-14 17:06:32
FlashinMiami
FlashinMiami

一加确实适合刷机

回复
2023-2-16 11:04:40
诺舒华吃西瓜
诺舒华吃西瓜

支持更多手机刷鸿蒙

回复
2023-2-16 18:23:21
笨笨的婧婧
笨笨的婧婧

先去整个一加手机

回复
2023-2-17 11:51:23
青舟321
青舟321

膜拜大佬!这下必须刷一波

回复
2023-2-17 14:32:00
喝一大口可乐
喝一大口可乐

之前没用过一加,准备去闲鱼看看

回复
2023-2-20 10:38:11
wx65edba8546bd6
wx65edba8546bd6

大佬,按照 ​​https://gitee.com/openharmony-dg/device_board_qualcomm/blob/OpenHarmony-4.1-Release/oneplus_fajita/README_zh.md​​ 中的步骤

拉 ​​OpenHarmony-4.1-Release​​ 的代码,然后 clone device_board_qualcomm、​vendor_qualcomm​​、​device_soc_qualcomm​

编译有报错:


[OHOS INFO] subsytem config scan completed
warning: subsystem name config incorrect in '/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/vendor/qualcomm/oneplus_fajita/ohos.build', build file subsystem name is product_qualcomm,configured subsystem name is product_oneplus_fajita.
warning: subsystem name config incorrect in '/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/device/board/qualcomm/oneplus_fajita/ohos.build', build file subsystem name is qualcomm_products,configured subsystem name is device_oneplus_fajita.

[OHOS ERROR] Traceback (most recent call last):
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/containers/status.py", line 47, in wrapper
[OHOS ERROR]     return func(*args, **kwargs)
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/modules/ohos_build_module.py", line 65, in run
[OHOS ERROR]     super().run()
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/modules/interface/build_module_interface.py", line 65, in run
[OHOS ERROR]     self._load()
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/modules/ohos_build_module.py", line 84, in _load
[OHOS ERROR]     self.loader.run()
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/services/interface/load_interface.py", line 45, in run
[OHOS ERROR]     self.__post_init__()
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/services/loader.py", line 117, in __post_init__
[OHOS ERROR]     self.parts_config_info = load_ohos_build.get_parts_info(
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/util/loader/load_ohos_build.py", line 933, in get_parts_info
[OHOS ERROR]     _output_parts_info(parts_config_dict,
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/util/loader/load_ohos_build.py", line 742, in _output_parts_info
[OHOS ERROR]     check_subsystem_and_component(parts_info_output_path, skip_partlist_check)
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/util/loader/load_ohos_build.py", line 674, in check_subsystem_and_component
[OHOS ERROR]     compare_subsystem_and_component(subsystem_name, components_name, subsystem_compoents_whitelist_info,
[OHOS ERROR]   File "/home/leon/workspace/ohos/OpenHarmony-v4.1-Release/build/hb/util/loader/load_ohos_build.py", line 641, in compare_subsystem_and_component
[OHOS ERROR]     raise Exception(message)
[OHOS ERROR] Exception: find component device_oneplus_fajita failed, please check it in /home/leon/workspace/ohos/OpenHarmony-v4.1-Release/out/preloader/oneplus_fajita/parts.json.
[OHOS ERROR] 

[OHOS ERROR] Code:        0000
[OHOS ERROR] 
[OHOS ERROR] Reason:      find component device_oneplus_fajita failed, please check it in /home/leon/workspace/ohos/OpenHarmony-v4.1-Release/out/preloader/oneplus_fajita/parts.json.
[OHOS ERROR] 
[OHOS ERROR] Error Type:  UNKNOWN ERROR TYPE
[OHOS ERROR] 
[OHOS ERROR] Description: NO DESCRIPTION
[OHOS ERROR] 
[OHOS ERROR] Solution:    NO SOLUTION
回复
2024-3-12 19:32:31
回复
    相关推荐