Commit Graph

6721 Commits

Author SHA1 Message Date
topjohnwu
d56f4fbc90 Fix stub on API 34 2024-03-08 15:57:49 -08:00
topjohnwu
73c3d741a7 Reorganize some code 2024-03-06 18:07:01 -08:00
pndwal
2b5fc75127
Update faq.md
Since system Safe Mode may activate without Magisk 'Safe Mode', this clarification will prevent users from erroneously concluding either that Safe Mode doesn't work or that modules are not the issue since 'Safe Mode' was apparently triggered...

Fixes this: #4624
2024-03-06 17:48:54 -08:00
osm0sis
991802ab82 Add no decompression flag to magiskboot split 2024-03-06 16:15:30 -08:00
WindowsFan9600
7f6b5305ba Improve Turkish language translation
Updated "reboot_download" string
2024-03-06 02:37:58 -08: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
topjohnwu
a6ff3672af Update crt0 2024-03-04 16:42:25 -08:00
LoveSy
2290ddeb89 Fix segfault when sepolicy.rule has empty line 2024-03-02 06:15:45 -08:00
topjohnwu
74af79ad03 Update crt0 2024-03-02 05:57:48 -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
953d44302c Remove ancient NDK binaries 2024-02-29 23:26:58 -08:00
topjohnwu
24e46a5971 Build magiskboot with crt0 2024-02-29 02:36:05 -08:00
topjohnwu
b1297c4192 Less usage of C stdio 2024-02-28 15:52:03 -08:00
topjohnwu
9ae328fd84 Further reduce code size 2024-02-28 11:19:56 -08:00
topjohnwu
625a1d6f44 Remove seek support from streams 2024-02-28 11:07:53 -08:00
topjohnwu
987e5f5413 Address clippy warnings 2024-02-27 21:03:34 -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
8f7d2e38f7 Make crt0 an external submodule 2024-02-26 17:34:17 -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
0ccd6e7381 Fix fread and fwrite implementation 2024-02-25 23:20:30 -08:00
topjohnwu
907bbbda41 Remove usage of patched static lib 2024-02-25 22:11:34 -08:00
topjohnwu
4393bc077d Implement string routines 2024-02-25 21:12:19 -08:00
topjohnwu
365b373480 Make it easy to build without crt0 2024-02-24 22:32:22 -08:00
topjohnwu
47e6dd286d Minor fixes 2024-02-24 22:00:09 -08:00
topjohnwu
0dbaf52566 Make all platforms build properly 2024-02-24 05:10:54 -08:00
topjohnwu
66f49dfab5 Remove unnecessary lock usage 2024-02-24 04:20:28 -08:00
topjohnwu
f8967e9274 Implement strerror 2024-02-24 04:02:46 -08:00
topjohnwu
a4f008fde5 Reorganize files 2024-02-24 03:41:22 -08:00
topjohnwu
e9980c778b Implement stub functions 2024-02-24 03:41:03 -08:00
topjohnwu
06b6fb0c33 Add setenv 2024-02-24 03:27:09 -08:00
topjohnwu
38cb3d4105 Add dirent implementation 2024-02-24 03:26:53 -08:00
topjohnwu
db99caf258 Use execve directly 2024-02-24 01:47:11 -08:00
topjohnwu
39dbffadfe Complete stdio 2024-02-24 01:28:58 -08:00
topjohnwu
b7505c3c9c Remove fopen usage in magiskinit 2024-02-24 00:45:07 -08:00
topjohnwu
3185e5a7ca Introduce string/mem functions 2024-02-23 23:56:31 -08:00
topjohnwu
e0cbe28711 Add the generic syscall function 2024-02-23 18:41:39 -08:00
topjohnwu
66cee19cea Add printf and sscanf family 2024-02-23 17:44:12 -08:00
topjohnwu
2ec29ade79 Add all missing syscalls 2024-02-23 14:35:12 -08:00
topjohnwu
c865d4e187 Add memory allocator 2024-02-22 21:22:27 -08:00
topjohnwu
a42a0a53ce Declare more symbols 2024-02-22 21:22:27 -08:00
topjohnwu
6d79de7d71 Initial crt0 implementation
Builds but cannot link, missing a lot of symbols
2024-02-22 21:22:27 -08:00
topjohnwu
7e9abe6e90 Update ONDK 2024-02-22 20:58:40 -08:00
残页
4d5510be4f Prompt users to use reboot button in System Updates
So the update engine can write verify info of partitions which fixes bootloop on newer Pixel devices
2024-02-19 02:14:12 -08:00
topjohnwu
b04e1394c0 Update README 2024-02-07 14:39:53 -08:00
topjohnwu
2aa923191e Rename DownloadManager to DownloadEngine
Also add some documentation
2024-02-06 17:54:15 -08:00