Google nakreśla plany dla mainline Linux kernel wsparcia w Android

Wydaje się, że Google pracuje ciężko do aktualizacji i upstream jądro Linux, który siedzi w sercu każdego telefonu Android. Firma była dużym uczestnikiem w tym roku Linux Plumbers Conference, coroczne spotkanie z najlepszych deweloperów Linuksa, a Google spędził dużo czasu rozmawiając o uzyskanie Android do pracy z ogólnym jądrem Linux zamiast wysoce dostosowanej wersji używa teraz. To nawet pokazał telefon Android uruchomiony głównej linii Linux kernel.

Ale najpierw, trochę tła na Androida obecnego bałaganu kernel.Currently, trzy główne widelce dzieje się w między „mainline” jądra Linux i wysyłki urządzenia Android (należy pamiętać, że „mainline” tutaj nie ma związku z własnym „Project Mainline” Google). Po pierwsze, Google bierze LTS (Long Term Support) jądro Linuksa i zamienia go w „Android Common kernel”- jądro Linuksa ze wszystkimi Android OS-specyficzne poprawki stosowane. Android Common jest wysyłany do dostawcy SoC (zwykle Qualcomm), gdzie dostaje pierwszą rundę dodatków specyficznych dla sprzętu, najpierw skupiając się na konkretnym modelu SoC. Ten „SoC Kernel” następnie zostaje wysłany do producenta urządzenia, aby uzyskać jeszcze więcej specyficznego dla sprzętu kodu, który obsługuje każdy inny element sprzętu, taki jak wyświetlacz, aparat, głośniki, porty usb i każdy inny dodatkowy sprzęt. To jest „Jądro urządzenia,” i to jest to, co faktycznie jest dostarczane na urządzeniu.

Zobacz więcej

To jest bardzo długa podróż, która powoduje, że każde urządzenie dostarcza miliony linii kodu jądra spoza drzewa. Każde wysyłane jądro urządzenia jest inne i specyficzne dla urządzenia – w zasadzie żadne jądro urządzenia z jednego telefonu nie będzie działać na innym telefonie. Główna wersja jądra dla urządzenia jest zablokowana na początku początkowego rozwoju SoC, więc typowe jest, że zupełnie nowe urządzenie jest dostarczane z jądrem Linuksa, które ma dwa lata. Nawet najnowsze i, uh, najlepsze urządzenie Google, Pixel 4, dostarczone w październiku 2019 roku z jądrem Linux 4.14, wydanie LTS z listopada 2017 roku. To będzie utknąć na jądrze 4.14 na zawsze, zbyt. Urządzenia z Androidem zazwyczaj nie otrzymują aktualizacji jądra, prawdopodobnie dzięki niesamowitej ilości pracy potrzebnej do wyprodukowania tylko jednego jądra urządzenia i łańcucha firm, które musiałyby współpracować, aby to zrobić. Dzięki temu, że aktualizacje jądra nigdy się nie zdarzają, oznacza to, że każde nowe wydanie Androida zazwyczaj musi wspierać ostatnie trzy lata wydań LTS jądra (minimum dla Androida 10 to 4.9, wydanie z 2016 roku). Zobowiązania Google do wspierania starszych wersji Androida z łatkami bezpieczeństwa oznacza, że firma nadal wspiera jądro 3.18, które ma już pięć lat. Rozwiązanie band-aid Google’a dla tego do tej pory polegało na współpracy ze społecznością linuksową i wspieraniu mainline’owych wydań Linux LTS przez dłuższy czas, a teraz są one do sześciu lat wsparcia.

W zeszłym roku, na Linux Plumbers Conference 2018, Google ogłosił swoje wstępne dochodzenie w sprawie zbliżenia jądra Androida do mainline’owego Linuksa. W tym roku podzielił się nieco więcej szczegółów na temat swoich dotychczasowych postępów, ale zdecydowanie wciąż jest to praca w toku. „Dziś nie wiemy, co trzeba dodać do jądra, aby działało na urządzeniu z Androidem”, powiedział grupie na LPC 2019 lider Android Kernel Team Sandeep Patil. „Wiemy, co jest potrzebne do uruchomienia Androida, ale niekoniecznie na danym sprzęcie. Więc naszym celem jest w zasadzie znalezienie tego wszystkiego, a następnie upstreamowanie go i próba bycia tak blisko mainline, jak to tylko możliwe.”

