小米 MIX2S ③ 系统共存操作方案 |
您所在的位置:网站首页 › mix2s出厂系统 › 小米 MIX2S ③ 系统共存操作方案 |
使用本篇教程建议先阅读我前两篇的教程,分别是安装 Windows 11 + MIUI 双系统 为什么还要安装第三个操作系统?不够用吗?并不是的,只是为了懒。 由于这个手机本来就是几年前的手机,从海鲜市场购置到的。8GB RAM + 256 ROM 可玩性比较高,有点像当年的 HTC HD2 刷机王。 三系统的意义?由于在使用 Recovery 进行备份时可能会产生 data 加密解密的问题,造成无法正确还原,或者进行刷机的时候,不同的系统刷来刷去的会导致未知问题产生。 如何安装第三个系统?主要逻辑还是为 system data vendor 这三个分区改名 进入 Recovery 使用 adb shell 操作 parted adb shell blkid // 分别查看 system userdata vendor 位于哪个设备块 // 运行后可得知 sda 与 sde 两个存储设备。我们来操作这两个即可最终我们得到了三个新的分区 userdata, system, vendor 原先的三个分区依然存在,没有变化,只是名字被重命名为了 miuiData; miuiSystem; miuiVendor 此时只需要在 Recovery 中格式化 data 分区即可安装新的 ROM(如果遇到错误,重启下 Recovery) 还原到 MIUI 系统原理就是再次使用 parted 将当前的分区 userdata, system, vendor 改名,改成任何都行,例如改为 userdataBAK, systemBAK, vendorBAK 然后再把 miuiData; miuiSystem; miuiVendor 分别改回来 userdata, system, vendor 还原一下 boot 重启即可完成 MIUI 系统还原,相比备份,还原来得更快,而且更简单,过程耗费更少的时间 现在尝鲜刷了一个移植的 originOS 系统,但是主要目的就是体验下就行。不打算长期使用。只需要改下名字即可还原到原来的 MIUI 系统。日后若有更好玩的系统,只需要再次改回来,重新刷一下 ROM 即可 如果你的 MIX2S 是 64GB 的那么这个方案很难实现,内存小的不太好操作。 一键切换手动更换系统会比较麻烦,要是一不小心弄错了,就会导致分区表错误,因为操作分区表删除,更名是比较危险的行为,一旦发生错误,将无法启动,会变砖头,只能通过高通的 EDL 9008 模式重新还原原始分区表。 因此我们可以通过制作一个刷机包,刷机包将会自动运行更名的代码,使错误降低。 确保分区都已经准备好,我们找到任意刷机包,将其改装为仅运行 shell 命令的即可 如何改装? 定位到刷机包里的 updater-script 使用合适的代码编辑器,例如 Notepad++ 编辑该文件,删除所有内容。然后输入下面的注释行,保存即可 # dummy file复制 updater-script 并将其更名为 update-binary 继续使用代码编辑器编辑 下面的代码目的就是使用 sgdisk 分区工具将位于 /dev/block/sda 设备的 21, 23, 29, 28 四个分区分别更名为 boot, vendor, system, userdata 来实现切换到第二个系统的功能 #!/sbin/sh OUTFD=$2 ZIP=$3 SDAPATH="/dev/block/sda" SDEPATH="/dev/block/sde" SGDISKBIN="/tmp/krtmp/sgdisk" mkdir /tmp/krtmp cd /tmp/krtmp unzip -o "$ZIP" chmod 0755 $SGDISKBIN # unmount data umount /data && umount /sdcard # Change SDA partitions 2 major boot $SGDISKBIN --change-name=21:boot $SDAPATH $SGDISKBIN --change-name=23:vendor $SDAPATH $SGDISKBIN --change-name=29:system $SDAPATH # Change SDE partitions 2 secondary $SGDISKBIN --change-name=45:2nd-boot $SDEPATH $SGDISKBIN --change-name=47:2nd-vendor $SDEPATH $SGDISKBIN --change-name=48:2nd-system $SDEPATH # switch userdata partitions's name $SGDISKBIN --change-name=28:userdata $SDAPATH $SGDISKBIN --change-name=22:2nd-data $SDAPATH sleep 2 #reboot recovery exit 0接下来就是复制这些代码,派生出切换到 MIUI 系统的代码,很简单,就是分区编号互换一下即可。大致原理和思路就是这样的(这样做的目的仅仅是解决懒。不建议小白操作,过程和逻辑较为复杂) #!/sbin/sh OUTFD=$2 ZIP=$3 SDAPATH="/dev/block/sda" SDEPATH="/dev/block/sde" SGDISKBIN="/tmp/krtmp/sgdisk" mkdir /tmp/krtmp cd /tmp/krtmp unzip -o "$ZIP" chmod 0755 $SGDISKBIN # unmount data umount /data && umount /sdcard # Change SDA partitions 2 secondary $SGDISKBIN --change-name=21:2nd-boot $SDAPATH $SGDISKBIN --change-name=23:2nd-vendor $SDAPATH $SGDISKBIN --change-name=29:2nd-system $SDAPATH # Change SDE partitions 2 major boot $SGDISKBIN --change-name=45:boot $SDEPATH $SGDISKBIN --change-name=47:vendor $SDEPATH $SGDISKBIN --change-name=48:system $SDEPATH # switch userdata partitions's name $SGDISKBIN --change-name=28:2nd-data $SDAPATH $SGDISKBIN --change-name=22:userdata $SDAPATH sleep 2 #reboot recovery exit 0至于分区的编号如何获得?使用 parted 列出来即可,根据自己的编号来设置 在最后就是把脚本打包到刷机包里,最关键的是还需要 sgdisk 二进制文件 通过实测,切换后重启并不能顺利启动系统,猜测这是因为还有其他分区的文件不能共用,因此无法顺利启动。要解决这个问题,只需要进入 Recovery 直接卡刷一下原系统的 zip 包即可。这样其他分区的即可得到更新。最后顺利启动。 修改刷机脚本由于每次切换系统都需要刷一次原包,而我们已经实现了 system 和 vendor 分区的无损转换,因此我们可以将刷机包里的 system 与 vendor 的分区刷写去掉,因为这是没有必要的。可以节省大量的时间! 使用 7z 打开刷机包,找到 update-script 并使用 Notepad++ 编辑器进行编辑 注释或者删除掉与 system 和 vendor 有关的更新代码,然后将脚本更新到刷机包里 删除 system 与 vendor 的镜像文件,缩减刷机包的体积 删除后 其他类型 AOSP 刷机脚本注释掉的示例 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |