无源码移植ROM的GSI技术

 

GSI项目源地址 https://forum.xda-developers.com/t/pie-oem-gsi-a-ab-arm64-erfan-gsi-ports.3906486/

免责申明

你的质保现在失效了。我不对设备成砖、SD死掉、热核战争(这里指的是打官司)或你因为报警app失效而被解雇负责。如果你对这个ROM中包含的功能有任何顾虑,请在刷入之前做一些研究! 是你你选择做这些修改,如果你指责我把你的设备搞坏了,我会嘲笑你。

工具来源:

https://github.com/erfanoabdi/ErfanGSIsI

GIS是什么 ?

GSI 的全称是 Generic System Image,翻译过来就是「通用系统镜像」,这个概念来源于 Project Treble。 自从 Android 8 引入 Project Treble 后,手机的系统文件和底层的厂商硬件驱动开始分离存放,更新系统时只需要更新系统文件即可。此项举措意在方便厂商加快 Android 大版本更新的步伐,自然也同样方便了第三方 ROM 的开发和更新,成为了社区开发的一大福音。从理论上来说,刷入某个 GSI,你的手机就会摇身一变,从一个系统切换到了另一个系统。

我决定将一些移植的 OEM 固件分享为 GSI(不是半 GSI)并玩得开心..
半 GSI:不是非常通用的系统映像,需要供应商补丁来启动
GSI:通用的系统镜像,没有对供应商的任何额外补丁
到目前为止,我已经把MIUI、ZenUI、OxygenOS、HydrogenOS和三星OneUI做成了GSI......
我也接受移植更多固件的请求,只要提及我的任何安卓P固件,我都会尝试

获取最新:https://t.me/ErfanGSIs
 

要求:

  1. 没什么要求,只要求支持Project Treble的vendor分区 (P 或 O),查看是否有ab槽,如何知道手机是否支持,下载安装Treble check检测app即可知道。


如何安装:

如何在支持 Project Treble 的设备上刷入已有GSI镜像

简介

如果您只是顺便听说过 Project Treble 但没有深入研究它,那么您可能听说过它应该有助于更快地推出主要的 Android 更新。在XDA,还有一个我们已经详细说过的好处:在任何支持的设备上启动AOSP通用系统镜像(GSI)的能力。这意味着曾经在三星 Galaxy S9上运行Samsung Experience或在华为 Mate 10 Pro上运行EMUI 8等高度定制的 Android 版本的设备也可以可以替代运行更接近谷歌Pixel 2的系统。

第三方定制ROM(由独立开发者制作的定制版安卓系统,通常不隶属于某个公司,是非官方系统)是XDA论坛的一大亮点,并且由于 Project Treble 要求的 Android 变化,支持 Treble 的设备将可以更轻松地刷基于 Android 开源项目 (AOSP) 的自定义 ROM。如果没有 Project Treble,开发人员必须使用大量技巧和黑客手段才能使他们的自定义 ROM 正常工作,虽然 Treble 支持并不能解决所有问题,但它肯定有助于启动进程

像设备Huawei Mate 9Honor View 10Huawei Mate 10 Pro, Honor 7X, Exynos Samsung Galaxy S9, or Allview V3 Viper这样的设备,由于缺乏开发者的兴趣,要么没有基于AOSP的定制ROM,要么ROM缺乏一些基本硬件功能。但是,正如我们在这些设备的案例中所看到的,由于Treble的支持,可用的ROM大多是功能性的(在哪些功能工作和哪些不工作方面有一些差异,社区已经把一个维基页面放在一起,你应该查看一下以找到这些信息)。

由于 Treble 对用户来说是如此陌生,而且与通常的自定义 ROM 相比,刷新它们的过程略有不同,因此对于如何将 GSI 刷新到与 Treble 兼容的设备上存在很多困惑。本教程将大致引导您完成如何刷写这样的 ROM。根据设备的不同,可能会涉及几个不同的步骤,但总的来说,过程应该是相似的。下面介绍如何在兼容 Treble 的 Android 设备上刷写 GSI。

要求:

  • 您的设备必须具有可解锁的引导加载程序
  • 您的设备必须Project Treble 兼容这意味着您的设备符合以下标准之一:
    • 您的设备已使用 Android 8.0 Oreo 或更新版本(例如 Android 8.1 Oreo)启动,并且已通过Google Play 认证(如果您对设备进行了 root 操作/刷入了另一个自定义 ROM 并且以某种方式最终导致您的设备在 Google Play 中被列为未经认证,那么请不要担心。我们只关心设备在发货时的状态。)
    • 您的设备已升级到 Android 8.0 Oreo 或更新版本,并且制造商已将 Project Treble 兼容有关此类设备的列表,请参阅本文
    • 您的设备不符合上述任一条件,但确实可以通过非官方方式使 Treble 兼容。同样,请参阅本文以获取此类设备的列表。
  • 您的设备没有任何重大修改,例如 Xposed Framework、SuperSU或 Magisk。您可以在之后重新安装这些,但在继续之前请确保您使用的是库存引导/ramdisk。

