Fix bootanim.rc being incorrectly patched after updating magisk

pull/60/head
Rikka 3 years ago
parent 6b4ab03ba3
commit cbcd5365c8
No known key found for this signature in database
GPG Key ID: DAD154970C8AB6F2

@ -45,8 +45,11 @@ Open terminal and switch to directory where "waydroid_extras.py" is located then
Then restart waydroid service with command below : Then restart waydroid service with command below :
sudo systemctl start waydroid-container.service sudo systemctl start waydroid-container.service
Magisk will be installed on next boot ! Magisk will be installed on next boot !
Note That this is bootless installation and modules don't work as of now !
Zygisk and modules like LSPosed should work now.
Please use `Direct Install into system partition` to update Magisk in Magisk manager.
## Install libndk arm translation ## Install libndk arm translation
@ -67,7 +70,7 @@ Open terminal and switch to directory where "waydroid_extras.py" is located then
Then restart waydroid service with command below : Then restart waydroid service with command below :
sudo systemctl start waydroid-container.service sudo systemctl start waydroid-container.service
## Get Android ID for device registration ## Get Android ID for device registration
You need to register you device with its it before being able to use gapps, this will print out your Android ID which you can use for device registration required for google apps: You need to register you device with its it before being able to use gapps, this will print out your Android ID which you can use for device registration required for google apps:

