Linux-appar på Chrome OS

Linux-appar kommer snart att finnas tillgängliga på Chrome OS, från och med Google Pixelbook, tack vare Project Crostini. Vad är Crostini och varför är det så viktigt? Vi dyker in i den största förändringen av Chrome OS sedan integrationen av Android-appen.

Här är allt du behöver veta om Googles årslånga hemliga utveckling av Linux-appfunktioner i Chrome OS, även känd som Project Crostini.

I ett nötskal är det ett sätt att köra vanliga Linux-applikationer på Chrome OS utan att kompromissa med säkerheten eller aktivera utvecklarläget. Den (ännu inte tillgänglig) officiella inställningsstater att det är att "köra Linux-verktyg, redigerare och IDE på din Chromebook."

Crostini är en kulmen på flera års utveckling som gjorde att funktionen kunde köras tillräckligt säkert för att uppfylla Chrome OS: s höga säkerhetsstandarder. För att förstå varför det bara dyker upp är det bäst att titta på vad som kom innan.

Att sätta Crostini i sitt sammanhang – Chrome OS: s mörka åldrar

Innan Android-appar kom till platsen fanns det inte mycket i vägen för offlinefunktionalitet än mindre användbara produktivitetsappar i Chrome OS. Varför skulle någon förnuftig person köpa en Chromebook? "Det är bara en webbläsare", var den avslutande kommentaren i varje Chromebook-recension. Chrome Web Store var så mycket som du skulle få, men urvalet av appar var ganska dåligt och uppdaterades sällan. Den äventyrliga kan försöka köra Android-applikationer med hjälp av ett verktyg som heter

ARC Svetsare, men det var hit-or-miss och prestandan var dålig.

För att komma runt offlinebegränsningar, torkade frustrerade användare antingen Chrome OS och installerade Linux eller använde verktyget med öppen källkod Kruton för att ställa in en simultan skrivbordsmiljö [t.ex. Ubuntu Unity] som arbetar ovanpå Chrome OS-kärnan.

Installation av Crouton, en verktygslåda med öppen källkod, tidigare det de facto sättet att komma åt Linux-appar på Chrome OS, kommer snart att fasas ut

Att köra en ersättning för GNU/Linux-distribution eller Crouton krävde en hel del kunskap och var ofta fylld av buggar – och inget av alternativen var särskilt användarvänligt eller säkert. Tryck på fel tangent och du kommer att torka din enhet eller mura den, och om du lämnade din Crouton-miljö okrypterad kan alla gästanvändare komma åt den.

Android-appintegration, skapar ett prejudikat

Android-appar landade på Chrome OS 2016 och var ett stort steg i offline-funktionalitet, men att aktivera den här funktionen var inte bara plug-and-play. Det enda sättet det kunde fungera på ett OS som värdesätter säkerhet var om det var effektivt sandlåde.

Den nya lösningen som Chrome OS-utvecklarna valde var containerisering, ett sätt att paketera applikationer till fristående körbara paket. Med hjälp av en behållare och mer än några få justeringar lyckades de få hela Android-miljön och allt dess beroenden för att köras i en behållare, separerad från resten av Chrome OS men ändå körs på samma kärna.

Men Android-appar utvecklas vanligtvis inte med en formfaktor för stationär/bärbar dator i åtanke. Lägg till en dålig touch-upplevelse på Chrome OS i mixen och du har en frustrerande produktivitetssession om appar fungerade alls.

Huvudvärk med kompatibilitet—Android-appar på Chrome OS

Medan Android-appar hjälpte till att överbrygga produktivitetsgapet hittills, fanns det fortfarande en längtan efter det enorma biblioteket med kompletta skrivbordsappar. Precis som med det ursprungliga Android-problemet skulle det bara vara möjligt att öppna upp möjligheten att köra Linux-applikationer öka Chrome OS: s attackyta eftersom skadliga program kan ha tillgång till allt på värd OS. Så den här gången designade utvecklarna Linux-appens funktionalitet så tyst som möjligt, utöver vad de redan lärt sig med Android.

