Merge with original #60
@@ -46,7 +46,10 @@ 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
|
||||||
|
|
||||||
|
|||||||
+40
-42
@@ -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,19 +467,21 @@ 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():
|
||||||
|
|||||||
Reference in New Issue
Block a user