三星 Galaxy S8/S8+(ExynosSnapdragon)、三星 Galaxy Note 8(ExynosSnapdragon)、LG V30Sony Xperia XA1 系列等设备不符合任何这些标准,因此无法遵循本指南。虽然2018 年诺基亚品牌设备Snapdragon 三星 Galaxy S9与 Android Oreo 一起推出并支持 Treble,但它们没有可解锁的引导加载程序,因此无法刷新 GSI。

请确保,即使你的设备被列为Treble兼容,除非你确实收到了官方或非官方的Android Oreo更新,否则不要按照本指南进行操作。如果你的设备符合上述标准,那么你几乎已经准备好刷入GSI了。我们需要说的最后一件事是,GSI将要求你对你的设备进行出厂重置,所以在你进行这项工作之前,请确保你准备好丢失应用程序数据 我们建议你做一个设备外的备份(例如在你的电脑或SD卡上),以防出现任何问题。

准备官方支持 Treble 的设备

  1. 解锁设备的引导加载程序。您在此处执行的步骤因设备而异。我们在门户网站和我们的论坛上都提供了许多指南供您阅读。只需在 Google 上快速搜索“XDA 解锁引导加载程序”+ 您的设备名称,您就会找到许多指南。
  2. 将您选择的 GSI 下载到您的 PC 上。您可以刷新入 AOSP ROM,例如 phh-Treble,或者如果您更喜欢更多功能,您可以获取其他 ROM,例如 LineageOS 15.1 或 Resurrection Remix GSI。我已将帖子链接放到下面。下载适合您的设备类型(是32位还是64位soc 大多数人为 64位 ARM64)和分区类型(a槽还是ab槽,可以理解为单系统还是双系统)的正确映像。如果您的设备支持无缝更新(可在此处找到此类设备的列表),则下载 A/B 镜像,否则下载仅 A 镜像。

为非官方支持 Treble 的设备做准备

  1. 解锁设备的引导加载程序。您在此处执行的步骤因设备而异。我们在门户网站和我们的论坛上都提供了许多指南供您阅读。只需在 Google 上快速搜索“XDA 解锁引导加载程序”+ 您的设备名称,您就会找到许多指南。
  2. 通过刷入本文中提到的帖子中链接的相应文件,使您的设备与 Treble 兼容您必须先执行此操作,然后才能刷新 GSI!
  3. 将您选择的 GSI 下载到您的 PC 上。您可以刷新纯 AOSP ROM,例如 phh-Treble,或者如果您更喜欢更多功能,您可以获取LineageOS 15.1或 Resurrection Remix GSI。我已将线程链接如下。下载适合您的设备类型(大多数人为 ARM64)和分区类型的正确映像。如果您的设备支持无缝更新(可在此处找到此类设备的列表),则下载 A/B 图像,否则下载仅 A 图像。

以下步骤取决于您的设备是否具有可以使用的功能性TWRP如果您的设备有 TWRP,那么我们强烈建议您先安装它。我们在这里有一个指南

带 TWRP 的刷入GSI

首先确认你要刷入的GSI系统安卓版本,与你的手机当前安卓版本是否一致,不一致建议先刷一致后再刷GSI,否则可能会循环重启

  1. 在 TWRP 中执行恢复出厂设置。
  2. 将GSI从你的电脑转移到你的设备的内部存储,TWRP可以用数据线访问它。
  3. 点击“安装”。如何在 Project Treble 设备上刷新通用系统映像 GSI
  4. 将类型从“zip”更改为“image”。如何在 Project Treble 设备上刷新通用系统映像 GSI
  5. 查找并选择您下载的 GSI。
  6. 选择刷入系统分区。如何在 Project Treble 设备上刷新通用系统映像 GSI
  7. 完成后,重新启动您的设备。

希望您的设备在等待几分钟后会启动。如果没有,请跳过以下部分并转到故障排除提示。

没有 TWRP 的刷入 GSI

  1. 在您的设备上执行恢复出厂设置。您在这里有两个选择:
    • 打开手机上的设置应用程序并查找恢复出厂设置选项。它通常在与备份相关的设置下。如何在 Project Treble 设备上刷新通用系统映像 GSI
    • 使用启动时的组合按钮或在安卓系统中发出以下ADB命令,重新启动到你的设备的恢复模式:adb reboot recovery。一旦在这里,使用音量键导航,并使用电源键选择工厂重置选项。
  2. 设备恢复出厂设置后,在启动时使用按钮组合重新启动到设备的引导加载程序,或在 Android 中启动时发出以下 ADB 命令: adb reboot bootloader
  3. 将您的设备连接到 PC 后,在您下载所选 GSI 的同一目录中打开命令提示符或终端窗口。
  4. 输入以下命令: fastboot erase system
  5. 按以下格式输入命令: fastboot -u flash system name_of_system.img
  6. 镜像刷入这可能需要几分钟时间。完成后,通过电源键或输入 手动重启您的设备fastboot reboot

