Crostini: Linux containers op een Chromebook

About

Crostini: Linux containers op een Chromebook

Chromebooks bieden met Crostini de mogelijkheid om Linux applicaties te installeren. Wij namen de proef op de som.

Door: Matto Fransen.

Chromebooks bestaan nu zo’n jaar of acht en zijn ontwikkeld als thin cliënt rondom de Chrome browser. Extensies op de Chrome browser brachten nieuwe mogelijkheden, waaronder een SSH-cliënt. Chromebooks starten snel op en staan bekend om hun lange adem, op de meeste Chromebooks werk je zo’n 8 tot 10 uur voordat ze aan de lader moeten. Het besturingssysteem, ChromeOS, draait op een Linux kernel en is ontworpen op een zo’n hoog mogelijke veiligheid (veiligheid is niet hetzelfde als privacy, het blijft een Google product). Het systeem is zoveel mogelijk readonly opgezet en werkt volgens het sandbox-principe. Gebruikers hebben geen toegang tot systeembestanden. De lokale opslag van gebruikersdata is versleuteld. Updates van het systeem komen rechtstreeks van Google, dus zonder vertraging door tussenkomst van de hardware producent. Afhankelijk van het type moederbord stopt na verloop van tijd de updatecylcus. Voordat je een Chromebook aanschaft is het daarom van belang eerst de zogenoemde “Auto Update Expiration Date” van het betreffende model op te zoeken.

Crostini

ChromeOS is inmiddels verder geëvolueerd en werd uitgebreid met de mogelijkheid om Android apps te gebruiken. De meest recente toevoeging is de toepassing van Linux containers. Hiermee krijgt de gebruiker de mogelijkheid om Linux applicaties te draaien, zowel text mode applicaties in een terminal venster, als grafische applicaties, helaas nu nog zonder GPU acceleratie. De ontwerpers hebben gezocht naar aan methode om een Linux gebruikersomgeving aan te bieden, zonder aantasting van de veiligheid van het ChromeOS systeem. De gekozen oplossing lijkt op de geneste Russische Matroesjka poppetjes, het is een opstapeling van KVM, unprivileged LXD containers en diverse daemons.

Crostini is het systeem dat LXD Linux containers op het Chromebook aanbiedt, het beheert virtuele machines die draaien op de Linux hypervisor KVM, waarbinnen verschillende daemons zorgen voor het beheer van LXD containers en de connecties tussen ChromeOS en de container, bijvoorbeeld voor de gebruikersopslag, beeldscherm en toetsenbord en verbinding met de USB-poort. Voor de opslag van de LXD images gebruikt de virtuele machine, wegens de snapshot-ondersteuning, het Btrfs bestandssysteem.

Installeren

De containers die je draait zijn zogenoemde unprivileged containers. Dit betekent dat root in de container geen root-rechten op de host heeft. Bij het uitloggen stopt de virtuele machine en de daarin draaiende container. Niet elk model Chromebook ondersteunt Crostini, alleen redelijk recente modellen bieden deze optie. Heb je een model dat Crostini ondersteunt, dan is het installeren een eitje. Je hoeft alleen een setting te wijzigen. Zoek in settings naar “Linux Beta” kies voor ‘Turn on’, zie screenshot 1. Het Chromebook begint nu automatisch een virtuele machine en een LXC container te downloaden en na een tijdje kun je in een terminal scherm aan het werk. De container bevat Debian Stretch en sudo vereist geen wachtwoord. Je kunt dus meteen met apt de gewenste packages toevoegen. Vanuit ChromeOS kun je via de bestandsnavigator bij de homedirectory van de gebruiker, hiervoor is een aparte map gemaakt. ChromeOS is bedoeld als thin cliënt, waarbij je in de cloud werkt, je moet daarom zelf voor de back-up van je data in de container zorgen.

Integratie met ChromeOS

Verschillende daemons verzorgen onder andere de integratie met ChromeOS. Nadat je enkele applicatie in de Debian container hebt geïnstalleerd, vind je in het scherm met te openen applicaties een applicatiegroep met de icoontjes van deze applicaties. Wij installeerden bijvoorbeeld de Geany teksteditor, en het icoon van Geany komt nu in de applicatiegroep voor. Door met de rechtermuisknop op dit icoon te klikken, krijg je de optie “Pin to shelf”. Hiermee voeg je het icoon toe aan de lijst met applicaties in de “plank” onderin, de startbalk voor ChromeOS. Via dit icoon kunnen we nu Geany starten. Indien noodzakelijk, worden dan eerst de virtuele machine en de LXD container gestart. Zie screenshot 2.

