Szczegółowe informacje o wewnętrznych mechanizmach

Jest to zaawansowany proces, którego nie zalecamy nowym użytkownikom Linuksa.

ChromeOS obsługuje uruchamianie dowolnego kodu w maszynach wirtualnych. To dokumentacja niskiego poziomu dotycząca tej pomocy. Bardziej przystępne informacje znajdziesz w faq.

Wymagania wstępne

Funkcje środowiska wykonawczego

Podczas korzystania z kontenera Linuksa powinny działać te funkcje:

  • Połączenia sieciowe wychodzące (IPv4).
  • Grafika bez akceleracji.
  • akceleracja grafiki (za pomocą OpenGL);
  • programy Wayland (preferowane; za pomocą Sommelier);
  • Programy X (zgodność za pomocą SommelierXWayland).
  • Wyjście audio w przypadku zdjęć w wersji M74+ i eksperymentalne przechwytywanie/mikrofon w przypadku zdjęć w wersji R79+.

Brakuje niektórych funkcji

Pracujemy nad wieloma prostymi rozwiązaniami, które mogą przynieść duże korzyści. Oto kilka przykładów:

  • sprzętowe dekodowanie wideo,
  • IME.

Zespół ChromeOS rozważa wiele innych kwestii, ale wdraża nowe funkcje w sposób przemyślany, aby nie naruszyć ogólnego bezpieczeństwa systemu. Szczegółowe informacje na temat większości zagadnień związanych z programowaniem w systemie Linux na urządzeniach z ChromeOS znajdziesz w najczęstszych pytaniach dotyczących Crostini.

Bezpieczeństwo

Uruchamianie dowolnego kodu jest zwykle ryzykowne z punktu widzenia bezpieczeństwa, ale zespół ChromeOS uważa, że model środowiska wykonawczego używany przez kontener Linux na ChromeOS wystarczająco ogranicza to ryzyko. Maszyna wirtualna jest granicą bezpieczeństwa, a wszystko, co się w niej znajduje, jest uznawane za niezaufane. Obecny obraz gościa maszyny wirtualnej korzysta też z niestandardowego, wzmocnionego jądra, aby jeszcze bardziej zwiększyć bezpieczeństwo kontenerów, ale jest to raczej dodatkowa funkcja niż element niezbędny do zapewnienia ogólnego bezpieczeństwa systemu.

W tym modelu pozostała część systemu ChromeOS powinna być chroniona przed dowolnym kodem (złośliwym lub przypadkowym) uruchamianym w kontenerach wewnątrz maszyny wirtualnej.

Jedyny kontakt ze światem zewnętrznym odbywa się za pomocą crosvm, a każdy kanał komunikuje się z poszczególnymi procesami (z których każdy jest ściśle odizolowany).

Dane użytkownika w kontenerze

W związku z przejściem na usługi w chmurze obecne podejście do bezpieczeństwa podkreśla, że uzyskanie danych logowania do konta (np. haseł do Google lub Facebooka) jest bardziej opłacalnym wektorem ataku niż atakowanie komputera stacjonarnego lub laptopa. Nie są one błędne. Obecne rozwiązanie ChromeOS oparte na maszynach wirtualnych i kontenerach nie poprawia tej sytuacji. Mówiąc wprost, za wszystko, co zostanie wpisane w kontenerze, odpowiada obecnie użytkownik. Jeśli więc uruchomisz niezabezpieczony lub przejęty kontener, a następnie wpiszesz w nim hasła, mogą one zostać skradzione, nawet jeśli reszta systemu ChromeOS pozostanie bezpieczna.

Trwałość procesu

Procesy na maszynach wirtualnych i w kontenerach nie są zachowywane po wylogowaniu (ponieważ znajdują się w zaszyfrowanym magazynie użytkownika) i są automatycznie zamykane. Nie uruchamiają się też automatycznie po zalogowaniu (aby uniknąć trwałych ataków) ani automatycznie podczas uruchamiania (bez sesji logowania), ponieważ nie byłyby dostępne (znajdują się w zaszyfrowanym magazynie użytkownika).

Kod wykonywalny i zapisywalny

Obraz dysku maszyny wirtualnej Termina jest pobierany do partycji z zapisywalnym stanem, tak jak inne komponenty Chrome. Aby mieć pewność, że zawartość nie zostanie zmodyfikowana, używamy dm-verity. Oznacza to również, że można wczytywać tylko obrazy podpisane przez Google, a obraz jest zawsze tylko do odczytu.

Ataki na sprzęt

