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
d274e455
Commit
d274e455
authored
Mar 30, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix SuperSU installation
parent
0a0eb3f7
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
117 additions
and
23 deletions
+117
-23
build.cmd
build.cmd
+1
-1
build.sh
build.sh
+1
-1
cpio.c
jni/magiskboot/cpio.c
+5
-4
custom_ramdisk_patch.sh
scripts/custom_ramdisk_patch.sh
+57
-0
flash_script.sh
scripts/flash_script.sh
+53
-17
No files found.
build.cmd
View file @
d274e455
...
@@ -102,7 +102,7 @@ EXIT /B %ERRORLEVEL%
...
@@ -102,7 +102,7 @@ EXIT /B %ERRORLEVEL%
ECHO ************************
ECHO ************************
ECHO * Copying Files
ECHO * Copying Files
ECHO ************************
ECHO ************************
COPY /Y scripts\
ramdisk_patch.sh zip_static\common\
ramdisk_patch.sh
COPY /Y scripts\
custom_ramdisk_patch.sh zip_static\common\custom_
ramdisk_patch.sh
COPY /Y scripts\init.magisk.rc zip_static\common\init.magisk.rc
COPY /Y scripts\init.magisk.rc zip_static\common\init.magisk.rc
COPY /Y binaries\busybox-arm zip_static\arm\busybox
COPY /Y binaries\busybox-arm zip_static\arm\busybox
COPY /Y binaries\busybox-arm64 zip_static\arm64\busybox
COPY /Y binaries\busybox-arm64 zip_static\arm64\busybox
...
...
build.sh
View file @
d274e455
...
@@ -75,7 +75,7 @@ zip_package() {
...
@@ -75,7 +75,7 @@ zip_package() {
echo
"************************"
echo
"************************"
echo
"* Copying files"
echo
"* Copying files"
echo
"************************"
echo
"************************"
cp
-afv
scripts/
ramdisk_patch.sh zip_static/common/
ramdisk_patch.sh
cp
-afv
scripts/
custom_ramdisk_patch.sh zip_static/common/custom_
ramdisk_patch.sh
cp
-afv
scripts/init.magisk.rc zip_static/common/init.magisk.rc
cp
-afv
scripts/init.magisk.rc zip_static/common/init.magisk.rc
cp
-afv
binaries/busybox-arm zip_static/arm/busybox
cp
-afv
binaries/busybox-arm zip_static/arm/busybox
cp
-afv
binaries/busybox-arm64 zip_static/arm64/busybox
cp
-afv
binaries/busybox-arm64 zip_static/arm64/busybox
...
...
jni/magiskboot/cpio.c
View file @
d274e455
...
@@ -195,18 +195,19 @@ static void cpio_add(mode_t mode, const char *entry, const char *filename, vecto
...
@@ -195,18 +195,19 @@ static void cpio_add(mode_t mode, const char *entry, const char *filename, vecto
}
}
static
void
cpio_test
(
vector
*
v
)
{
static
void
cpio_test
(
vector
*
v
)
{
#define MAGISK_PATCH 0x1
#define SUPERSU_PATCH 0x2
int
ret
=
0
;
int
ret
=
0
;
cpio_file
*
f
;
cpio_file
*
f
;
vec_for_each
(
v
,
f
)
{
vec_for_each
(
v
,
f
)
{
if
(
strcmp
(
f
->
filename
,
"sbin/launch_daemonsu.sh"
)
==
0
)
{
if
(
strcmp
(
f
->
filename
,
"sbin/launch_daemonsu.sh"
)
==
0
)
{
if
(
!
ret
)
ret
=
2
;
ret
|=
SUPERSU_PATCH
;
}
else
if
(
strcmp
(
f
->
filename
,
"init.magisk.rc"
)
==
0
)
{
}
else
if
(
strcmp
(
f
->
filename
,
"init.magisk.rc"
)
==
0
)
{
ret
=
1
;
ret
|=
MAGISK_PATCH
;
break
;
}
}
}
}
cpio_vec_destroy
(
v
);
cpio_vec_destroy
(
v
);
exit
(
ret
);
exit
(
(
ret
&
SUPERSU_PATCH
)
?
SUPERSU_PATCH
:
(
ret
&
MAGISK_PATCH
)
);
}
}
static
int
check_verity_pattern
(
const
char
*
s
)
{
static
int
check_verity_pattern
(
const
char
*
s
)
{
...
...
scripts/ramdisk_patch.sh
→
scripts/
custom_
ramdisk_patch.sh
View file @
d274e455
# This file will be sourced by Magisk patch zip, so all variables in the main script should be present
#!/system/bin/sh
# However, this file may also be called by SuperSU, so we still have to find our own variables in this case
RAMDISK
=
$1
RAMDISK
=
$1
if
[
-z
$MAGISK
]
;
then
TMPDIR
=
/dev/tmp
TMPDIR
=
/dev/tmp
MAGISKBIN
=
/data/magisk
MAGISKBIN
=
/data/magisk
[
!
-e
$MAGISKBIN
]
&&
MAGISKBIN
=
/cache/data_bin
[
!
-e
$MAGISKBIN
]
&&
MAGISKBIN
=
/cache/data_bin
[
!
-e
$MAGISKBIN
]
&&
exit
1
[
!
-e
$MAGISKBIN
]
&&
exit
1
SYSTEMLIB
=
/system/lib
SYSTEMLIB
=
/system/lib
[
-d
/system/lib64
]
&&
SYSTEMLIB
=
/system/lib64
[
-d
/system/lib64
]
&&
SYSTEMLIB
=
/system/lib64
KEEPVERITY
=
true
KEEPFORCEENCRYPT
=
true
fi
mkdir
-p
$TMPDIR
2>/dev/null
cd
$TMPDIR
cd
$TMPDIR
# --cpio-add <incpio> <mode> <entry> <infile>
cpio_add
()
{
cpio_add
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-add
$RAMDISK
$1
$2
$3
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-add
$RAMDISK
$RAMDISK
$1
$2
$3
}
}
# --cpio-extract <incpio> <entry> <outfile>
cpio_extract
()
{
cpio_extract
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-extract
$RAMDISK
$1
$2
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-extract
$RAMDISK
$1
$2
}
}
# --cpio-mkdir <incpio> <mode> <entry>
cpio_mkdir
()
{
cpio_mkdir
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-mkdir
$RAMDISK
$1
$2
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-mkdir
$RAMDISK
$RAMDISK
$1
$2
}
}
# The common patches
# Recursive
$KEEPVERITY
||
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-patch-dmverity
$RAMDISK
cpio_rm
()
{
$KEEPFORCEENCRYPT
||
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-patch-forceencrypt
$RAMDISK
if
[
"
$1
"
=
"-r"
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-ls
$RAMDISK
|
grep
"^
$2
/"
|
while
read
i
;
do
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-rm
$RAMDISK
$RAMDISK
$i
done
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-rmdir
$RAMDISK
$RAMDISK
$2
else
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-rm
$RAMDISK
$RAMDISK
$1
fi
}
# Cleanup SuperSU backups
cpio_rm
-r
.subackup
# Add magisk entrypoint
# Add magisk entrypoint
cpio_extract init.rc init.rc
cpio_extract init.rc init.rc
...
@@ -47,11 +51,7 @@ LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskpolicy --load sepolicy --save sepoli
...
@@ -47,11 +51,7 @@ LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskpolicy --load sepolicy --save sepoli
cpio_add 644 sepolicy sepolicy
cpio_add 644 sepolicy sepolicy
# Add new items
# Add new items
cpio_mkdir 755 magisk
cpio_mkdir 755 magisk
cpio_add 750 init.magisk.rc
$MAGISKBIN
/init.magisk.rc
cp
-af
$MAGISKBIN
/init.magisk.rc init.magisk.rc
[
!
-z
$SHA1
]
&&
echo
"# STOCKSHA1=
$SHA1
"
>>
init.magisk.rc
cpio_add 750 init.magisk.rc init.magisk.rc
cpio_add 750 sbin/magic_mask.sh
$MAGISKBIN
/magic_mask.sh
cpio_add 750 sbin/magic_mask.sh
$MAGISKBIN
/magic_mask.sh
scripts/flash_script.sh
View file @
d274e455
...
@@ -171,6 +171,21 @@ remove_system_su() {
...
@@ -171,6 +171,21 @@ remove_system_su() {
fi
fi
}
}
# --cpio-add <incpio> <mode> <entry> <infile>
cpio_add
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-add
ramdisk.cpio
$1
$2
$3
}
# --cpio-extract <incpio> <entry> <outfile>
cpio_extract
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-extract
ramdisk.cpio
$1
$2
}
# --cpio-mkdir <incpio> <mode> <entry>
cpio_mkdir
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-mkdir
ramdisk.cpio
$1
$2
}
##########################################################################################
##########################################################################################
# Detection
# Detection
##########################################################################################
##########################################################################################
...
@@ -249,7 +264,7 @@ is_mounted /data && MAGISKBIN=/data/magisk || MAGISKBIN=/cache/data_bin
...
@@ -249,7 +264,7 @@ is_mounted /data && MAGISKBIN=/data/magisk || MAGISKBIN=/cache/data_bin
rm
-rf
$MAGISKBIN
2>/dev/null
rm
-rf
$MAGISKBIN
2>/dev/null
mkdir
-p
$MAGISKBIN
mkdir
-p
$MAGISKBIN
cp
-af
$BINDIR
/busybox
$BINDIR
/magiskboot
$BINDIR
/magiskpolicy
$COMMONDIR
/magisk.apk
\
cp
-af
$BINDIR
/busybox
$BINDIR
/magiskboot
$BINDIR
/magiskpolicy
$COMMONDIR
/magisk.apk
\
$COMMONDIR
/init.magisk.rc
$COMMONDIR
/ramdisk_patch.sh
$COMMONDIR
/magic_mask.sh
$MAGISKBIN
$COMMONDIR
/init.magisk.rc
$COMMONDIR
/
custom_
ramdisk_patch.sh
$COMMONDIR
/magic_mask.sh
$MAGISKBIN
# Legacy support
# Legacy support
ln
-sf
/data/magisk/magiskpolicy
$MAGISKBIN
/sepolicy-inject
ln
-sf
/data/magisk/magiskpolicy
$MAGISKBIN
/sepolicy-inject
...
@@ -372,8 +387,9 @@ case $? in
...
@@ -372,8 +387,9 @@ case $? in
2
)
# SuperSU patched
2
)
# SuperSU patched
SUPERSU
=
true
SUPERSU
=
true
ui_print
"- SuperSU patched boot detected!"
ui_print
"- SuperSU patched boot detected!"
ui_print
"- Adding auto patch script for SuperSU"
ui_print
"- Adding ramdisk patch script for SuperSU"
cp
-af
$COMMONDIR
/ramdisk_patch.sh /data/custom_ramdisk_patch.sh
cp
-af
$COMMONDIR
/custom_ramdisk_patch.sh /data/custom_ramdisk_patch.sh
ui_print
"- We are using SuperSU's own tools, mounting su.img"
is_mounted /data
&&
SUIMG
=
/data/su.img
||
SUIMG
=
/cache/su.img
is_mounted /data
&&
SUIMG
=
/data/su.img
||
SUIMG
=
/cache/su.img
mount_image
$SUIMG
/su
mount_image
$SUIMG
/su
SUPERSULOOP
=
$LOOPDEVICE
SUPERSULOOP
=
$LOOPDEVICE
...
@@ -390,21 +406,15 @@ case $? in
...
@@ -390,21 +406,15 @@ case $? in
rm
stock_boot.img
rm
stock_boot.img
else
else
ui_print
"! Cannot find stock boot image backup"
ui_print
"! Cannot find stock boot image backup"
ui_print
"! Will still try to complete installation"
exit
1
# Since no backup at all, let's try our best...
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-restore
ramdisk.cpio
cp
-af
ramdisk.cpio ramdisk.cpio.orig
fi
fi
fi
fi
else
else
ui_print
"! SuperSU image mount failed..."
ui_print
"! SuperSU image mount failed..."
ui_print
"! Will still try to complete installation"
ui_print
"! Magisk scripts are placed correctly"
# Since we cannot rely on sukernel, do it outselves...
ui_print
"! Flash SuperSU immediately to finish installation"
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-restore
ramdisk.cpio
exit
1
cp
-af
ramdisk.cpio ramdisk.cpio.orig
fi
fi
# Remove SuperSU backups, since we are recreating it
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-rm
ramdisk.cpio
-r
.subackup
;;
;;
esac
esac
...
@@ -414,13 +424,39 @@ esac
...
@@ -414,13 +424,39 @@ esac
# All ramdisk patch commands are stored in a separate script
# All ramdisk patch commands are stored in a separate script
ui_print
"- Patching ramdisk"
ui_print
"- Patching ramdisk"
source
$COMMONDIR
/ramdisk_patch.sh
$BOOTTMP
/ramdisk.cpio
cd
$BOOTTMP
# Create ramdisk backups
if
$SUPERSU
;
then
if
$SUPERSU
;
then
[
-f
/su/bin/sukernel
]
&&
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-backup
ramdisk.cpio.orig ramdisk.cpio ramdisk.cpio
# Use sukernel to patch ramdisk, so we can use its own tools to backup
sh
$COMMONDIR
/custom_ramdisk_patch.sh
$BOOTTMP
/ramdisk.cpio
# Create ramdisk backups
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-backup
ramdisk.cpio.orig ramdisk.cpio ramdisk.cpio
else
else
# The common patches
$KEEPVERITY
||
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-patch-dmverity
ramdisk.cpio
$KEEPFORCEENCRYPT
||
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-patch-forceencrypt
ramdisk.cpio
# Add magisk entrypoint
cpio_extract init.rc init.rc
grep
"import /init.magisk.rc"
init.rc
>
/dev/null
||
sed
-i
'1,/.*import.*/s/.*import.*/import \/init.magisk.rc\n&/'
init.rc
sed
-i
"/selinux.reload_policy/d"
init.rc
cpio_add 750 init.rc init.rc
# sepolicy patches
cpio_extract sepolicy sepolicy
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskpolicy
--load
sepolicy
--save
sepolicy
--minimal
cpio_add 644 sepolicy sepolicy
# Add new items
cpio_mkdir 755 magisk
[
!
-z
$SHA1
]
&&
echo
"# STOCKSHA1=
$SHA1
"
>>
$COMMONDIR
/init.magisk.rc
cpio_add 750 init.magisk.rc
$COMMONDIR
/init.magisk.rc
cpio_add 750 sbin/magic_mask.sh
$COMMONDIR
/magic_mask.sh
# Create ramdisk backups
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-backup
ramdisk.cpio ramdisk.cpio.orig
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-backup
ramdisk.cpio ramdisk.cpio.orig
fi
fi
...
...
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