Magisk-utvecklaren har gjort två stora genombrott: stöd för system-som-root och logiska partitioner för Google Pixel 3 och Pixel 3a på Android Q.
Google släppte den första Android Q-betan redan i mars, och root-åtkomst via Magisk snabbt blev tillgänglig för Google Pixel och Google Pixel 2. Google Pixel 3 kunde dock inte rotas på Android Q eftersom utvecklaren av Magisk, XDA Recognized Developer topjohnwu, behövs för att ta reda på hur man arbetar med den nya logiska partitionslayouten. Med sin nya praktik på Apple har topjohnwu haft mindre tid att arbeta på Magisk, men det har inte hindrat honom från att ha två stora genombrott i utvecklingen. I den senaste Canary-versionen stöder Magisk nu system-as-root, vilket gör det svårare för appar att upptäcka root åtkomst och stöder även enheter med logiska partitioner som Pixel 3 och Pixel 3a XL-serien på Android Q.
Google Pixel 3-forumGoogle Pixel 3 XL-forum
Google Pixel 3a-forumGoogle Pixel 3a XL-forum
Stöd för logisk partition för Google Pixel 3 och Pixel 3a på Android Q
För att hjälpa utvecklare att testa AOSP-versioner av Android på befintliga enheter släpper Google Generic System Images (GSI) som kan startas på Project Treble-kompatibla enheter (alla enheter som lanseras med Android 9 Pie eller senare.) För att installera en GSI krävs att starthanteraren låses upp, vilket kanske inte är möjligt på alla enheter, och att en systembild blinkar över fastboot efter att användaren har torkats data. I Android Q introducerar Google en ny funktion som heter Dynamiska systemuppdateringar som låter utvecklare starta upp en GSI utan att låsa upp starthanteraren eller torka data. För att stödja dynamiska systemuppdateringar måste en enhet ha logiska partitioner som kan ändras dynamiskt för att göra utrymme för GSI-installationen. Google Pixel 3, Google Pixel 3 XL, Google Pixel 3a och Google Pixel 3a XL har logiska partitioner på Android Q-betorna, även om endast Pixel 3 och Pixel 3 XL stöder DSU. Icke desto mindre är det på grund av denna radikala förändring i partitionsstrukturen som Magisk inte fungerade.
När topjohnwu är fast besluten hindrar ingenting honom från att uppnå root-åtkomst. Häromdagen meddelade han att han framgångsrikt hade rootat sin Pixel 3 XL på Android Q beta 4. Beskrivning av hans engagemang här förklarar de tekniska detaljerna om hur han fick stöd för logiska partitioner, men det viktiga är att Magisk nu kan installeras på enheter med eller utan logiska partitioner.
System-as-Root-stöd
För enheter med A/B dubbla partitioner, är systempartitionen monterad som rotkatalogen (/), men enheter utan dubbla A/B-partitioner har systempartitionen monterad på /system. Detta gör OTA för endast system omöjliga på icke-A/B-enheter eftersom filer i ramdisken, som behöver uppdateras, finns i startpartitionen. Det är därför, för att göra OTA: er för endast system möjliga i Android Pie och högre, kräver Google att alla enheter som lanseras med Android Pie stöder partitionslayouten system-som-rot. I system-as-root-layouten slås ramdisk-avbildningen samman till systemavbildningen, som är monterad som rootfs.
Sedan Google introducerade system-as-root, har lösning till rotenheter var att återställa system-as-root tillbaka till den gamla partitionslayouten "initramfs rootfs". Den där Arbetar bra för Android 7.1 till Android 9 Pie eftersom Android har äldre stöd för denna gamla layout, men Android Q helt tar bort stöd som system-as-root är nu obligatoriskt för alla enheter, även för de enheter som uppdateras till Android Q. Tidigare versioner av Magisk fungerade fortfarande tack vare några "riktigt otäcka hacks", men topjohnwu var inte nöjd med den lösningen så för att kunna stödja system-as-root korrekt infördes "MagiskInit."
En trevlig bieffekt av att korrekt stödja system-som-rot-partitionslayouten är att en potentiell väg rotdetektering har klämts. Som topjohnwu nådigt förklarade för mig, var den gamla "återgå till initramfs rootfs"-metoden lätt för appar att upptäcka eftersom Magisk skulle monteras system till '/system_root' och bind mount '/system_root/system' till '/system.' Allt en app skulle behöva göra för att upptäcka närvaron av root är kontrollera om '/system_root' finns eller om '/' är 'rootfs'. Det är dock inte klart att några appar faktiskt utnyttjade detta för att upptäcka rot. Ändå är det bättre safe than sorry.
Diverse ändringar
Android Q introducerar stöd för något som kallas "blastula pool" till Android-applikationens livscykel. MagiskHide var oförmögen för att upptäcka appar att dölja root-åtkomst från om den nya "processpool"-funktionen var aktiverad. Den senaste Canary-versionen stöder nu denna funktion. Enligt topjohnwu: "För att på rätt sätt stödja den nya blastula-pooloptimeringen som introducerades i Q, hade jag skrivit om en bra bit ptracing-logik för processövervakning."
Om du har en Pixel 3, Pixel 3 XL, Pixel 3a eller Pixel 3a XL på Android Q beta, prova den senaste Magisk Canary-versionen och låt oss veta om du lyckas rota din enhet.
Magisk Canary Channel