Это сложный процесс, который мы не рекомендуем для новых пользователей Linux.
ChromeOS поддерживает выполнение произвольного кода внутри виртуальных машин . Это низкоуровневая документация по данной поддержке; для более подробного ознакомления см. раздел часто задаваемых вопросов (FAQ) .
Предварительные требования
- Убедитесь, что ваше устройство ChromeOS поддерживает Linux на ChromeOS.
- Убедитесь, что вы используете ChromeOS версии 72 (M72+) или выше (выпущенную в феврале 2019 года).
- При необходимости запустите обновление системы и перезагрузите компьютер.
- Это должно работать в стабильном канале .
- Нет необходимости переводить его в режим разработчика.
- Включить контейнер Linux
Функции среды выполнения
При запуске контейнера 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 в нашем общедоступном списке устройств .