Försvar på djupet

Som namnet antyder är Crostini som Crouton, men istället för att ha ett osäkert användarutrymme bredvid Chrome OS har det två väggar mellan sig. Den första väggen är Termina VM, en Chrome OS KVM (Kernel-baserad virtuell maskin) implementering. När den virtuella datorn väl startar sätter den upp den andra väggen - en behållare - som sedan har appen du faktiskt vill köra. Så när du vill köra din fullfjädrade Klondike-skrivbordsapp körs den i en container-inuti-en-VM.

Utvecklarna har inte gjort den offentliga dokumentationen särskilt lättsmält ur en icke-teknisk synvinkel, men från min inofficiella lekmans läsning, programvaran arkitektur för Chrome OS nu ser förmodligen ut så här [obs: allt fungerar mitt eget, definitivt inte ett officiellt dokument från Chrome OS-teamet, förmodligen helt osant, snälla skada mig]:

Hur vi tror att Crostini-arkitekturen ser ut. Inte ett officiellt dokument.

Kort sagt, VM-komponenten har ett separat användarutrymme och virtuella enheter (vCPU, IP, MAC, etc.), och behållaren är en paketerad app som använder dessa resurser. Vid det här laget bör jag lägga till en varning om VM-komponenten emulerar faktiskt ingen hårdvara.

Bara rika människor... för tillfället

Vissa gillar samhället på Reddit's /r/Crostini, har redan börjat mixtra med Crostini på deras Google Pixelbooks. Tyvärr, den Pixelbook är den enda enheten som har Crostini-funktionalitet hittills, men tecken pekar på att andra enheter, även sådana med ARM-system-på-chips, kommer att få stöd i framtiden. Men kanske inte riktigt ännu för 32-bitarsmaskiner. Det finns också antydningar om att vissa delar av VM-funktionaliteten krävs för att köra Crostini kommer inte att vara tillgänglig för enheter med äldre kärnversioner.

Om du har kommit så långt undrar du förmodligen: Vad kan jag springa? Framgången har varit begränsad. Chrome-utvecklare har antytt att de har Visual Studio igång. Reddit-användare har fått WINE och Android Studio att fungera, och ChromeUnboxed var praktiskt videodemo. Men vi kommer förmodligen inte att känna till alla funktioner – och begränsningar – innan Google faktiskt visar upp något. Det vi vet är det appar är beständiga, vilket innebär att du kan fortsätta där du slutade och att utvecklarna jobbar på att göra dem tillgängliga i din senaste applista.

Vad härnäst? Några punkter att tänka på

Om du är i utvecklarkanalen på en annan Chromebook än en Pixelbook kan Terminal-appen ha kommit till din Chromebook. Du kan se ett "misslyckades med att starta concierge"-felet. Det beror på att VM-funktionalitet inte har aktiverats på andra enheter än Pixelbook... ännu.

Vi vet ännu inte hur resurserna fördelas och vilken typ av overhead dessa kapslade appar ger. Idén med att spela på Linux-kompatibla Steam-spel är lockande, men om GPU-acceleration inte är tillgänglig så är det för närvarande en no-go.

Vi vet inte vilka begränsningar värd/behållarens luftgap kommer att ge (om några). Kommunikationen mellan behållaren och Chrome OS är kontrollerad, så kommer det att införa latens eller till och med inaktivera vissa kringutrustning?

Vi har många obesvarade frågor, och det är bara en tidsfråga tills allt är avslöjat. Många är övertygade Google I/O 2018 om några veckor kommer det stora avslöjandet – det är vettigt eftersom det är en utvecklarkonferens. Under tiden, håll ögonen öppna när vi håller koll på Crostini.


Källor:

Maksim Lin – Chrome OS-behållare

Chromium Git - ARC container bunt, vm_tools, projekttermina, crosvm