General [Tutorial] [Magisk] Enabling 32-bit Support For Apps

Search This thread

nomfway

Member
Oct 29, 2022
27
9
BTW, I noticed after the initial setup of magisk (which require a reboot) the magisk app icon is hidden from app list somehow, have to reinstall on top of it to make it show again. And after that it shows this inside Magisk app
 

Attachments

  • Screenshot_20221124-012723[1].png
    Screenshot_20221124-012723[1].png
    154.8 KB · Views: 108
  • Like
Reactions: Namelesswonder

nooted1

Senior Member
Jul 18, 2015
52
44
Amazon Fire TV
Samsung Galaxy S8
I've confirmed that imgbrd-grabber and my parallel app space apps both work after installing this magisk variant. Neither would work before - imgbrd-grabber wouldn't even install, and the parallel app space app would crash after launching. Both are working fully now!

BTW, I noticed after the initial setup of magisk (which require a reboot) the magisk app icon is hidden from app list somehow, have to reinstall on top of it to make it show again. And after that it shows this inside Magisk app
Re: the screenshot you posted, that's normal. We all see that.
 
  • Like
Reactions: Namelesswonder

Namelesswonder

Senior Member
Jan 26, 2014
384
636
Google Pixel XL
Google Pixel 7 Pro
BTW, I noticed after the initial setup of magisk (which require a reboot) the magisk app icon is hidden from app list somehow, have to reinstall on top of it to make it show again. And after that it shows this inside Magisk app
The Magisk process to Magisk userspace connection is sometimes flaky. I haven't had any issues recently, while testing I once had the Magisk app assert that it couldn't find a running Magisk. Reinstalled the app and it worked just fine immediately.
The Magisk stub is also weird, sometimes showing up or only sometimes showing up on a reboot. This doesn't matter as I've disabled the ability for the stub application to download since I haven't set up a proper download repository yet, so it would've been trying to download the stock Magisk Delta app instead.
The app also doesn't check for updates since I set it to a blank custom channel. This means for now updates to the app have to be installed manually until I get my download repository up.

The warning is just a generic one that the app always shows since malware authors could very easily distribute rootkits with their own Magisk app.
If you're concerned you can review the code on my GitHub. I haven't set up GitHub workflows yet so the app is being manually compiled and uploaded by me. If you want to guarantee a safe build I have the patch on another repo that can be applied to either Magisk or Magisk Delta sources.
 

p51d007

Senior Member
Oct 15, 2007
2,309
449
Springfield, Mo
Samsung Galaxy Watch 4
Just got my 7pro on Monday. Thinking of sending it back because of the 32bit BS.
Yeah, I don't want to jack around with rooting or installing anything. Couple apps I use
aren't on the playstore (work) and are only 32 bit.
 

nomfway

Member
Oct 29, 2022
27
9
I've confirmed that imgbrd-grabber and my parallel app space apps both work after installing this magisk variant. Neither would work before - imgbrd-grabber wouldn't even install, and the parallel app space app would crash after launching. Both are working fully now!


Re: the screenshot you posted, that's normal. We all see that.
Oh I meant the Latest: N/A in App section, thankfully it was normal
 

nomfway

Member
Oct 29, 2022
27
9
The Magisk process to Magisk userspace connection is sometimes flaky. I haven't had any issues recently, while testing I once had the Magisk app assert that it couldn't find a running Magisk. Reinstalled the app and it worked just fine immediately.
The Magisk stub is also weird, sometimes showing up or only sometimes showing up on a reboot. This doesn't matter as I've disabled the ability for the stub application to download since I haven't set up a proper download repository yet, so it would've been trying to download the stock Magisk Delta app instead.
The app also doesn't check for updates since I set it to a blank custom channel. This means for now updates to the app have to be installed manually until I get my download repository up.
I see, thanks for the explanation and the effort! Really appreciate your tutorial.
 

mwahahaa

