Приложения за Linux в Chrome OS

Приложенията за Linux скоро ще бъдат налични в Chrome OS, като се започне с Google Pixelbook, благодарение на Project Crostini. Какво е Crostini и защо е толкова важен? Гмуркаме се в най-голямата промяна в Chrome OS след интегрирането на приложението за Android.

Ето всичко, което трябва да знаете за едногодишната тайна разработка на Google за функционалност на приложението за Linux в Chrome OS, известна още като Project Crostini.

Накратко, това е начин да стартирате обикновени Linux приложения в Chrome OS, без да компрометирате сигурността или да активирате режима за програмисти. (все още не е наличен) официална настройка щати че е да „Стартирате Linux инструменти, редактори и IDE на вашия Chromebook“.

Crostini е кулминацията на няколко години разработка, която позволи на функционалността да работи достатъчно сигурно, за да отговори на високите стандарти за сигурност на Chrome OS. За да разберете защо едва се появява, най-добре е да погледнете какво е било преди.

Поставяне на Crostini в контекст – тъмните векове на Chrome OS

Преди приложенията за Android да се появят на сцената, нямаше много офлайн функционалност, да не говорим за полезни приложения за продуктивност в Chrome OS. Защо всеки нормален човек би купил Chromebook? „Това е просто уеб браузър“, беше заключителната забележка на всеки преглед на Chromebook. Уеб магазинът на Chrome беше колкото можете да получите, но изборът на приложения беше доста беден и рядко се актуализира. Авантюристите могат да опитат да стартират приложения за Android с помощта на инструмент, наречен ARC заварчик, но това беше случайно и представянето беше лошо.

За да заобиколят офлайн ограниченията, разочарованите потребители или изтриха Chrome OS и инсталираха Linux, или използваха инструмента с отворен код Крутон за настройка на едновременна работна среда [напр. Ubuntu Unity], работеща върху ядрото на Chrome OS.

Инсталиране на Crouton, инструментариум с отворен код, преди това де факто начинът за достъп до Linux приложения в Chrome OS, който скоро ще бъде отхвърлен

Изпълнението на заместваща дистрибуция на GNU/Linux или Crouton изисква доста познания и често е изпълнено с грешки – и нито една от опциите не е особено лесна за употреба или сигурна. Натиснете грешен клавиш и ще изтриете устройството си или ще го блокирате, а ако сте оставили средата си на Crouton некриптирана, всеки потребител гост може да има достъп до нея.

Интегриране на приложения за Android, създаване на прецедент

Приложенията за Android кацнаха на Chrome OS през 2016 г. и бяха огромен скок в офлайн функционалността, но активирането на тази функционалност не беше просто plug-and-play. Единственият начин, по който можеше да работи на операционна система, която цени сигурността, беше, ако беше ефективно поставена в пясъчна среда.

Новото решение, което разработчиците на Chrome OS избраха, беше контейнеризация, начин за групиране на приложения в самостоятелни изпълними пакети. Използвайки контейнер и повече от няколко настройки, те успяха да получат пълната среда на Android и всичко останало неговите зависимости да се изпълняват в контейнер, отделен от останалата част от Chrome OS, но работещ на същата ядро.

Но приложенията за Android обикновено не се разработват с оглед на настолен/лаптоп форм-фактор. Добавете лошо изживяване при докосване на Chrome OS към микса и ще си осигурите разочароваща сесия за продуктивност, ако приложенията изобщо работят.

Главоболия със съвместимостта – приложения за Android в Chrome OS

Докато приложенията за Android помогнаха за преодоляване на разликата в производителността досега, все още имаше онзи копнеж за масивната библиотека от пълни приложения за настолни компютри. Както при първоначалния проблем с Android, просто отварянето на възможността за стартиране на Linux приложения би могло увеличават повърхността за атака на Chrome OS, тъй като злонамерените приложения могат да имат достъп до всичко на хост ОС. Така че този път разработчиците са проектирали функционалността на приложението за Linux възможно най-изолирана, в допълнение към това, което вече са научили с Android.

Защита в дълбочина

Както подсказва името, Crostini е като Crouton, но вместо да има несигурно потребителско пространство до Chrome OS, има две стени между тях. Първата стена е Termina VM, внедряване на Chrome OS KVM (базирана на ядрото виртуална машина). След като тази VM стартира, тя поставя втората стена - контейнер - който след това има приложението, което всъщност искате да стартирате. Така че, когато искате да стартирате вашето пълноценно настолно приложение Klondike, то работи в контейнер вътре във виртуална машина.

Разработчиците не са направили публично достъпната документация особено лесно смилаема от нетехническа гледна точка, но от моя неофициален прочит на лаик, софтуерът архитектурата за Chrome OS сега вероятно изглежда така [забележка: всичко работи лично, определено не е официален документ на екипа на Chrome OS, вероятно напълно невярно, моля, не нарани ме]:

Как смятаме, че изглежда архитектурата на Crostini. Не е официален документ.

Накратко, VM компонентът има отделно потребителско пространство и виртуални устройства (vCPU, IP, MAC и т.н.), а контейнерът е пакетирано приложение, което използва тези ресурси. На този етап трябва да добавя предупреждение, че VM компонентът всъщност не емулира никакъв хардуер.

Само богати хора... засега

Някои, като общността в Reddit's /r/Crostini, вече започнаха да бърникат с Кростини по техните Google Pixelbooks. За съжаление, Pixelbook е единственото устройство, което има функционалност Crostini досега, но знаците сочат други устройства, дори такива с ARM система върху чипове, които ще получат поддръжка в бъдеще. Но може би все още не съвсем за 32-битови машини. Има също намеци, че някои части от функционалността на VM са необходими за стартиране на Crostini няма да е достъпно за устройства с по-стари версии на ядрото.

Ако сте стигнали до тук, вероятно се чудите: Какво мога да стартирам? Успехът е ограничен. Разработчиците на Chrome намекнаха, че работят с Visual Studio. Потребителите на Reddit са накарали WINE и Android Studio да работят, а ChromeUnboxed е полезен видео демонстрация. Но вероятно няма да знаем пълните възможности и ограничения, преди Google действително да покаже нещо. Това, което знаем е, че приложенията са постоянни, което означава, че можете да продължите оттам, откъдето сте спрели и че разработчиците работят върху това да ги направят достъпни в списъка ви с скорошни приложения.

Какво следва? Няколко точки за разглеждане

Ако сте в канала за разработчици на Chromebook, различен от Pixelbook, приложението Terminal може да е пристигнало на вашия Chromebook. Може да видите грешка „неуспешно стартиране на портиер“. Това е така, защото VM функционалността не е активирана на устройства, различни от Pixelbook… все още.

Все още не знаем как се разпределят ресурсите и какви режийни разходи произвеждат тези вложени приложения. Идеята за игра на Linux-съвместими Steam игри е примамлива, но ако GPU-ускорението не е налично, засега това е забранено.

Не знаем какви ограничения ще създаде въздушната междина хост/контейнер (ако има такива). Комуникацията между контейнера и Chrome OS се контролира, така че това ще въведе ли латентност или дори ще деактивира някои периферни устройства?

Имаме много въпроси без отговор и е само въпрос на време всичко да бъде разкрито. Мнозина са убедени Google I/O 2018 след няколко седмици ще бъде голямото разкритие - има смисъл, тъй като е конференция за разработчици. Междувременно оставайте на линия, докато следим Кростини.


източници:

Максим Лин – Контейнери на Chrome OS

Chromium Git - Пакет контейнери ARC, vm_tools, проект-терминал, crosvm