美文网首页双系统
Dualbootpatcher副系统为android 8.1时无

Dualbootpatcher副系统为android 8.1时无

作者: 乌云一大坨 | 来源:发表于2018-03-10 13:38 被阅读0次

    03-22

    chenxiaolong终于有消息了,他正在努力适配安卓8,敬请期待 Dualbootpatcher副系统为android 8.1时无法启动的解决方案

    建了一个tg群,欢迎py
    https://t.me/dualbootpatcher


    03-12
    今天又试了一下omni,解压ramdisk之后找不到fstab跟int.qcom,我会继续研究这个问题


    本人小白不懂代码,都是照葫芦画瓢,参考链接:
    https://github.com/chenxiaolong/DualBootPatcher/issues/845#issuecomment-372010564
    有不对的地方欢迎斧正。目前我只初步测试了los15.1正常刷入启动,但有个问题就是相机fc,我不知道问题出在哪里,欢迎大神指点。

    准备工作:

    安装termux

    安装mt文件管理器

    安装magisk

    提取boot

    打开要刷的ROM,提取出boot.img
    然后复制到
    /data/magisk
    打开termux

    su
    cd /data/magisk
    

    解包boot

    ./magiskboot --upack boot.img
    

    解包之后有两个文件需要我我们操作:

    ramdisk.cpio 和 dtb

    我们先处理ramdisk.cpio

    1.解开ramdisk.cpio

    ./magiskboot --cpio ramdisk.cpio extract
    

    会有很多文件,不要慌要操作的只有这两个:

    fstab.qcom和int.qcom.rc
    (说实话这个代码我不会用,按理说

    ./magiskboot --cpio ramdisk.cpio extract fstab.qcom fstab.qcom
    

    可以单独解出fstab,但是每次都是全部解压,不知道问题出在哪,如果有知道的大佬欢迎留言指点一下。)

    2.用mt管理器打开fstab.qcom

    加入这行代码,保存退出

    /dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1,discard wait
    

    弄好之后格式如下:

    /dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1,discard wait
    /dev/block/bootdevice/by-name/boot                           /boot             emmc    defaults                                                                                                        defaults
    /dev/block/bootdevice/by-name/recovery                       /recovery         emmc    defaults                                                                                                        defaults
    /dev/block/bootdevice/by-name/userdata                       /data             f2fs    nosuid,nodev,noatime,discard,nodiratime                                                                         wait,check,encryptable=footer,formattable,length=-16384
    /dev/block/bootdevice/by-name/userdata                       /data             ext4    nosuid,nodev,noatime,barrier=1,noauto_da_alloc                                                                  wait,check,encryptable=footer,formattable,length=-16384
    /dev/block/bootdevice/by-name/cache                          /cache            f2fs    nosuid,nodev,noatime,inline_xattr,flush_merge,data_flush                                                        wait,check,formattable
    /dev/block/bootdevice/by-name/cache                          /cache            ext4    nosuid,nodev,noatime,barrier=1                                                                                  wait,check,formattable
    /dev/block/bootdevice/by-name/persist                        /persist          ext4    nosuid,nodev,barrier=1                                                                                          wait
    /dev/block/bootdevice/by-name/dsp                            /dsp              ext4    ro,nosuid,nodev,barrier=1                                                                                       wait
    /dev/block/bootdevice/by-name/modem                          /firmware         vfat    ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0                    wait
    /dev/block/bootdevice/by-name/bluetooth                      /bt_firmware      vfat    ro,shortname=lower,uid=1002,gid=3002,dmask=222,fmask=333,context=u:object_r:bt_firmware_file:s0                 wait
    /dev/block/bootdevice/by-name/misc                           /misc             emmc    defaults                                                                                                        defaults
    
    
    Dualbootpatcher副系统为android 8.1时无法启动的解决方案

    3.用mt管理器打开int.qcom.rc

    找到这一段代码:

    onfs
    
    wait/dev/block/platform/soc/${ro.boot.bootdevice}
    
    symlink/dev/block/platform/soc/${ro.boot.bootdevice}/dev/block/bootdevice
    
    mount_allfstab.qcom
    
    swapon_allfstab.qcom
    
    

    有些ROM没有最后两行

    mount_all fstab.qcom 
    swapon_all fstab.qcom
    

    需要我们自己添加,如果有了就不用管了。

    弄好了之后格式如下:


    Dualbootpatcher副系统为android 8.1时无法启动的解决方案

    4.把fstab.qcom和int.qcom.rc打包回ramdisk.cpio

    ./magiskboot --cpio ramdisk.cpio 'add 0640 fstab.qcom fstab.qcom' 'add 0640 init.qcom.rc init.qcom.rc'
    

    第二步:处理dtb

    1.在安卓手机上装个Linux(安装配置教程略,可以看我的安装教程)

    https://www.jianshu.com/p/961957ee53d0

    2.安装device-tree-compiler

    sudo apt-get install device-tree-compiler
    

    3.解包dtb

    (Linux可能读取不到/data/magisk目录,可以把dtb文件复制到sdcard目录操作,弄完之后再复制回去)

    dtc -O dts -I dtb -o dt.txt dtb
    
    Dualbootpatcher副系统为android 8.1时无法启动的解决方案

    这里我们可以注意到,有一堆warning,我不知道是啥原因,也不知道相机无法启动跟这个是否有关,但是dt.tx是解出来了。原教程就是这样写的,也没多说。

    4.这时候在目录下可以发现一个dt.txt文件,打开找到如下代码:

    firmware {
    android {
    compatible = "android,firmware";
    fstab {
    compatible = "android,fstab";
    system {
    compatible = "android,system";
    dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/system";
    type = "ext4";
    mnt_flags = "ro,barrier=1,inode_readahead_blks=8";
    fsmgr_flags = "wait,verify";
    };
    };
    };
    };
    

    把这段代码删掉

    5.把dt.txt打包回dtb

    dtc -O dtb -I dts -o dtb dt.txt
    

    最后一步打包boot

    ./magiskboot --repack boot.img
    

    打包完成后会在目录下生成一个新文件new_boot.img

    把这个文件替换刷机包里的boot.img

    刷机包处理完毕,剩下的按正常流程刷入即可。

    相关文章

      网友评论

        本文标题:Dualbootpatcher副系统为android 8.1时无

        本文链接:https://www.haomeiwen.com/subject/czovfftx.html