Commit Graph

78 Commits

Author SHA1 Message Date
topjohnwu fb5ee86615 Install one single ABI in ramdisk 2024-03-31 22:01:22 -07:00
topjohnwu 21ed095601 Update crt0 2024-03-25 16:11:02 -07:00
vvb2060 10069215f4 Rename dir name 2024-03-19 23:21:41 -07:00
canyie 825c6c4316 Reverse format template argument order 2024-03-06 01:39:16 -08:00
canyie f00408c793 Fix zygote restart monitor 2024-03-06 01:39:16 -08:00
LoveSy 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
LoveSy 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
topjohnwu 625a1d6f44 Remove seek support from streams 2024-02-28 11:07:53 -08:00
topjohnwu 715284b70d Reorganize code 2024-02-27 18:14:30 -08:00
LoveSy 62fc7868ac Use self implemented parse_mount_info 2024-02-27 17:03:22 -08:00
topjohnwu 1a70796339 Replace all parse_mount_info usage with Rust 2024-02-27 03:49:17 -08:00
topjohnwu af6965eefa Update init logging implementation
Use less std::fs
2024-02-26 17:49:11 -08:00
topjohnwu be433fa667 Use Rust for formatting
The fprintf implementation included in crt0 is too rudimental
2024-02-26 00:26:23 -08:00
topjohnwu db99caf258 Use execve directly 2024-02-24 01:47:11 -08:00
LoveSy df66458db6 Check full path of init.rc instead of its dir
Some devices has `/system/etc/init/hw` but has no init.rc in it.
2024-01-11 16:18:57 -08:00
LoveSy 8b7fae278b Support compressing during cpio backup 2023-12-18 16:21:08 +08:00
topjohnwu 65c18f9c09 Restructure project files 2023-11-08 01:46:02 -08:00
LoveSy 42eb928054 Inject zygisk.rc for sync --zygisk-restart 2023-11-06 15:39:48 -08:00
topjohnwu 66788dc58c Cleanup SELinux support 2023-10-16 17:38:44 -07:00
topjohnwu 36de62873a Fix error logging on the C++ side 2023-10-13 16:59:54 -07:00
topjohnwu e774408782 Allow AVD hacks on release builds 2023-10-11 14:17:31 -07:00
topjohnwu 46275b90c2 Generalize unxz 2023-09-21 05:47:21 -07:00
topjohnwu 0a2a590ab7 Use Utf8CStr for logging 2023-09-12 17:35:20 -07:00
topjohnwu 89aee6ffa7 Add more to the Utf8CStr family
Better C strings with path operations
2023-09-12 17:35:01 -07:00
topjohnwu 4eaf701cb7 Address clippy warnings 2023-09-06 21:45:12 -07:00
topjohnwu 732a161b67 Minor cleanup 2023-06-22 02:23:27 -07:00
vvb2060 9929b25339 Move su request path to magisk tmp 2023-06-20 03:29:06 -07:00
topjohnwu d7d0a44693 Remove randomness from Magisk 2023-06-14 17:05:49 -07:00
topjohnwu 5e2ef1b7f4 Better bytes support in C++ 2023-06-06 17:11:42 -07:00
topjohnwu 2a654e5d7f Improve byte_data const correctness 2023-06-03 03:16:03 -07:00
topjohnwu c30fbdf145 Simplify logging code 2023-05-29 01:27:40 -07:00
topjohnwu 533aeadd38 Update cstr macro 2023-05-25 01:03:04 -07:00
topjohnwu 18d0cedbe2 Parse rule files with Rust 2023-05-24 19:11:56 -07:00
topjohnwu 5a94ef9106 Fix init rust code setup 2023-05-23 21:50:13 -07:00
topjohnwu 8e8f01f8b5 Move project common code into include 2023-05-23 21:30:30 -07:00
topjohnwu 5627053b74 Move su folder into core 2023-05-23 01:36:25 -07:00
topjohnwu 2bcf2e76f1 Generate cxx binding in build.rs 2023-05-19 15:16:54 -07:00
vvb2060 726ffdcd98 Fix meizu rootfs type 2023-05-06 00:06:59 -07:00
vvb2060 f9d22cf8ee New magisk tmp dir: /debug_ramdisk
Co-authored-by: LoveSy <shana@zju.edu.cn>
2023-05-06 00:04:11 -07:00
vvb2060 ee50da566f Cancel recursive bind 2023-05-06 00:04:11 -07:00
vvb2060 9f7d410959 Use pathname local socket 2023-05-06 00:04:11 -07:00
topjohnwu b136aba1e2 Implement magiskinit logging in Rust 2023-05-02 16:49:43 -07:00
topjohnwu 0cf0d2b821 Move avd_hack boolean out of init class 2023-04-25 23:34:45 -07:00
vvb2060 68c2817d40 Enable avd hack for debug build 2023-04-25 23:00:59 -07:00
topjohnwu cc5ff36165 Revert "Cancel recursive bind"
This reverts commit a18a440236.
2023-04-05 10:47:13 -07:00
vvb2060 5c165c9bb0 Fix avd hack 2023-04-05 04:01:32 -07:00
topjohnwu 6c3519923d Make things more obvious 2023-04-05 04:01:07 -07:00
vvb2060 69529ac59c Fix restorecon 2023-04-04 02:34:16 -07:00
vvb2060 a18a440236 Cancel recursive bind 2023-04-04 02:12:07 -07:00
LoveSy aa7846c1c0 No need to mount ROOTMIR if tmp_dir != /sbin 2023-04-04 02:12:07 -07:00