Розробник Magisk зробив два великих прориву: підтримка системи як кореня та логічних розділів для Google Pixel 3 та Pixel 3a на Android Q.
Google випустив першу бета-версію Android Q ще в березні, і швидкий доступ до root через Magisk стало доступним для Google Pixel і Google Pixel 2. Однак Google Pixel 3 не вдалося рутувати на Android Q, оскільки розробник Magisk, визнаний розробник XDA topjohnwu, необхідні для того, щоб зрозуміти, як працювати з новою структурою логічних розділів. З його новим стажуванням в Apple топджонву мав менше часу для роботи над 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
Щоб допомогти розробникам тестувати версії Android AOSP на наявних пристроях, Google випускає загальні образи системи (GSI), які можна завантажувати на пристроях, сумісних із Project Treble (будь-якому пристрої, який запущено з Android 9 Pie або пізнішої версії.) Встановлення GSI вимагає розблокування завантажувача, що може бути неможливим на всіх пристроях, і перемигання образу системи через швидке завантаження після очищення користувача даних. В 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, оскільки файли на RAM-диску, які потребують оновлення, розташовані в завантажувальному розділі. Ось чому, щоб зробити можливими лише системні OTA в Android Pie і новіших версіях, Google вимагає, щоб усі пристрої, які запускаються з Android Pie, підтримували макет розділу «система як кореневий». У макеті системи як кореневого, образ ramdisk об’єднується в образ системи, який монтується як rootfs.
Відтоді, як Google представив систему як root, рішення для root-пристроїв було повернути систему-як-корінь назад до старого макета розділу "initramfs rootfs". що працює відмінно підходить для Android 7.1 – Android 9 Pie, оскільки Android має застарілу підтримку цього старого макета, але Android Q повністю видаляє підтримка системи як адміністратора тепер є обов’язковою для всіх пристроїв, навіть для тих, які оновлюються до Android Q. Попередні версії Magisk все ще працювали завдяки деяким «справді неприємним хакам», але topjohnwu не був задоволений цим рішенням, тому для належної підтримки системи як root він має введено "MagiskInit."
Приємним побічним ефектом належної підтримки макета розділу системи як кореневого є те, що один потенційний проспект виявлення кореня було придушено. Як люб’язно пояснив мені topjohnwu, старий метод «повернутися до initramfs rootfs» було легко виявити для програм, оскільки Magisk монтував систему до '/system_root' і прив'яжіть монтування '/system_root/system' до '/system.' Все, що потрібно зробити програмі, щоб виявити присутність root-права перевірте, чи існує «/system_root» або чи «/» є «rootfs». Однак незрозуміло, чи дійсно якісь програми скористалися цим для виявлення корінь. І все-таки краще перестрахуватися, ніж шкодувати.
Різні зміни
Android Q представляє підтримку так званого "басейн бластули" до життєвого циклу програми Android. MagiskHide був не в змозі щоб виявити програми, від яких потрібно приховати кореневий доступ, якщо ввімкнено нову функцію «пул процесів». Остання версія Canary тепер підтримує цю функцію. За словами topjohnwu: «Для належної підтримки нової оптимізації пулу бластули, представленої в Q, я переписав хороший фрагмент логіки ptracing для моніторингу процесів».
Якщо у вас є Pixel 3, Pixel 3 XL, Pixel 3a або Pixel 3a XL на бета-версії Android Q, спробуйте останню версію Magisk Canary і повідомте нам, якщо вам вдасться рутувати свій пристрій.
Канарський канал Magisk