Google twierdzi, że „w porównaniu do LTS (4.14.0), wspólne jądro Androida ma 355 zmian, 32 266 wstawek i 1 546 usunięć (stan na luty 2018).” Postęp dokonuje się tutaj każdego roku, ale pamiętaj, że są jeszcze dwa widelce po tym.

Choć wciąż jest praca do wykonania, aby uzyskać szerszy ekosystem Androida i niezliczone konfiguracje urządzeń na pokładzie, dla konkretnych modeli urządzeń, rzeczy wydają się postępować dobrze. Tom Gall, dyrektor Linaro Consumer Group, pokazał Xiaomi Poco F1 faktycznie działa mainline Linux kernel pod zwykłym Android OS. Gall powiedział publiczności, „Istnieją główne, główne rekwizyty, które mają być podane do Google Kernel Team w szczególności za uzyskanie ich kod upstream tak, że możemy uruchomić urządzenia z głównym jądrem linii.”

Zgodnie z planem do upstream jak najwięcej kodu jądra, jak to możliwe, Google ma również na celu replikację jego wcześniejszej pracy na modularyzacji Android, Project Treble. Podobnie jak Treble stworzył stabilny interfejs między Android OS i urządzenia HALs (Hardware Abstraction Layers), propozycja Google dla zbliżenia Androida do mainline Linux (Jak nie ma głupi „projekt” nazwa dla tego jeszcze?) obejmuje stabilizację Linuksa w jądrze ABI i mając stabilny interfejs dla jądra Linuksa i producentów sprzętu, aby napisać do. Google chce oddzielić jądro Linuksa od jego wsparcia sprzętowego.

Reklama

Społeczność Linuksa była przeciwna idei stabilnego interfejsu przez jakiś czas, z sugestią, że jeśli chcesz mieć możliwość szybkiej aktualizacji jądra, open source swoje sterowniki i dostać je w głównym drzewie jądra, gdzie wszelkie zmiany zostaną załatwione za Ciebie. Otwarty sourcing sterowników jest absolutnym deal breaker dla wielu firm sprzętowych, choć, i nie ilość zwolenników lub degradacji produktu ma zamiar to zmienić. Fakt, że Google utknęło wspierając pięcioletnie wersje Linuksa pokazuje, że ten model nie działa.

Enlarge / Zamiast garści rozwidleń, Google wyobraża sobie nowe jądro jako serię modułów.

Matthias Männich, starszy inżynier oprogramowania w Google, pokazał diagram oznaczony jako „Android Next Generation”, który pokazał, jak ta proponowana architektura jądra będzie wyglądać. Google wysłałby „Generic Kernel Image (GKI)” wraz z kilkoma „Modułami GKI”, które eksponowałyby to stabilne API/ABI w jądrze. Specyficzne dla sprzętu sterowniki (prawdopodobnie zamknięte sterowniki źródłowe) byłyby ładowane jako moduły jądra. Więc zamiast rozwidleń na górze rozwidleń, wszystko zostanie zmodularyzowane do pakietów additive.

Na razie Google proponuje tylko, aby ABI w jądrze było stabilne dla pojedynczej wersji LTS. Więc to nie pozwoliłoby urządzeniom na aktualizację z jednej wersji jądra Linuksa do innej – pozwoliłoby to tylko na jeden uogólniony obraz jądra do pracy na wielu urządzeniach, zamiast specyficznych dla urządzeń rozwidleń jądra, które mamy dzisiaj. To na pewno pozwoli na łatwiejsze aktualizacje zabezpieczeń, i miejmy nadzieję, że to będzie dostać nowe wydania LTS na rynek szybciej.

Reklama

Bylibyśmy przedwczesne, jeśli powiedzieliśmy, że jest to zmiana, która jest zdecydowanie przychodzi do Androida i jądra Linux. Nadal istnieją tony problemów do rozwiązania (zarówno technicznie jak i politycznie, chciałbym sobie wyobrazić), a niektóre z tych rozmów były bardziej jak publiczne sesje burzy mózgów między prezenterami Google i inżynierów Linuksa (z których wielu było również Googlers!) na widowni. To jest drugi rok z rzędu Google pokazał się do LPC i pitched pomysł wykorzystania głównego jądra Linux w Androidzie, choć, i z Androidem jest jednym z największych Linux sort-of-distros na Ziemi, to ma sens dla wszystkich do pracy razem, prawda?

„Mamy mile do zrobienia, i wiemy, że, ale mamy pochodzą z gdzie zaczęliśmy,” Patil powiedział tłum. „W zeszłym roku, mówiłem to do istnienia. Tym razem rzeczywiście mamy problemy do omówienia.”

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.