Breaking: Chainfire har i dag annonsert SuperSU Beta 2.27, og fjerner behovet for kjerne-ramdisk-modifikasjoner for å bruke root-tilgang på Android 5.0
Frem til nå, hvis du ønsket å få root på Android 5.0, måtte du flashe en modifisert kjerne på enheten din for å omgå noen SELinux-begrensninger. XDA senior anerkjent utvikler Kjedebrann nylig utgitt det tidligere nødvendige CF-Auto-Root pakken, som gjorde de nødvendige kjerne-ramdisk-modifikasjonene for å fjerne SELinux-begrensningen fra install-recovery.sh-skriptet på AOSP. Denne morgenen fikk Chainfire imidlertid smil på mange ansikter, da han annonsert på Twitter at dette ikke lenger vil være nødvendig fremover.
Frem til i dag hadde Chainfire planlagt å gi ut et automatisert ZIP-basert oppdateringsverktøy, for å automatisk patch kjernebilder fra TWRP-gjenoppretting, til han kom over en passende metode for å fjerne behovet for dette.
Denne avsløringen betyr at Android 5.0-brukere ikke lenger trenger å kjøre en modifisert kjerne for å få root-tilgang via SuperSU (eller andre rotløsninger). Selv om det ikke er et stort problem på Nexus-enheter med opplåsbare oppstartslastere, var behovet for ramdisk-modifikasjoner angående for mange brukere av bootloader-låste enheter som ingen opplåsing er tilgjengelig for (ja, det gjør de dessverre eksistere). Svaret på deres bønner er nå her, og vi kan presentere en eksklusiv forklaring på endringene som trengs. I det minste foreløpig (inntil/med mindre Google retter dette), er det mulig å få root-tilgang og deretter installere og bruke SuperSU på en Android 5.0-enhet, uten noen kjerne-ramdisk-tweaking. Grunnen til dette er behovet for SuperSU for å kjøre en tjeneste som root, for å tillate ubegrenset root-tilgang på SELinux-beskyttede enheter.
Tidligere ville SuperSU utnytte den forhåndsinstallerte AOSP flash_recovery tjeneste (brukes i AOSP for å oppdatere gjenoppretting etter en OTA-installasjon) for å starte SuperSU-demonen (som faktisk gir root-privilegiene for apper som ber om det). Med utgivelsen av Lollipop har denne tjenesten blitt lagt til en begrenset SELinux-kontekst, noe som betyr at den ikke lenger har uforfalsket tilgang til systemet. De tidligere kjernemodifikasjonene forsøkte å fjerne SELinux-begrensningene fra dette skriptet.
Chainfires siste betaversjon av SuperSU løser dette ved å bruke kjernetjenesten 'Zygote' (ansvarlig for å lansere alle Java-tjenester, og dermed alle apper installert på en enhet). Siden Zygote er en av de eneste tjenestene som er tilgjengelige på Android L, som startes som root i ubegrenset "init" SELinux-kontekst, dette gjør den til et hovedmål for bruk i driften av SuperSU. Etter oppstart har Zygote-tjenesten sin SELinux "init"-kontekst overført til sin endelige (begrensede) "Zygote"-kontekst. Chainfire har klart å modifisere Zygote-filene, for å kjøre kode som root-bruker, innenfor den ubegrensede "init"-konteksten, og bringer dermed SuperSU tilbake til Android L, uten kjerne modifikasjoner.
Dette er ikke første gang Chainfire henvender seg til Zygote for å løse disse problemene; den tidligere 2.23-betaen brukte Zygote som et middel til å muligens omgå noen andre SELinux-problemer (som førte til at root-apper gikk i stykker på Android L). Dette tillot noen (men ikke alle) av de ikke-fungerende appene å fungere - resten krever noen oppdateringer av utviklerne deres. Dessverre, da 5.0 AOSP-koden ble konsultert, kom det frem at Google allerede hadde brutt denne metoden for å overta Zygote-tjenesten. Gitt at alle hans tidligere forsøk på å overta Zygote hadde mislyktes, er dette et lovende skritt fremover.
Chainfire var opptatt av å påpeke at SuperSU lenge har vært i stand til å modifisere SELinux-policyer på et kjørende system (og advarer om det enkle med som en OEM kan deaktivere dette, og virkelig forhindre meningsfull og enkel root-tilgang), og hvordan eventuelle modifikasjoner som gjøres på Zygote må gjøres nøye, gitt at tjenesten drives fra ulike kontekster, for ulike oppgaver, og dette øker muligheten for en rekke (ekle) subtile feil. Denne nye SuperSU beta 2.27 er en konstruksjon for entusiaster og andre teknikere å leke med, for å finne ut hva som går i stykker. Krysser fingrene - det er ingen uventede show-stopper bugs, og dette er en levedyktig vei videre.
Legg merke til - selv om denne betaen fungerer og Zygote er den foretrukne veien for å få root-tilgang, vil hele prosessen fremover bare være en enkeltlinjesendring bort fra å bli brutt av Google, noe som ville gjøre patchede kjerne-ramdisker til fremtiden for root-tilgang på Android (og dermed utelukke root for bootloader-låst enheter). Faktisk, som en heads-up, kan det hende at den nye prosessen ikke engang fungerer på en fullstendig oppdatert AOSP-bygning, på grunn av noen ganske store SELinux endringer i løpet av de siste månedene, som ikke var inkludert i detaljhandelen, men som uten tvil vil være der i fremtiden utgivelser. Før eller siden virker det sannsynlig at modifiserte kjerne-ramdisker vil være nødvendige for root, men denne nye betaen kan tilby et kort opphold før vi må gå i den retningen.
Sjekk ut utgivelsesnotatene for mer informasjon om risikoene ved å teste dette ut, og for lenker. Utviklere bør også være klar over at Chainfire for tiden jobber hardt med "How-To SU" guide (fullstendig oppdatert for Android 5.0), som skal være tilgjengelig i løpet av de neste dagene.
[En stor takk til Chainfire for hans arbeid her, og hjelp til å utarbeide denne artikkelen.]