Related
The Problem
TLDR: In Oreo ROMs, i.e. Android 8.0/8.1, DualBoot Patcher no longer works, as patched ROMs/kernels will get stuck on Android logo screen(for the Axon 7, it's the 'ZTE, POWERED BY android' screen), and never boot up.
In Oreo(Android 8.0/8.1), Google introduced a new function to fstab, which is early mounting specific partitions. The purpose was so that Android can boot up faster, by ensuring that essential partitions like /system and /vendor are mounted first and the boot process will not be held back by delays in non-essential things like setting up apps. More details can be found here. So the important changes that affect DualBoot Patcher are: 1) There's an important file 'fstab.qcom', which lists all the partitions that Android can use, that got shifted from the '/' directory(the root partition/ramdisk, Android 7.x and below) to the '/system/vendor/etc' directory(in Android 8.x) 2) In addition, another file 'init.qcom.rc', once found in the '/' directory too(in Android 7.x and below), is now shifted to '/system/vendor/etc/init/hw' directory(in Android 8.x) 3) Because of 1), 'init.qcom.rc' now believes that 'fstab.qcom' is in '/system/vendor/etc' and not '/', and so it asks Android to read 'fstab.qcom' from '/system/vendor/etc' 4) In the 'fstab.qcom' file, there are entries for all partitions except /system(and /vendor for Treble devices). For these 2 partitions, they are now found in the dtb(short for Device Tree Binary). How does this affect DualBoot Patcher? 1) DualBoot Patcher expects that 'fstab.qcom' is still in '/' directory(correct me if I'm wrong), so it fails to find this file in Android 8.x ROMs/kernels 2) DualBoot Patcher expects that '/system' is still defined in 'fstab.qcom', which is not the case. Below are the exact changes that Google made(in the case of our Axon 7), note the red parts(the changes):
fstab.qcom(the strike means those lines are now removed/gone)
Code:
/dev/block/bootdevice/by-name/recovery /recovery emmc defaults defaults
[STRIKE][COLOR="red"]/dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1,discard wait[/COLOR][/STRIKE]
init.qcom.rc
Code:
on fs
wait /dev/block/platform/soc/${ro.boot.bootdevice}
symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
mount_all [COLOR="Red"]/vendor/etc/fstab.qcom[/COLOR]
dtb(converted into dts with dtc)
Code:
fstab {
compatible = "android,fstab";
vendor {
compatible = "android,vendor";
dev = "/dev/block/platform/soc/7464900.sdhci/by-name/vendor";
type = "ext4";
mnt_flags = "ro,barrier=1,discard";
fsmgr_flags = "wait";
status = "disabled";
};
[COLOR="red"]system {
compatible = "android,system";
dev = "/dev/block/platform/soc/624000.ufshc/by-name/system";
type = "ext4";
mnt_flags = "ro,barrier=1,discard";
fsmgr_flags = "wait";
status = "ok";
};[/COLOR]
};
The Solution
There are 3 changes to make for each ROM/kernel: 1) Edit fstab.qcom, dtb and init.qcom.rc 2) Add fstab.qcom and init.qcom.rc back into the ramdisk(i.e. edit the ramdisk) 3) Delete '/system/vendor/etc/fstab.qcom' and '/system/vendor/etc/init/hw/init.qcom.rc'. There are 2 ways you can do this, either manually, or with my script(Work in progress, my sincere apologies)
Method 1: Manually modify ROM and kernel
Files you will need:
Note: the 'files.zip' attached below contains 'dtc', 'magiskboot', 'mkbootimg', 'unpackbootimg'. Extract it to get these files. Feel free to scan them for viruses, I assure you they are clean and not viruses for sure
- boot.img you want to patch
- init.qcom.rc, fstab.qcom from the ROM you are patching
- magiskboot binary(found in /data/magisk or /data/adb/magisk if you installed magisk, otherwise download the one attached below)
- dtc binary(download the one attached below)
If you are patching Hellsgate or Schwifty, you also need:
- unpackbootimg, mkbootimg(attached below)
- Image.gz-dtb(from the flashable zip of the kernel)
Note: You also need a boot.img, but this will be from the ROM you are flashing/have flashed(extract from the ROM zip)
Preliminary step: Prepare the files
- Before you start, I would recommend copying all the files into a directory where you can chmod/execute binaries. I personally recommend '/data/local/tmp', or '/cache'(anywhere in /cache is fine). The guide below assumes that all these files are in the same directory. Also, chmod all the binaries, for example, do this in your working directory:
Code:
chmod 0755 *
- Also, I would recommend backing up 'fstab.qcom' and 'init.qcom.rc'
Additional Step: If you wish to patch kernels like Hellsgate and Schwifty
- First, unpack your ROM's stock kernel:
Code:
./unpackbootimg -i boot.img
- Then, repack the kernel as a Hellsgate/Schwifty kernel:
Code:
./mkbootimg --kernel Image.gz-dtb --ramdisk boot.img-ramdisk.gz --cmdline "androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 [email protected] androidboot.selinux=permissive buildvariant=userdebug" --base 80000000 --pagesize 4096 --kernel_offset 00008000 --ramdisk_offset 01000000 --second_offset 00f00000 --tags_offset 00000100 --os_version 8.1.0 --os_patch_level [COLOR="red"]2018-06[/COLOR] --hash sha1 --output ./boot-new.img
- Note: For the red part in the above command, adjust for the month that your desired kernel is released. E.g. If your desired kernel was released in 2018 June, you put '2018-06', while if it was released in 2018 July, you put '2018-07', and so on.
- From now on, take note that everytime I mention 'boot.img', for you, it will be 'boot-new.img'(I'll bold each one that you have to change to 'boot-new.img')
Step 1: Unpack the boot.img
Code:
./magiskboot --unpack [COLOR="red"]boot.img[/COLOR]
- Now you get 3 additional files: 1) kernel(not editing this) 2) ramdisk.cpio(gonna edit this) 3) dtb(also editing this)
Step 2: Decompile the dtb
Note: dtb is a BINARY so don't open it with a text editor
Code:
./dtc -I dtb -O dts -o dt.txt dtb
- Another note: It will probably give you a lot of warnings, but it's harmless so just ignore them(I've edited multiple kernels and tested them myself, no bugs so far)
Step 3: Edit the decompiled dts
- Open the created 'dt.txt' with a root text editor(I use Simple Explorer, you can use FX file explorer, or ES file explorer)
- Search for this word:
Code:
/system
. You should find this line:
Code:
dev = "/dev/block/platform/soc/624000.ufshc/by-name/system";
- Remove the entire chunk quoted below:
Code:
system {
compatible = "android,system";
dev = "/dev/block/platform/soc/624000.ufshc/by-name/system";
type = "ext4";
mnt_flags = "ro,barrier=1,discard";
fsmgr_flags = "wait";
status = "ok";
};
- Take note that you will have to remove 1 '};'(at the bottom of the above quote), nothing more, nothing less
Step 4: Recompile the dtb
Code:
./dtc -I dts -O dtb -o dtb1 dt.txt
- Again, it might give you a lot of warnings but just ignore them
- Also, rename the new dtb so that magiskboot will compile this new dtb into your modified kernel:
Code:
mv dtb dtb.bak
Code:
mv dtb1 dtb
Step 5: Edit fstab.qcom
- Open 'fstab.qcom' file with a root text editor
- Add the following red line, below the line about '/recovery', above the line about '/data':
Code:
/dev/block/bootdevice/by-name/recovery /recovery emmc defaults defaults
[COLOR="red"]/dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1,discard wait[/COLOR]
/dev/block/bootdevice/by-name/userdata /data f2fs nosuid,nodev,noatime,nodiratime,data_flush wait,check,encryptable=/dev/block/bootdevice/by-name/cryptkey,quota,formattable[/CODE]
- Save the 'fstab.qcom' file
Step 6: Edit init.qcom.rc
- Open 'init.qcom.rc' with a root text editor
- Look for this line:
Code:
mount_all /vendor/etc/fstab.qcom
- Change it into this line:
Code:
mount_all [COLOR="red"]/fstab.qcom[/COLOR]
- Save the 'init.qcom.rc' file
Step 7: Modify kernel ramdisk
-First do:
Code:
./magiskboot --cpio ramdisk.cpio 'add 0640 fstab.qcom fstab.qcom'
- Then do:
Code:
./magiskboot --cpio ramdisk.cpio 'add 0750 init.qcom.rc init.qcom.rc'
Step 8: Create a new, DBP-compatible boot.img
Code:
./magiskboot --repack [COLOR="red"]boot.img[/COLOR]
- You will get a new boot.img, named 'new-boot.img'
Step 9: Install the modified kernel
- First, flash the boot.img(using TWRP or Flashify or another tool)
- Then, delete these 2 files:
Code:
/system/vendor/etc/fstab.qcom
and
Code:
/system/vendor/etc/init/hw/init.qcom.rc
- Note: Make sure you do not reboot after installing boot.img and before deleting the above 2 files
That's it! If you completed all the steps above properly, you should have a working DBP-compatible boot.img that you can put in a flashable zip and patch with DualBoot Patcher
if you don't know how to make a flashable zip to install your modified boot.img, you can use the one I attached below(named 'flashable-kernel-template.zip'). What you have to do is download it, then extract it and make a new zip containing your modified boot.img(basically, create a new zip with the 'META-INF' folder from my zip and your 'boot.img'. The zip automatically deletes
Code:
/system/vendor/etc/fstab.qcom
and
Code:
/system/vendor/etc/init/hw/init.qcom.rc
so you won't need to do this yourself
Note: If you are using my flashable zip, note that you have to rename your modified 'new-boot.img' to 'boot.img' before you compress it into a new flashable zip. Otherwise you will get an error when flashing in recovery
Note 2: Avoid using the flashable zip template for non-modified kernels, it can render your ROM unable to boot!
Method 2: Work in Progress
Method 2: Use my automated script
Please do leave feedback on whether this guide is clear, and also if any of the steps are not working for you! Happy Dualbooting
Sources:
Github Problem Discussion
Problem Solution
Reserved 1
Reserved 2
This is going to be useful. Personally I just want to run custom O as primary and N as a secondary. Mainly because O doesn't have properly working Daydream and for a couple of games that aren't compatible anymore with O. If I'm only trying to attach LOS14.1 as secondary I wouldn't need to patch anything extra O from this guide? Though I can't install the patched ROM it gives an error.
Edit: Oops missed reading from the old guide the primary ROM needs to be stock. I guess I need to patch then. Do I need Linux to do all the editing?
Infy_AsiX said:
This is going to be useful. Personally I just want to run custom O as primary and N as a secondary. Mainly because O doesn't have properly working Daydream and for a couple of games that aren't compatible anymore with O. If I'm only trying to attach LOS14.1 as secondary I wouldn't need to patch anything extra O from this guide? Though I can't install the patched ROM it gives an error.
Edit: Oops missed reading from the old guide the primary ROM needs to be stock. I guess I need to patch then. Do I need Linux to do all the editing?
Click to expand...
Click to collapse
Actually yeah, if your custom O is primary you don't need to patch it(the kernel, I mean)! You still need to patch the ROM so that it doesn't wipe /system when you OTA update your custom O, which means you need an unpatched custom O stock kernel flsshable zip(sorry for the mouthful). But if you don't OTA update then no need The last I tried, using stock ROM as secondary worked for me though? Didn't find any issues. But I might just be lucky, be careful if you try that.
As for your last question, nope all these commands are meant for Terminal Emulator app on an Android phone! Just use the binaries in the attached files.zip, they are all compiled for Android and do not work on Linux desktops. All the best If you need help just ask here!
haoyangw said:
Actually yeah, if your custom O is primary you don't need to patch it(the kernel, I mean)! You still need to patch the ROM so that it doesn't wipe /system when you OTA update your custom O, which means you need an unpatched custom O stock kernel flsshable zip(sorry for the mouthful). But if you don't OTA update then no need The last I tried, using stock ROM as secondary worked for me though? Didn't find any issues. But I might just be lucky, be careful if you try that.
As for your last question, nope all these commands are meant for Terminal Emulator app on an Android phone! Just use the binaries in the attached files.zip, they are all compiled for Android and do not work on Linux desktops. All the best If you need help just ask here!
Click to expand...
Click to collapse
Figured out the error after dual boot patch on LOS14.1 was my mistake in modifying the update-script incorrectly. Nothing to do with N/O/this guide. However now I tried installing it to data slot so dirty flashing and restoring the system partition won't be complicated. The issue is trying to boot primary it vibrates five times at ZTE logo and goes to recovery. Trying to switch to primary in dualbootutilities gives an error something like (from memory) data/media/0/boot.img cannot be found. I guess DBP installed even on data changes the structure of boot and primary on O doesn't fit so can't boot. Just want your advice, it probably means patching O when O is primary is necessary then?
Infy_AsiX said:
Figured out the error after dual boot patch on LOS14.1 was my mistake in modifying the update-script incorrectly. Nothing to do with N/O/this guide. However now I tried installing it to data slot so dirty flashing and restoring the system partition won't be complicated. The issue is trying to boot primary it vibrates five times at ZTE logo and goes to recovery. Trying to switch to primary in dualbootutilities gives an error something like (from memory) data/media/0/boot.img cannot be found. I guess DBP installed even on data changes the structure of boot and primary on O doesn't fit so can't boot. Just want your advice, it probably means patching O when O is primary is necessary then?
Click to expand...
Click to collapse
Oh you mean you flashed custom O, and after that you flashed you N data slot ROM? You're partially right, if you flash your data slot ROM after a non-patched ROM, you'll have the data slot kernel installed i.e. the LOS 14.1 stock kernel, which cannot boot an O ROM. This is because DBP works by storing multiple kernels on your /data/media/0/Multiboot folder, when you 'switch ROMs' actually what happens is DBP flashes the kernel of the ROM you're switching to. Obviously a N kernel cannot boot an O ROM so you cannot boot. Unfortunately, DBP only stores kernels that you flash with patched zips(i.e. if you flash a DBP-patched ROM/kernel zip, only then will DBP store the kernel in its custom Multiboot folder). So because you didn't patch your O primary ROM, its kernel is not saved and you cannot use DBPUtilities. What you can do is either make your own non-patched kernel zip file for your O ROM's stock kernel that you flash everytime you want to switch to primary, or you patch your primary ROM and then you can use DBPUtilities. However B01 kernel has a slightly different precedure for adding DBP support that this guide doesn't explain(I'm sorry) I'll update it when I find time. Don't follow this guide to patch B01! It won't boot, I tried But I know what changes to make when modifying a B01 kernel don't worry
lost this post when I pressed reply. This RR-O Kranoner 20180511 has the fstab.qcom and init.qcom.rc still on root / directory. But patching only DBP patching hellsgate kernel after having LOS14.1 on data slot 1 still has the same issue. Alternatively installing the mod boot.img allows primary to boot but after using DBP utilities to switch to data slot 1 (onscreen says success) the data slot 1 gets stuck on ZTE logo with 5 vibrates instead. Even tried flashing the final Beastmode 14.1 kernel DBP patched to data slot 1 after switched, five vibrates to recovery.
Lost Magisk install after step nine. Just reinstalling it is fine. Did you forget the flashable zip template by the way?
Infy_AsiX said:
lost this post when I pressed reply. This RR-O Kranoner 20180511 has the fstab.qcom and init.qcom.rc still on root / directory. But patching only DBP patching hellsgate kernel after having LOS14.1 on data slot 1 still has the same issue. Alternatively installing the mod boot.img allows primary to boot but after using DBP utilities to switch to data slot 1 (onscreen says success) the data slot 1 gets stuck on ZTE logo with 5 vibrates instead. Even tried flashing the final Beastmode 14.1 kernel DBP patched to data slot 1 after switched, five vibrates to recovery.
Lost Magisk install after step nine. Just reinstalling it is fine. Did you forget the flashable zip template by the way?
Click to expand...
Click to collapse
Oh hmm did you install the right version of Hellsgate for your data slot 1? I think LOS 14.1 needs a very old version(R2.1? I think). I'm not sure about beastmode kernel though, I'm sorry And thanks for the reminder about the zip template, o dear I forgot about it I'll upload it now!
haoyangw said:
Oh hmm did you install the right version of Hellsgate for your data slot 1? I think LOS 14.1 needs a very old version(R2.1? I think). I'm not sure about beastmode kernel though, I'm sorry And thanks for the reminder about the zip template, o dear I forgot about it I'll upload it now!
Click to expand...
Click to collapse
Sorry that post was worded poorly due to rushed recalling. I meant RR-O primary had Hellsgate kernel patched by this guide, which shouldn't be necessary as the two issue ROM files are still on root directory (patching with DBP instead didn't work as I posted before)? Still had to install the mod boot.img to manage to boot but then data slot 1 LOS14.1 won't boot. I was going to try patching with this guide the kernel I intend for LOS14.1 but it's lacking the image.gz-dtb file, I'd only patched it with DBP and that should be enough as it's an N ROM. I guess I could use an older hellsgate suited to N but Beastmode was updated til a little later so I'd prefer it.
Thanks for the zip template. Just checking, it's not actually needed if I can just install the modded boot.img directly in TWRP anyway?
Infy_AsiX said:
Sorry that post was worded poorly due to rushed recalling. I meant RR-O primary had Hellsgate kernel patched by this guide, which shouldn't be necessary as the two issue ROM files are still on root directory (patching with DBP instead didn't work as I posted before)? Still had to install the mod boot.img to manage to boot but then data slot 1 LOS14.1 won't boot. I was going to try patching with this guide the kernel I intend for LOS14.1 but it's lacking the image.gz-dtb file, I'd only patched it with DBP and that should be enough as it's an N ROM. I guess I could use an older hellsgate suited to N but Beastmode was updated til a little later so I'd prefer it.
Thanks for the zip template. Just checking, it's not actually needed if I can just install the modded boot.img directly in TWRP anyway?
Click to expand...
Click to collapse
Oh you're right, if the 2 files are still present you don't have to patch using this guide. Just checking, what version of hellsgate are you using for primary? And yes you're right! N ROMs/kernels don't have to be patched with this guide for DBP I'm not very sure why you can't boot and get the 5 led flashes though
As for your last question, you're right no need this zip in you install using TWRP.
haoyangw said:
Oh you're right, if the 2 files are still present you don't have to patch using this guide. Just checking, what version of hellsgate are you using for primary? And yes you're right! N ROMs/kernels don't have to be patched with this guide for DBP I'm not very sure why you can't boot and get the 5 led flashes though
As for your last question, you're right no need this zip in you install using TWRP.
Click to expand...
Click to collapse
The last B32+10 hellsgate v3.0. Dunno but the guide did manage to allow primary to boot whereas it wouldn't before. Both N hellsgate and beastmode are lacking the image.gz-dtb so I can't patch them. I guess I'll try stock next, I really wanted KCAL to use on Daydream tho ::crying:. If that fails I might try stock N as primary when I'm about to clean flash update O.
Infy_AsiX said:
The last B32+10 hellsgate v3.0. Dunno but the guide did manage to allow primary to boot whereas it wouldn't before. Both N hellsgate and beastmode are lacking the image.gz-dtb so I can't patch them. I guess I'll try stock next, I really wanted KCAL to use on Daydream tho ::crying:. If that fails I might try stock N as primary when I'm about to clean flash update O.
Click to expand...
Click to collapse
Oh dear I'm sorry to hear Just checking are you using LOS 14.1 builds from 2018? I might know what's wrong
haoyangw said:
Oh dear I'm sorry to hear Just checking are you using LOS 14.1 builds from 2018? I might know what's wrong
Click to expand...
Click to collapse
yeah latest official
Sent from my Xperia Z3C using XDA Labs
Infy_AsiX said:
yeah latest official
Click to expand...
Click to collapse
Oh I probably should add this in the OP, Nougat builds with 2018 Security patch level behaves the same way as Oreo ROMs, they also have the init.qcom.rc and fstab.qcom in /system. So I would believe that latest LOS 14.1 also needs the exact same patching method as Oreo(if you can check and confirm this that'll be great). I haven't analysed the Nougat hellsgate and beastmode kernels so I'm not sure how to patch them, I'll let you know asap when I find out something. Sorry about the mistake, I didn't realise there's still a Nougat ROM being regularly updated
Great thanks for the guide and mods. Sorry for the late follow up, it did take awhile to get working. After some confusion and trouble with figuring out how some O ROMs still don't use the early mount method. While N ROM and kernels don't in fact need patching by this guide. Also B12 can't be dual booted with any N ROMs due to bootstack incompatibility (flashing bootstack after a DBP install doesn't seem to take effect to help). My target kernel was Hellsgate 3 for B32+10, which oddly needed fstab.qcom modded per guide but not init.qcom.rc all despite the kernel being for non early mount ROMs. Yes really, after all of that figured out, I got it working!
I'm glad to report it works as intended with the right setup. Now with B12 ROMs currently all affected by the wired audio cpu extra 50% load bug, using B32+10 is a working fallback. The trade off being apparently dual-sim issues (reported by some as present, some not), no GCam HDR support and improper hi-res audio support (though hi-fi DAC was already working and hi-res is debatably useless). In any case if dual booting O with N is desired B32+10 is the latest supported available with above stated differences. This is the only way presently for using a stable-ish O ROM and N's fully functioning Daydream and a couple of AAA games deprecated after N such as Fahrenheit: Indigo Prophecy and Jade Empire. Now I can also play around testing Kranoner's N Vertex EAS supported ROM and kernel.
I've attached the B32+10 Hellsgate 3 modded per this guide using Kranoner's 180511 RR-O for anyone interested in getting it straight working without the mess. A few pointers. The zip still needs needs to be patched to primary/secondary/whatever chosen slot before use. Magisk has to be reinstalled after installing the modified kernel, primary Magisk zip does not need DB patching. Using secondary slot, to fill up like huge wasted space 6GB system partition is smart if you're not installing many apps.
Sent from my ZTE Axon 7 using XDA Labs
////[removed]////
Tried this with my device and it didn't work. Alcatel Tetra with 8.1 Stock. Runs GSI images up to 10. MT6739 SOC. Doesn't boot if you simply remove the entry. Couldn't even change ro to rw and have it boot. I was able to remove verify and that was about it. I was able to get the fstab and init file migrated back to ramdisk and it booted once i modified the init file to point to the right locations. I got DBP supporting my treble device properly. The last step is to figure out how to disable/remove the system early mount. This topic seems dead but I figure it's worth a try. I've been working on this Project on and off for 2+ months now and would really like to hit paydirt.
you do realize this is an Axon7 thread , yes?
mrrocketdog said:
you do realize this is an Axon7 thread , yes?
Click to expand...
Click to collapse
I'm Sure he's not lost .
U realize this is a place Dev's take ideas from each other and try to port it to other devices Right?
PREREQUISITE
- adb enabled [developer options]
- root [Magisk/SU]
- original /vendor partition [flashed with official update/firmware]
- File/Root Explorer
- adb for Windows [Minimal ADB and Fastboot, provided]
- UKA [Unpacker Kitchen for Android] - Send me a PM
- USB cable always connected
Reserved
You can do the same steps for the other logical partitions [system & product]
At the end you do :
System
tune2fs -L / /data/local/UnpackerSystem/system.new.img
tune2fs -O ^read-only /data/local/UnpackerSystem/system.new.img
tune2fs -O ^has_journal /data/local/UnpackerSystem/system.new.img
adb shell
su
dd if=/sdcard/system.img of=/dev/block/dm-2
(just copy/past to avoid errors !)
Reboot your phone right away !
Product
must be renamed vendor because the Magisk Module still doesn't support this name yet ... just rename it vendor.img before taking any action ... and after creating your image, do :
tune2fs -L product /data/local/UnpackerSystem/vendor.new.img
tune2fs -O ^read-only /data/local/UnpackerSystem/vendor.new.img
tune2fs -O ^has_journal /data/local/UnpackerSystem/vendor.new.img
NOW you can rename it product.img
adb shell
su
dd if=/sdcard/product.img of=/dev/block/dm-0
Reboot your phone right away !
"Houston, we have problem!"
Now what? Is this only for MIUI users? I have flashed Nusantara ROM right now...
Also it is possible, that you can create "default" RW images for surya, upload them somewhere on cloud (one RW system please! medium rare, thank you ... 12.0.7 is fine for me...)
... but anyway, thanks for your hard work...
BTW @brigudav already created flashable RW vendor for Surya, can that be done also for system?
jeryll said:
"Houston, we have problem!"
View attachment 5232079
Now what? Is this only for MIUI users? I have flashed Nusantara ROM right now...
Also it is possible, that you can create "default" RW images for surya, upload them somewhere on cloud (one RW system please! medium rare, thank you ... 12.0.7 is fine for me...)
... but anyway, thanks for your hard work...
BTW @brigudav already created flashable RW vendor for Surya, can that be done also for system?
Click to expand...
Click to collapse
Check your Mount Namespace Mode in Magisk Manager
No it's not only for miui, it's for all roms ! (btw i'm on LOS 17.1 ... and i never used MIUI)
Yes, you can do that for the 3 logical partitions ... this tutorial is for all devices with dynamic paritition aka super.img (not limited to poco x3 nfc !!!)
I will put a clean vendor.img later (with RW enabled and AVB-Verity Disabled)
I will put a modded version of Magisk 20.4 too if someone would use it (like me)
janhammer504 said:
Check your Mount Namespace Mode in Magisk Manager
No it's not only for miui, it's for all roms ! (btw i'm on LOS 17.1 ... and i never used MIUI)
Click to expand...
Click to collapse
- thanks for the answer, but I must say I'm unable to continue, because I'm unable to install UKA module on A11 ROM
- regardless of Mount Namespace Mode - I checked all three - with reboot - result is the same
- I'm also unable to install magisk 20.4 on A11 ROM - and with v21.0 or higher - UKA will not install
- so Id say this guide is for now useable only for A10 users
- I will test A10 ROM in a few days
- maybe there is a problem with my phone, but I reflashed full recovery version of latest MIUI before flashing custom rom together with encryption disabler, so my super partition should be cleaned up
- so using unencrypted storage could be another problem for this to work?
jeryll said:
- thanks for the answer, but I must say I'm unable to continue, because I'm unable to install UKA module on A11 ROM
- regardless of Mount Namespace Mode - I checked all three - with reboot - result is the same
- I'm also unable to install magisk 20.4 on A11 ROM - and with v21.0 or higher - UKA will not install
- so Id say this guide is for now useable only for A10 users
- I will test A10 ROM in a few days
- maybe there is a problem with my phone, but I reflashed full recovery version of latest MIUI before flashing custom rom together with encryption disabler, so my super partition should be cleaned up
- so using unencrypted storage could be another problem for this to work?
Click to expand...
Click to collapse
Hi, flash an official MIUI for your device.
Do the dirty job and save your vendor.img
Reflash your rom !
(i have already uploaded a clean vendor.img here)
I close this thread too since a lot of features have been added to this work ... and since there are many disrespectful developers-like around who steal my work and give no credit !
Check my custom vendor thread to learn more about this work !
If you have any question, send me a PM, i will check first if you are not a troll : if you get no answer from me, then understand by yourself !
@janhammer504 Hi. For the sake of the community it's always sad to see someone taking their work from XDA.
If you've got issues with other people using your work without credit here on XDA you can always reach out to someone on the moderator team for help. Or better yet, one of us on the Developer Relations team. We can help you solve any disputes and make sure you get proper credit.
You can find a list of moderators here:
https://docs.google.com/document/d/1lK5rP103OL3StU3q9iqwX9LU_k8XABeSQIAT3EHCqgM/pub
PHP:
/*
* I'm not responsible for bricked devices, dead SD cards, thermonuclear war, or you getting fired because the alarm app failed (like it did for me...).
* Please do some research if you have any concerns about features included in the products you find here before flashing it!
* YOU are choosing to make these modifications, and if you point the finger at me for messing up your device, I will laugh at you.
* Your warranty will be void if you tamper with any part of your device / software.
* Same statement for XDA.
*/
FEATURES
. The first, the one and the only custom vendor for dynamic partition in the world : I challenge you all to show me who did it before !
. If you find any custom rom with similar work since the first release of this one : it is just a copied and a stolen work [fake Google roms +++] !!!
. Compatible with all regions / basebands / firmwares / device variants
. Works with All AOSP/CAF based ROMs [10] & [11], Experimental, Official & Unofficial [TESTED]
. May works on fake Google roms but i don't take any responsibility
. Mount RO/RW available with no bootloop after reboot ! [Magisk/SU required]
. SafetyNet passed
. Full test passed : audio, ril, wifi, bt, fm radio, camera, sensors, fp scanner, nfc, ...
. All known hardware issues on custom roms are fixed : camera, wifi, bt, hdr playback, chrome ... and overheating !
. Custom Kernel with stock zImage [untouched +++]
IMPORTANT !
. NO firmware change is needed from the user side, so don't repeat this question many times ... just read up again !
. Formatting /data is required when you flash this vendor the first time +++
. Never go back to the previous versions due to the possible build.fingerprint change [Old releases are automatically removed] +++
. Dirty Update : always delete with file/root explorer or in TWRP this folder :
/data/property and reboot
You must delete these files & folders in /product partition from your custom rom
[File/Root explorer needed] :
/product/vendor_overlay/29/etc/audio
/product/vendor_overlay/29/etc/audio_policy_configuration.xml
/product/vendor_overlay/29/etc/audio_policy_engine_configuration.xml
/product/vendor_overlay/29/lib/soundfx
/product/vendor_overlay/29/lib64/soundfx
&
/product/vendor_overlay/29/etc/wifi
/product/vendor_overlay/29/overlay
& finally
/product/vendor_overlay/29/etc/qdcm_calib_data_nt36672c_huaxing_fhd_video_mode_dsi_panel.xml
/product/vendor_overlay/29/etc/qdcm_calib_data_nt36672c_tianma_fhd_video_mode_dsi_panel.xml
Already included in this vendor ... and since i'm the original author !
[ OPTIONAL ]
If you have the madness and the paranoia with security like Google, you can still relock /vendor again to the stock RO state ... But you will not be able to mount /vendor RW again even with root until you reflash the provided vendor.zip again !
How to [terminal or adb shell] :
su
tune2fs -O verity /dev/block/dm-1
*******
!!!
MIUI Users : sorry for you, but this is for custom ROMS " ONLY "
TROLLS & NOOBS, stay away ... Please !
!!!
Prerequisite:
POCO X3 NFC = surya
POCO X3 [no NFC] = karna
No matter where you live : india, china, russia, europe, usa or africa ... !
Kernel Source [Prebuilt] : Here
Created : 2021-02-27
Latest Update : 2021-03-21
DOWNLOAD
RESERVED for "Changelog"
Update : [2021-03-21] Highly Recommended !
- overlay folder [/vendor] : secure & total remove ... R.I.P forever !
You can now remove it from here too ... with no issue :
/product/vendor_overlay/29/overlay
[As always : no /data formatting is required if done in the previous builds !]
Update : [2021-03-20]
fix compatibility with all custom roms [10] & [11] +++ :
- build : preserve AVB structure [R/W still available in root mode]
- tune2fs : restore some stock feature flags [dir_index, huge_file, extra_isize]
- fstab [kernel & vendor] : small update
- vendor selinux : property_contexts fix
- build.prop : clean-up
Update : [2021-03-18]
clean-up & rework from scratch :
. all audio config [over 20 files +++]
. all media_codecs config
. new mixer_paths
[=> Exclusive]
- true resampling fix : r.i.p audio crackling and all audio issues in UX, Dialer, emulators ... etc [forever]
- improve audio & camera recording
- audio/video playback [Speaker, Headphones & BT] : Hi-Fi quality, loud & noiseless
[but first, you must delete these files with your File/Root Explorer:
/product/vendor_overlay/29/etc/audio
/product/vendor_overlay/29/etc/audio_policy_configuration.xml
/product/vendor_overlay/29/etc/audio_policy_engine_configuration.xml
/product/vendor_overlay/29/lib/soundfx
/product/vendor_overlay/29/lib64/soundfx]
Update : [2021-03-12]
- move to global 12.0.8.0 as firmware base [boot & vendor]
- ramdisk :
. disable mi_thermald and re-enable again thermal-engine
[on all custom roms : mi_thermald breaks the proximity sensor & suspend service in deepsleep => avoid hand wave gesture & AOD to work properly !]
. clean up & update
- vendor_selinux : add more camera permissions in property_contexts
- media_codecs : remove unused .xml
- ueventd.rc : rework from scratch
Update : [2021-03-07]
- ramdisk :
. update cpuset & schedtune settings
. improve memory multitasking
. make that "damn" fingerprint truly responsive
. enable UFS powersaving
. some clean-up & disable MIUI audio service
- media_profiles :
. rework from scratch
. add slow motion profile support : up to 1080p/120 fps & 720p/960 fps
. front video camera : add 4K support
- build.prop :
=> update parameters for : camera, ril, performance, playback ... and more
Update : [2021-03-05]
- rework from scratch : init.qcom.sh & init.qcom.post_boot.sh
- ramdisk : clean-up and add init.qcom.power.rc
. fix CPU instability : set 300 mHz as CPU minimum frequency for all cores / update schedutil governor parameters
. cpu_boost : improve touch responsiveness
. add built-in display power saving [for both huaxing & tianma panels]
- vendor permissions : rebuild from scratch / fix wronlgy settled paths (by Xiaomi) in some qti.xml
- camera : rework from scratch ISO/lowlight config
- remove dummy hbtp folder ... since there is no binary to load or device specific config
- targetconfig : update CoreCtlCpu to [0,6]
- build.prop : clean up and move NFC parameters to build_surya.prop
- [Bonus] : Wi-Fi signal improved (x2) !!!
. 2.4 Ghz : 144 => 300
. 5 GHz : 433 => 866
[but first, you must delete this folder, with your File/Root Explorer :
/product/vendor_overlay/29/etc/wifi ]
Update : [2021-03-01]
- update msm_irqbalance.conf
- update audio_effects.conf & remove audio_effects.xml
- universal vbmeta & vbmeta_system added
Update : [2021-02-27]
- initial release
- rework all build.prop (vendor & odm) from scratch
- debloated from unused MIUI folders, files & configs
- Kernel :
. enforcing selinux by default
. workqueue enabled in cmdline => better dynamic refresh rate handling by the CPU & stellar deep-sleep
. fstab reworked from scratch
the image you made is for enable rw or not?
my phone is poco x3 nfc surya
janhammer504 said:
To make things clear :
POCO X3 NFC = surya
POCO X3 (no NFC) = karna
No matter where you live (india, china, russia, europe, usa or africa) ... Choose the right vendor.img for your device !
[Both images were tested by me]
Click to expand...
Click to collapse
please share the surya image
aallii2 said:
please share the surya image
Click to expand...
Click to collapse
check the DOWNLOAD link up !
janhammer504 said:
check the DOWNLOAD link up !
Click to expand...
Click to collapse
tnx bro i'm downloading n i'll test
its not working after restart didnt boot n just go to recovry
aallii2 said:
its not working after restart didnt boot n just go to recovry
Click to expand...
Click to collapse
Wich firmware version you had just before flashing ???
The vendor provided must match the firmware version that you have !!!
janhammer504 said:
PREREQUISITE
- adb enabled (developer options)
- root (Magisk/SU)
- adb for Windows (Minimal ADB and Fastboot, provided)
- USB cable always connected
LIVE Flashing :
adb shell
su
dd if=/sdcard/vendor.img of=/dev/block/dm-1
View attachment 5232189
Reboot your phone right away ... then use your File/Root Explorer to test the mount RO/RW option and reboot again to check that there is no bootloop !
(Optional)
If you have the madness and the paranoia with security like Google, you can still re-enable AVB/Verity again ... But you will not be able to mount /vendor RW again even with root until you reflash the provided vendor.img again !
tune2fs -O verity /dev/block/dm-1
Check the full tutorial here to build your own custom vendor ... if you want !
DOWNLOAD
Click to expand...
Click to collapse
... so, I can confirm that this is indeed working nicely, flashed RW vendor for Surya, just for the sake of the functionality, because I'm not sure about benefits I can get from writeable vendor (forgive my ignorance)...
... Thank you very much for your hard work...
just FYI I did flash it in Ofox recovery in built-in terminal, and also directly from running Android via Termux, so you don't need PC for it, just saying...
jeryll said:
... so, I can confirm that this is indeed working nicely, flashed RW vendor for Surya, just for the sake of the functionality, because I'm not sure about benefits I can get from writeable vendor (forgive my ignorance)...
... Thank you very much for your hard work...
just FYI I did flash it in Ofox recovery in built-in terminal, and also directly from running Android via Termux, so you don't need PC for it, just saying...
Click to expand...
Click to collapse
i use adb shell because terminal is too small for me, and for making tutorial.
the benefit ??? well there are a bunch of fixes to do in /vendor... check here for example
(the images i provided are clean with no modification, so i let developers or users doing their own modifications)
janhammer504 said:
Wich firmware version you had just before flashing ???
The vendor provided must match the firmware version that you have !!!
Click to expand...
Click to collapse
india 12.0.9
magisk 21.4
jeryll said:
... so, I can confirm that this is indeed working nicely, flashed RW vendor for Surya, just for the sake of the functionality, because I'm not sure about benefits I can get from writeable vendor (forgive my ignorance)...
... Thank you very much for your hard work...
just FYI I did flash it in Ofox recovery in built-in terminal, and also directly from running Android via Termux, so you don't need PC for it, just saying...
Click to expand...
Click to collapse
hey bro how you flashed in orangefox?
i tried but this happened:
sh: adb: command not found
aallii2 said:
hey bro how you flashed in orangefox?
i tried but this happened:
sh: adb: command not found
Click to expand...
Click to collapse
in recovery adb not needed, just use
dd if=/sdcard/vendor.img of=/dev/block/dm-1
now i cant install any rom :
updater process ended with error 7
pls help
aallii2 said:
now i cant install any rom :
updater process ended with error 7
pls help
Click to expand...
Click to collapse
O.M.G
it looks like you never used terminal
this is not a flashable file, it's a command line.
open terminal in your recovery to do that.
or use adb shell
janhammer504 said:
O.M.G
it looks like you never used terminal
this is not a flashable file, it's a command line.
open terminal in your recovery to do that.
or use adb shell
Click to expand...
Click to collapse
jeryll said:
in recovery adb not needed, just use
dd if=/sdcard/vendor.img of=/dev/block/dm-1
Click to expand...
Click to collapse
Now this came:
write error: Operation not permitted
jeryll said:
in recovery adb not needed, just use
dd if=/sdcard/vendor.img of=/dev/block/dm-1
Click to expand...
Click to collapse
Now this came:
write error: Operation not permitted
Use Minimal ADB and Fastboot.zip, it's the simplest and the fastest way.
Unzip and click on Minimal ADB and Fastboot.exe
type :
adb shell
su
It works like terminal in Windows. You can't go wrong !
Follow the instructions (1 post) !
aallii2 said:
india 12.0.9
magisk 21.4
Click to expand...
Click to collapse
wtf man, you should pick vendor.img from karna folder not surya !
janhammer504 said:
Use Minimal ADB and Fastboot.zip, it's the simplest and the fastest way.
Unzip and click on Minimal ADB and Fastboot.exe
type :
adb shell
su
It works like terminal in Windows. You can't go wrong !
Follow the instructions (1 post) !
Click to expand...
Click to collapse
i installed 12.0.7.0 global with magisk 22.0 then flashed vendor.img v12.0.7.0 but when restarted it stucked n i pressed power .phone boot but root explorer can't mount rw n just added shell in magisk
Easy to way to install a GSI on your Samsung A21s without installing a Virtual Linux.
NFC, Screen Cast, and USB MTP unfortunately is not working with AOSP 10 and 11. Backup all your data.
If don't want to make one, download my Pre-Rooted GSIs below and flash.
*Unlock your Bootloader and wipe your data using your stock recovery and quickly boot to Download Mode and flash the super.tar on Odin (AP):
Android 10 -> Download (MediaFire)Android 11 -> Download (MediaFire)Android 11 - AOSP 11.0 v306 -> Download (MEGA) - NEWAndroid 10 Screenshots
1. Requirements:
1. Unlock your Bootloader2. Download and Install a Linux Subsystem -> Ubuntu Subsystem -> "Tutorial How to install Linux Subsystem on Windows 10 | or search how to"3. GSI Android 10 A/B Gapps -> Download only the "arm64, A/B". I recommend releases from Treble Experimentations AOSP like "system-roar-arm64-ab-gapps.img.xz". 4. Samsung.zip -> There's all needed tools and files - Odin, 7-Zip ZS etc...
- Download Samsung.zip and extract the folder "Samsung" to your desktop, and extract your chosen GSI using to this folder.
- Download your stock firmware and extract the super.img.lz4 file from AP_A217XXXXXXXXXX_XXX_XXXX_REV00_XXX.tar.md5 with 7-Zip ZS.
- Now extract super.img.lz4 using 7-Zip ZS (don't use 7-zip) to Samsung folder. Rename super.img to stock_super.img.
2. Convert stock_super.img to raw_super.img:Open CMD ad use this codes:
cd C:\Users\%USERNAME%\Desktop\Samsungsimg2img.exe stock_super.img raw_super.img
Wait...
3. Extract raw_super.img:On your Samsung folder, use SHIFT key of your keyboard + right click and click at "Open Linux Shell Here", wait a little, and use this code and wait the extraction:
./lpunpack --slot=0 raw_super.img
*If the extraction is completed, verify if there's this files odm.img, system.img, vendor.img and product.img. Delete or rename system.img and product.img, then extract your GSI to Samsung folder and rename the xxx.img file to system.img.
4. Pack all the files and Flash:No math here! Just use this code on Terminal and wait (Ignore errors like "Partition system, vendor, odm will resize..." or "Invalid sparce file format at header magic...")
./lpmake --metadata-size 65536 --super-name super --metadata-slots 2 --device super:5557452800 --group main:3819597824 --partition system:readonly:3340271616:main --image system=./system.img --partition vendor:readonly:474976256:main --image vendor=./vendor.img --partition odm:readonly:4349952:main --image odm=./odm.img --sparse --output ./super.img
Wait....
Use 7-Zip to archive the super.img to .tar (super.tar) and flash it on Odin (AP) and wait the phone to boot.
Unlock your Bootloader and wipe your data using your stock recovery and quickly boot to Download Mode and flash the super.tar on Odin (AP):
Notes:I not responsible for any damage on your phone. If anything occurs, just flash your stock regional firmware through Odin.
If this tutorial did not work, you did something wrong or your phone is not supported. Don't forget to wipe your data through Recovery, it's very important.
If you want Magisk working on your A21s I recommend you to report to an issue Topjohnwu at Github.
Dear Wer99,
I Successfully Made A Non-Rooted GSI By Following Your [Tutorial / Guide],
I'm Wondering How Could I Add SuperSU & Root Permission In It
GSI : [CherishOS, AOSP10, AOSP11]
Wer99 said:
Easy to way to install a GSI on your Samsung A21s without installing a Virtual Linux.
NFC, Screen Cast, and USB MTP unfortunately is not working with AOSP 10 and 11. Backup all your data.
If don't want to make one, download my Pre-Rooted GSIs below and flash.
*Unlock your Bootloader and wipe your data using your stock recovery and quickly boot to Download Mode and flash the super.tar on Odin (AP):
Android 10 -> Download (MediaFire)Android 11 -> Download (MediaFire)Android 11 - AOSP 11.0 v306 -> Download (MEGA) - NEWAndroid 10 Screenshots
1. Requirements:
1. Unlock your Bootloader2. Download and Install a Linux Subsystem -> Ubuntu Subsystem -> "Tutorial How to install Linux Subsystem on Windows 10 | or search how to"3. GSI Android 10 A/B Gapps -> Download only the "arm64, A/B". I recommend releases from Treble Experimentations AOSP like "system-roar-arm64-ab-gapps.img.xz". 4. Samsung.zip -> There's all needed tools and files - Odin, 7-Zip ZS etc...
- Download Samsung.zip and extract the folder "Samsung" to your desktop, and extract your chosen GSI using to this folder.
- Download your stock firmware and extract the super.img.lz4 file from AP_A217XXXXXXXXXX_XXX_XXXX_REV00_XXX.tar.md5 with 7-Zip ZS.
- Now extract super.img.lz4 using 7-Zip ZS (don't use 7-zip) to Samsung folder. Rename super.img to stock_super.img.
2. Convert stock_super.img to raw_super.img:Open CMD ad use this codes:
cd C:\Users\%USERNAME%\Desktop\Samsungsimg2img.exe stock_super.img raw_super.img
Wait...
3. Extract raw_super.img:On your Samsung folder, use SHIFT key of your keyboard + right click and click at "Open Linux Shell Here", wait a little, and use this code and wait the extraction:
./lpunpack --slot=0 raw_super.img
*If the extraction is completed, verify if there's this files odm.img, system.img, vendor.img and product.img. Delete or rename system.img and product.img, then extract your GSI to Samsung folder and rename the xxx.img file to system.img.
4. Pack all the files and Flash:No math here! Just use this code on Terminal and wait (Ignore errors like "Partition system, vendor, odm will resize..." or "Invalid sparce file format at header magic...")
./lpmake --metadata-size 65536 --super-name super --metadata-slots 2 --device super:5557452800 --group main:3819597824 --partition system:readonly:3340271616:main --image system=./system.img --partition vendor:readonly:474976256:main --image vendor=./vendor.img --partition odm:readonly:4349952:main --image odm=./odm.img --sparse --output ./super.img
Wait....
Use 7-Zip to archive the super.img to .tar (super.tar) and flash it on Odin (AP) and wait the phone to boot.
Unlock your Bootloader and wipe your data using your stock recovery and quickly boot to Download Mode and flash the super.tar on Odin (AP):
Notes:I not responsible for any damage on your phone. If anything occurs, just flash your stock regional firmware through Odin.
If this tutorial did not work, you did something wrong or your phone is not supported. Don't forget to wipe your data through Recovery, it's very important.
If you want Magisk working on your A21s I recommend you to report to an issue Topjohnwu at Github.
Click to expand...
Click to collapse
I tried all of this and I even went as far as trying to literally change the filesystem UUID and the filesystem of system.img as well, I detected some issues when booting a GSI and it's that the filesystem and the filesystem UUID's had to match (filesystem had to be EXT2 for some reason), and after I did all of that, I flashed the super.img to my phone but after a few seconds of it trying to boot (10 seconds after it's past the unlocked bootloader screen) it just reboots and kicks me to fastboot mode, a friend of mine told me that if it booted to fastboot it meant that the bootloader was able to pass instructions to the OS but failed, hence why it kicked me to fastboot, and after that I tried with different GSIs and neither of them worked sadly.
Also in the attributes I'd recommend changing "readonly" to "none" so that the partitions are Read/Write from super.img, after flashing super.img, just edit the fstab file (located in "/etc/fstab" for recovery) and replace "ro" in the mount points with "rw" so that you can read and write data to them, the point of this is to make the partitions read and write so that you can edit them and install anything you'd like, and that's exactly the reason I did it.
After some time we got a modded magisk apk that does work and doesn't have the legacy device detection issue that it had before, due to the phone using dynamic partitions and using a ramdisk, Magisk would detect the device as legacy and it would use "SAR_init", something that the device doesn't needs and because the boot process fails, it reboots.
Also, before I realized that you could make the partitions inside super.img read/write, I would usually use readonly and it wouldn't work either, I'd appreciate if you could help me with this.
Wer99 said:
Easy to way to install a GSI on your Samsung A21s without installing a Virtual Linux.
NFC, Screen Cast, and USB MTP unfortunately is not working with AOSP 10 and 11. Backup all your data.
If don't want to make one, download my Pre-Rooted GSIs below and flash.
*Unlock your Bootloader and wipe your data using your stock recovery and quickly boot to Download Mode and flash the super.tar on Odin (AP):
Android 10 -> Download (MediaFire)Android 11 -> Download (MediaFire)Android 11 - AOSP 11.0 v306 -> Download (MEGA) - NEWAndroid 10 Screenshots
1. Requirements:
1. Unlock your Bootloader2. Download and Install a Linux Subsystem -> Ubuntu Subsystem -> "Tutorial How to install Linux Subsystem on Windows 10 | or search how to"3. GSI Android 10 A/B Gapps -> Download only the "arm64, A/B". I recommend releases from Treble Experimentations AOSP like "system-roar-arm64-ab-gapps.img.xz". 4. Samsung.zip -> There's all needed tools and files - Odin, 7-Zip ZS etc...
- Download Samsung.zip and extract the folder "Samsung" to your desktop, and extract your chosen GSI using to this folder.
- Download your stock firmware and extract the super.img.lz4 file from AP_A217XXXXXXXXXX_XXX_XXXX_REV00_XXX.tar.md5 with 7-Zip ZS.
- Now extract super.img.lz4 using 7-Zip ZS (don't use 7-zip) to Samsung folder. Rename super.img to stock_super.img.
2. Convert stock_super.img to raw_super.img:Open CMD ad use this codes:
cd C:\Users\%USERNAME%\Desktop\Samsungsimg2img.exe stock_super.img raw_super.img
Wait...
3. Extract raw_super.img:On your Samsung folder, use SHIFT key of your keyboard + right click and click at "Open Linux Shell Here", wait a little, and use this code and wait the extraction:
./lpunpack --slot=0 raw_super.img
*If the extraction is completed, verify if there's this files odm.img, system.img, vendor.img and product.img. Delete or rename system.img and product.img, then extract your GSI to Samsung folder and rename the xxx.img file to system.img.
4. Pack all the files and Flash:No math here! Just use this code on Terminal and wait (Ignore errors like "Partition system, vendor, odm will resize..." or "Invalid sparce file format at header magic...")
./lpmake --metadata-size 65536 --super-name super --metadata-slots 2 --device super:5557452800 --group main:3819597824 --partition system:readonly:3340271616:main --image system=./system.img --partition vendor:readonly:474976256:main --image vendor=./vendor.img --partition odm:readonly:4349952:main --image odm=./odm.img --sparse --output ./super.img
Wait....
Use 7-Zip to archive the super.img to .tar (super.tar) and flash it on Odin (AP) and wait the phone to boot.
Unlock your Bootloader and wipe your data using your stock recovery and quickly boot to Download Mode and flash the super.tar on Odin (AP):
Notes:I not responsible for any damage on your phone. If anything occurs, just flash your stock regional firmware through Odin.
If this tutorial did not work, you did something wrong or your phone is not supported. Don't forget to wipe your data through Recovery, it's very important.
If you want Magisk working on your A21s I recommend you to report to an issue Topjohnwu at Github.
Click to expand...
Click to collapse
Also, Just so you know, the recovery that we have is OrangeFox R11 which is currently an alpha build, thanks to magisk I was able to use the tool "dd" in termux to flash the recovery.img to /dev/block/by-name/recovery (aka the recovery partition) and this helped me bypass DL mode which is even worse now that I upgraded to U5 (I regret it and I tried downgrading from recovery instead of DL mode but the linux kernel itself protects the mmcblk0boot0 partition which is supposed to be the partition where the "BL" is located, and I tried flashing the sboot.bin file to that partition and it didn't work due to it being protected
Anyways back to the original topic, I don't know how but after flashing OrangeFox R11 with dd in android (I used su with magisk of course because), OrangeFox managed to boot with stock vbmeta and this build was supposedly built with A10's firmware in mind, not A11's firmware, so I have some hopes that flashing super.img from recovery might work if given the right vendor and firmware, I even flashed a vbmeta that was made for U3 from OrangeFox and it booted without any issues, oddly enough OneUI booted with that U3 vbmeta.img
LonelyCracker said:
Dear Wer99,
I Successfully Made A Non-Rooted GSI By Following Your [Tutorial / Guide],
I'm Wondering How Could I Add SuperSU & Root Permission In It
GSI : [CherishOS, AOSP10, AOSP11]
Click to expand...
Click to collapse
You don't need SuperSU anymore, There's already a fixed magisk for it, Here's the links:
[SHARING] HOW TO ROOT A21S STOCK ROM WITH MAGISK
Hello friends I just want to share how to root A21S stock rom in case anybody needs it: 1. Unlock bootloader 2. (On PC) Extract boot.img.lz4 from AP...tar file, then copy it to phone 3. (On phone) Install ZArchiver to extract boot.img from...
forum.xda-developers.com
[ROOT] Modified Magisk for Galaxy A21S (R)
It seems that the A21S hasn't had any root since it was released (other than pre-rooted GSI ROMS) When flashing Magisk, the phone went into bootloop, and the only way to fix it was to flash stock rom via Odin. After some analysis, it seems that...
forum.xda-developers.com
David112+ said:
You don't need SuperSU anymore, There's already a fixed magisk for it, Here's the links:
[SHARING] HOW TO ROOT A21S STOCK ROM WITH MAGISK
Hello friends I just want to share how to root A21S stock rom in case anybody needs it: 1. Unlock bootloader 2. (On PC) Extract boot.img.lz4 from AP...tar file, then copy it to phone 3. (On phone) Install ZArchiver to extract boot.img from...
forum.xda-developers.com
[ROOT] Modified Magisk for Galaxy A21S (R)
It seems that the A21S hasn't had any root since it was released (other than pre-rooted GSI ROMS) When flashing Magisk, the phone went into bootloop, and the only way to fix it was to flash stock rom via Odin. After some analysis, it seems that...
forum.xda-developers.com
Click to expand...
Click to collapse
Yeah I Know But I'm Just Interested In Making A Prerooted GSI
LonelyCracker said:
Yeah I Know But I'm Just Interested In Making A Prerooted GSI
Click to expand...
Click to collapse
What's the point of making a prerooted GSI with an outdated root method?
You can't even install modules with SuperSU
To David112+ :
In My Opinion, Prerooted GSI Is Way Better.
You Could See The Comparison I Made Here.
Also Making One GSI Could Gain Me Lots Of Experience.
So I Couldn't Think Of The Reason Why Not
Magisk Patched Stock [Firmware / ROM] Also Have It Own Problem,
Which You Could Find Here.
LonelyCracker said:
To David112+ :
In My Opinion, Prerooted GSI Is Way Better.
You Could See The Comparison I Made Here.
Also Making One GSI Could Gain Me Lots Of Experience.
So I Couldn't Think Of The Reason Why Not
Magisk Patched Stock [Firmware / ROM] Also Have It Own Problem,
Which You Could Find Here.
Click to expand...
Click to collapse
I don't think you've realized or checked the group of the phone but a load of people have already rooted their ROMs with Magisk and so far they have no problems, and still, everyone agrees that installing modules somewhere from the internet is the responsibility of the end user.
And I'm pretty sure that everyone agrees that magisk is the best root method, and even if you wipe data, you can just reinstall the Magisk apk to get the root prompt and finish setting it up, or better yet. use the systemizer module to systemize the magisk apk so that it's installed in system instead of data.
Making a prerooted GSI is just a waste of time, I'd rather just make normal GSI that's flashable on the phone and just install Magisk or systemize the Magisk APK.
I do agree that making a GSI flashable for the phone makes you gain a lot of experience but you're wasting your time into something that barely anyone is going to use, due to the fact that it has SuperSU which is old and outdated and most people prefer Magisk anyways because it's updated and not only that but you can pretty much install anything you'd like with the modules.
To David112+ :
Sorry To Disagree With You, I Was Trying To Acheive A Goal There .
My Goal Was To Get ADB (Android Debug Bridge) With "adb root" Working On Magisk Patched Stock [Firmware / ROM]. After Many Research & Attempt To Acheive That, I Gave Up... I Gained Some Knowledge There Too. I Know That Stock Rom Are For Production Purpose & I Can't Gain Root Access Using ADB (Android Debug Bridge).
Hopefully I Could Get Help Somewhere.
But Fun Fact Is...
I Water-Damaged My Phone
Question :
1.) Is It Possible To Make A Non Rooted GSI & Patch It With Magisk ? How ?
LonelyCracker said:
To David112+ :
Sorry To Disagree With You, I Was Trying To Acheive A Goal There .
My Goal Was To Get ADB (Android Debug Bridge) With "adb root" Working On Magisk Patched Stock [Firmware / ROM]. After Many Research & Attempt To Acheive That, I Gave Up... I Gained Some Knowledge There Too. I Know That Stock Rom Are For Production Purpose & I Can't Gain Root Access Using ADB (Android Debug Bridge).
Hopefully I Could Get Help Somewhere.
But Fun Fact Is...
I Water-Damaged My Phone
Question :
1.) Is It Possible To Make A Non Rooted GSI & Patch It With Magisk ? How ?
Click to expand...
Click to collapse
Custom ROMs should work with ADB root normally
2. To install Magisk just use the links that I shared in this post (https://forum.xda-developers.com/t/...d-gsis-for-samsung-a21s.4269227/post-84975373)
After upgrading to U5, I can't install these GSIs anymore. It bootloop all the times
To David112+ :
But Is Not Possible To Use ADB (Android Debug Bridge) On Magisk Patched Stock [Firmware / ROM]. What I Was Saying Is To Use "adb root" On Magisk Patched Stock [Firmware / ROM]
I'm Only Able To Use The Command "adb root" In Custom GSI Built By Wer99.
Not Every Custom Build GSI Are Prerooted.
Maybe You're Right Magisk Is Better Than Old Little SuperSU. But I Need "adb root" To Work With It
thatha said:
After upgrading to U5, I can't install these GSIs anymore. It bootloop all the times
Click to expand...
Click to collapse
If you have magisk with stock ROM, good news for you, I'll be working a guide in how to get a GSI installed as a magisk module, I tested this with ShapeShiftOS and I got as far as the boot animation of ShapeShiftOS, Once I was booted I checked ADB and sdcard was encrpyted and that's why it wasn't able to start correctly, it was just stuck in the google logo with a loading bar, I'm gonna try decrypting data, formatting and then installing the module
If this does work then I'll be releasing a guide in how to get a GSI of your preference working as a magisk module
Explanation: Thanks to Magisk's Magic Mount feature, I'm able to systemlessly swap the assets of OneUI with a Custom ROM's of my choosing, such as ShapeShiftOS
Edit: This idea is discarded, Because of the userdata partition being encrypted I can't use ShapeShiftOS, and even after decrypting I can't use it because OneUI gets stuck in "Starting android" when using the boot image with patched fstab and magisk
And if I download gsi android 11 through mediafire, will I have to do all this procedure? or just flash on odin? A21S ANDROID 11.
To Oroki:
These GSI Is Ready To Be Flashed.
LonelyCracker said:
To Oroki:
These GSI Is Ready To Be Flashed.
Click to expand...
Click to collapse
but will i have to do topic 2 and 3?
To Oroki :
Please Explain What Do You Mean By Topic 2 & 3
LonelyCracker said:
To Oroki :
Please Explain What Do You Mean By Topic 2 & 3
Click to expand...
Click to collapse
2. Converta stock_super.img em raw_super.img: e3. Extrato raw_super.img:
To Oroki :
Those Step You Provide Aren't Necessary Anymore
It's Patched Which Mean You Don't Have To Do Anything To It
Sorry For Late Reply
Hey, does anyone know how to get the propietary blobs out of the device? I'm kinda done with MIUI and i wanna try to compile some custom rom and maybe a legit twrp.
SanHelios said:
Hey, does anyone know how to get the propietary blobs out of the device? I'm kinda done with MIUI and i wanna try to compile some custom rom and maybe a legit twrp.
Click to expand...
Click to collapse
lol i am looking for the same
check this out
vamsi209 said:
lol i am looking for the same
check this out
Click to expand...
Click to collapse
what shall i check out?
SanHelios said:
what shall i check out?
Click to expand...
Click to collapse
Extracting proprietary blobs from LineageOS zip files | LineageOS Wiki
wiki.lineageos.org
SanHelios said:
Hey, does anyone know how to get the propietary blobs out of the device? I'm kinda done with MIUI and i wanna try to compile some custom rom and maybe a legit twrp.
Click to expand...
Click to collapse
Trying to look for the Chinese tool to flash the unofficial TWRP, once I manage to do that will try help on grabbing those needed proprietary blobs. May need guide on how to pull the blobs, am still a noob
dan079 said:
Trying to look for the Chinese tool to flash the unofficial TWRP, once I manage to do that will try help on grabbing those needed proprietary blobs. May need guide on how to pull the blobs, am still a noob
Click to expand...
Click to collapse
Me too... TWRP is tricky, since it can only be done by this OneInject-function of TWRP, but it's possible. I tried the 'current' unofficial release of TWRP for this, but all i got was a reboot to BL.
vamsi209 said:
Extracting proprietary blobs from LineageOS zip files | LineageOS Wiki
wiki.lineageos.org
Click to expand...
Click to collapse
yshalsager, who created the Firmware-script, told me the same.. here is his answer.
"
Hi,
Thanks for your words, glad to hear my work helps.
You can use LineageOS extract files script that will generate vendor tree for you. It is available in any device tree but you should use one of your device so it reads from its proprietary-files.txt or something.
"
Maybe LOS is closer than we think.
SanHelios said:
yshalsager, who created the Firmware-script, told me the same.. here is his answer.
"
Hi,
Thanks for your words, glad to hear my work helps.
You can use LineageOS extract files script that will generate vendor tree for you. It is available in any device tree but you should use one of your device so it reads from its proprietary-files.txt or something.
"
Maybe LOS is closer than we think.
Click to expand...
Click to collapse
niceee, so for mix 4, i extracted the twrp trees using this,
[SCRIPT] TWRP device tree generator
Create a TWRP-compatible device tree only from an Android recovery image (or a boot image if the device uses non-dynamic partitions A/B) of your device's stock ROM. It has been confirmed that this script supports images built starting from...
forum.xda-developers.com
setup the local repo for building twrp trees, using these
1. Installing the tools
A Python library/script to automatically generate TWRP-compatible device tree from a boot/recovery image - twrpdtgen/twrpdtgen
github-wiki-see.page
tried building but the device doesn't lunch after following the steps shown above,
Code:
http://www.hastebin.com/jonexiyowu.md
and one of the dev https://github.com/imjyotiraditya , helped me build an aospa rom for g8x,
now he is on to building twrp for our device odin.
if anyone has twrp trees, we can try geting aospa build ready for our device
vamsi209 said:
niceee, so for mix 4, i extracted the twrp trees using this,
[SCRIPT] TWRP device tree generator
Create a TWRP-compatible device tree only from an Android recovery image (or a boot image if the device uses non-dynamic partitions A/B) of your device's stock ROM. It has been confirmed that this script supports images built starting from...
forum.xda-developers.com
setup the local repo for building twrp trees, using these
1. Installing the tools
A Python library/script to automatically generate TWRP-compatible device tree from a boot/recovery image - twrpdtgen/twrpdtgen
github-wiki-see.page
tried building but the device doesn't lunch after following the steps shown above,
Code:
http://www.hastebin.com/jonexiyowu.md
and one of the dev https://github.com/imjyotiraditya , helped me build an aospa rom for g8x,
now he is on to building twrp for our device odin.
if anyone has twrp trees, we can try geting aospa build ready for our device
Click to expand...
Click to collapse
hey, i'm trying it right now... was able to manage a device tree from the latest weekly of the EU-rom. Repo is syncing right now for the aosp-twrp-11 repository.
U used the same script for the recovery trees?
vamsi209 said:
U used the same script for the recovery trees?
Click to expand...
Click to collapse
yes, i extracted it from the boot.img.
Update... build/envsetup.sh error, anyone any suggestions?
Update managed to get envsetup.sh to work, got following error messages
source build/envsetup.sh
including device/xiaomi/odin/vendorsetup.sh
COMMON_LUNCH_CHOICES: Befehl nicht gefunden.
COMMON_LUNCH_CHOICES: Befehl nicht gefunden.
lunch twrp_odin-eng
In file included from build/make/core/config.mk:291:
In file included from build/make/core/envsetup.mk:266:
build/make/core/product_config.mk:155: error: Can not locate config makefile for product "twrp_odin".
23:22:04 dumpvars failed with: exit status 1
WARNING: Trying to fetch a device that's already there
Traceback (most recent call last):
File "/home/dave/AOSP-Recovery/vendor/twrp/build/tools/roomservice.py", line 431, in <module>
fetch_device(device)
File "/home/dave/AOSP-Recovery/vendor/twrp/build/tools/roomservice.py", line 399, in fetch_device
git_data = search_gerrit_for_device(device)
File "/home/dave/AOSP-Recovery/vendor/twrp/build/tools/roomservice.py", line 86, in search_gerrit_for_device
device_data = check_repo_exists(git_data, device)
File "/home/dave/AOSP-Recovery/vendor/twrp/build/tools/roomservice.py", line 62, in check_repo_exists
raise Exception("{device} not found,"
Exception: odin not found,exiting roomservice
In file included from build/make/core/config.mk:291:
In file included from build/make/core/envsetup.mk:266:
build/make/core/product_config.mk:155: error: Can not locate config makefile for product "twrp_odin".
23:22:05 dumpvars failed with: exit status 1
** Don't have a product spec for: 'twrp_odin'
** Do you have the right repo manifest?
Anyone a good guess?
Did you had any luck, or any chance I can help?
Puksom said:
Did you had any luck, or any chance I can help?
Click to expand...
Click to collapse
well, i made some progress, but i failed again. I posted a thread in the official twrp forum. Maybe you might want to take a look at it.. thx.
Post in thread '[DEV]How to compile TWRP touch recovery' https://forum.xda-developers.com/t/dev-how-to-compile-twrp-touch-recovery.1943625/post-85686505
Puksom said:
Did you had any luck, or any chance I can help?
Click to expand...
Click to collapse
I'm a total beginner, so i might be wrong. But as far as i can tell, the makefiles of the extracted device tree need to be update or even completely rebuild.
Hi, it seems like I was able to execute the script successfully.
It didn't work on Windows because it got stuck on the execution of unpackimg.bat.
I ran it on Linux and it worked (after chmod 777 of boot.img). This is the command I ran:
python3 -m twrpdtgen -o ./odin ./boot.img
output:
Code:
TWRP device tree generator
Version 1.3.0
[INFO] Cloning AIK...
Done! You can find the device tree in odin/xiaomi/odin
I took boot.img from the latest MIUI 12.5.7.0 China Stable
Now I have what it seems to be the device tree (odin.zip) but I don't know what to do it it or what it is.
radoinc said:
Hi, it seems like I was able to execute the script successfully.
It didn't work on Windows because it got stuck on the execution of unpackimg.bat.
I ran it on Linux and it worked (after chmod 777 of boot.img). This is the command I ran:
python3 -m twrpdtgen -o ./odin ./boot.img
output:
Code:
TWRP device tree generator
Version 1.3.0
[INFO] Cloning AIK...
Done! You can find the device tree in odin/xiaomi/odin
I took boot.img from the latest MIUI 12.5.7.0 China Stable
Now I have what it seems to be the device tree (odin.zip) but I don't know what to do it it or what it is.
Click to expand...
Click to collapse
This is great, so we know this script works and does what it is supposed to do...
I checked the makefiles to see if there are any differences, but there are none. So it suggests that it doesn't matter, from which version you get the files from. I love, that the users of the Mi Mix 4 are more open so compiling than the community of the MI 11 Ultra is..
SanHelios said:
This is great, so we know this script works and does what it is supposed to do...
I checked the makefiles to see if there are any differences, but there are none. So it suggests that it doesn't matter, from which version you get the files from. I love, that the users of the Mi Mix 4 are more open so compiling than the community of the MI 11 Ultra is..
Click to expand...
Click to collapse
I'm trying to replicate your steps but I get the same "Can not locate config makefile for product "twrp_odin"." as you did above. In the other topic I see you managed to get past that step.
I see you get some output after executing envsetup.sh and it seems like this is related to the device tree.
Can you please share what you did with the device tree before attempting to compile twrp? I'd like to try myself but I can't find clear instructions.
radoinc said:
I'm trying to replicate your steps but I get the same "Can not locate config makefile for product "twrp_odin"." as you did above. In the other topic I see you managed to get past that step.
I see you get some output after executing envsetup.sh and it seems like this is related to the device tree.
Can you please share what you did with the device tree before attempting to compile twrp? I'd like to try myself but I can't find clear instructions.
Click to expand...
Click to collapse
Acutally i left it completely unchanged, the only thing i did was to change the repository. I deleted the aosp-repository and took the omni-twrp-repository
(https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni)
mkdir twrp
cd twrp
repo init -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-10.0
repo sync
after syncing was complete, i followed these instructions
4. Build TWRP from source
A Python library/script to automatically generate TWRP-compatible device tree from a boot/recovery image - twrpdtgen/twrpdtgen
github-wiki-see.page
SanHelios said:
Acutally i left it completely unchanged, the only thing i did was to change the repository. I deleted the aosp-repository and took the omni-twrp-repository
(https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni)
mkdir twrp
cd twrp
repo init -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-10.0
repo sync
after syncing was complete, i followed these instructions
4. Build TWRP from source
A Python library/script to automatically generate TWRP-compatible device tree from a boot/recovery image - twrpdtgen/twrpdtgen
github-wiki-see.page
Click to expand...
Click to collapse
Thanks! Now I managed to get the same result as you. The error seems to be raised by mkbootimg.py:
Python:
def write_header(args):
BOOT_IMAGE_HEADER_V1_SIZE = 1648
BOOT_IMAGE_HEADER_V2_SIZE = 1660
BOOT_MAGIC = 'ANDROID!'.encode()
if (args.header_version > 2):
raise ValueError('Boot header version %d not supported' % args.header_version)
To me it seems like this Omni repo includes old version of mkbootimg.py, because in the google repos I can see that the current version of this function looks like this:
Python:
def write_header(args):
if args.header_version > 4:
raise ValueError(
f'Boot header version {args.header_version} not supported')
if args.header_version in {3, 4}:
return write_header_v3_and_above(args)
It seems like Boot header version 3 was introduced with Android 11: https://source.android.com/devices/bootloader/boot-image-header
I think we can't do much with the Omnia repos until they get updated with current mkbootimg.
radoinc said:
Thanks! Now I managed to get the same result as you. The error seems to be raised by mkbootimg.py:
Python:
def write_header(args):
BOOT_IMAGE_HEADER_V1_SIZE = 1648
BOOT_IMAGE_HEADER_V2_SIZE = 1660
BOOT_MAGIC = 'ANDROID!'.encode()
if (args.header_version > 2):
raise ValueError('Boot header version %d not supported' % args.header_version)
To me it seems like this Omni repo includes old version of mkbootimg.py, because in the google repos I can see that the current version of this function looks like this:
Python:
def write_header(args):
if args.header_version > 4:
raise ValueError(
f'Boot header version {args.header_version} not supported')
if args.header_version in {3, 4}:
return write_header_v3_and_above(args)
It seems like Boot header version 3 was introduced with Android 11: https://source.android.com/devices/bootloader/boot-image-header
I think we can't do much with the Omnia repos until they get updated with current mkbootimg.
Click to expand...
Click to collapse
My question is, do the makefiles from the devicetree need to be adjusted or completely rebuild to android 11 parameters? I.e. rhe command "add_lunch_combo" is obsolete and "COMMAND_LUNCH_CHOICES" took its place..
Sorry in advance for this nooby questions...