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
bb67a837
Commit
bb67a837
authored
Jun 24, 2019
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adjust class structures
parent
6cde6951
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
35 additions
and
42 deletions
+35
-42
early_mount.cpp
native/jni/init/early_mount.cpp
+20
-0
init.cpp
native/jni/init/init.cpp
+1
-28
init.h
native/jni/init/init.h
+4
-6
rootdir.cpp
native/jni/init/rootdir.cpp
+10
-8
No files found.
native/jni/init/early_mount.cpp
View file @
bb67a837
...
...
@@ -115,6 +115,12 @@ void LegacyInit::early_mount() {
char
fstype
[
32
];
char
block_dev
[
64
];
full_read
(
"/init"
,
&
self
.
buf
,
&
self
.
sz
);
LOGD
(
"Reverting /init
\n
"
);
root
=
xopen
(
"/"
,
O_RDONLY
|
O_CLOEXEC
);
rename
(
"/.backup/init"
,
"/init"
);
mount_root
(
system
);
mount_root
(
vendor
);
mount_root
(
product
);
...
...
@@ -126,6 +132,12 @@ void SARCompatInit::early_mount() {
char
fstype
[
32
];
char
block_dev
[
64
];
full_read
(
"/init"
,
&
self
.
buf
,
&
self
.
sz
);
LOGD
(
"Cleaning rootfs
\n
"
);
root
=
xopen
(
"/"
,
O_RDONLY
|
O_CLOEXEC
);
frm_rf
(
root
,
{
".backup"
,
"overlay"
,
"proc"
,
"sys"
});
LOGD
(
"Early mount system_root
\n
"
);
sprintf
(
partname
,
"system%s"
,
cmd
->
slot
);
setup_block
(
partname
,
block_dev
);
...
...
@@ -164,6 +176,14 @@ static void switch_root(const string &path) {
void
SARInit
::
early_mount
()
{
char
partname
[
32
];
full_read
(
"/init"
,
&
self
.
buf
,
&
self
.
sz
);
full_read
(
"/.backup/.magisk"
,
&
config
.
buf
,
&
config
.
sz
);
LOGD
(
"Cleaning rootfs
\n
"
);
int
root
=
xopen
(
"/"
,
O_RDONLY
|
O_CLOEXEC
);
frm_rf
(
root
,
{
"proc"
,
"sys"
});
close
(
root
);
LOGD
(
"Early mount system_root
\n
"
);
sprintf
(
partname
,
"system%s"
,
cmd
->
slot
);
system_dev
=
setup_block
(
partname
);
...
...
native/jni/init/init.cpp
View file @
bb67a837
...
...
@@ -124,40 +124,13 @@ void BaseInit::re_exec_init() {
exit
(
1
);
}
void
LegacyInit
::
preset
()
{
full_read
(
"/init"
,
&
self
.
buf
,
&
self
.
sz
);
LOGD
(
"Reverting /init
\n
"
);
root
=
open
(
"/"
,
O_RDONLY
|
O_CLOEXEC
);
rename
(
"/.backup/init"
,
"/init"
);
}
void
SARInit
::
preset
()
{
full_read
(
"/init"
,
&
self
.
buf
,
&
self
.
sz
);
full_read
(
"/.backup/.magisk"
,
&
config
.
buf
,
&
config
.
sz
);
LOGD
(
"Cleaning rootfs
\n
"
);
root
=
open
(
"/"
,
O_RDONLY
|
O_CLOEXEC
);
frm_rf
(
root
,
{
"proc"
,
"sys"
});
}
void
SARCompatInit
::
preset
()
{
full_read
(
"/init"
,
&
self
.
buf
,
&
self
.
sz
);
LOGD
(
"Cleaning rootfs
\n
"
);
root
=
open
(
"/"
,
O_RDONLY
|
O_CLOEXEC
);
frm_rf
(
root
,
{
".backup"
,
"overlay"
,
"proc"
,
"sys"
});
}
void
RootFSInit
::
start
()
{
preset
();
early_mount
();
setup_rootfs
();
re_exec_init
();
}
void
SARInit
::
start
()
{
preset
();
early_mount
();
patch_rootdir
();
re_exec_init
();
...
...
@@ -178,8 +151,8 @@ class TestInit : public SARInit {
public
:
TestInit
(
char
*
argv
[],
cmdline
*
cmd
)
:
SARInit
(
argv
,
cmd
)
{};
void
start
()
override
{
preset
();
early_mount
();
patch_rootdir
();
cleanup
();
}
};
...
...
native/jni/init/init.h
View file @
bb67a837
...
...
@@ -26,13 +26,11 @@ public:
class
MagiskInit
:
public
BaseInit
{
protected
:
raw_data
self
{};
int
root
=
-
1
;
bool
mnt_system
=
false
;
bool
mnt_vendor
=
false
;
bool
mnt_product
=
false
;
bool
mnt_odm
=
false
;
virtual
void
preset
()
=
0
;
virtual
void
early_mount
()
=
0
;
bool
read_dt_fstab
(
const
char
*
name
,
char
*
partname
,
char
*
fstype
);
bool
patch_sepolicy
();
...
...
@@ -46,7 +44,6 @@ protected:
raw_data
config
{};
dev_t
system_dev
;
void
preset
()
override
;
void
early_mount
()
override
;
void
patch_rootdir
();
public
:
...
...
@@ -56,7 +53,9 @@ public:
class
RootFSInit
:
public
MagiskInit
{
protected
:
void
setup_rootfs
();
int
root
=
-
1
;
virtual
void
setup_rootfs
();
public
:
RootFSInit
(
char
*
argv
[],
cmdline
*
cmd
)
:
MagiskInit
(
argv
,
cmd
)
{};
void
start
()
override
;
...
...
@@ -64,7 +63,6 @@ public:
class
LegacyInit
:
public
RootFSInit
{
protected
:
void
preset
()
override
;
void
early_mount
()
override
;
public
:
LegacyInit
(
char
*
argv
[],
cmdline
*
cmd
)
:
RootFSInit
(
argv
,
cmd
)
{};
...
...
@@ -72,8 +70,8 @@ public:
class
SARCompatInit
:
public
RootFSInit
{
protected
:
void
preset
()
override
;
void
early_mount
()
override
;
void
setup_rootfs
()
override
;
public
:
SARCompatInit
(
char
*
argv
[],
cmdline
*
cmd
)
:
RootFSInit
(
argv
,
cmd
)
{};
};
...
...
native/jni/init/rootdir.cpp
View file @
bb67a837
...
...
@@ -40,14 +40,6 @@ constexpr const char wrapper[] =
;
void
RootFSInit
::
setup_rootfs
()
{
if
(
cmd
->
system_as_root
)
{
// Clone rootfs
LOGD
(
"Clone root dir from system to rootfs
\n
"
);
int
system_root
=
xopen
(
"/system_root"
,
O_RDONLY
|
O_CLOEXEC
);
clone_dir
(
system_root
,
root
,
false
);
close
(
system_root
);
}
if
(
patch_sepolicy
())
{
constexpr
char
SYSTEM_INIT
[]
=
"/system/bin/init"
;
// If init is symlink, copy it to rootfs so we can patch
...
...
@@ -131,6 +123,16 @@ void RootFSInit::setup_rootfs() {
close
(
fd
);
}
void
SARCompatInit
::
setup_rootfs
()
{
// Clone rootfs
LOGD
(
"Clone root dir from system to rootfs
\n
"
);
int
system_root
=
xopen
(
"/system_root"
,
O_RDONLY
|
O_CLOEXEC
);
clone_dir
(
system_root
,
root
,
false
);
close
(
system_root
);
RootFSInit
::
setup_rootfs
();
}
bool
MagiskInit
::
patch_sepolicy
()
{
bool
patch_init
=
false
;
...
...
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