Senior Member
Jun 27, 2015
143
31
Google Pixel 4a 5G
Google Pixel 7
Thanks for taking this on - I finally got it working on my Pixel 7 and installed some essential 32-bit apps I couldn't live without. I'm hoping that Viper4Android will also work once I get around to giving it a try.
 

nomfway

Member
Oct 29, 2022
27
9
I tried with the system update section to attempt the dec update, but it shows my bootloader version is outdated:unsure: I am worried that if I update my bootloader, all the effort here would be wasted, aka 32bit apps will no longer work
 

nomfway

Member
Oct 29, 2022
27
9
Update: I followed System Upgrade Instructions (Custom Magisk Delta) and updated to December update, phone booted up (needed to wait for a while) and Instander works as normal!
 

Attachments

  • Screenshot_20221206-172815.png
    Screenshot_20221206-172815.png
    114.6 KB · Views: 48

Namelesswonder

Senior Member
Jan 26, 2014
384
636
Google Pixel XL
Google Pixel 7 Pro
Can you clarify what (needed to wait for a while) means? Mine kept rebooting and after 5 minutes I stopped it.
What method did you do? If it is bootlooping then something is either wrong with the kernel or Android.
How far into the boot process do you get? Do you hit the boot animation and then the phone reboots, or does it get stuck on the boot animation and reboots after a minute or two?

Update: I followed System Upgrade Instructions (Custom Magisk Delta) and updated to December update, phone booted up (needed to wait for a while) and Instander works as normal!
That's great to know, I just got done this weekend with holiday things so I haven't been able to update or do much dev work.
Looks like my testing with updating from October -> November and November -> QPR1 Beta held up when came to the release of QPR1.
 

rrusek

Senior Member
Mar 3, 2006
208
52
Razer Phone 2
Google Pixel 6
What method did you do? If it is bootlooping then something is either wrong with the kernel or Android.
How far into the boot process do you get? Do you hit the boot animation and then the phone reboots, or does it get stuck on the boot animation and reboots after a minute or two?
I used the Custom Magisk Delta method. First it did the 1 to 2 minute wait at the boot animation then rebooted. Then again boot animation with the little line underneath going left to right (3 seconds then reboots). From that point on keeps boot looping with the little line going left to right.

As a side note that this may be due to not doing a wipe. Just wanted to try it since it seems to have worked for others.

Thank you for you help.
RJR.
 

Namelesswonder

Senior Member
Jan 26, 2014
384
636
Google Pixel XL
Google Pixel 7 Pro
I used the Custom Magisk Delta method. First it did the 1 to 2 minute wait at the boot animation then rebooted. Then again boot animation with the little line underneath going left to right (3 seconds then reboots). From that point on keeps boot looping with the little line going left to right.

As a side note that this may be due to not doing a wipe. Just wanted to try it since it seems to have worked for others.

Thank you for you help.
RJR.
If you have ADB enabled you can plug your phone in and view the logcat. If the problem isn't before the adb daemon starts then you should be able to get logs on what is going wrong.
You shouldn't need a wipe between upgrades, in my tests I never did. I can't really tell what could've gone wrong, other than maybe it's a Magisk module going wrong or the phone was booted at some point without the patched Magisk in place.
 

rrusek

Senior Member
Mar 3, 2006
208
52
Razer Phone 2
Google Pixel 6
If you have ADB enabled you can plug your phone in and view the logcat. If the problem isn't before the adb daemon starts then you should be able to get logs on what is going wrong.
You shouldn't need a wipe between upgrades, in my tests I never did. I can't really tell what could've gone wrong, other than maybe it's a Magisk module going wrong or the phone was booted at some point without the patched Magisk in place.
Just to clarify some things. I was on the Nov 5 update using Magisks 2.5.2-delta-5. I then removed all the Magisks delta modules and sideloaded the Dec 5 OTA. I then re-rooted using Magisks 2.5.2-delta-5 again. All is working in that setup. I never attempted or had the 32bit setup in the Nov 5 build.

