Разработчикът на Magisk направи два големи пробива: поддръжка за система като root и логически дялове за Google Pixel 3 и Pixel 3a на Android Q.
Google пусна първата бета версия на Android Q още през март и бързо достъп до root чрез Magisk стана наличен за Google Pixel и Google Pixel 2. Google Pixel 3 обаче не може да бъде руутнат на Android Q, тъй като разработчикът на Magisk, XDA Recognized Developer topjohnwu, необходими, за да разберете как да работите с новото оформление на логическите дялове. С новия си стаж в Apple topjohnwu имаше по-малко време да работи върху Magisk, но това не му попречи да направи два големи пробива в разработката. В последната версия на Canary, Magisk вече поддържа система като root, което прави по-трудно за приложенията да открият root достъп, а също така поддържа устройства с логически дялове като сериите Pixel 3 и Pixel 3a XL на Android Q.
Форуми за Google Pixel 3Форуми за Google Pixel 3 XL
Форуми за Google Pixel 3aФоруми за Google Pixel 3a XL
Поддръжка на логически дял на Google Pixel 3 и Pixel 3a на Android Q
За да помогне на разработчиците да тестват AOSP версии на Android на съществуващи устройства, Google пуска Generic System Images (GSI), които могат да се зареждат на устройства, съвместими с Project Treble (всяко устройство, което стартиран с Android 9 Pie или по-нова версия.) Инсталирането на GSI изисква отключване на буутлоудъра, което може да не е възможно на всички устройства, и флашване на системно изображение през fastboot след изтриване на потребител данни. В Android Q Google въвежда нова функция, наречена Динамични системни актуализации което позволява на разработчиците да стартират GSI, без да отключват буутлоудъра или да изтриват данни. За да поддържа динамични системни актуализации, устройството трябва да има логически дялове, които могат да бъдат динамично преоразмерени, за да направят място за инсталацията на GSI. Google Pixel 3, Google Pixel 3 XL, Google Pixel 3a и Google Pixel 3a XL имат логически дялове на бета версиите на Android Q, въпреки че само Pixel 3 и Pixel 3 XL поддържат DSU. Независимо от това, поради тази радикална промяна в структурата на дяловете, Magisk не работеше.
Когато topjohnwu е решен, нищо не го спира да получи root достъп. Точно онзи ден той обяви, че успешно е руутнал своя Pixel 3 XL на Android Q beta 4. Неговото описание на ангажимента тук обяснява техническите подробности за това как е постигнал поддръжка на логически дялове, но важното е, че Magisk вече може да се инсталира на устройства със или без логически дялове.
Поддръжка на System-as-Root
За устройства с A/B двойни прегради, системният дял е монтиран като главна директория (/), но устройства без A/B двойни дялове имат системния дял, монтиран в /system. Това прави невъзможни OTA само за системата на не-A/B устройства, тъй като файловете в ramdisk, които се нуждаят от актуализиране, се намират в дяла за зареждане. Ето защо, за да направи възможни OTA само за системата в Android Pie и по-нови версии, Google изисква всички устройства, стартиращи с Android Pie, да поддържат оформлението на системния дял като root. В оформлението system-as-root изображението на ramdisk се слива в системното изображение, което се монтира като rootfs.
Откакто Google представи системата като root, решение за root устройства беше да се върне системата-като-root обратно към старото оформление на дяла "initramfs rootfs". Че върши работа добре за Android 7.1 до Android 9 Pie, тъй като Android има наследена поддръжка за това старо оформление, но Android Q напълно премахва поддръжката като система като root вече е задължителна за всички устройства, дори и за онези устройства, които се актуализират до Android Q. Предишните версии на Magisk все още работеха благодарение на някои „наистина гадни хакове“, но topjohnwu не беше доволен от това решение, така че да поддържа правилно системата като root, той има въведени "MagiskInit."
Приятен страничен ефект от правилното поддържане на оформлението на системния дял е, че един потенциален път на откриване на корен е смачкан. Както topjohnwu любезно ми обясни, старият метод „връщане към initramfs rootfs“ беше лесен за откриване от приложенията, защото Magisk щеше да се монтира система към '/system_root' и свързване на монтиране '/system_root/system' към '/system.' Всичко, което едно приложение трябва да направи, за да открие наличието на root, е проверете дали '/system_root' съществува или дали '/' е 'rootfs.' Не е ясно обаче дали някое приложение наистина се е възползвало от това, за да открие корен. Все пак е по-добре да се предпазим, отколкото да съжаляваме.
Разни промени
Android Q въвежда поддръжка за нещо, наречено "басейн с бластула“ към жизнения цикъл на приложението за Android. MagiskHide беше неспособен за откриване на приложения, от които да скриете root достъпа, ако е активирана новата функция „пул от процеси“. Последната версия на Canary вече поддържа тази функция. Според topjohnwu: „За да поддържам правилно новата оптимизация на пула на бластула, въведена в Q, бях пренаписал добра част от логиката на ptracing за мониторинг на процеса.“
Ако имате Pixel 3, Pixel 3 XL, Pixel 3a или Pixel 3a XL на Android Q beta, изпробвайте най-новата версия на Magisk Canary и ни уведомете, ако успеете да руутнете вашето устройство.
Magisk Canary Channel