Внутреннее устройство: подробный анализ

Это сложный процесс, который мы не рекомендуем для новых пользователей Linux.

ChromeOS поддерживает выполнение произвольного кода внутри виртуальных машин . Это низкоуровневая документация по данной поддержке; для более подробного ознакомления см. раздел часто задаваемых вопросов (FAQ) .

Предварительные требования

Функции среды выполнения

При запуске контейнера Linux вы должны ожидать корректной работы следующих функций:

  • Исходящие сетевые соединения (IPv4).
  • Графика без ускорения.
  • Ускоренная графика (с помощью OpenGL).
  • Программы Wayland (предпочтительно; через сомелье ).
  • Программы X (совместимость через Sommelier и XWayland ).
  • Аудиовыход в M74+ и экспериментальная запись/микрофон в изображениях R79+.

Отсутствующие функции

Сейчас мы работаем над реализацией множества простых и очевидных задач. Вот несколько наглядных примеров:

  • Аппаратное декодирование видео.
  • ИМЭ .

Хотя рассматриваются и другие аспекты, команда ChromeOS придерживается взвешенного подхода к внедрению новых функций, чтобы гарантировать, что общая безопасность системы не будет скомпрометирована. Более подробную информацию по большинству вопросов, касающихся разработки Linux на ChromeOS, можно найти в разделе часто задаваемых вопросов Crostini .

Безопасность

Хотя выполнение произвольного кода обычно представляет собой угрозу безопасности, команда ChromeOS считает, что используемая в Linux модель выполнения в контейнерах ChromeOS достаточно эффективно снижает и ограничивает этот риск. Виртуальная машина (ВМ) является границей безопасности, и все, что находится внутри нее, считается ненадежным. Текущий образ гостевой виртуальной машины также использует специальное усиленное ядро ​​для дальнейшего повышения безопасности контейнеров, но это считается скорее приятной функцией, чем гарантией общей безопасности системы.

В этой модели остальная часть системы ChromeOS должна оставаться защищенной от произвольного кода (вредоносного или случайного), который выполняется внутри контейнеров внутри виртуальной машины.

Единственный способ связи с внешним миром — использование CrosVM , при этом каждый канал взаимодействует с отдельными процессами (каждый из которых работает в строго изолированной среде).

Пользовательские данные в контейнере

В условиях перехода к облачным сервисам современные представления о безопасности подчеркивают тот факт, что получение учетных данных (например , паролей от Google/Facebook ) является более выгодным способом атаки, чем атака на ваш настольный компьютер или ноутбук. И это не так. Текущее решение ChromeOS на основе виртуальных машин/контейнеров не улучшает ситуацию. Проще говоря, ответственность за все, что вводится в контейнер, в настоящее время лежит на пользователе. Таким образом, если вы запускаете небезопасный или скомпрометированный контейнер, а затем вводите в него свои пароли, они могут быть украдены, даже если остальная часть системы ChromeOS остается защищенной.

Сохранение процесса

Процессы в виртуальных машинах и контейнерах не сохраняются после выхода из системы (поскольку они находятся в зашифрованном хранилище пользователя) и автоматически завершаются. Они также не запускаются автоматически при входе в систему (во избежание постоянных атак) и не могут автоматически запускаться при загрузке (без сеанса входа в систему), поскольку они будут недоступны (так как находятся в зашифрованном хранилище пользователя).

Исполняемый и записываемый код

Образ диска виртуальной машины Termina загружается в доступный для записи раздел с сохранением состояния, как и другие компоненты Chrome . Для обеспечения неизменности содержимого используется dm-verity . Это также означает, что могут загружаться только образы, подписанные Google, и образ всегда доступен только для чтения.

Аппаратные атаки

Уязвимости Meltdown/Spectre имеют последствия для безопасного использования виртуальных машин. Мы внедрили исправления и меры по смягчению последствий, чтобы гарантировать, что виртуальные машины не смогут атаковать хост-систему или другие виртуальные машины. Более подробную информацию о состоянии уязвимостей Meltdown и Spectre для устройств ChromeOS можно найти на странице вики Chromium OS.

Жизненные циклы

После активации контейнера Linux (который позаботится об установке всех остальных необходимых компонентов, таких как Termina), система готова к использованию.

Хотя эти компоненты могут быть установлены, ничего не запускается сразу. При выходе из системы все отключается и завершает работу, а при входе в систему ничего автоматически не перезапускается.

Когда вы запускаете приложение «Терминал» или любое другое приложение Linux, запускающее контейнер, и его родительский контейнер еще не запущен, виртуальная машина Termina запускается автоматически, и в ней запускается контейнер Linux по умолчанию для ChromeOS (также известный как Crostini). Это позволяет подключаться к контейнеру через SSH или SFTP (через приложение «Файлы»).

При закрытии всех видимых приложений виртуальные машины/контейнеры не выключаются. При желании вы можете вручную остановить и запустить их , а также создать больше контейнеров, чем просто контейнер по умолчанию.

Сохранение данных

Все созданные виртуальные машины и контейнеры, а также данные внутри этих контейнеров, сохраняются между сеансами пользователя (выход/вход). Они хранятся в том же зашифрованном хранилище для каждого пользователя, что и остальные данные браузера.

Если виртуальная машина или контейнер останавливаются или завершают работу некорректно (например, из-за отключения электроэнергии), данные могут быть потеряны и потребуют восстановления, как и любые другие элементы системы.

Поддержка устройств

Хотя мы стремимся к тому, чтобы Linux на ChromeOS работал на всех Chromebook, необходимые характеристики ядра и оборудования ограничивают возможности его развертывания. Команда сосредоточилась на безопасности и стабильности системы, одновременно перенося функции туда, где это целесообразно. Это область, в которой мы продолжаем работу.

Поддерживается сейчас

Список поддерживаемых в настоящее время устройств см. в разделе «Системы ChromeOS, поддерживающие Linux» .

Требования к оборудованию

Хотя в настоящее время нет минимальных требований к объему оперативной памяти, хранилища или скорости процессора для запуска контейнера Linux на ChromeOS, чем больше того и другого, тем лучше будет производительность системы.

Тем не менее, вам понадобится процессор, поддерживающий аппаратную виртуализацию . На платформах x86 это называется по-разному . Intel называет это VT-x и VMX , а AMD — AMD-V и SVM .

системы BayTrail

Chromebook, использующие процессор Intel BayTrail, не поддерживают VT-x. Хотя этот процессор обычно включает VMX, вариант, используемый в Chromebook, его не поддерживает, и поэтому, к сожалению, поддержка этой технологии никогда не будет обеспечена.

Проверить, поддерживается ли плата, можно, выполнив поиск по запросу BayTrail в столбце Platform в нашем общедоступном списке устройств .

Старые зерна

Поддержка Linux 3.14 и более ранних версий не планируется. Для их поддержки требуется перенос новых функций, который является обширным и часто инвазивным. Например:

Проверить поддержку платы можно, выполнив поиск в нашем общедоступном списке устройств по номерам версий меньше 3.14 в столбце Kernel .

32-битные процессоры ARM

Запуск виртуальных машин на 32-битных процессорах ARM — сложная, нестандартная задача, требующая согласования с прошивкой. К сожалению, прошивка ChromeOS, как правило, не настраивает расширения. Поэтому такие системы не поддерживаются.

Проверить поддержку платы можно, выполнив поиск по слову arm в столбце Kernel ABI в нашем общедоступном списке устройств .