Android jest oparty na systemie Linux, ale co to znaczy? (Jak)

System Android może być oparty na systemie Linux, ale nie jest oparty na typie systemu Linux, który mógł być używany na komputerze. Nie możesz uruchamiać aplikacji na Androida w typowych dystrybucjach Linuksa i nie możesz uruchomić programów linuksowych, które znasz na Androida.

Linux stanowi główną część systemu Android, ale Google nie dodał wszystkich typowych programów i bibliotek, które można znaleźć w dystrybucji Linuksa, takich jak Ubuntu. To robi różnicę.

"Linux" a jądro Linux

Duża różnica tutaj sprowadza się do tego, co rozumiemy pod Linuksem. Ludzie używają terminu "Linux", co oznacza wiele różnych rzeczy. W najprostszym przypadku Linux oznacza jądro Linux. Jądro jest rdzeniem każdego systemu operacyjnego.

Odwołujemy się również do dystrybucji Linuksa jako "Linux". Jednak dystrybucje Linuksa to nie tylko jądro Linuksa. Zawierają wiele innych programów, takich jak narzędzia powłoki GNU, serwer graficzny Xorg, środowisko GNOME, przeglądarka internetowa Firefox i inne. Dlatego niektórzy ludzie uważają, że termin "GNU / Linux" powinien być używany dla "dystrybucji Linuksa" takich jak Ubuntu, Mint, Debian, Fedora, Arch, openSUSE i inne.

Android używa jądra Linux pod maską. Ponieważ Linux jest open-source, programiści Google na Androida mogą modyfikować jądro systemu Linux zgodnie z ich potrzebami. Linux daje programiście systemu Android gotowe, już istniejące jądro systemu operacyjnego, aby mogli zacząć, więc nie muszą pisać własnego jądra. W ten sposób powstaje wiele różnych urządzeń - na przykład PlayStation 4 wykorzystuje otwarte jądro FreeBSD, podczas gdy Xbox One korzysta z jądra systemu Windows NT, które można znaleźć we współczesnych wersjach systemu Windows.

Możesz nawet zobaczyć wersję jądra Linuksa uruchomioną na urządzeniu w sekcji Informacje o telefonie lub Informacje o tablecie w Ustawieniach Androida.

Różnice

Dyskutuje się o tym, czy Android kwalifikuje się jako "dystrybucja Linuksa". Używa jądra Linux i innego oprogramowania, ale nie zawiera dużej części oprogramowania, które zwykle zawierają dystrybucje Linuksa.

Po uruchomieniu urządzenia z systemem Android jądro systemu Linux ładuje się tak, jak w przypadku dystrybucji Linuksa. Jednak wiele innych programów jest innych. Android nie zawiera biblioteki GNU C (glibc) używanej w standardowych dystrybucjach Linuksa, ani nie zawiera wszystkich bibliotek GNU, które można znaleźć w typowej dystrybucji Linuksa. Nie zawiera również serwera X, takiego jak Xorg, więc nie można uruchamiać standardowych graficznych aplikacji systemu Linux.

Zamiast uruchamiania typowych aplikacji dla systemu Linux, Android korzysta z maszyny wirtualnej Dalvik, aby zasadniczo uruchamiać aplikacje napisane w języku Java. Te aplikacje są przeznaczone dla urządzeń z systemem Android, a interfejsy programowania aplikacji (API) zapewniają raczej ogólny system operacyjny niż system Linux.

Dlaczego nie możesz uruchomić oprogramowania dla systemu Linux na Androida

Ponieważ Android nie zawiera graficznego serwera X lub wszystkich standardowych bibliotek GNU, nie można po prostu uruchamiać aplikacji dla systemu Linux na Androidzie. Musisz uruchamiać aplikacje napisane specjalnie dla Androida.

Android ma powłokę podobną do tej, którą znajdziesz na Linuksie. Nie ma sposobu, aby uzyskać do niego dostęp natychmiast po zainstalowaniu, ale możesz zainstalować aplikację, taką jak Emulator terminala systemu Android, aby uzyskać dostęp do tego środowiska terminala.

