commit
5453fae828
2 changed files with 50 additions and 49 deletions
|
|
@ -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,55 +416,43 @@ 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 = ""
|
arch_dir = "x86" if "x86" in platform.machine() else "arm"
|
||||||
|
arch = "_64" if "64" in platform.machine() else ""
|
||||||
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/magisk{arch} --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
|
||||||
"""
|
""".format(arch=32 if arch=="" else 64)
|
||||||
|
|
||||||
system_img = os.path.join(get_image_dir(), "system.img")
|
system_img = os.path.join(get_image_dir(), "system.img")
|
||||||
if not os.path.isfile(system_img):
|
if not os.path.isfile(system_img):
|
||||||
|
|
@ -480,46 +469,56 @@ 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 ...")
|
||||||
|
|
||||||
arch_dir = "x86" if "x86" in platform.machine() else "arm"
|
|
||||||
arch = "_64" if "64" in platform.machine() else ""
|
|
||||||
|
|
||||||
lib_dir = os.path.join(extract_to, "lib", "{arch_dir}{arch}".format(arch_dir=arch_dir, arch=arch))
|
lib_dir = os.path.join(extract_to, "lib", "{arch_dir}{arch}".format(arch_dir=arch_dir, arch=arch))
|
||||||
for parent, dirnames, filenames in os.walk(lib_dir):
|
for parent, dirnames, filenames in os.walk(lib_dir):
|
||||||
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…
Reference in a new issue