@ -10,6 +10,7 @@ import platform
from tqdm import tqdm from tqdm import tqdm
import requests import requests
import re import re
import gzip
download_loc = "" download_loc = ""
if os.environ.get("XDG_CACHE_HOME", None) is None: if os.environ.get("XDG_CACHE_HOME", None) is None:
@ -415,54 +416,40 @@ def install_magisk():
dl_link = "https://huskydg.github.io/magisk-files/app-release.apk" dl_link = "https://huskydg.github.io/magisk-files/app-release.apk"
dl_file_name = os.path.join(download_loc, "magisk.apk") dl_file_name = os.path.join(download_loc, "magisk.apk")
extract_to = "/tmp/magisk_unpack" extract_to = "/tmp/magisk_unpack"
# act_md5 = "d60706f6ac22dc7ee32ae297e5252ef7"
sys_image_mount = "/tmp/waydroidimage" sys_image_mount = "/tmp/waydroidimage"
sbin_dir = os.path.join(sys_image_mount, "sbin") magisk_dir = os.path.join(sys_image_mount, "system", "etc", "init", "magisk")
# loc_md5 = ""
init_rc_component = """ init_rc_component = """
on post-fs-data on post-fs-data
start logd start logd
mkdir /dev/waydroid-magisk exec - root root -- /system/etc/init/magisk/magisk64 --setup-sbin /system/etc/init/magisk
mount tmpfs tmpfs /dev/waydroid-magisk mode=0755 exec - root root -- /system/etc/init/magisk/magiskpolicy --live --magisk "allow * magisk_file lnk_file *"
copy /sbin/magisk64 /dev/waydroid-magisk/magisk64 mkdir /sbin/.magisk 700
chmod 0755 /dev/waydroid-magisk/magisk64 mkdir /sbin/.magisk/mirror 700
symlink ./magisk64 /dev/waydroid-magisk/magisk mkdir /sbin/.magisk/block 700
exec - root root -- /dev/waydroid-magisk/magisk64 --install copy /system/etc/init/magisk/config /sbin/.magisk/config
copy /sbin/magisk32 /dev/waydroid-magisk/magisk32 rm /dev/.magisk_unblock
chmod 0755 /dev/waydroid-magisk/magisk32
copy /sbin/magiskinit /dev/waydroid-magisk/magiskinit
chmod 0755 /dev/waydroid-magisk/magiskinit
copy /sbin/magiskpolicy /dev/waydroid-magisk/magiskpolicy
chmod 0755 /dev/waydroid-magisk/magiskpolicy
exec - root root -- /dev/waydroid-magisk/magiskpolicy --live --magisk "allow * magisk_file lnk_file *"
exec - root root -- /dev/waydroid-magisk/magiskinit -x manager /dev/waydroid-magisk/stub.apk
write /dev/.magisk_livepatch 0
mkdir /dev/waydroid-magisk/.magisk 700
mkdir /dev/waydroid-magisk/.magisk/mirror 700
mkdir /dev/waydroid-magisk/.magisk/block 700
start FAhW7H9G5sf start FAhW7H9G5sf
wait /dev/.magisk_unblock 40 wait /dev/.magisk_unblock 40
rm /dev/.magisk_unblock
service FAhW7H9G5sf /dev/waydroid-magisk/magisk --post-fs-data service FAhW7H9G5sf /sbin/magisk --post-fs-data
user root user root
seclabel - seclabel -
oneshot oneshot
service HLiFsR1HtIXVN6 /sbin/magisk --service
service HLiFsR1HtIXVN6 /dev/waydroid-magisk/magisk --service
class late_start class late_start
user root user root
seclabel - seclabel -
oneshot oneshot
on property:sys.boot_completed=1 on property:sys.boot_completed=1
mkdir /data/adb/magisk 755 mkdir /data/adb/magisk 755
exec - root root -- /dev/waydroid-magisk/magisk --boot-complete exec - root root -- /sbin/magisk --boot-complete
exec -- /system/bin/sh -c "if [ ! -e /data/data/io.github.huskydg.magisk ] ; then pm install /system/etc/init/magisk/magisk.apk; fi"
on property:init.svc.zygote=restarting on property:init.svc.zygote=restarting
exec - root root -- /dev/waydroid-magisk/magisk --zygote-restart exec - root root -- /sbin/magisk --zygote-restart
on property:init.svc.zygote=stopped on property:init.svc.zygote=stopped
exec - root root -- /dev/waydroid-magisk/magisk --zygote-restart exec - root root -- /sbin/magisk --zygote-restart
""" """
system_img = os.path.join(get_image_dir(), "system.img") system_img = os.path.join(get_image_dir(), "system.img")
@ -480,20 +467,22 @@ on property:init.svc.zygote=stopped
mount_image(system_img, sys_image_mount) mount_image(system_img, sys_image_mount)
# Download magisk # Download magisk
while not os.path.isfile(dl_file_name): if os.path.isfile(dl_file_name):
if os.path.isfile(dl_file_name): os.remove(dl_file_name)
os.remove(dl_file_name) print("==> Downloading latest Magisk-Delta now .....")
print("==> Magisk zip not downloaded or hash mismatches, downloading now .....") download_file(dl_link, dl_file_name)
loc_md5 = download_file(dl_link, dl_file_name)
# Extract magisk files # Extract magisk files
print("==> Extracting archive...") print("==> Extracting archive...")
with zipfile.ZipFile(dl_file_name) as z: with zipfile.ZipFile(dl_file_name) as z:
z.extractall(extract_to) z.extractall(extract_to)
if not os.path.exists(sbin_dir): if not os.path.exists(magisk_dir):
os.makedirs(sbin_dir, exist_ok=True) os.makedirs(magisk_dir, exist_ok=True)
if not os.path.exists(os.path.join(sys_image_mount, "sbin")):
os.makedirs(os.path.join(sys_image_mount, "sbin"), exist_ok=True)
# Now setup and install magisk binary and app # Now setup and install magisk binary and app
print("==> Installing magisk now ...") print("==> Installing magisk now ...")
@ -505,21 +494,31 @@ on property:init.svc.zygote=stopped
for filename in filenames: for filename in filenames:
o_path = os.path.join(lib_dir, filename) o_path = os.path.join(lib_dir, filename)
filename = re.search('lib(.*)\.so', filename) filename = re.search('lib(.*)\.so', filename)
n_path = os.path.join(sbin_dir, filename.group(1)) n_path = os.path.join(magisk_dir, filename.group(1))
shutil.copyfile(o_path, n_path) shutil.copyfile(o_path, n_path)
shutil.copyfile(dl_file_name, os.path.join(magisk_dir,"magisk.apk") )
# Mark magisk files as executable
print("==> Chmodding...")
try: os.system("chmod +x "+ os.path.join(magisk_dir, "magisk*"))
except: print("==> Couldn't mark files as executable!")
# Add entry to init.rc # Add entry to init.rc
# Updating Magisk from Magisk manager will modify bootanim.rc,
# So it is necessary to backup the original bootanim.rc.
print("==> Adding entry to init.rc") print("==> Adding entry to init.rc")
init_path = os.path.join(sys_image_mount, "system", "etc", "init", "hw", "init.rc") init_path = os.path.join(sys_image_mount, "system", "etc", "init", "bootanim.rc")
if not os.path.isfile(init_path): gz_filename = os.path.join(init_path)+".gz"
# init.rc not found, assuming it's located in the root folder (Android 10 and older) with open(init_path,'rb') as f_ungz:
init_path = os.path.join(sys_image_mount, "init.rc") with gzip.open(gz_filename,'wb') as f_gz:
f_gz.writelines(f_ungz)
with open(init_path, "r") as initfile: with open(init_path, "r") as initfile:
initcontent = initfile.read() initcontent = initfile.read()
if init_rc_component not in initcontent: if init_rc_component not in initcontent:
initcontent=initcontent+init_rc_component initcontent=initcontent+init_rc_component
with open(init_path, "w") as initfile: with open(init_path, "w") as initfile:
initfile.write(initcontent) initfile.write(initcontent)
# Unmount and exit # Unmount and exit
print("==> Unmounting .. ") print("==> Unmounting .. ")
try: try:
@ -527,7 +526,6 @@ on property:init.svc.zygote=stopped
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print("==> Warning: umount failed.. {} ".format(str(e.output.decode()))) print("==> Warning: umount failed.. {} ".format(str(e.output.decode())))
print("==> Magisk was installed ! Restart waydroid service to apply changes !") print("==> Magisk was installed ! Restart waydroid service to apply changes !")
def install_widevine(): def install_widevine():

Loading…
Cancel
Save