Dualbootpatcher副系統(tǒng)為android 8.1時(shí)無(wú)法啟動(dòng)的解決方案

03-22

chenxiaolong終于有消息了,他正在努力適配安卓8,敬請(qǐng)期待
圖片發(fā)自簡(jiǎn)書App

建了一個(gè)tg群,歡迎py
https://t.me/dualbootpatcher


03-12
今天又試了一下omni,解壓ramdisk之后找不到fstab跟int.qcom,我會(huì)繼續(xù)研究這個(gè)問題


本人小白不懂代碼,都是照葫蘆畫瓢,參考鏈接:
https://github.com/chenxiaolong/DualBootPatcher/issues/845#issuecomment-372010564
有不對(duì)的地方歡迎斧正。目前我只初步測(cè)試了los15.1正常刷入啟動(dòng),但有個(gè)問題就是相機(jī)fc,我不知道問題出在哪里,歡迎大神指點(diǎn)。

準(zhǔn)備工作:

安裝termux

安裝mt文件管理器

安裝magisk

提取boot

打開要刷的ROM,提取出boot.img
然后復(fù)制到
/data/magisk
打開termux

su
cd /data/magisk

解包boot

./magiskboot --upack boot.img

解包之后有兩個(gè)文件需要我我們操作:

ramdisk.cpio 和 dtb

我們先處理ramdisk.cpio

1.解開ramdisk.cpio

./magiskboot --cpio ramdisk.cpio extract

會(huì)有很多文件,不要慌要操作的只有這兩個(gè):

fstab.qcom和int.qcom.rc
(說實(shí)話這個(gè)代碼我不會(huì)用,按理說

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

可以單獨(dú)解出fstab,但是每次都是全部解壓,不知道問題出在哪,如果有知道的大佬歡迎留言指點(diǎn)一下。)

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

圖片發(fā)自簡(jiǎn)書App

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

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

弄好了之后格式如下:


圖片發(fā)自簡(jiǎn)書App

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.在安卓手機(jī)上裝個(gè)Linux(安裝配置教程略,可以看我的安裝教程)

http://www.itdecent.cn/p/961957ee53d0

2.安裝device-tree-compiler

sudo apt-get install device-tree-compiler

3.解包dtb

(Linux可能讀取不到/data/magisk目錄,可以把dtb文件復(fù)制到sdcard目錄操作,弄完之后再?gòu)?fù)制回去)

dtc -O dts -I dtb -o dt.txt dtb
圖片發(fā)自簡(jiǎn)書App

這里我們可以注意到,有一堆warning,我不知道是啥原因,也不知道相機(jī)無(wú)法啟動(dòng)跟這個(gè)是否有關(guān),但是dt.tx是解出來(lái)了。原教程就是這樣寫的,也沒多說。

4.這時(shí)候在目錄下可以發(fā)現(xiàn)一個(gè)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

打包完成后會(huì)在目錄下生成一個(gè)新文件new_boot.img

把這個(gè)文件替換刷機(jī)包里的boot.img

刷機(jī)包處理完畢,剩下的按正常流程刷入即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容