Je kunt met de tmux-yank plugin tekst in de Tmux copy-mode selecteren en naar het clipboard van ChromeOS sturen, zodat het daar met Ctrl-V te plakken is. Dit lukt ons overigens alleen in de hterm terminal die Crostini standaard start, andere terminal emulators zoals XTerm en Rxvt missen deze integratie. Via de Chrome browser in ChromeOS downloaden we het installatie-bestand van de Atom editor, en verplaatsen die met de bestandsmanager van ChromeOS naar de Linux-files directory. Na dubbelklikken zorgt Crostini nu voor de installatie van de Atom editor in de LXD container. Wanneer we vervolgens in de container Atom opstarten, verschijnt het icoon op onze plank, waar we deze kunnen pinnen zodat Atom de volgende keer direct vanaf de plank is op te starten. Ook kunnen we van ChromeOS naar Atom kopiëren en vice versa.

In de fora lezen we dat GTK3-applicaties de beste kans op succesvol kopiëren bieden. Kopiëren vanuit ChromeOS naar de Geany editor en vice versa werkt bijvoorbeeld prima, dit geldt ook voor Gnome Terminal en voor de GTK3-versie van Gvim. Ook konden we tekst van ChromeOS naar Gimp kopiëren, en van Evince naar ChromeOS.

Webserver

We kunnen het niet laten en installeren lighttpd in de Debian container. In de browser in ChromeOS openen we het ip-adres van de container en zien de default Lighttpd-pagina, ook voor servers werkt de integratie. De ontwikkelaars hebben ook hiervoor een verzameling deamons in stelling gebracht. Goed nieuws voor mensen die hun Chromebook voor webdevelopment willen gebruiken.

Andere containers

Chrostini installeert standaard een Debian Stretch LXD container. Je kunt zelf een of meer andere containers installeren, bijvoorbeeld met Alpine Linux of Ubuntu. Een overzicht van beschikbare images vraag je vanuit de virtuele machine op met “lxc image list images:”. Dit levert een lange lijst op, je kunt nauwkeuriger zoeken naar bijvoorbeeld Alpine images met lxc image list images: ‘alpine’. Je voegt een nieuwe image toe met lxc launch <imagenaam>, bijvoorbeeld lxc launch ubuntu:18.04 mijn_container. Met dit commando wordt de Ubuntu 18.04 image gedownload en als container “mijn_container” gestart. Een container stop je met “lxc stop” en verwijderen van de image doe je met “lxc delete”.

Vier opties

Met de komst van Crostini zijn er nu vier manieren waarop je als Linux-gebruiker met een Chromebook uit de voeten kunt. Ten eerste is er van oudsher de SSH-cliënt, inclusief ondersteuning van SSH-keys. Wanneer SSH voor je voldoende is, ben je hiermee klaar. De tweede optie is Crouton, hiermee installeer je een Linux distributie in een chroot-omgeving. Het nadeel van Crouton is dat dit developer-mode vereist, waardoor het Chromebook niet meer veilig is. De derde optie is om de Android app “Termux” te installeren. Hiermee krijg je een Linux systeempje, dat je zelf met behulp van packages kunt uitbreiden en goed te gebruiken is voor commandline werk. Crostini is de vierde manier, waarmee je in een LXD container werkt, lokale servers draait en grafische applicaties gebruikt, met (nu nog) de beperking dat knippen en plakken van en naar ChromeOS niet bij alle applicaties werkt.

Crostini is vooral voor ontwikkelaars bedacht en we zien op internet berichten van mensen die dat bijvoorbeeld met Android Studio doen, of Docker op hun Chromebook installeren. Bedenk dat de meeste Chromebooks beperkte schijfruimte hebben, een SSD van 64 Gb is al luxe. Waar je Crostini ook voor gebruikt, zorg voor een goed mechanisme voor het back-uppen of synchroniseren van je data. Crostini heet niet voor niets “Beta”. Het is nog volop in ontwikkeling.

Waar je Crostini ook voor gebruikt, zorg voor een goed mechanisme voor het back-uppen of synchroniseren van je data.

Share
May 2024
June 2024
No event found!

Related Topics