Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
ee39616a
Commit
ee39616a
authored
Sep 04, 2019
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update emulator.sh to support all AVD images
parent
cdb53ca0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
66 additions
and
26 deletions
+66
-26
emulator.sh
scripts/emulator.sh
+66
-26
No files found.
scripts/emulator.sh
View file @
ee39616a
...
...
@@ -7,15 +7,11 @@
# Magisk Manager will be happy to run properly within the official
# emulator bundled with Android Studio (AVD).
#
# ONLY use this script for developing Magisk Manager in the
# emulator. The constructed Magisk environment is not a fully
# functional one as if it is running on an actual device.
# The script only supports non system-as-root images, meaning
# AVD images that are newer than API 25 are NOT supported.
# This script is meant to be used for emulators running obscure
# Android versions; use an actual device for modern Androids.
# ONLY use this script for developing Magisk Manager or root apps
# in the emulator. The constructed Magisk environment is not a
# fully functional one as if it is running on an actual device.
#
# The script assumes you are using x86 emulator images.
# The script assumes you are using x86
/x64
emulator images.
# Build binaries with `./build.py binary` before running this script.
#
################################################################
...
...
@@ -25,10 +21,21 @@ abort() {
exit
1
}
mount_sbin
()
{
mount
-t
tmpfs
-o
'mode=0755'
tmpfs /sbin
$SELINUX
&&
chcon
u:object_r:rootfs:s0 /sbin
}
if
[
!
-f
/system/build.prop
]
;
then
# Running on PC
cd
"
`
dirname
"
$0
"
`
/.."
adb push native/out/x86/busybox native/out/x86/magisk scripts/emulator.sh /data/local/tmp
adb push native/out/x86/busybox scripts/emulator.sh /data/local/tmp
emu_arch
=
`
adb shell
uname
-m
`
if
[
$emu_arch
=
"x86_64"
]
;
then
adb push native/out/x86/magiskinit64 /data/local/tmp/magiskinit
else
adb push native/out/x86/magiskinit /data/local/tmp
fi
adb root
||
abort
'adb root failed'
adb shell sh /data/local/tmp/emulator.sh
exit
0
...
...
@@ -36,15 +43,14 @@ fi
cd
/data/local/tmp
chmod
777 busybox
# Currently only support rootfs based emulators
./busybox mount | ./busybox
grep
-q
rootfs
||
abort
'Only support non system-as-root emulators'
chmod
777 magiskinit
# Emulator's adb shell should have root
[
`
./busybox
id
-u
`
-eq
0
]
||
abort
'ADB shell should have root access'
# Check whether already setup
[
-f
/sbin/magisk
]
&&
abort
"Magisk is already setup"
./busybox pgrep magiskd
&&
abort
"Magisk is already setup"
# First setup a good env to work with
rm
-rf
bin
...
...
@@ -53,27 +59,61 @@ rm -rf bin
OLD_PATH
=
"
$PATH
"
PATH
=
"/data/local/tmp/bin:
$PATH
"
# Setup sbin mirror
mount
-o
rw,remount /
rm
-rf
/root
mkdir
/root
chmod
750 /root
ln
/sbin/
*
/root
mount
-o
ro,remount /
# SELinux stuffs
[
-e
/sys/fs/selinux
]
&&
SELINUX
=
true
||
SELINUX
=
false
if
$SELINUX
;
then
ln
-sf
./magiskinit magiskpolicy
./magiskpolicy
--live
--magisk
'allow magisk * * *'
fi
# Setup sbin overlay
mount
-t
tmpfs tmpfs /sbin
chmod
755 /sbin
ln
-s
/root/
*
/sbin
cp
./magisk /sbin/magisk
if
mount |
grep
-q
rootfs
;
then
mount
-o
rw,remount /
rm
-rf
/root
mkdir
/root
chmod
750 /root
ln
/sbin/
*
/root
mount
-o
ro,remount /
mount_sbin
ln
-s
/root/
*
/sbin
else
mount_sbin
mkdir
-p
/sbin/.magisk/mirror/system_root
block
=
`
mount |
grep
' / '
|
awk
'{ print $1 }'
`
[
$block
=
"/dev/root"
]
&&
block
=
/dev/block/dm-0
mount
-o
ro
$block
/sbin/.magisk/mirror/system_root
for
file
in
/sbin/.magisk/mirror/system_root/sbin/
*
;
do
[
!
-e
$file
]
&&
break
if
[
-L
$file
]
;
then
cp
-af
$file
/sbin
else
sfile
=
/sbin/
`
basename
$file
`
touch
$sfile
mount
-o
bind
$file
$sfile
fi
done
fi
# Magisk stuffs
if
[
-e
/apex
]
;
then
./magiskinit
-x
magisk /sbin/magisk.bin
[
-e
/system/lib64
]
&&
LIB
=
lib64
||
LIB
=
lib
cat
<<
EOF
> /sbin/magisk
#!/system/bin/sh
export LD_LIBRARY_PATH="\
$LD_LIBRARY_PATH
:/apex/com.android.runtime/
$LIB
"
exec /sbin/magisk.bin "\
$0
" "\
$@
"
EOF
else
./magiskinit
-x
magisk /sbin/magisk
fi
chmod
755 /sbin/magisk
ln
-s
./magisk /sbin/su
ln
-s
./magisk /sbin/resetprop
ln
-s
./magisk /sbin/magiskhide
mkdir
-p
/sbin/.magisk/busybox
cp
-af
./busybox /sbin/.magisk/busybox/busybox
/sbin/.magisk/busybox/busybox
--install
-s
/sbin/.magisk/busybox
# Magisk stuffs
mkdir
-p
/data/adb/modules 2>/dev/null
mkdir
/data/adb/post-fs-data.d 2>/dev/null
mkdir
/data/adb/services.d 2>/dev/null
magisk
--daemon
/sbin/
magisk
--daemon
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment