Skip to content

Instantly share code, notes, and snippets.

@pexcn
Last active April 8, 2024 01:05
Show Gist options
  • Star 35 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save pexcn/71d7d242c5e805d9346d2dc9db17fb90 to your computer and use it in GitHub Desktop.
Save pexcn/71d7d242c5e805d9346d2dc9db17fb90 to your computer and use it in GitHub Desktop.

Fix magisk stock backup does not exist

# put stock boot.img into /sdcard/boot.img

# get sha1
adb shell
su
SHA1=$(cat $(magisk --path)/.magisk/config | grep SHA1 | cut -d '=' -f 2)

# repack boot.img.gz
gzip -9f /sdcard/boot-stock.img

# restore backup
mkdir /data/magisk_backup_${SHA1}
mv /sdcard/boot-stock.img.gz /data/magisk_backup_${SHA1}/boot.img.gz
chmod -R 755 /data/magisk_backup_${SHA1}
chown -R root.root /data/magisk_backup_${SHA1}
@drshahinshaan
Copy link

How to perform those command! Will you please elaborate!

@pexcn
Copy link
Author

pexcn commented Apr 5, 2022

How to perform those command! Will you please elaborate!

  1. Put boot.img into /sdcard/boot.img
  2. Execute the commands via superuser

@drshahinshaan
Copy link

drshahinshaan commented Apr 5, 2022 via email

@pexcn
Copy link
Author

pexcn commented Apr 5, 2022

Thanks for your quick response! Can i use termus for execute command?

It should work, but I haven't tried it

@Dr-Ari-Gami
Copy link

You can also just re-patch the stock boot image in the magisk app, and then reboot. The stock boot img is backed up when you patch it.

@Github564-png
Copy link

Hi, can u detail how to do it , please
I really dont know how

@axxapy
Copy link

axxapy commented Jun 20, 2022

Huge thanks for this gist, mate!
You saved a lot of time for me

@stanleylhs
Copy link

The first command should be
adb push boot.img /sdcard/boot-stock.img
not /sdcard/boot.img

@badabing2005
Copy link

If you already have stock boot.img file in /sdcard
you can do the do following and let Magisk do the backup

cd /data/adb/magisk
cp /sdcard/boot.img stock-boot.img
./magiskboot cleanup
. ./util_functions.sh
run_migrations

@stanleylhs
Copy link

@badabing2005
Copy link

You are correct, I was responding from memory and was wrong.
It is underscore not dash.
Thanks

@mhdzli
Copy link

mhdzli commented Feb 7, 2023

Thanks!
I installed LineageOS 20 on OnePlus 9 with the instructions on official wiki. Then I root my phone with Magisk. I install Magisk by sideloading the Magisk ZIP file and then install the apk. Now I can't update the OS with updater in system settings. I find a guide that explained I need to uninstall and restore images in magisk then update my phone and reinsatall magisk before reboot. But magisk didn't create a backup during installation.
I use your guide to fix magisk stock backup does not exist
I create a backup with this guide and lineageos boot.img file and I can now restore images in magisk but I get the same error when trying to install the updates. I noticed that there is also dtbo in backup function (https://github.com/topjohnwu/Magisk/blob/master/scripts/util_functions.sh#L625) and I did the same thing for backing up dtbo.img and it doesn't solve the problem. Is there anything I'm missimg. Should I use vendor-boot.img instead of boot.img?

@jimmyli97
Copy link

jimmyli97 commented Jun 24, 2023

You can also just re-patch the stock boot image in the magisk app, and then reboot. The stock boot img is backed up when you patch it.

thank you! definitely the simplest way

@asheroto
Copy link

So it's stock_boot.img not boot_stock.img?

@jimmyli97
Copy link

@asheroto
Depends on which script you are running, if using badabing2005's script starting with existing boot image in /sdcard/boot.img then yes. If using the original pexcn script then he started with existing boot image called /sdcard/boot-stock.img

Easiest way is definitely repatching the stock boot image with magisk app though

@mailinglists35
Copy link

thanks everyone for the hint, repatching the stock with magisk then reboot saved me from interfering with command line

@mimoundaniel
Copy link

you are god

@karlicoss
Copy link

Note that Pixel 7 Pro (and possibly other newer Pixel phones) are using init_boot.img -- so you need to repack this file (not boot.img which is also present in the OTA image!) and put /data/magisk_backup_${SHA1}/boot.img.gz (yes, the latter path still is boot.img.gz)
Otherwise great manual, thanks!

@Originalimoc
Copy link

mark

@asheroto
Copy link

asheroto commented Feb 6, 2024

It appears that Android 14 uses init_boot.img and boot.img if I'm not mistaken? At least one OnePlus phones...

@giser
Copy link

giser commented Feb 6, 2024

In case of init_boot.img

# put stock init_boot.img into /sdcard/init_boot.img

# get sha1
adb shell
su
SHA1=$(cat $(magisk --path)/.magisk/config | grep SHA1 | cut -d '=' -f 2)

# repack init_boot.img.gz
gzip -9f /sdcard/init_boot.img

# restore backup
mkdir /data/magisk_backup_${SHA1}
mv /sdcard/init_boot.img.gz /data/magisk_backup_${SHA1}/boot.img.gz
chmod -R 755 /data/magisk_backup_${SHA1}
chown -R root.root /data/magisk_backup_${SHA1}

@stanleylhs
Copy link

Everyone, there's no need to calculate sha or write your own script, just use util_function.sh from the magisk folder in adb. Topjohnwu has updated it for init_boot months ago.

Follow this comment for instruction. https://gist.github.com/pexcn/71d7d242c5e805d9346d2dc9db17fb90?permalink_comment_id=4330260#gistcomment-4330260

@asheroto
Copy link

asheroto commented Feb 6, 2024

@giser have you tested this? Looks like it might work if when extracted it just overwrites the init_boot.img partition.

@stanleylhs indeed, but this fix doesn't always work as expected.

@altwu
Copy link

altwu commented Apr 8, 2024

my phone is rooted but no /data/magisk_backup_* directories exist, so i tried to get magisk to create one. i tried using the app to patch a file. a patched boot image was created but no /data/magisk_backup_* directory. the path to the boot image was /sdcard/Documents/boot_images/init_boot_14_0_0_304.img. i tried copying it and giving it the name /sdcard/Documents/boot_images/init_boot.img and patching it. a patched boot image was created but still no /data/magisk_backup_* directory.

my phone is a US oneplus 11(cph2451) running android 14 and magisk 27.0 stable. how do i get the magisk app to patch a file and create a /data/magisk_backup_* directory?

i tried using util_functions.sh and run_migrations and that worked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment