«Так обстоит дело: ничто не вечно, немногое долговечно, одно хрупко одним образом, другое — другим, конец у вещей различный, но все, что имело начало, имеет и конец»
(Луций Анней Сенека)
Привет, жители Хабра! На связи Кирилл из МТС Диджитал.
Недавно мой верный Chromebook выдал сообщение, что больше не будет обновляться и со временем пользоваться им станет небезопасно. Но это не страшно — есть два варианта продлить срок использования этого чудесного гаджета.
Первый из них предложил сам Google, а второй предполагает несколько хитрых манипуляций по разблокировке и перепрошивке BIOS. После этого появится возможность заменить операционную систему. В этом посте попробуем оба варианта и постараемся ответить на вопрос: что же делать с устаревшим гаджетом?
С чего начнем?
Пара слов о «начинке» моего экземпляра. Производитель Acer, модель CP311-1HN, микроархитектура Goldmont, платформа Apollo Lake, кодовое имя платы LAVA, кодовое имя модели Coral. Произведен в 2018 году. Внутри стоит слабенький процессор Intel Celeron N3350 с тактовой частотой 1,1 ГГц (2,4 ГГц в режиме Burst) и 4 Гб оперативной памяти LPDDR4. В качестве накопителя используется eMMC на 32 Гб. Все эти компоненты для удешевления распаяны на материнской плате и не подлежат замене пользователем. Цена на момент покупки была около 250 $.
Охлаждение полностью пассивное, отвод тепла процессора — через небольшую термопрокладку (термопасты или прочих жидких металлов там нет, да и не требуется). Материнская плата занимает приблизительно половину пространства внутри корпуса. Вторую половину занимает аккумулятор модели AC15A3J на 3 490 мА·ч/36 Вт, на котором устройство работает до 10 часов.
Внешних интерфейсов немного: пара портов USB-C, пара USB-A и картридер для MicroSD-карт. Оба порта USB-C рассчитаны на подключение оригинального зарядного устройства Chicony A16-045N1A мощностью 45 Вт. Он достаточно громоздкий, так что почти сразу был заменен на зарядник Xiaomi 65 Вт GaN Charger.
Подробнее про обновления
В моем случае (устройство было куплено в 2019 году) я знал, что буду получать обновления до начала 2024 года. Так что расчетный срок жизни девайса был пять лет. Политика Google по устройствам на ChromeOS (Chromebook, Chromebox, Chromebase, Chromebit) изменилась после 2021 года. Теперь они заявляют, что все модели будут получать обновления 10 лет. Это вызывает уважение.
Единственное, что действительно сильно деградирует в хромбуке при постоянной эксплуатации, — это Li-ion-батарея. Через три года использования ее пришлось заменить на новую и девайс снова стал жить до 10 часов автономно. В этом году при очередном обновлении в трее выскочило сообщение, что день X настал — больше Chromebook обновляться не будет. Но сама Google предложила продлить срок получения обновлений — для этого нужно отказаться от поддержки Android-приложений.
Тут нужно кое-что пояснить. Многие ошибочно полагают, что хромбук — это устройство с операционной системой, в которой есть только браузер для веб-серфинга. Мой хромбук «из коробки» поддерживал установку любых Android-приложений. Через год прилетело обновление, которое позволяло запускать внутри ChromeOS контейнер с Linux. Так что стал возможным безопасный запуск нативных Linux-приложений. И даже кое-какие приложения для Windows спокойно работали через WINE.
Продление поддержки
Android в хромбуке — одна из самых востребованных и уязвимых частей экосистемы. Для старых устройств (имеются в виду устройства, выпущенные до 2021 года) готовить обновления еще одной операционной системы просто нерентабельно. Поэтому Google предлагает полностью убрать из ChromeOS поддержку Android-приложений, но взамен продлить поставку обновлений безопасности.
Концепция ChromeOS предполагала, что пользователи практически все свои данные хранят в облаке. Значит, устройствам не нужно иметь скоростных и емких накопителей для локального хранения данных. При этом сброс устройства (так называемый Powerwash) — вполне штатная процедура, которая полностью стирает данные с устройства и переустанавливает операционную систему, используя скрытый раздел на накопителе.
Именно такой сценарий будет выполнен, если пользователь согласится продлить поддержку. Все данные с устройства будут стерты, а операционная система переустановлена заново. При этом в ней не будет компонентов Android, как и поддержки приложений для него. Для тех пользователей, которые использовали устройство, чтобы посмотреть YouTube и посерфить веб-страницы, такой вариант кажется вполне разумным. Но для многих пользователей это ограничит возможности девайса, поэтому есть смысл посмотреть на сторонние альтернативы.
Разблокировка и перепрошивка
Хромбуки аппаратно не слишком-то и отличаются от обычных ноутбуков. Разница лишь в том, что у них особый BIOS (UEFI), который условно состоит из двух частей — перезаписываемой и защищенной от записи. Во второй расположен основной загрузчик. Он отвечает за проверку целостности основного загрузчика ChromeOS. В незащищенной части расположена микропрограмма UEFI, выполняющая непосредственную загрузку операционной системы.
В штатном UEFI есть возможность загрузки с внешних накопителей, но исключительно содержащих средства восстановления операционной системы ChromeOS. Снять эту часть защиты можно программно, используя режим разработчика (Developer mode). Переключиться в такой режим достаточно просто. Выключив устройство, зажимаем кнопки Esc и Refresh. Не отпуская их, нажимаем на кнопку питания и попадаем на экран режима восстановления. Именно в этом режиме устройство будет ожидать подключения USB-накопителя с записанным на нем средством восстановления операционной системы.
Но вместо этого мы нажимаем сочетание клавиш Ctrl + D, что будет означать переход к режиму разработчика. Система предупредит, что процедура сотрет все пользовательские данные на устройстве, и даст 60 секунд «на подумать» и прервать потенциально опасную операцию. Просто ждем, ничего не нажимая, и спустя 5–6 минут получаем устройство с активированным режимом разработчика.
Теперь при любом включении устройство будет предупреждать: система, отслеживающая целостность UEFI и операционной системы, отключена, и нужно нажать на пробел, чтобы вновь ее активировать. Ни в коем случае нельзя нажимать пробел: это вернет устройство из режима разработчика в обычное состояние. Для загрузки в ChromeOS достаточно будет нажать сочетание клавиш Ctrl + D на этом экране.
Сейчас можно посмотреть на пару переменных загрузки, нажав Ctrl + I. Нас интересуют переменные dev_boot_usb и dev_boot_legacy. Обе по умолчанию выставлены в 0. Пришла пора заменить штатный UEFI на кастомный, перезаписав ту часть микросхемы BIOS, которая не защищена от записи. В этом нам поможет проект MrChromebox.tech.
Загрузившись в ChromeOS, нажимаем сочетание клавиш Ctrl + Alt + Forward (F2) и попадаем в консоль VT2. Вводим логин chronos и нажимаем Enter. Пароля у этого пользователя нет. Теперь вводим команду:
$ cd; curl -LO mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh
Это не что иное, как скачивание и запуск скрипта, который автоматически определит тип вашего устройства и предложит возможные варианты перепрошивки. Интерфейс скрипта:
В моем случае нужно было выбрать пункт 1 — Install/Update RW_LEGACY Firmware. Скрипт задаст пару вопросов о необходимости загрузки с USB и активации Legacy-режима загрузки. Фактически он поменяет те две переменные, о которых говорилось выше. После этого он скачает кастомный бинарник, содержащий в себе SeaBIOS (реализация 16-битного x86 BIOS с открытым исходным кодом), и установит его в доступную для записи часть микросхемы.
После перезагрузки мы снова вылетим в белый экран и можем проверить, что обе переменные — dev_boot_usb и dev_boot_legacy — имеют значение 1. Это значит, что теперь можно записать на внешний USB-накопитель нужную нам операционную систему и загрузиться с нее. Можно еще записать образ инсталлятора на MicroSD-карту, и SeaBIOS сможет с нее загрузиться. Как только флешка готова, подключаем ее и на белом начальном экране с предупреждением нажимаем сочетание клавиш Сtrl + L. Это запустит Legacy-режим загрузки, и при нажатии на Esc появится возможность выбора устройства для загрузки.
Ставим ОС
В качестве операционной системы я выбрал Debian 12 с легковесной графической оболочкой LXDE. Это одновременно будет означать совместимость с DEB-пакетами и достаточно приличную поддержку оборудования. Но есть и специально разработанные дистрибутивы Linux — например, GalliumOS. Проект уже пару лет заброшен, но может послужить хорошей отправной точкой для того, чтобы получить быструю и удобную операционную систему на хромбуке.
Сама установка запустилась без особых проблем, но с предупреждением о невозможности корректного выбора видеорежима. Штатное разрешение экрана на этом хромбуке — 1 366 × 768, но инсталлятору такое разрешение оказалось недоступно. Пришлось выбрать лучшее из того, что было предложено. Других сложностей не возникло, даже Wi-Fi-адаптер корректно определился и подключился к сети. Но как только установка была завершена и пришло время загрузиться в новую операционную систему, меня ждал неприятный сюрприз.
Как только загрузка доходила до стадии запуска графического интерфейса, появлялся черный экран и на этом процесс останавливался. Причина в том, что система не могла корректно определить используемый видеоадаптер. В моем случае это был встроенный Intel HD 500. Выход — создать небольшой конфигурационный файл, принудительно указать системе, какой драйвер следует использовать. Для этого в GRUB выбираем загрузку в recovery, вводим заданный при установке пароль root и создаем конфиг:
# nano /usr/share/X11/xorg.conf.d/20-intel.conf
В качестве содержимого указываем:
Section “Device”
Identifier “Intel Graphics”
Driver “Intel”
Option “DRI” “3”
EndSection
Нажимаем Ctrl + O для сохранения и Ctrl + X для выхода из редактора nano. Перезагружаемся — и инициализация графики проходит успешно:
Создаваемый при установке пользователь по умолчанию не входит в список sudoers, поэтому от его имени нет возможности выполнять команду sudo. Для удобства добавляем пользователя username в группу, которой разрешено использование sudo:
$ sudo usermod -aG sudo username
Нужно обязательно выполнить выход и повторный заход в систему, потом можно использовать sudo. Обновляем кэш пакетов и сами пакеты до актуальной версии:
$ sudo apt update && sudo apt -y upgrade
Ну и поставим пару утилит. Первая, btop, — красивый консольный менеджер процессов, отображающий степень зарядки аккумулятора, загрузку процессора, скорость сетевого адаптера и множество других полезных данных. Вторая утилита, neofetch, выведет на экран основную информацию о системе.
$ sudo apt -y install btop neofetch
Запускаем neofetch и видим, что хромбук определяется по кодовому имени Coral третьей ревизии, равно как и правильно указаны процессор и GPU:
Операционная система с графической оболочкой заняла 5 Гб на внутренней флешке eMMC и оставила около 21 Гб свободного дискового пространства. Расширить его можно, примонтировав к домашнему каталогу какую-нибудь скоростную MicroSD-карту большой емкости, например 256 Гб:
Вместо заключения
Готовя эту статью, я хотел рассказать еще об одном интересном трюке: как убрать защиту от записи микросхемы BIOS, используя самодельный дебаг-кабель с названием SuzyQable (Suzy-Q). Но увы, два собранных по рецептам из интернета кабеля не захотели работать. Готовые же кабели Sparkfun не производит с 2021 года. Так что впереди сборка кабеля на макетной плате и его проверка. Надеюсь скоро выпустить Хабре об этом отдельный материал.
Установка Debian прошла успешно, хотя некоторые моменты придется проработать. Пока что не удалось заставить адекватно работать звуковую карту, воспроизведение видео с YouTube тоже заметно тормозит, указывая на необходимость пошаманить с видеодрайвером. Короче говоря, мой путь к полному переходу на Linux для этого устройства еще не завершен.
Интересно узнать ваше мнение о политике обновлений Google и каким был ваш опыт использования устройств на базе ChromeOS. Жду вас в комментариях.