Open SakuraKoi opened 8 months ago
我已将改动整合进magisk.py,但我仍遇到一些问题
import gzip
import os
import shutil
import re
from stuffs.general import General
from tools.helper import bcolors, download_file, host, print_color, run, get_download_dir
class Magisk(General):
download_loc = get_download_dir()
dl_link = "https://huskydg.github.io/magisk-files/app-release.apk"
dl_file_name = os.path.join(download_loc, "magisk.apk")
extract_to = "/tmp/magisk_unpack"
copy_dir = "./magisk"
magisk_dir = os.path.join(copy_dir, "system", "etc", "init", "magisk")
machine = host()
oringinal_bootanim = """
service bootanim /system/bin/bootanimation
class core animation
user graphics
group graphics audio
disabled
oneshot
ioprio rt 0
task_profiles MaxPerformance
"""
bootanim_component = """
on post-fs-data
start logd
copy /system/etc/init/magisk/stub.apk /sbin/stub.apk
chmod 755 /sbin/stub.apk
mkdir /data/adb/magisk 755
exec -- /system/bin/sh -c "cp /system/etc/init/magisk/* /data/adb/magisk/"
exec u:r:su:s0 root root -- /system/etc/init/magisk/magisk{arch} --auto-selinux --setup-sbin /system/etc/init/magisk
exec u:r:su:s0 root root -- /system/etc/init/magisk/magiskpolicy --live --magisk "allow * magisk_file lnk_file *"
mkdir /sbin/.magisk 700
mkdir /sbin/.magisk/mirror 700
mkdir /sbin/.magisk/block 700
touch /sbin/.magisk/config
rm /dev/.magisk_unblock
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --post-fs-data
wait /dev/.magisk_unblock 40
rm /dev/.magisk_unblock
on zygote-start
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --service
on property:sys.boot_completed=1
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --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
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart
on property:init.svc.zygote=stopped
exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart
""".format(arch=machine[1])
def download(self):
if os.path.isfile(self.dl_file_name):
os.remove(self.dl_file_name)
print_color("Downloading latest Magisk-Delta now .....", bcolors.GREEN)
download_file(self.dl_link, self.dl_file_name)
def copy(self):
if os.path.exists(self.copy_dir):
shutil.rmtree(self.copy_dir)
if not os.path.exists(self.magisk_dir):
os.makedirs(self.magisk_dir, exist_ok=True)
if not os.path.exists(os.path.join(self.copy_dir, "sbin")):
os.makedirs(os.path.join(self.copy_dir, "sbin"), exist_ok=True)
print_color("Copying magisk libs now ...", bcolors.GREEN)
lib_dir = os.path.join(self.extract_to, "lib", self.machine[0])
for parent, dirnames, filenames in os.walk(lib_dir):
for filename in filenames:
o_path = os.path.join(lib_dir, filename)
filename = re.search('lib(.*)\.so', filename)
n_path = os.path.join(self.magisk_dir, filename.group(1))
shutil.copyfile(o_path, n_path)
run(["chmod", "+x", n_path])
shutil.copyfile(os.path.join(self.extract_to, "assets", "boot_patch.sh"), os.path.join(self.magisk_dir,"boot_patch.sh") )
shutil.copyfile(os.path.join(self.extract_to, "assets", "util_functions.sh"), os.path.join(self.magisk_dir,"util_functions.sh") )
shutil.copyfile(os.path.join(self.extract_to, "assets", "stub.apk"), os.path.join(self.magisk_dir,"stub.apk") )
shutil.copyfile(self.dl_file_name, os.path.join(self.magisk_dir,"magisk.apk") )
# Updating Magisk from Magisk manager will modify bootanim.rc,
# So it is necessary to backup the original bootanim.rc.
bootanim_path = os.path.join(self.copy_dir, "system", "etc", "init", "bootanim.rc")
gz_filename = os.path.join(bootanim_path)+".gz"
with gzip.open(gz_filename,'wb') as f_gz:
f_gz.write(self.oringinal_bootanim.encode('utf-8'))
run(["chmod", "644", gz_filename])
with open(bootanim_path, "w") as initfile:
initfile.write(self.oringinal_bootanim+self.bootanim_component)
run(["chmod", "644", bootanim_path])
os.chmod(bootanim_path, 0o644)
镜像生成似乎一些正常,但使用项目中示例代码启动后有如下问题 我对docker的使用不是很熟悉,是否需要提供其它的log来定位问题?
我已将改动整合进magisk.py,但我仍遇到一些问题
import gzip import os import shutil import re from stuffs.general import General from tools.helper import bcolors, download_file, host, print_color, run, get_download_dir class Magisk(General): download_loc = get_download_dir() dl_link = "https://huskydg.github.io/magisk-files/app-release.apk" dl_file_name = os.path.join(download_loc, "magisk.apk") extract_to = "/tmp/magisk_unpack" copy_dir = "./magisk" magisk_dir = os.path.join(copy_dir, "system", "etc", "init", "magisk") machine = host() oringinal_bootanim = """ service bootanim /system/bin/bootanimation class core animation user graphics group graphics audio disabled oneshot ioprio rt 0 task_profiles MaxPerformance """ bootanim_component = """ on post-fs-data start logd copy /system/etc/init/magisk/stub.apk /sbin/stub.apk chmod 755 /sbin/stub.apk mkdir /data/adb/magisk 755 exec -- /system/bin/sh -c "cp /system/etc/init/magisk/* /data/adb/magisk/" exec u:r:su:s0 root root -- /system/etc/init/magisk/magisk{arch} --auto-selinux --setup-sbin /system/etc/init/magisk exec u:r:su:s0 root root -- /system/etc/init/magisk/magiskpolicy --live --magisk "allow * magisk_file lnk_file *" mkdir /sbin/.magisk 700 mkdir /sbin/.magisk/mirror 700 mkdir /sbin/.magisk/block 700 touch /sbin/.magisk/config rm /dev/.magisk_unblock exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --post-fs-data wait /dev/.magisk_unblock 40 rm /dev/.magisk_unblock on zygote-start exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --service on property:sys.boot_completed=1 exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --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 exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart on property:init.svc.zygote=stopped exec u:r:su:s0 root root -- /sbin/magisk --auto-selinux --zygote-restart """.format(arch=machine[1]) def download(self): if os.path.isfile(self.dl_file_name): os.remove(self.dl_file_name) print_color("Downloading latest Magisk-Delta now .....", bcolors.GREEN) download_file(self.dl_link, self.dl_file_name) def copy(self): if os.path.exists(self.copy_dir): shutil.rmtree(self.copy_dir) if not os.path.exists(self.magisk_dir): os.makedirs(self.magisk_dir, exist_ok=True) if not os.path.exists(os.path.join(self.copy_dir, "sbin")): os.makedirs(os.path.join(self.copy_dir, "sbin"), exist_ok=True) print_color("Copying magisk libs now ...", bcolors.GREEN) lib_dir = os.path.join(self.extract_to, "lib", self.machine[0]) for parent, dirnames, filenames in os.walk(lib_dir): for filename in filenames: o_path = os.path.join(lib_dir, filename) filename = re.search('lib(.*)\.so', filename) n_path = os.path.join(self.magisk_dir, filename.group(1)) shutil.copyfile(o_path, n_path) run(["chmod", "+x", n_path]) shutil.copyfile(os.path.join(self.extract_to, "assets", "boot_patch.sh"), os.path.join(self.magisk_dir,"boot_patch.sh") ) shutil.copyfile(os.path.join(self.extract_to, "assets", "util_functions.sh"), os.path.join(self.magisk_dir,"util_functions.sh") ) shutil.copyfile(os.path.join(self.extract_to, "assets", "stub.apk"), os.path.join(self.magisk_dir,"stub.apk") ) shutil.copyfile(self.dl_file_name, os.path.join(self.magisk_dir,"magisk.apk") ) # Updating Magisk from Magisk manager will modify bootanim.rc, # So it is necessary to backup the original bootanim.rc. bootanim_path = os.path.join(self.copy_dir, "system", "etc", "init", "bootanim.rc") gz_filename = os.path.join(bootanim_path)+".gz" with gzip.open(gz_filename,'wb') as f_gz: f_gz.write(self.oringinal_bootanim.encode('utf-8')) run(["chmod", "644", gz_filename]) with open(bootanim_path, "w") as initfile: initfile.write(self.oringinal_bootanim+self.bootanim_component) run(["chmod", "644", bootanim_path]) os.chmod(bootanim_path, 0o644)
镜像生成似乎一些正常,但使用项目中示例代码启动后有如下问题 我对docker的使用不是很熟悉,是否需要提供其它的log来定位问题?
截图的内容似乎不是问题,因为我在官方的镜像中也看到了类似的输出。但是重新构建的镜像adb无法连接。
经过一些修改后成功了 补充文件这一操作目前看来没有效果,且
我按照您的方法,但是失败了
magisk/system/etc/init/bootanim.rc也按着改了
docker build -t redroid/redroid:11.0.0_cx .
docker run -itd --privileged \
-v ~/data:/data \
-p 1105:5555 \
redroid/redroid:11.0.0_cx \
ro.product.cpu.abilist=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi \
ro.product.cpu.abilist64=x86_64,arm64-v8a \
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi \
ro.dalvik.vm.isa.arm=x86 \
ro.dalvik.vm.isa.arm64=x86_64 \
ro.enable.native.bridge.exec=1 \
ro.dalvik.vm.native.bridge=libndk_translation.so \
ro.ndk_translation.version=0.2.2
應該是版本問題, 使用MagiskDelta25206就能用其餘都不用改
下載MagiskDelta25206 放到~/.cache/redroid/downloads/magisk.apk
改magisk.py
不要下載最新版
def download(self):
#if os.path.isfile(self.dl_file_name):
# os.remove(self.dl_file_name)
print_color("Downloading latest Magisk-Delta now .....", bcolors.GREEN)
#download_file(self.dl_link, self.dl_file_name)
要把app降回舊版adb install -d ...
Could somebody pls provide the util_functions.sh and the boot_patch.sh? Those files are missing and guess needed to install magisk properly
Could somebody pls provide the util_functions.sh and the boot_patch.sh? Those files are missing and guess needed to install magisk properly
extract them from magisk.apk, unzip it then search for filename
dl_link = "https://huskydg.github.io/magisk-files/app-release.apk" 改成 dl_link = "https://mor1.androidfilehost.com/dl/TmxPMXznCLgcZJ-pYjn1HQ/1715217304/10620683726822077179/Magisk+Delta+25206+canary+%284dbd8358%29.apk"
magisk 版本问题,默认的app-release.apk试了无效,换成MagiskDelta25206就可以
小白想问下,> tree redroid-script/magisk
redroid-script/magisk ├── sbin └── system └── etc └── init ├── bootanim.rc ├── bootanim.rc.gz └── magisk ├── boot_patch.sh ├── busybox ├── magisk64 ├── magisk.apk ├── magiskboot ├── magiskinit ├── magiskpolicy ├── stub.apk └── util_functions.sh这里补充的文件从哪获取呢
小白想问下,> tree redroid-script/magisk
redroid-script/magisk ├── sbin └── system └── etc └── init ├── bootanim.rc ├── bootanim.rc.gz └── magisk ├── boot_patch.sh ├── busybox ├── magisk64 ├── magisk.apk ├── magiskboot ├── magiskinit ├── magiskpolicy ├── stub.apk └── util_functions.sh这里补充的文件从哪获取呢
往这段话上面看
1. 从解压的magisk.apk中补充一些文件
下载magisk, 解压, 从里面找
我按照上面的修改调整,且使用了25版本的magisk,看着还是没有成功安装,不知道是什么原因
我是在mac m芯片,在pd上虚拟ubuntu执行的
用的是redroid/redroid:12.0.0_64only-latest镜像为基础构建的,不知道是不是镜像版本问题,12是arm64的Mac能运行的最小版本了
结构:
── magisk │ ├── sbin │ └── system │ └── etc │ └── init │ ├── bootanim.rc │ ├── bootanim.rc.gz │ └── magisk │ ├── boot_patch.sh │ ├── busybox │ ├── magisk64 │ ├── magisk.apk │ ├── magiskboot │ ├── magiskinit │ ├── magiskpolicy │ ├── stub.apk │ └── util_functions.sh ├── README.md
我也没有成功!也不知道错在哪里了,magisk装好了,但是没有root权限
應該是版本問題, 使用MagiskDelta25206就能用其餘都不用改 下載MagiskDelta25206 放到
~/.cache/redroid/downloads/magisk.apk
改magisk.py
不要下載最新版def download(self): #if os.path.isfile(self.dl_file_name): # os.remove(self.dl_file_name) print_color("Downloading latest Magisk-Delta now .....", bcolors.GREEN) #download_file(self.dl_link, self.dl_file_name)
要把app降回舊版
adb install -d ...
用这个方法成功了,arm64服务器,ubuntu20.04系统,android 版本redroid/redroid:12.0.0_64only-latest,大赞
如果可以的话, 我就把链接改了
Magisk installation is OK, but cannot enable Zygisk. Is there anything else that must be done ? @ayasa520
What host are you using docker on?
I'm on Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-190-generic x86_64)
with ashmem
and binder_linux
running inside a qemu-system-x86_64
VM on Windows 11
Host PC
and for arm64 I use Azure arm64. could the use of VMs be an issue? what's your setup? are you running on native hardware or VMs ?
dpi@ubuntu:~$ tree magisk/
magisk/
├── sbin
└── system
└── etc
└── init
├── bootanim.rc
├── bootanim.rc.gz
└── magisk
├── boot_patch.sh
├── busybox
├── config
├── magisk.apk
├── magisk64
├── magiskboot
├── magiskinit
├── magiskpolicy
├── stub.apk
└── util_functions.sh
5 directories, 12 files
dpi@ubuntu:~$ sudo ls -nath magisk/system/etc/init/magisk/
total 16M
drwxrwxr-x 2 1001 1001 4.0K Jul 26 21:26 .
-rw-r--r-- 1 1001 1001 0 Jul 26 21:26 config
drwxrwxr-x 3 1001 1001 4.0K Jul 26 21:26 ..
-rw-rw-r-- 1 1001 1001 6.3K Jul 26 21:26 boot_patch.sh
-rw-rw-r-- 1 1001 1001 11M Jul 26 21:26 magisk.apk
-rw-rw-r-- 1 1001 1001 29K Jul 26 21:26 stub.apk
-rw-rw-r-- 1 1001 1001 25K Jul 26 21:26 util_functions.sh
-rwxrwxr-x 1 1001 1001 2.2M Jul 26 21:26 busybox
-rwxrwxr-x 1 1001 1001 358K Jul 26 21:26 magiskpolicy
-rwxrwxr-x 1 1001 1001 309K Jul 26 21:26 magisk64
-rwxrwxr-x 1 1001 1001 714K Jul 26 21:26 magiskboot
-rwxrwxr-x 1 1001 1001 523K Jul 26 21:26 magiskinit
[ 2070.668339] init: starting service 'exec 9 (/system/bin/sh -c cp /system/etc/init/magisk/* /data/adb/magisk/)'...
[ 2070.668966] init: SVC_EXEC service 'exec 9 (/system/bin/sh -c cp /system/etc/init/magisk/* /data/adb/magisk/)' pid 46 (uid 0 gid 0+0 context default) started; waiting...
[ 2070.688443] init: Service 'exec 9 (/system/bin/sh -c cp /system/etc/init/magisk/* /data/adb/magisk/)' (pid 46) exited with status 0 waiting took 0.019000 seconds
[ 2070.688447] init: Sending signal 9 to service 'exec 9 (/system/bin/sh -c cp /system/etc/init/magisk/* /data/adb/magisk/)' (pid 46) process group...
[ 2070.688564] init: starting service 'exec 10 (/system/etc/init/magisk/magisk64 --auto-selinux --setup-sbin /system/etc/init/magisk)'...
[ 2070.689146] init: SVC_EXEC service 'exec 10 (/system/etc/init/magisk/magisk64 --auto-selinux --setup-sbin /system/etc/init/magisk)' pid 48 (uid 0 gid 0+0 context u:r:su:s0) started; waiting...
[ 2070.692538] init: Service 'exec 10 (/system/etc/init/magisk/magisk64 --auto-selinux --setup-sbin /system/etc/init/magisk)' (pid 48) exited with status 0 waiting took 0.003000 seconds
[ 2070.692542] init: Sending signal 9 to service 'exec 10 (/system/etc/init/magisk/magisk64 --auto-selinux --setup-sbin /system/etc/init/magisk)' (pid 48) process group...
[ 2070.692620] init: starting service 'exec 11 (/system/etc/init/magisk/magiskpolicy --live --magisk allow * magisk_file lnk_file *)'...
[ 2070.693135] init: SVC_EXEC service 'exec 11 (/system/etc/init/magisk/magiskpolicy --live --magisk allow * magisk_file lnk_file *)' pid 49 (uid 0 gid 0+0 context u:r:su:s0) started; waiting...
[ 2070.695171] init: Service 'exec 11 (/system/etc/init/magisk/magiskpolicy --live --magisk allow * magisk_file lnk_file *)' (pid 49) exited with status 1 waiting took 0.002000 seconds
[ 2070.695175] init: Sending signal 9 to service 'exec 11 (/system/etc/init/magisk/magiskpolicy --live --magisk allow * magisk_file lnk_file *)' (pid 49) process group...
[ 2070.695287] init: Command 'rm /dev/.magisk_unblock' action=post-fs-data (/system/etc/init/bootanim.rc:25) took 0ms and failed: unlink() failed: No such file or directory
[ 2070.695305] init: starting service 'exec 12 (/sbin/magisk --auto-selinux --post-fs-data)'...
[ 2070.695738] init: SVC_EXEC service 'exec 12 (/sbin/magisk --auto-selinux --post-fs-data)' pid 50 (uid 0 gid 0+0 context u:r:su:s0) started; waiting...
[ 2070.708889] init: Service 'exec 12 (/sbin/magisk --auto-selinux --post-fs-data)' (pid 50) exited with status 0 waiting took 0.013000 seconds
[ 2070.708893] init: Sending signal 9 to service 'exec 12 (/sbin/magisk --auto-selinux --post-fs-data)' (pid 50) process group...
[ 2071.094597] init: wait for '/dev/.magisk_unblock' took 385ms
[ 2071.094607] init: Command 'wait /dev/.magisk_unblock 40' action=post-fs-data (/system/etc/init/bootanim.rc:27) took 385ms and succeeded
[ 2071.156662] init: starting service 'exec 18 (/sbin/magisk --auto-selinux --service)'...
[ 2071.157125] init: SVC_EXEC service 'exec 18 (/sbin/magisk --auto-selinux --service)' pid 67 (uid 0 gid 0+0 context u:r:su:s0) started; waiting...
[ 2071.159464] init: Service 'exec 18 (/sbin/magisk --auto-selinux --service)' (pid 67) exited with status 0 waiting took 0.002000 seconds
[ 2071.159469] init: Sending signal 9 to service 'exec 18 (/sbin/magisk --auto-selinux --service)' (pid 67) process group...
[ 2075.601133] init: starting service 'exec 24 (/sbin/magisk --auto-selinux --boot-complete)'...
[ 2075.603217] init: SVC_EXEC service 'exec 24 (/sbin/magisk --auto-selinux --boot-complete)' pid 1147 (uid 0 gid 0+0 context u:r:su:s0) started; waiting...
[ 2075.604997] init: Service 'exec 24 (/sbin/magisk --auto-selinux --boot-complete)' (pid 1147) exited with status 0 waiting took 0.002000 seconds
[ 2075.605003] init: Sending signal 9 to service 'exec 24 (/sbin/magisk --auto-selinux --boot-complete)' (pid 1147) process group...
[ 2075.605121] init: starting service 'exec 25 (/system/bin/sh -c if [ ! -e /data/data/io.github.huskydg.magisk ] ; then pm install /system/etc/init/magisk/magisk.apk ; fi)'...
[ 2075.608535] init: SVC_EXEC service 'exec 25 (/system/bin/sh -c if [ ! -e /data/data/io.github.huskydg.magisk ] ; then pm install /system/etc/init/magisk/magisk.apk ; fi)' pid 1154 (uid 0 gid 0+0 context default) started; waiting...
[ 2077.916756] init: Service 'exec 25 (/system/bin/sh -c if [ ! -e /data/data/io.github.huskydg.magisk ] ; then pm install /system/etc/init/magisk/magisk.apk ; fi)' (pid 1154) exited with status 0 waiting took 2.310000 seconds
[ 2077.916763] init: Sending signal 9 to service 'exec 25 (/system/bin/sh -c if [ ! -e /data/data/io.github.huskydg.magisk ] ; then pm install /system/etc/init/magisk/magisk.apk ; fi)' (pid 1154) process group...
@brunoaduarte Have you enabled the zygisk option? I don't see any logs related to zygisk
Have you enabled the zygisk option? I don't see any logs related to zygisk
No I had not 🤦♂️. I assumed it was automatic like Ramdisk. It worked. Thanks!
懒得把bootanim.rc里的修改和新复制的文件重新整理回magisk.py了, 也不怎么会python, 就不提pr了
把修改的东西都列出来供他人参考 Platform: Fedora 39 x86_64
WARN: 一番折腾到成功后, 对着结果写的事后总结, 可能其中有一些是无效操作
1. 从解压的magisk.apk中补充一些文件
补充后
权限
2. 修改 magisk.py
3. 修改 bootanim.rc
Edit: 删除magisk32, 研究了半天LSPosed起不来的问题, 最后发现是这的锅