Commit Graph

1989 Commits

Author SHA1 Message Date
36bd00a046 Add p521 to magiskboot 2024-04-03 21:03:05 -07:00
fb5ee86615 Install one single ABI in ramdisk 2024-03-31 22:01:22 -07:00
30bf5c8448 Fix typos 2024-03-31 14:17:25 -07:00
2051836a73 Remove unused code 2024-03-30 21:03:51 -07:00
2cb0af1ff3 Move revert_unmount into Rust 2024-03-30 02:51:39 -07:00
a1b6568226 Implement preinit related features in Rust 2024-03-28 14:11:03 -07:00
1eddbfd72c Use const_format for const strings 2024-03-26 18:03:40 -07:00
21ed095601 Update crt0 2024-03-25 16:11:02 -07:00
9a008c17ba Optimize for binary size 2024-03-22 16:53:44 -07:00
08dbf728a4 Allow platform_app to access MagiskSU 2024-03-22 16:53:44 -07:00
4670f762d3 Disable debug only features 2024-03-22 16:53:44 -07:00
efa49567fa Fix parsing logic for term and sterm 2024-03-21 18:17:28 -07:00
0ffc4527a7 Better error reporting 2024-03-21 15:10:34 -07:00
dd9d43be96 Move sepolicy parsing error message into Rust 2024-03-21 14:07:28 -07:00
865fca71a5 Optimize sepolicy rules
Close #7916

Co-authored-by: vvb2060 <vvb2060@gmail.com>
2024-03-21 01:51:35 -07:00
6b4baa3bcd Change a little parsing handling 2024-03-21 00:04:09 -07:00
a9ee2d7d18 Fix xperm parsing logic 2024-03-20 23:13:54 -07:00
d654b9cb97 Several code cleanups in sepolicy 2024-03-20 23:09:22 -07:00
4d2921e742 Rewrite sepolicy statement parsing in Rust 2024-03-20 10:12:23 -07:00
ecc74d45d1 Let magic mount optional 2024-03-19 23:21:41 -07:00
5de597f079 No need to unshare 2024-03-19 23:21:41 -07:00
156b0e67ca No need extra tmpfs for worker 2024-03-19 23:21:41 -07:00
10069215f4 Rename dir name 2024-03-19 23:21:41 -07:00
92b305a389 Remove unnecessary mirror for magic mount
Mirror was previously used for accessing the original file during
magic mount when we are using a tmpfs to cover the target. However,
since we introduce atomic mount, we switch all tmpfs mount in
worker and then move to the target at once. It means that we can
still access the original file when we are constructing the tmpfs
mount point. Thus we no longer need mirror.
2024-03-19 23:21:41 -07:00
d20b30c771 Update libsepol
Close #7915
2024-03-19 02:54:01 -07:00
73c3d741a7 Reorganize some code 2024-03-06 18:07:01 -08:00
991802ab82 Add no decompression flag to magiskboot split 2024-03-06 16:15:30 -08:00
825c6c4316 Reverse format template argument order 2024-03-06 01:39:16 -08:00
f00408c793 Fix zygote restart monitor 2024-03-06 01:39:16 -08:00
a6ff3672af Update crt0 2024-03-04 16:42:25 -08:00
2290ddeb89 Fix segfault when sepolicy.rule has empty line 2024-03-02 06:15:45 -08:00
74af79ad03 Update crt0 2024-03-02 05:57:48 -08:00
b6c24a3a8a No more sony init.real tricks
Co-authored-by: canyie <a1364259@163.com>
Co-authored-by: vvb2060 <vvb2060@gmail.com>
2024-02-29 23:40:00 -08:00
a8c2ae223a Avoid hexpatch /init for 2SI when possible
Previous we hexpatch /init from /system/bin/init to /data/magiskinit
to redirect the second stage init. However, some devices like sony
has /init that does not directly invoke /system/bin/init, and thus
the hexpatch fails.

In this patch, we further make use of AOSP `SwitchRoot` to help us
bind mount /data/magisk to /system/bin/init after `SwitchRoot`.

Two important assumption about 2SI are i) that the second stage init
is always /system/bin/init and ii) that the /sdcard (path after
`SwitchRoot`) is always a symlink to `/storage/self/primary`. When
these assumptions hold, during first stage init (before `SwitchRoot`)
we can bind mount magiskinit to /sdcard, and create a symlink
/storage/self/primary to /system/system/bin/init. By these steps,
during `SwitchRoot`, AOSP init will try to mount move /sdcard to
/system/sdcard. And /system/sdcard is symlink to /storage/self/primary,
it will try to mount move /sdcard to /storage/self/primary. And
/storage/self/primary in ramfs is now a symlink that points to
/system/system/bin/init, thus AOSP will try to mount move /sdcard
(which is a bind mount to magiskinit) to /system/system/bin/init.
After chroot done by AOSP init, we then have a magiskinit bind mount
on /system/bin/init, which is the second stage init.

An edge case is that some devices (like meizu) use 2SI but
does not switch root. In this case, they must already have a /sdcard
in the ramfs, thus we can check if /sdcard exists and fallback to
hexpatch.
2024-02-29 23:40:00 -08:00
24e46a5971 Build magiskboot with crt0 2024-02-29 02:36:05 -08:00
b1297c4192 Less usage of C stdio 2024-02-28 15:52:03 -08:00
9ae328fd84 Further reduce code size 2024-02-28 11:19:56 -08:00
625a1d6f44 Remove seek support from streams 2024-02-28 11:07:53 -08:00
987e5f5413 Address clippy warnings 2024-02-27 21:03:34 -08:00
715284b70d Reorganize code 2024-02-27 18:14:30 -08:00
62fc7868ac Use self implemented parse_mount_info 2024-02-27 17:03:22 -08:00
1a70796339 Replace all parse_mount_info usage with Rust 2024-02-27 03:49:17 -08:00
af6965eefa Update init logging implementation
Use less std::fs
2024-02-26 17:49:11 -08:00
8f7d2e38f7 Make crt0 an external submodule 2024-02-26 17:34:17 -08:00
be433fa667 Use Rust for formatting
The fprintf implementation included in crt0 is too rudimental
2024-02-26 00:26:23 -08:00
0ccd6e7381 Fix fread and fwrite implementation 2024-02-25 23:20:30 -08:00
907bbbda41 Remove usage of patched static lib 2024-02-25 22:11:34 -08:00
4393bc077d Implement string routines 2024-02-25 21:12:19 -08:00
365b373480 Make it easy to build without crt0 2024-02-24 22:32:22 -08:00
47e6dd286d Minor fixes 2024-02-24 22:00:09 -08:00