Domyślnie nie ma tu wiele do zrobienia. Terminal będzie nadal działać w ograniczonym środowisku, więc nie możesz uzyskać pełnej wersji root bez korzenia swojego urządzenia z Androidem. Wiele standardowych poleceń, których możesz potrzebować, nie jest dostępnych - dlatego ludzie, którzy rootują swoje urządzenia, zazwyczaj instalują aplikację BusyBox, która instaluje wiele narzędzi wiersza poleceń. Te aplikacje są używane przez aplikacje do robienia rzeczy z dostępem do roota.

Dlaczego nie możesz uruchamiać oprogramowania Android na Linuxie stacjonarnym

Linux nie zawiera maszyny wirtualnej Dalvik, więc nie może uruchamiać aplikacji na Androida. Maszyna wirtualna Dalvik i całe inne oprogramowanie Androida nie może po prostu zostać przeniesione na komputer z Linuksem na komputerze - musisz wykonać więcej pracy, aby aplikacje na Androida wyświetlały się na oknach na standardowym komputerze, na przykład na Xorg. Teoretycznie, przy wystarczającej ilości pracy, programiści mogli sprawić, by Dalvik działał na komputerowym Linuxie, więc użytkownicy komputerów stacjonarnych mogliby uruchamiać aplikacje na Androida na swoich komputerach. Uśpiony już system Ubuntu dla Androida próbował zrobić coś takiego, integrując Ubuntu i Androida na telefonie i pozwalając tym aplikacjom na Androida działać na pulpicie Ubuntu.

BlueStacks i inne emulatory aplikacji na Androida próbują to zrobić dla Windows i Mac. Działają na urządzeniach wirtualnych na wirtualnej maszynie, dzięki czemu mogą uruchamiać aplikacje na Androida - z karą za wyniki - na pulpicie. Te rozwiązania nie okazały się jednak bardzo popularne.

System operacyjny Chrome Google również opiera się na systemie Linux. Podobnie jak Android, system operacyjny Chrome nie zapewnia standardowego systemu okien X, więc standardowe aplikacje dla systemu Linux nie mogą działać w systemie operacyjnym Chrome. W przeciwieństwie do Androida, system operacyjny Chrome jest bliżej standardowych dystrybucji Linuksa dla komputerów stacjonarnych, więc możesz użyć trybu programisty, aby zainstalować brakujące oprogramowanie dla systemu Linux.

Image Credit: ranti on Flickr, Anatomy and Physiology of Android

Google chce, aby jądro Android było bliżej Linux mainline. To element walki z fragmentacją

Choć zwykło się mawiać, że Android jest zbudowany na bazie jądra Linux, to niezupełnie jest to stwierdzenie esencjonalne. Google chce jednak ten trend zmienić i przybliżyć się do mainline, w czym upatruje szansy na przynajmniej częściowe zwalczenie fragmentacji.

Jądro Androida to w istocie rzeczy Linux w wersji LTS, tyle że zawierający masę kodu spoza głównego repozytorium. Całą masę. Kodu specyficznego dla urządzeń, dla których jest przygotowywane, naturalnie. Są tam m.in. sterowniki do modemów i nieuwzględnionych w domyślnym jądrze Linux SoC, a także zmodyfikowany pod kątem oszczędzania energii moduł planisty.

W dodatku znaczna część producentów tworzy kompilacje pod siebie. Tu coś dodadzą, tam coś wyrzucą. AOSP Android Common Kernel, jak nazywa się ten projekt, podobnie jak sam system Android AOSP, w czystej postaci stosowany jest niezwykle rzadko.

Można by rzec, że w ten sposób daje się podważyć całą ideę Androida jako spójniej platformy dla wielu urządzeń. Skoro każdy producent ma swój własny kernel ze swoimi sterownikami, na który wrzuca jeszcze autorską nakładkę, to tak naprawdę Google Android jest podmiotem bardzo umownym; integrującym tysiące różnych forków Linuksa.

ABI dla wszystkich i zero grzebania

Tymczasem, jak ujawnił Google na Linux Plumbers Conference 2019, firma chce zbliżyć się do mainline. Tak, aby kernel stał się niejako zespołem reguł ABI i mógł służyć każdemu producentowi w niezmodyfikowanej formie. Ale to bynajmniej nie oznacza końca egzotyki w specyfikacjach, lecz wyrzucenie sterowników poza kernel.