I attempted to enable the 32bit in the Dec 5 build using the following method.
1. Removed all magisks modules, uninstalled magisks app.
2. Flash original init_boot.img from the Dec 5 build.
3. Rebooted into phone and installed your modified magisks delta.
4. Patched original init_boot.img from the Dec 5 build using your modified magisks delta.
5. Flashed 32bit modified init_boot.img.
6. Rebooted into boot_loop.

To get back up and running I then flashed original init_boot.img then re-rooted using the Magisks 2.5.2-delta-5 to patch original init_boot.img and reflash.

All is working using the above steps. Not sure what is going wrong.

RJR
 

Top Liked Posts

  • There are no posts matching your filters.
  • 2
    Hello guys, it's me again. With the given steps I have successfully updated to January build!
    Screenshot_20230104-164101.png
    1
    Did you get a chance to work on the new custom Magisk fork and have you decided whether or not to continue with magisk delta as a base?
  • 24

    The 32-bit apps are back!​

    Synopsis​

    The Pixel 7 line is Google's first "64-bit only" phones, along with being the highest profile release of a 64-bit only device so far. The device uses the Tensor G2 (GS201), which is a close descendant of the Tensor (GS101) from the Pixel 6 line. So close, that the only major change was swapping out the ARM Cortex-A76 cores for ARM Cortex-A78 cores. The SoC still has full 32-bit support.

    This was seemingly done at the last minute to get the ball rolling on switching Android to becoming 64-bit only at some point in the future. That future might be soon for other currently supported Pixel phones as the Android 13 QPR1 Beta includes optional firmware images that are 64-bit only. Given that it is currently optional on QPR1, there is a chance that at the earliest Android 14 will be 64-bit only across all supported Pixels, with a slimmer chance that it will be 64-bit only for AOSP also.

    The three items that are of importance are AArch32, what Zygote services are set to start, and whether the build supports multilib.

    AArch32​

    Is a mode starting with ARMv8 that provides support for the 32-bit ARM ABIs: armeabi and armeabi-v7a. An ABI is what defines how software is to be built and ran for specific instruction sets.​
    AArch32 is not required to be supported with ARMv9-A architectures, which would be processors starting with ARM Cortex-X2/X3/A715. These processors support AArch64 only.​
    The ARM Cortex-A510 is currently the only ARMv9-A processor that supports AArch32. This combination of processors (X2/X3/A715 with A510) results in asymmetric 32-bit support. This is the likely reason for Google expediting these changes. It is speculated that the Cortex-A520 will not support AArch32, which would put a stop to native 32-bit support completely for future devices.​
    Tensor G2 cores are still on ARMv8-A and thus still support AArch32.​

    Zygote​

    Is a service that handles creating VMs for starting applications, and is responsible for allowing resources to be shared to reduce memory bloat from duplication. There are two Zygote services, Zygote64 and Zygote (colloquially referred to as Zygote32). Each handle a "warm" VM that is preloaded with libraries, which gets cloned for starting an application. This is done via copy-on-write, which means a copy is only made and occupies memory when attempting to modify a resource. The untouched copies all point back to the original, saving memory.​
    Without Zygote32, 32-bit applications can't be started. Without Zygote64, 64-bit applications can't be started.​
    Having multiple Zygote processes is referred to as "Zygote64_32"​

    Multilib​

    Is a scheme that allows for 32-bit and 64-bit libraries to reside on the same device. This is required to support running 32-bit applications on 64-bit devices. Android has it's own implementation that differs from most Linux distributions, which may also differ between each other.​
    Obviously, without 32-bit libraries (or inversely without 64-bit libraries), a build does not support multilib.​
    Somewhat important to note is that the 64-bit only QPR1 Beta images for the Pixel 4a to 6 are true 64-bit only, they do not support multilib. However, as noted here by Google, the Pixel 7 is 64-bit only but does support multilib.

    The support matrix is as follows:
    Phone + SoC, Build
    SoC AArch32 Support
    Zygote Property
    Multilib
    32-bit Support?​
    Pixel 6 with Tensor​
    Yes​
    Zygote64_32​
    Yes​
    Native
    Pixel 6 with Tensor, 64-bit Only Build​
    Yes​
    Zygote64​
    No​
    Not Possible*​
    Pixel 7 with Tensor G2​
    Yes​
    Zygote64​
    Yes​
    With Modification
    Pixel 7 with Tensor G2, 64-bit Only Build**​
    Yes​
    Zygote64​
    No​
    Not Possible*​
    Phone with AArch64-only ARMv9-A​
    No​
    Zygote64​
    No​
    Not Possible***​
    * If no multilib build is also available. It may be possible with extensive work to use Treble to bring 32-bit libraries forward, assuming Android 14+ doesn't remove AArch32 and Zygote32. Emulation could be a possibility but has not been done yet.
    ** Build does not exist yet. It may be realized with Android 13 QPR2/3 or it may be done with Android 14 instead.
    *** Emulation could be a possibility but has not been done yet. Currently just the Pixel 6 and 7 have KVM built-in, but the Pixel 7 is the only one with it on by default. There is no graphics layer yet.

    This means that with the right changes 32-bit support can be enabled and used if 32-bit libraries are on the device and the SoC supports AArch32.

    Modifications​

    The changes required are as follows:

    ro.zygote=zygote64_32
    ro.vendor.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi
    ro.vendor.product.cpu.abilist32=armeabi-v7a,armeabi
    Genuinely that simple, property changes. Because the libraries are already in the firmware images it is just the need to instruct Android to use them.
    Zygote64_32 refers to starting Zygote64 as the primary process, then starting Zygote32 as the secondary process. With this in place 32-bit applications can be installed and ran as 32-bit libraries are now able to be loaded.

    The changes that need to be done are to either be applied to /vendor/build.prop, or done with init.rc modifications, or applied in some way before init.rc is read.

    The last point is the critical issue that has halted this: there has not been any easy way to set properties very early in the boot process outside of simply just modifying the file on the partition.
    This can't be done easily due to dynamic partitions requiring a custom super partition, and with the larger issue being AVB.

    However two solutions have been brought forward:

    The first solution is thanks to ThomasKing2014, he has created Pixel 7 32-bit helper which is a modified Magisk that changes magiskinit to modify /vendor/build.prop early in boot​

    The patch he has created has been the start for this. The patch gets applied to Magisk and modifies magiskinit so that during boot Magisk will modify /vendor/build.prop with the values for the properties needed. magiskinit continues with initialization, hands off to the stock init which then reads ro.zygote to determine what Zygote rc file to load.
    Then Zygote64 and Zygote32 are started.

    The second solution is thanks to @huskydg for Magisk Delta which is a Magisk fork that implements many additional features​

    These two separate solutions are because of some limitations at the moment with stock Magisk and Zygisk.

    Currently I have repositories set up with rebased patches and a custom Magisk Delta Canary using the patch.​


    Forewarning​

    Currently, a wipe is required to get the modification to work fully.

    I do not know exactly why, but when a device is first booted with only Zygote64 it can't be switched over to use Zygote64_32. For some reason the 32-bit libraries inside APEXs are not discovered and loaded by Zygote32.
    It's a strange thing. If first boot is with Zygote64, then immediately rebooting to use Zygote64_32 will appear to work, but things are subtly broken in the background as only a few libraries don't have their 32-bit counterparts loaded. This gets exacerbated with preexisting systems, where lots of libraries have been used and their 32-bit counterparts are never discovered when switching to Zygote64_32. Ends up resulting in things like boot hangs or even the boot process aborting very early.


    Magisk Delta uses persist on the Pixel 7 and allows modules to write to it

    The persist partition is used by Magisk Delta to hold the early-mount.d directory for it's early-mount feature.
    Modifying persist has an inherent dangerous aspect due to the fact it is unique to each device. Corruption or modification of the calibration data in the partition can result in causing functions of your device to fail.
    Magisk Delta is not doing this inherently on all devices, this is actually because the Pixel 7's persist is the only partition that is not encrypted, is not checked by AVB, and is available early in the boot process. This is actually an extension of the functionality from stock Magisk, as stock Magisk is trying to do the same thing to store SELinux policy rules.


    The best practice before installing Magisk Delta is to make a backup of your persist. There will be steps on how to do that before installing Magisk Delta.

    Currently I do not know of any modules making use of this functionality, so the chances of something going wrong are going to be from your own hands.

    Pixel 7 32-bit Helper and Magisk Delta are only partially functional on QPR1/December, Zygisk does not work and bootloops the device

    When on the November update you can enable and use Zygisk without issue. However, on QPR1/December enabling Zygisk will bootloop your device.

    Currently if you are planning to use QPR1/December and Zygisk you will have to use my custom Magisk Delta as it has a new implementation of Zygisk called
    maru. Recently official Magisk Delta removed maru, so if you want to use Zygisk you will have to use my fork.

    Support for custom ROMs (LineageOS/GrapheneOS/etc.) has not been tested yet

    It may or may not work. As a matter of fact, doing this modification isn't necessary as custom ROMs could implement this change themselves.
    I don't know if the recovery install process with LineageOS is compatible, someone will need to test.

    Zygisk does not work when using the Pixel 7 32-bit Helper patch on Magisk Canary (25205)​

    At some point Zygisk between v25.2 (25200) and Canary (25205) was modified and now it doesn't function with Pixel 7 32-bit Helper on either the November update or QPR1/December.

    Use my custom Magisk Delta if you require Zygisk.


    Usage with custom kernels has not been tested yet​

    I don't see any reason why it wouldn't work, but caveat emptor.

    I have not tested all 32-bit applications

    I don't actually use any 32-bit apps. I have done testing with a few 32-bit apps I've gotten from APKMirror. So no, I don't know if your Instagram mod is working. I don't see any reason why it wouldn't.

    This modification is not 'install and forget'​

    Like with using custom kernels requiring you to keep on making sure verity and verification are off, this modification requires that you keep a finger on the pulse for any news or updates. You're essentially on the bleeding edge now. The hammer could drop next month and the update is true 64-bit without multilib. Performing an update and forgetting to flash the patched Magisk could require you to wipe your device.

    Installation Instructions​

    General Prerequisites:​

    A working platform-tools environment
    platform-tools 33.0.3 is required with the Pixel 7​
    The version you are running can be checked with adb --version and fastboot --version
    If you need assistance then read this thread by @roirraW "edor" ehT.​
    Tools like PixelFlasher can be used, just read into how to use it.​
    The factory image for the firmware version you are running or plan to run
    Part of the steps are going to be doing a flashing wipe on your device, to guarantee that you start with a reproducible blank slate.​
    Copy init_boot.img out from image-xxx.zip​

    Backup your data
    At the moment a wipe is required, so perform two backups: with Google Backup or your favorite backup app and a manual backup of any files.​

    With my custom Magisk Delta (Recommended)

    Custom Magisk Delta with the rebased patch by me.​

    Direct download link for the custom Magisk Delta APK


    Warning:

    Magisk Delta will mount the persist partition for it's early-mount feature. I have not disabled this functionality yet as I have not had the time. We don't need the feature in this specific case as I have patched Magisk Delta to systemlessly and filelessly patch /vendor/build.prop. Once I disable the feature then backing up persist will not be required, however it honestly is a good idea for all users with root to do it at least once.​
    The steps will take you through creating a backup of the partition to restore if you ever need to.​

    Prerequisites:​

    You need to already have root with stock Magisk so you can backup the persist partition

    Steps:​

    If you already have backed up your persist partition then you can skip steps 4 to 7.​
    1. Install the custom Magisk Delta app, it may be installed alongside stock Magisk without issue as it has a different package name.
    2. Copy over the stock init_boot.img to your phone and patch it in the custom Magisk Delta app.
    3. Copy it back over to your computer
    4. Copy the backup-persist.sh script over to your phone, /sdcard/ is fine.
    5. Enter a root shell via either method
      • adb
        • adb shell
        • su
          • You will need to approve the attempt on your phone
      • Terminal emulator
        • su
    6. Navigate to the directory where backup-persist.sh is located and run it as so:
      • sh backup-persist.sh
    7. Copy persist.img over to your computer, keep it safe, keep it in multiple places.
      • This is not the Google Pixel 7 persist image, this is uniquely your phone's persist image.
    8. Reboot phone to bootloader
    9. Flash and wipe via fastboot --skip-reboot -w update image-xxx.zip
    10. Wait for it to finish, then reboot back into the bootloader either on the device or with fastboot reboot bootloader
    11. Flash the patched Magisk init_boot.img and boot into Android.
    12. Complete the setup wizard as normal
    13. Install the custom Magisk Delta app.
    14. Open the Magisk app and finish setup for Magisk.
    Attempt to install and run a 32-bit application. If you are unable to, then verify that you used the custom Magisk app to patch your init_boot.img and that you flashed it to your phone. You will have to perform the steps including the wipe over again.

    With Thomas King's patched Magisk (Partially Nonfunctional)

    Pixel 7 32-bit Helper by Thomas King

    Direct download link for Magisk-v25.2_patched.apk


    Steps:​

    1. On your phone uninstall the stock Magisk app. Do not use the uninstall Magisk button from within the app, simply just uninstall the app itself.
    2. Reboot your phone into the bootloader.
    3. Flash the stock init_boot.img for your version and then boot into Android.
    4. Install Magisk-v25.2_patched.apk from the repository.
    5. Copy over the stock init_boot.img to your phone and patch it in the Magisk app.
    6. Copy the patched Magisk init_boot.img over to your computer
    7. Reboot your phone into the bootloader.
    8. Flash and wipe via fastboot --skip-reboot -w update image-xxx.zip
    9. Wait for it to finish, then reboot back into the bootloader either on the device or with fastboot reboot bootloader
    10. Flash the patched Magisk init_boot.img and boot into Android.
    11. Complete the setup wizard as normal
    12. Do not open the Magisk stub (the default Android icon), install Magisk-v25.2_patched.apk from the repository.
    13. Open the Magisk app and finish setup for Magisk.
    Attempt to install and run a 32-bit application. If you are unable to, then verify that you used the patched Magisk app to patch your init_boot.img and that you flashed it to your phone. You will have to perform the steps including the wipe over again.

    With stock Magisk Delta (Not Recommended and Partially Nonfunctional)

    Magisk Delta by @huskydg

    Download the stable release, however if you have a need for canary it will work too


    Prerequisites:

    You need to already be rooted with Magisk
    You can also do the modification yourself by just pulling /vendor/build.prop and performing the modifications listed at the top of the post​

    Warnings:

    This modification will not be cleared out by a factory reset or a wipe, however it will not take effect if you are not using a Magisk Delta init_boot
    This modification needs to be kept in step with the build version you are running
    If you have already done these steps before and want to revert then restore your persist using the steps further down the page

    Steps:​

    If you want to wipe after performing this modification then you can skip immediately to step 12, the files will still be on persist. There is no need to do these steps all over again.​
    1. Install the Magisk Delta app, it may be installed alongside stock Magisk without issue as it has a different package name.
    2. Copy over the stock init_boot.img to your phone and patch it in the Magisk Delta app.
    3. Copy it back over to your computer
    4. Copy the backup-persist.sh script over to your phone, /sdcard/ is fine.
    5. Enter a root shell via either method
      • adb
        • adb shell
        • su
          • You will need to approve the attempt on your phone
      • Terminal emulator
        • su
    6. Navigate to the directory where backup-persist.sh is located and run it as so:
      • sh backup-persist.sh
    7. Copy persist.img over to your computer, keep it safe, keep it in multiple places.
      • This is not the Google Pixel 7 persist image, this is uniquely your phone's persist image.
    8. Copy the modified vendor build.prop over to your phone
    9. Navigate to your persist partition
      • cd $(magisk --path)/.magisk/mirror/persist
    10. Make the early-mount.d directory tree
      • mkdir -p early-mount.d/system/vendor
    11. Copy the modified vendor build.prop into the directory
      • cp /sdcard/Download/build.prop early-mount.d/system/vendor/
    12. Sync writes to storage
      • sync
    13. Reboot phone to bootloader
    14. Flash and wipe via fastboot --skip-reboot -w update image-xxx.zip
    15. Wait for it to finish, then reboot back into the bootloader either on the device or with fastboot reboot bootloader
    16. Flash the patched Magisk init_boot.img and boot into Android.
    17. Complete the setup wizard as normal
    18. Install the Magisk Delta app.
    19. Open the Magisk app and finish setup for Magisk.
    Attempt to install and run a 32-bit application. If you are unable to, then verify that you used the patched Magisk app to patch your init_boot.img and that you flashed it to your phone. Additionally verify that the folders and build.prop are correct in $(magisk --path)/.magisk/mirror/early-mount/. You will have to perform a wipe again if you are unable to run 32-bit applications.

    System Upgrade Instructions​

    Pixel 7 32-bit Helper and official Magisk Delta will not work with Zygisk enabled on QPR1/December

    Issues with the modification and Zygisk on QPR1/December are still unresolved.​
    Follow the install steps above for custom Magisk Delta if you require Zygisk, you can skip the steps to wipe. If the custom Magisk Delta app keeps on getting removed then make sure to unhide the Magisk app and uninstall it.​

    Stock Magisk Delta will require a new build.prop be installed before updating

    Either you will have to extract the /vendor/build.prop from the firmware image and modify it​

    Custom Magisk Delta by me

    1. Extract the init_boot from image-xxx.zip of the firmware you want to upgrade to
    2. Patch it in the custom Magisk Delta app
    3. Copy the patched Magisk image back over to your computer
    4. Reboot your phone into fastboot
    5. Update the bootloader and radio if necessary
    6. fastboot --skip-reboot update image-xxx.zip
      • No -w! That flag will wipe your userdata partition.
    7. Wait until it is finished and then reboot back into fastboot either on the phone or with fastboot reboot bootloader
      • Don't boot the phone into Android!
    8. Flash the patched Magisk init_boot.img

    Uninstallation Instructions​

    Pixel 7 32-bit Helper​

    Flash the stock init_boot.img

    Custom Magisk Delta by me​

    Flash the stock init_boot.img
    fastboot flash persist original_persist.img
    If you don't have an original persist image then follow the manual steps for Magisk Delta below.
    The only directory to remove will be early-mount.d, as my custom Magisk Delta doesn't install any files to early-mount.d.​

    Magisk Delta​

    Easy method from fastboot​

    1. Flash the stock init_boot.img
    2. fastboot flash persist original_persist.img

    Method on phone​

    1. Copy original persist.img over to phone
    2. Enter a root shell via either method
      • adb (heavily preferred)
        • adb shell
        • su
          • You will need to approve the attempt on your phone
      • Terminal emulator
    3. dd if=/sdcard/persist.img of=/dev/block/by-name/persist
    4. Can now reboot and flash stock init_boot

    Manual method on phone if without original persist image​

    1. Uninstall all Magisk modules, they will clean up any files they put into [/icode]early-mount.d[/icode]
      • Currently I know of no modules that use early-mount.d
    2. Enter a root shell via either method
      • adb (heavily preferred)
        • adb shell
        • su
          • You will need to approve the attempt on your phone
      • Terminal emulator
    3. Navigate to the persist mount
      • cd $(magisk --path)/.magisk/mirror/persist/
    4. Remove the directory early-mount.d
      • rm -ir early-mount.d
        • You will be prompted for each removal and descending into directories, respond with y to approve the action
        • Only descend into and remove the early-mount.d, initrc.d, system, and vendor directories.
        • Only remove the file build.prop
    5. Can now reboot and flash stock init_boot

    Troubleshooting​

    Stuck at boot animation or bootlooping​

    Restore stock init_boot.​
    Grab a logcat with adb to determine what the problem may be.​
    You might not have wiped your device.​

    Unable to install 32-bit apps​

    Run getprop ro.zygote; getprop ro.vendor.product.cpu.abilist; getprop ro.vendor.product.cpu.abilist32
    If the values do not match these then the modification was not applied.​
    zygote64_32
    arm64-v8a,armeabi-v7a,armeabi
    armeabi-v7a,armeabi

    32-bit apps force close​

    This only happened in my testing when I did a first boot with Zygote64 and then installed the modification to use Zygote64_32. Wipe your device.​
    It is possible the app may just have issues, or will not work because of missing libraries.​

    Clobbered the persist partition​

    Follow the uninstall steps for Magisk Delta, easiest to use the fastboot steps.​
    If you didn't backup your persist partition, then RIP.​

    Questions​

    Will I have to wipe on every system update?​

    I'm glad to say no.​
    I've tested with my custom Magisk Delta, going from October -> November, while keeping Zygisk/MagiskHide enabled along with the Magisk app being hidden.​

    Can I take OTAs instead of flashing factory images?​

    I would heavily recommend not to.​

    I booted with the patch, but then accidentally flashed over init_boot, what do I do?​

    Simply just flash the patched Magisk image back over. I've tested it, 32-bit applications are still kept, and I haven't encountered any issues once I flashed the patched Magisk image back onto it.​
    Your mileage may vary if this happened from a system update though!

    Will my persist partition be destroyed?​

    You shouldn't have to worry about that, a backup persist image will be able to completely restore it.​
    So far I do not believe any modules are using early-mount.d, so you shouldn't be having issues with modules filling up the partition.​

    Is there an easier way?​

    Soon at some point I will update my Magisk Delta fork from touching persist at the slight cost of losing out on sepolicy.rules and early-mount.d

    Thanks To​

    Thomas King for Pixel 7 32-bit Helper
    @huskydg for Magisk Delta and letting me know about the Zygisk implementation maru
    5ec1cff for maru
    @nickelnine for bringing attention to Pixel 7 32-bit Helper​
    4
    Dumb questions:
    - Does this support Pixel 7 Pro?
    Well the thread is in the Pixel 7 Pro forum, the post is completely full of direct references to the Pixel 7 Pro, the intro video was recorded on a Pixel 7 Pro, and the download page makes reference to that it enables 32-bit support on the Pixel 7. So I'd say yes. :)
    - Does this required to wipe after flashing patched init_boot.img with custom Magisk, I have rooted phone with default Magisk now?
    You do need to wipe the phone after flashing the custom Magisk image, just use fastboot -w as-is.
    You can try without a wipe but the majority of the time it will just bootloop. You will have to either flash back to the stock or your previous init_boot if you don't want to wipe your data or use the above fastboot command to continue with using the custom Magisk.
    - Are we able to enable Zygisk after flashing patched init_boot.img?
    If you need Zygisk, which you will need for Universal SafetyNet Fix, then yes.



    Some short news on the custom Magisk Delta fork.​

    Upstream Magisk Delta just removed maru, which isn't that great for us. :(

    For now my fork still works and will continue to have maru so we can continue to use Zygisk, however I do have a solution going forward:

    I'm just going to be creating a stock Magisk fork with the maru patches going forward.​

    This solves the issue of earlymount.d tainting the persist partition, however for the people that do use that feature I'm sorry but you are going to have to limited support. For now the custom Magisk Delta fork can still be used until it no longer works or Magisk gets a large enough update to necessitate moving. Keeping up with rebasing the maru patches onto Magisk Delta is going to get more difficult as time moves on, so it will just be easier to just use stock Magisk with the maru patches and my patch.

    This does mean that stock Magisk Delta will pose issues with Zygisk as it doesn't have maru, so I can't recommend using it going forward.

    My time frame for getting the new custom Magisk fork out will be sometime next week or the week after. Right now there isn't any pressing matters to get it out the door quickly as everything is still fine, but it's something I'm going to have to do sooner rather than later.
    3
    FYI - Corvus OS for Pixel 7's does have 32bit app support
    2
    Hello guys, it's me again. With the given steps I have successfully updated to January build!
    Screenshot_20230104-164101.png