Si vous passez par Comment fonctionne Magisk y Comment rooter manuellement un téléphone il vous serait facile de comprendre pourquoi il est impossible d'atteindre ce que vous recherchez.
init
est le tout premier processus lancé par le noyau, qui, à son stade initial, définit SELinux enforcing
(si ce n'est pas déjà enforcing
). Avant cela, nous devons modifier la politique SELinux afin qu'elle ne restreigne pas le démon Root ( magiskd
) de fonctionner. Aussi init.rc
doit être corrigé pour injecter magiskd
service.
Une option simple consiste à corriger /sepolicy
et modifier /init.rc
lors de l'enracinement de l'appareil et de sauvegarder les fichiers sur l'appareil. Mais sur system-as-root
les appareils sur lesquels se trouvent les deux fichiers system.img
(et éventuellement vendor.img
), pas sur boot.img
. Donc les modifier casserait " sans système "et d'autres éléments connexes, en particulier dm-verity
et les OTAs.
Une autre option consiste à exécuter un processus avant même que init
qui corrige la politique SELinux et change init.rc
sur la route. Et le moyen le plus simple d'y parvenir est de remplacer les piles d'origine par des piles de rechange. init
avec Magisk init
pour que le noyau exécute ce dernier. Cependant, sur les dispositifs SAR init
est également sur system.img
donc on ne peut pas le remplacer. Mais nous pouvons toujours démarrer en mode de récupération qui a un ramdisk
où le Magisk's init
peut être placé et exécuté avant tout autre processus. Sur A/B
Récupération des dispositifs SAR ramdisk
est en boot.img
Ainsi, Magisk démarre toujours en mode de récupération en forçant le noyau à ignorer l'information. skip_initramfs
Paramètre cmdline reçu du chargeur de démarrage.
Y a-t-il un moyen d'obtenir la racine lors d'un redémarrage normal ?
Sur dispositifs SAR non-A/B (comme le vôtre) il n'y a pas ramdisk
en boot.img
Ainsi, la seule option pour conserver l'approche sans système est de placer Magisk init
en voie de guérison ramdisk
en recovery
la partition, et toujours démarrer en mode de récupération . A partir de là system.img
est monté à /system_root
par Magisk init
, le contenu de ramdisk
sont ensuite copiés dans /
nettoyage de tout ce qui existait auparavant, les fichiers sont ajoutés / modifiés dans rootfs /
, /system_root/system
est monté en liaison avec /system
et enfin [/system]/init
est exécuté pour un démarrage normal.
Cependant, les choses ont changé avec Android 10, maintenant system.img
est monté à /
mais les fichiers à ajouter / modifier comme /init.rc
y /sbin
sont superposés à des montages de reliure en tant que a tweeté par le développeur Magisk.