希望您的设备应该启动到您选择的 GSI。如果没有,这里有一些故障排除提示。

故障排除提示

  • 在一些设备上,如谷歌Pixel 2/2 XL,需要禁用安卓验证启动(AVB)。你可以把这个镜像刷入vbmeta分区来做到这一点(命令:fastboot flash vbmeta name_of_vbmeta.img)
  • OnePlus 6 上,您需要遵循一些特殊的刷入说明
  • dm-verity 可能会阻止您的设备使用 GSI 启动。在这种情况下,请继续刷 Magisk,然后看看它是否能启动。例如,被告知 this is required for the Razer Phone,
  • 作为最后的手段,你可以尝试在引导程序中从命令提示符/终端窗口中输入fastboot -w,对数据分区进行完全格式化(警告:这将擦除所有的东西)。我不得不在我的华为设备上这样做,然后才可以工作。

刷入通用系统镜像后的操作

默认情况下,没有任何应用程序来管理超级用户权限。您可以通过从 Google Play 商店安装 phh 的 SuperUser 来解决这个问题或者,您可以刷写 MagiskSuperSU — 这取决于您。

接下来,如果您需要进一步修改,您可以为主题安装SubstratumXposed 框架Magisk 存储库有大量小巧的模块,您也可以尝试。LineageOS 15.1,尤其是 Resurrection Remix 已经提供了大量开箱即用的功能,因此我们认为您真的不需要修补大量额外的东西,但选择由你。

现在,享受原生Android 的世界吧!我们建议您关注启用 Treble 的设备开发论坛以获取有关 ROM 的任何更新。此外,请关注 XDA 门户,了解与 Project Treble 相关的所有最新进展。最好的方法是为Treble 标签设置一个提要

最后,请为Treble Experimentations wiki 页面做出贡献,以便其他人了解 ROM 的任何潜在问题(因此开发人员将知道要修复什么!)

刷入permissiver_v4.zip或者让你的引导分区做selinux permissive

重启

下载:
单击此处或检查电报组中的#builds


注意:
如果镜像无法正常工作,请将您的日志(logcat 和 console-ramoops)发布到电报组,我会来寻求帮助: @ErfanGSI
无pc查看Logcat日志:take /data/ local/tmp/logs/log
在启动前在TWRP 中使用此命令启用 adb
Linux/mac:

代码:
adb push ~/.android/adbkey.pub /data/misc/adb/adb_keys

Win:

代码:
adb push C:\Users\<userName>\.android\adbkey.pub /data/misc/adb/adb_keys

捐赠:
我的宝: https://www.paypal.me/erfanoabdi

测试:

我没有任何供应商的8.0设备或exynos或mtk设备来测试这个GSI。
我想在它们身上可以工作,但我没有亲自尝试。
如果没有工作,请给我日志,或者捐给我一个设备:)


我自己测试的
摩托Z (A-only)
摩托X4 (AB)


用户报告
小米A1
ZenFone Max Pro (M1)
红米note4

更多...

谢谢
享受!

自行构建GSI镜像

https://github.com/phhusson/treble_experimentations/wiki/How-to-build-a-GSI%3F

https://roms.miuier.com/devices/tulip

https://www.himiku.com/archives/sony-xz1-and-gsi.html

无意中发现有一种技术叫GSI,可以不用源码移植任意厂家ROM到那你的手机上,具体怎么做还没有研究清楚

1.安装依赖

电脑 8G内存+100G硬盘,Ubuntu操作系统 (或Deepin 15.7  迅雷下载 http://cdimage.deepin.com/releases/15.7/deepin-15.7-amd64.iso)

sudo apt-get update

sudo apt-get install openjdk-8-jdk

sudo apt-get install git

2.安装GSI项目

git clone --recurse-submodules https://github.com/erfanoabdi/ErfanGSIs.git(最新但网络慢,建议使用最新版本,网络问题使用电钻上网)


git clone --recurse-submodules https://gitee.com/fengluoxiao/ErfanGSIs.git(最快但较旧)

cd ErfanGSIs

sudo bash setup.sh

sudo ./url2GSI.sh [ URL|OTA ZIP]  MIUI    (系统ROM压缩包获取自己去官网或者百毒。这里可以是一个zip直链或本地压缩包

cd out | ls

上面的命令构建了GSI的A和AB两个版本。您将在out目录中获得GSI img。这些通常是超过2GB的img

下面就是使用TWRP刷入system分区中

#只需要一种分区类型?可以在ErfanGSIs/url2GSI.sh配置文件修改AB/AONLY=false 即可取消AB/AONLY文件的生成!
AB=true
AONLY=true
MOUNTED=false
CLEAN=true (清理下载文件)

#更新ErfanGSIs工具
sudo ./update.sh

#取消有锁权限!
sudo chmod -R 777 文件路径

#由ErfanGSI工具支持的系统名称可看ErfanGSI/roms列表!

原文地址:https://www.cnblogs.com/GKLBB/p/15705751.html