Luki w zabezpieczeniach Meltdown i Spectre mają wpływ na bezpieczne korzystanie z maszyn wirtualnych. Wprowadziliśmy poprawki i środki zaradcze, aby uniemożliwić maszynom wirtualnym atakowanie systemu hosta lub innych maszyn wirtualnych. Więcej informacji znajdziesz na stronie wiki Chromium OS poświęconej statusowi podatności na ataki Meltdown i Spectre na urządzeniach z ChromeOS.

Cykle życia

Gdy włączysz kontener Linuxa (co spowoduje zainstalowanie wszystkich innych niezbędnych komponentów, takich jak Termina), system będzie gotowy do użycia.

Chociaż te komponenty mogą być zainstalowane, nic nie zaczyna działać od razu. Po wylogowaniu wszystko jest zamykane i kończone, a po zalogowaniu nic nie jest automatycznie wznawiane.

Gdy uruchomisz aplikację Terminal lub inną aplikację na Linuksa, która uruchamia kontener, a jej kontener nadrzędny nie jest jeszcze uruchomiony, maszyna wirtualna Termina zostanie uruchomiona automatycznie, a w niej zostanie uruchomiony domyślny kontener Linuksa w ChromeOS (znany też jako Crostini). Umożliwia to łączenie się z kontenerem przez SSH lub SFTP (za pomocą aplikacji Pliki).

Gdy zamkniesz wszystkie widoczne aplikacje, maszyna wirtualna lub kontenery nie zostaną wyłączone. Możesz je ręcznie zatrzymywać i uruchamiać, a także tworzyć więcej kontenerów niż tylko domyślny.

Trwałość danych

Wszystkie utworzone maszyny wirtualne i kontenery oraz dane w tych kontenerach będą przechowywane między sesjami użytkownika (wylogowanie/zalogowanie). Są one przechowywane w tym samym zaszyfrowanym magazynie danych użytkownika co pozostałe dane przeglądarki.

Jeśli maszyna wirtualna lub kontener zostanie zatrzymana lub zamknięta w nieprawidłowy sposób (np. z powodu utraty zasilania), dane mogą zostać utracone i trzeba będzie je odzyskać, tak jak w przypadku innych elementów systemu.

Obsługa urządzeń

Chcemy, aby Linux na ChromeOS działał na wszystkich Chromebookach, ale wymagane funkcje jądra i sprzętu ograniczają możliwość jego wdrożenia. Zespół skupił się na bezpieczeństwie i stabilności systemu, a także na przenoszeniu funkcji, które mają sens. To obszar, nad którym stale pracujemy.

Obecnie obsługiwane

Listę obecnie obsługiwanych urządzeń znajdziesz w artykule Systemy ChromeOS obsługujące Linuxa.

Wymagania sprzętowe

Obecnie nie ma minimalnej ilości pamięci RAM, miejsca na dane ani szybkości procesora wymaganej do uruchomienia kontenera Linux na ChromeOS, ale im więcej masz każdego z tych zasobów, tym lepiej będzie działać system.

Musisz jednak mieć procesor obsługujący wirtualizację sprzętową. Na platformach x86 ma to wiele nazw. Intel nazywa ją VT-xVMX. AMD określa ją jako AMD-VSVM.

Systemy BayTrail

Chromebooki z procesorem Intel BayTrail nie obsługują VT-x. Ten procesor zwykle zawiera VMX, ale wariant w Chromebookach nie, więc niestety nigdy nie będzie obsługiwany.

Aby sprawdzić, czy dana tablica jest obsługiwana, wyszukaj BayTrail na naszej publicznej liście urządzeń w kolumnie Platform.

Stare jądra

Nie planujemy obsługi systemu Linux w wersji 3.14 ani starszej. Wymaga to przeniesienia nowych funkcji do starszych wersji, co jest pracochłonne i często wiąże się z dużymi zmianami. Na przykład:

Aby sprawdzić, czy dana tablica jest obsługiwana, wyszukaj na naszej publicznej liście urządzeń numery wersji mniejsze niż 3.14 w kolumnie Kernel.

32-bitowe procesory ARM

Uruchomienie maszyn wirtualnych na 32-bitowych procesorach ARM jest trudne, niestandardowe i wymaga koordynacji z oprogramowaniem sprzętowym. Niestety oprogramowanie układowe ChromeOS zwykle nie konfiguruje rozszerzeń. Dlatego te systemy nie są obsługiwane.

Aby sprawdzić, czy dana tablica jest obsługiwana, wyszukaj arm na naszej publicznej liście urządzeń w kolumnie Kernel ABI.