The reason to restore the images is to make sure the soon to be inactive slot is stock for the next OTA update.Finally, I don't see why Magisk should be uninstalled before OTA on these A/B devices.
The reason to restore the images is to make sure the soon to be inactive slot is stock for the next OTA update.Finally, I don't see why Magisk should be uninstalled before OTA on these A/B devices.
I know that VERY well - I said that you disk-dump the boot img manually ti restore stockThe reason to restore the images is to make sure the soon to be inactive slot is stock for the next OTA update.
F2fs loopback fixes were around in 2017... Huawei and Motorola were slow to fix kernel bug and seems loopback module and other fixes were needed for devices produced till late 2018... I believe Pixel fixed this in their kernels earlier...Your discussion with @pndwal is getting very interesting.
Sorry if I did not properly catch-up the problem but some thoughts you (both) may think of:
AFAIK, problem with Systemless hosts applies only to (Pixel) devices with f2fs System/SAR - if your System is ext4 filesystem type, no problem.
You can check the filesystem type by eeading (before unrooting) /vendor/etc/fstab.*
No; Uninstall Magisk, Complete Uninstall does this, but Restore Images doesn't touch Magisk configuration files... It does:Second, Uninstall Magisk (with/without Restore images) would uninstall all modules (incl. Systemless hosts) - wouldn't it?
In that case, manually uninstalling Systemless hosts before that step would not make any difference
by 'restoring partitions modified by Magisk back to stock from backups made at install in order to pass pre-OTA block verifications' however...make sure the soon to be inactive slot is stock for the next OTA update
Basically because 1) delta OTA won't start if pre-OTA block verifications fail, and 2) boot (and other?) partition(s) has/have been altered by Magisk, so this will bork incremental update even on A/B since inactive slot patching is generated as a function of original active slot data and updated bytes from OTA...Third, if I understand correctly, you are afraid now that due to Delta OTA, you cannot extract the new boot.img to be able to patch.
Also, you say that although you apply Uninstall Magisk (with Restore Images) before OTA but without rebooting, that you are still running root after the Delta OTA
Well, in that case you can disk-dump the Boot from that inactive slot, after the Delta OTA finishes.
For disk-dump you need root - you say you still have it (if I understood properly).
You need to know what's your current slot, hence execute (all from Terminal) and before starting OTA:
getprop ro.boot.slot_suffix
Suppose it returns _b, that means that before OTA, your active slot is B and that your OTA (full or incremental) would apply tothe inactive slot A
After the (incremental) OTA, disk-dump the boot_a.img (ie Boot img from the just OTA updated inactive A slot):
su
dd if=/dev/block/bootdevice/by-name/boot_a of=/sdcard/Download/boot img
You can patch now that boot.img (disk-dumped to Download folder on your Internal memory) by Patch method from the Magisk app
Finally, you need to disk-dump the patched img back to the still inactive slot A:
dd if=/sdcard/Download/<PATCHED IMG> of=/dev/block/bootdevice/by-name/boot_a
And then you are ready to reboot - reboot will switch from the slot B to slot A, that was just OTA updated with Magisk already patched and flashed to it's Boot partiition
---
Finally, I don't see why Magisk should be uninstalled before OTA on these A/B devices.
And this is also the case with what he been doing! - Uninstall, Restore Images also leaves all this intact...I know it's safer for many reasons but if you have full control of the situation (understanding how things work, modules you had installed and those potentially incompatible with the OTA), you could instead:
- Restore manually the stock boot.img by disk-dumping before OTA
- Disable only the critical modules before OTA
- After OTA updating and patching/disk-dumping the boot.img (in the still inactive slot) and after rebooting (where the updated slot now becomes active), you will boot and Magisk will be up and running with all (not-disabled) modules, previously granted root, DenyList) - it saves you a lot of time configuring all that once again.
Ie, Magisk database, modules, everything is on /data/adb and therefore it's not affected by OTA
I think you should be able to use Install to Inactive Slot to 'preserve Magisk after installation' on your A/B Xiaomi whenever an OTA arrives... There are clearly some anomalies w/ OnePlus, but generally the method is not restricted to Pixels. PWWell, suggestions above are not by the Bible (TJW), but we should be able also to think and act out-of-the-box. And generally I like and did experiment a lot with the disk-dumping (I don't have Pixel and incremental OTA but anyway)
Duplicated of topjohnwu/Magisk#5788I tried data/ADB/magisk/ ./magisk32 --remove-modules, but that just caused the device to reboot, and didn't change the bootloop.
Maybe I'm misunderstanding your frame of reference, but if "next OTA update" means a future update, after the one you are trying to accept now, then I think the state of the currently-active-soon-to-be-inactive slot will be ignored in that not yet released future OTA update.The reason to restore the images is to make sure the soon to be inactive slot is stock for the next OTA update.
You taking the current update depends on if you "restore images" the last time you updated. Because the inactive slot is the one taking the update. Not the current active one.Maybe I'm misunderstanding your frame of reference, but if "next OTA update" means a future update, after the one you are trying to accept now, then I think the state of the currently-active-soon-to-be-inactive slot will be ignored in that not yet released future OTA update.
If by "next OTA update" you meant the update you are currently trying to accept, then excuse the ring.
Yes, the inactive slot will receive the update. But what it receives is a combination of the active slot and the OTA update. That's why its so important that you return the active slot to the state expected by the people who issued the update. cf. @pndwal's notes.You taking the current update depends on if you "restore images" the last time you updated. Because the inactive slot is the one taking the update. Not the current active one.
Yes, by "next" I meant v5.Yes, the inactive slot will receive the update. But what it receives is a combination of the active slot and the OTA update. That's why its so important that you return the active slot to the state expected by the people who issued the update. cf. @pndwal's notes.
If you can download a file-set containing a full image of the updated ROM, then you can burn that to either slot. The only problem would be if the official update installer refuses to run unless it is satisfied with the "current" state.
In the case of an incremental update, which consists of records like "replace bytes 17 to 42 with these 92 new bytes", you can't even make sense of the update without the right starting state.
My quibble was with the word "next": if you are currently running v3, and are about to take v4, when you referred to being ready for the "next OTA update", did "next" mean v4 or v5?
Good catch!... John says 'The reason to restore the images' is as a prerequisite for available ('next') OTA...Maybe I'm misunderstanding your frame of reference, but if "next OTA update" means a future update, after the one you are trying to accept now, then I think the state of the currently-active-soon-to-be-inactive slot will be ignored in that not yet released future OTA update.
If by "next OTA update" you meant the update you are currently trying to accept, then excuse the ring.
https://github.com/topjohnwu/Magisk/blob/master/docs/ota.md#prerequisitesWhen an OTA is available, first go to (Magisk app → Uninstall → Restore Images)...
This will restore partitions modified by Magisk back to stock from backups made at install in order to pass pre-OTA block verifications. This step is required before doing any of the following steps written below!
You taking the current update depends on if you "restore images" the last time you updated. Because the inactive slot is the one taking the update. Not the current active one.
But you are confusing ('messing') things a bit... v3 (inactive with a modified boot) will NOT fail the checks and cause a v5 OTA not to install! - The whole inactive 'slot' can in fact be blank and the OTA will succeed...Yes, by "next" I meant v5.
If you are taking the v4, then currently active is v3 and inactive is v2. You need to restore v3 before installing v4, because when you take v5 v3 will be in inactive with a modified boot and that will fail checks and not install. Unless I am messing something.
https://source.android.com/devices/tech/ota/ab#update-engineA/B system updates use a background daemon called update_engine to prepare the system to boot into a new, updated version. This daemon can perform the following actions:
• Read from the current slot A/B partitions and write any data to the unused slot A/B partitions as instructed by the OTA package.
• Call the boot_control interface...
• Run a post-install program from the new partition...
https://source.android.com/devices/tech/ota/tools#incremental-updatesAn incremental update is an OTA package that contains binary patches to data already on the device. Packages with incremental updates are typically smaller as they don't need to include unchanged files. In addition, as changed files are often very similar to their previous versions, the package only needs to include an encoding of the differences between the two files.
https://source.android.com/devices/tech/ota/ab/ab_implement#configurationDuring incremental or delta updates, the binary data from the current slot is used to generate the data in the new slot.
https://github.com/topjohnwu/Magisk/blob/master/docs/ota.md#ota-upgrade-guidesyou HAVE to make sure you haven't modified an read-only partitons yourself (such as /system or /vendor) in any way. Even remounting the partition to rw will tamper block verification!!
So I was missing things. Thanks!Good catch!... John says 'The reason to restore the images' is as a prerequisite for available ('next') OTA...
https://github.com/topjohnwu/Magisk/blob/master/docs/ota.md#prerequisites
But you are confusing ('messing') things a bit... v3 (inactive with a modified boot) will NOT fail the checks and cause a v5 OTA not to install! - The whole inactive 'slot' can in fact be blank and the OTA will succeed...
The active slot is NOT updated to accommodate a future OTA... Rather, data from active slot is used to generate images to be written to inactive slot in combination with data (binary patches) from the newly available OTA as has been explained... So the active slot is updated to accommodate the current/available OTA...
Of course, Restore Images simply restores current (active) slot to pre-magisk* images using image(s) from /data/magisk_backup_xxxxxxx*, but this is essential for current OTA...
Later OTA's will likewise rely on whatever slot is active at the time, NOT on the inactive slot being updated... In fact, this can be empty / blank / completely erased or corrupt and OTA will still succeed!
Details:
https://source.android.com/devices/tech/ota/ab#update-engine
https://source.android.com/devices/tech/ota/tools#incremental-updates
As mentioned, A/B update engine builds images for inactive slot using original block-verified images from active slot.
https://source.android.com/devices/tech/ota/ab/ab_implement#configuration
*Nb. This further caveat from John is worth noting:
https://github.com/topjohnwu/Magisk/blob/master/docs/ota.md#ota-upgrade-guides
PW
missing; not messing
Dyslexia, man.
Pobody's nerfect... MԀ
I most definitely do not claim to be nor think I am. LOL. Strangely enough I have a BS from uni in Comp Sci, even though I have dyslexia.
For future reference:I'm stuck in a bootloop due to a module I installed (foxyboot?). I can boot normally with the stock boot.img and another boot image that gives me ADB root access.
I triedbut the device never established an ADB connection. So then I used the boot image that gives me ADB root, and I deleted /data/ADB/modules and modules_update. That didn't help. I tried data/ADB/magisk/ ./magisk32 --remove-modules, but that just caused the device to reboot, and didn't change the bootloop.Code:adb wait-for-device shell magisk --remove-modules
I can't install zips via TWRP currently.
Is it possible for me to just remove all the ADB files on the device eMMC and reinstall magisk manager? Where else is magisk storing files other than /data/ADB ?
I am experiencing the same issue on my LG G7 ThinQ. I am able to install the Magisk v25.1 app but after the app install, the Magisk v25.1 app does not open. I just see the Magisk mask/face logo. I upgraded from v24.3. I'm able to downgrade back to Magisk v24.3 without problems.I just installed Magisk v25.1 on my LG V20 H990DS with stock oreo, and success without having kernel issues. But i can't opened the app itself (stuck on logo), but when downgrading the app to v23.0. It can be opened.
If Magisk is stuck on the splash screen:I am experiencing the same issue on my LG G7 ThinQ. I am able to install the Magisk v25.1 app but after the app install, the Magisk v25.1 app does not open. I just see the Magisk mask/face logo. I upgraded from v24.3. I'm able to downgrade back to Magisk v24.3 without problems.
Known issue. A fix has been merged. You can use the Debug app, revert back to 27001 or wait until 27003 is released.I'm now having a problem hiding the TJW Magisk 27002 app ...
I finally was able to resurrect my old Pixel 5. It's running stock A11 and was running TJW Magisk 26004 with no problem.
The Magisk manager was showing that the upgrade to 27002 was ready for installation, and so I did the following:
(1) Unhide Magisk
(2) Update Magisk (27002 was listed)
(3) After Magisk manager restarted, I did Direct Update to 27002, including reboot
(4) Magisk 27002 indeed came up properly after reboot.
(5) Tried to perform Hide The Magisk App.
I entered the arbitrary name for hiding, and I clicked "OK". But the hiding never took place.
I rebooted again, to see if perhaps that's necessary, and I repeated the hiding attempt by adding the same arbitrary name, and I again clicked "OK". But the hiding still didn't take place.
I searched my device, and there is no app nor shortcut with that arbitrary name. I also tried other, different arbitrary names, but after clicking "OK", the hiding still didn't take place for any name I chose.
What am I missing?
Only v27000 is Stable. (and Beta). v27001 and v27002 are Canary or DebugIs the Magisk 27001 APK/zip still available anywhere? I'd like to downgrade, but I can only find 27000 on Github and 27002 via update. I don't want to go to Canary in case the mounting changes break anything, or Debug as I hear the extra logging etc. causes performance issues (correct me if I'm wrong).
Yep, I told you several times that you need Recovery mode (selected) for your Ramdisk=No device; instructions for this are also clear in official Installation Instruction page too, but apparently you have not been trying to follow official instructions, so it's no real surprise you've messed up firmware too... Please take *extra* care when modding as there are simply so many variables and pitfalls!Direct Install with recovery mode checked worked for me. You were right.
After I flashed wrong CSC firmware my baseband and EMEIs disappeared. Now I have updated bootloader and I cant to flash original CSC firmware anymore. Any ideas how to restore baseband, EMEIs or it is too late?
Known problem with 27002, the debug version doesn't have the problem with hiding, read back to see the discussion about itI'm now having a problem hiding the TJW Magisk 27002 app ...
I finally was able to resurrect my old Pixel 5. It's running stock A11 and was running TJW Magisk 26004 with no problem.
The Magisk manager was showing that the upgrade to 27002 was ready for installation, and so I did the following:
(1) Unhide Magisk
(2) Update Magisk (27002 was listed)
(3) After Magisk manager restarted, I did Direct Update to 27002, including reboot
(4) Magisk 27002 indeed came up properly after reboot.
(5) Tried to perform Hide The Magisk App.
I entered the arbitrary name for hiding, and I clicked "OK". But the hiding never took place.
I rebooted again, to see if perhaps that's necessary, and I repeated the hiding attempt by adding the same arbitrary name, and I again clicked "OK". But the hiding still didn't take place.
I searched my device, and there is no app nor shortcut with that arbitrary name. I also tried other, different arbitrary names, but after clicking "OK", the hiding still didn't take place for any name I chose.
What am I missing?
Run magisk -c from adb shell and see what version it reports.I actually updated the app from the app itself before doing my OTA upgrade so it get the version 27 of magisk, I tried installing that one again I had in my downloaded folder. But I also downloaded again the app from github.
I do have root, I've modified the boot file with magisk, so I'm not sure what to do now. I'll try installing an older version. But as you see of the screenshot from app manager, I don't know how the app is installed and removed almost immediately. At first I thought it was caused by an android 14 new security change.