Breaking: A Chainfire ma bejelentette a SuperSU Beta 2.27 verziót, amely megszünteti a kernel ramdisk módosításának szükségességét az Android 5.0 root hozzáférésének használatához
Eddig, ha rootolni akart az Android 5.0 rendszeren, egy módosított kernelt kellett felvillantania az eszközére, hogy megkerülje néhány SELinux korlátozást. XDA elismert vezető fejlesztő Lánctűz nemrég megjelent a korábban szükséges CF-Auto-Root csomagot, amely elvégezte a szükséges kernel ramdisk módosításait, hogy eltávolítsa a SELinux korlátozást az install-recovery.sh parancsfájlból az AOSP-n. Ma reggel azonban Chainfire mosolyt csalt sok arcra, ahogy ő is bejelentette a Twitteren hogy erre a továbbiakban nem lesz szükség.
Egészen a mai napig a Chainfire azt tervezte, hogy kiad egy automata ZIP-alapú javítóeszközt, hogy automatikusan javítsa a kernelképeket a TWRP-helyreállításon belül, amíg rá nem talált egy megfelelő módszerre a szükségesség megszüntetésére ez.
Ez a feltárás azt jelenti, hogy az Android 5.0 felhasználóknak többé nem kell módosított kernelt futtatniuk ahhoz, hogy SuperSU-n (vagy más gyökérmegoldáson) keresztül root hozzáférést kapjanak. Bár ez nem jelentett nagy problémát a feloldható rendszerbetöltővel rendelkező Nexus eszközökön, a ramdisk módosítására szükség volt ami sok olyan rendszerbetöltővel zárolt eszköz felhasználóját érinti, amelynél nem érhető el feloldás (igen, sajnos igen létezik). Imádságukra itt a válasz, és exkluzív magyarázattal szolgálhatunk a szükséges változtatásokról. Legalábbis egyelőre (amíg/hacsak a Google nem javítja ezt) lehetőség van root hozzáférésre, majd a SuperSU telepítésére és használatára egy Android 5.0-s állományú eszközön, kernel ramdisk módosítása nélkül. Ennek az az oka, hogy a SuperSU-nak rootként kell futtatnia egy szolgáltatást, hogy lehetővé tegye a korlátlan root hozzáférést a SELinux által védett eszközökön.
Korábban a SuperSU az előre telepített AOSP-t használta flash_recovery szolgáltatás (az AOSP-ben az OTA-telepítés utáni helyreállítás frissítésére szolgál) a SuperSU démon elindításához (amely valójában a root jogosultságokat biztosítja az azt kérő alkalmazások számára). A Lollipop kiadásával ez a szolgáltatás egy korlátozott SELinux környezetbe került, ami azt jelenti, hogy többé nem rendelkezik hamisítatlan hozzáféréssel a rendszerhez. A kernel korábbi módosításai megpróbálták eltávolítani a SELinux korlátozásait ebből a szkriptből.
A Chainfire SuperSU legújabb bétaverziója ezt a „Zygote” alapszolgáltatás használatával oldja meg (amely az összes Java-szolgáltatás, így az eszközre telepített összes alkalmazás indításáért felelős). Mivel a Zygote az Android L rendszeren elérhető egyetlen szolgáltatás egyike, amely rootként indul a rendszeren belül korlátlan "init" SELinux kontextus, ez teszi az elsődleges célponttá a SuperSU. A rendszerindítás után a Zygote szolgáltatás SELinux "init" környezete átkerül a végső (korlátozott) "Zygote" környezetbe. A Chainfire sikeresen módosította a Zygote fájlokat, hogy root felhasználóként futtathassa a kódot, a korlátlan "init" kontextuson belül, így a SuperSU visszakerül Android L-re, kernel nélkül módosítások.
Nem ez az első alkalom, hogy a Chainfire a Zygote-hoz fordul a problémák megoldása érdekében; a korábbi 2.23-as béta a Zygote-ot használta néhány egyéb SELinux-probléma megkerülésére (amelyek miatt a root alkalmazások megszakadtak Android L-en). Ez lehetővé tette néhány (de nem az összes) nem működő alkalmazás működését – a többihez néhány frissítés szükséges a fejlesztőktől. Sajnos, amikor az 5.0 AOSP kódot lekérdezték, kiderült, hogy a Google már megszegte a Zygote szolgáltatás átvételének ezt a módszerét. Tekintettel arra, hogy minden korábbi kísérlete a Zygote átvételére kudarcot vallott, ez ígéretes előrelépés.
Chainfire szeretett volna rámutatni, hogy a SuperSU már régóta képes volt módosítani a SELinux házirendeket egy futó rendszeren (és figyelmeztet a hogy egy OEM letilthatja ezt, és valóban megakadályozhatja az értelmes és egyszerű root hozzáférést), és hogyan kell elvégezni a Zygote bármilyen módosítását. körültekintően, mivel a szolgáltatás különböző kontextusokból, különböző feladatokra fut, és ez felveti számos (csúnya) finom kudarcok. Ez az új SuperSU béta 2.27 egy olyan konstrukció, amellyel a rajongók és más technikusok játszhatnak, hogy megtudják, mi hibázik. Tegyük az ujjakat – nincsenek váratlan show-stopper hibák, és ez járható út.
Jegyezze meg – még ha ez a béta bevált is, és a Zygote az előnyben részesített módja a root hozzáférés megszerzésének, a továbbiakban az egész folyamat csak egysoros változás. ne törje meg a Google, ami a javított kernel RAM-lemezeket tenné a jövővé a root hozzáféréshez Androidon (így kizárva a root rendszerbetöltő-zárolást eszközök). Valójában figyelmeztetésként az új folyamat valószínűleg nem is működik teljesen naprakész AOSP builden, néhány meglehetősen nagy SELinux miatt. változások az elmúlt hónapokban, amelyek nem szerepeltek a kiskereskedelmi eszközök között, de a jövőben kétségtelenül ott lesznek kiadja. Előbb-utóbb azonban valószínűnek tűnik, hogy módosított kernel ramdiskekre lesz szükség a root számára, de ez az új béta rövid végrehajtási szünetet kínálhat, mielőtt ebbe az irányba mennénk.
Nézze meg a kiadási megjegyzések a teszteléssel járó kockázatokkal kapcsolatos további információkért, valamint a linkekért. A fejlesztőknek azt is tudniuk kell, hogy a Chainfire jelenleg keményen dolgozik a „How-To SU” útmutató (teljesen frissítve az Android 5.0-ra), amely a következő néhány napon belül elérhető lesz.
[Hatalmas köszönet Chainfire-nek az itt végzett munkájáért és a cikk elkészítésében nyújtott segítségéért.]