Jak pamiętacie, podobny projekt przedstawiono już w 2017 roku. Chodzi oczywiście o Project Treble, warstwę abstrakcji mającą pomieścić specyficzne modyfikacje producentów.

Liczba wstawek Google'a do poszczególnych LTS, fot. Materiały prasowe

Tyle że wówczas mówiono o tym bez refleksji nad przyszłością samego jądra, więc producenci konsekwentnie robili swoje i nawet mając zmodularyzowaną architekturę, grzebali (i grzebią) na najniższym poziomie . Teraz Google zdaje się podchodzić do tematu w sposób bardziej przemyślany i elegancki: popracować nad jądrem Linux w celu ustabilizowania ABI i wyjść do partnerów z juz gotowym back-endem.

Masz dosyć Androida? Poznaj nowy system operacyjny, nad którym pracuje Google!

Ileż można narzekań na Androida usłyszeć na co dzień. Jakiż to on nie spójny, jak te brandowane rzadko są aktualizowane. Jak to po 2 latach telefon jest do wywalenia bo tak zwalnia oraz wiele, naprawdę wiele innych. Może inżynierowie Google to usłyszeli bo pracują nad nowym systemem operacyjnym.

Ma się nazywać Fuchsia i używać nowego interfejsu graficznego Armadillo. Jakież fajne nazwy, Fuksja i Pancernik :) Ale nie nazwy będą w nim grały pierwsze skrzypce. Zerknij na wideo:

Oj widać tutaj wiele zmian w interfejsie i to dość znacznym jeśli chodzi o mobilne systemy operacyjne. Ale pierwsze troszkę technicznie.

R E K L A M A

Google w Fuchsii pożegnało się z jądrem systemu działającym pod kontrolą kernela linuxa, zamiast tego tworzą własny mikrokernel o nazwie Magenta. Jaka jest różnica? Bardzo upraszczając mikrokernel pozwala systemowi o wiele szybciej działać poprzez szybszy dostęp do sprzętu.

Część Fuchsii jest napisana w języku Dart – Open Sourcowym projekcie rozwijanym właśnie przez Google, który kompiluje się do JavaScriptu – Już wiecie czego się uczyć ;)

System ma działać zarówno na smarfonach jak i komputerach, może właśnie dlatego decyzja o przeniesieniu stanu baterii, zasięgu itp na dół ekranu – wygląda to bardzo klasycznie komputerowo.

Na filmiku możemy także zobaczyć, że system operacyjny będzie zbudowany bardzo „pionowo”, niczym newsfeed a aplikacje nie będą otwierały się w pełnym ekranie.

Podywagujmy chwilę, dlaczego Google mogło targnąć się na taki krok. A poniżej logo nowego systemu.

Rezygnując z jądra opartego na Linuxie będą bardziej niezależni i inna społeczność nie będzie ich hamowała przed wprowadzaniem innowacji do jednego ze swoich flagowych produktów. Mało kto o tym słyszał, ale Google w zeszłym roku zostało pozwane przez Oracle na ładną sumkę 9 miliardów dolarów za naruszanie praw patentowych i technologii. Co oni mogli naruszyć? Ano Android działa na Javie, Java jest firmy Sun Microsystems, którą kupiło Oracle, to tak w skrócie :) Teraz także tutaj będą całkowicie niezależni jeśli jeszcze głębiej wejdą w Darta.

Główne założenia poczciwego Androida powstały wiele lat temu i tak naprawdę znacznie się nie zmieniły. Świat i technologia za to się zmienił. To jak ludzie używają urządzeń, interfejsów. IoT się zmeinił i Virtualna Rzeczywistość jest już na wyciągnięcie ręki Kowalskiego. Wypada więc zrobić coś nowego co sprosta wymaganiom teraźniejszym ale także tym za kilka lat. A Android wydaje mi się nie jest już w stanie tego zrobić :) Z ogromną ciekawością będę śledził rozwój tego projektu. Ciekawe co z tym faktem zrobi Apple.

Więcej o projekcie możecie przeczytać tutaj.

Jarosław Kułak
Jarosław Kułak

Leave a Comment