Команда fastboot getvar current-slot, возвращающая slot a или slot b, — первое, что нужно выполнить, когда смартфон после обновления уходит в циклическую перезагрузку или зависает на логотипе: в большинстве таких случаев система пытается стартовать с повреждённого или неполного слота. Переключение активного слота через fastboot set_active позволяет вернуть устройство к предыдущей рабочей копии системы без полной перепрошивки.
Механизм A/B-разделов (seamless updates) используется на многих современных Android-устройствах: система хранится в двух экземплярах, и обновление устанавливается в неактивный слот, после чего загрузчик переключается на него. Если обновление прошло с ошибкой, возврат на старый слот — самый быстрый способ восстановить работоспособность. Ниже разберём, как проверить текущий слот, сменить его и какие ограничения у этого метода есть.
Что такое слоты A и B и зачем они нужны
На устройствах с поддержкой A/B-разделов ключевые разделы — boot, system, vendor и другие — продублированы. Каждая копия получает суффикс _a или _b, а загрузчик хранит метаданные о том, какой слот активен, сколько раз он успешно загружался и помечен ли он как работоспособный.
Когда приходит OTA-обновление, оно записывается в фоновом режиме во второй (неактивный) слот, пока вы продолжаете пользоваться телефоном. После перезагрузки устройство стартует с обновлённого слота. Если загрузка не удалась несколько раз подряд, загрузчик теоретически должен сам откатиться на прежний слот — но на практике этот механизм срабатывает не всегда, и тогда требуется ручное переключение.
Узнать, поддерживает ли конкретное устройство схему A/B, можно командой fastboot getvar all — в выводе будут присутствовать переменные current-slot и has-slot: для соответствующих разделов. Если таких переменных нет, устройство использует классическую схему разделов, и смена слота ему не применима.
Подготовка: что нужно перед сменой слота
Для работы понадобится компьютер с установленными Android SDK Platform-Tools — именно в этот пакет входит утилита fastboot. Дополнительно на Windows может потребоваться USB-драйвер устройства; на Linux обычно достаточно корректных правил udev.
Устройство необходимо перевести в режим fastboot (bootloader). Способ входа зависит от производителя: чаще всего это комбинация кнопок питания и громкости при выключенном аппарате либо команда adb reboot bootloader из загруженной системы. Точную комбинацию для вашей модели уточняйте в официальной документации производителя — универсального варианта не существует.
☑️ Подготовка к смене слота
Проверьте, что компьютер видит устройство:
fastboot devices
Если список пуст, проблема в драйверах, кабеле или USB-порту — менять слот на этом этапе ещё рано. Используйте качественный кабель и порт напрямую на материнской плате, без хабов.
Как узнать текущий активный слот
Перед любыми изменениями определите текущее состояние. Основная команда:
fastboot getvar current-slot
Результат будет вида current-slot: a или current-slot: b. Дополнительно полезно посмотреть расширенную информацию:
fastboot getvar all
В выводе могут встретиться параметры slot-successful, slot-retry-count и slot-unbootable для каждого слота — они показывают, какой слот система считает рабочим, а какой помечен как проблемный. Набор доступных переменных зависит от загрузчика конкретного устройства, поэтому часть полей может отсутствовать.
Команда fastboot set_active: синтаксис и примеры
Сама смена слота выполняется одной командой. Чтобы активировать слот A:
fastboot set_active a
Чтобы активировать слот B:
fastboot set_active b
Некоторые загрузчики принимают альтернативный синтаксис через --set-active, например fastboot --set-active=a, но вариант с set_active поддерживается шире. После успешного выполнения команда возвращает OKAY, и можно перезагружать устройство:
fastboot reboot
Обратите внимание: команда лишь меняет флаг активного слота в метаданных загрузчика. Она не прошивает и не восстанавливает содержимое разделов — если целевой слот содержит повреждённую систему, устройство с него не загрузится.
Типовые сценарии использования
Чаще всего смена слота нужна в трёх ситуациях. Понимание сценария помогает выбрать правильную последовательность действий, а не просто переключаться «наугад».
- 🔄 Откат после неудачного OTA. Обновление установилось в неактивный слот, устройство после перезагрузки не стартует. Решение: переключиться на прежний слот, где осталась старая рабочая система.
- 🛠️ Ручная прошивка через fastboot. Многие заводские образы для A/B-устройств прошиваются в оба слота или требуют явного указания слота (
boot_a,system_bи т.д.). После прошивки нужно активировать правильный слот. - 🧪 Установка кастомной прошивки или GSI. Некоторые инструкции предполагают прошивку образа в конкретный слот с последующим его активированием.
- 🔁 Диагностика bootloop. Переключение между слотами помогает определить, в каком из них проблема.
⚠️ Внимание: при откате через смену слота учитывайте механизм rollback protection (anti-rollback). Если в новом слоте обновлён индекс защиты от отката, загрузка старой версии системы может быть заблокирована загрузчиком, а попытка её принудительного запуска иногда приводит к невозможности старта вообще. Проверяйте индекс через fastboot getvar anti, если загрузчик поддерживает эту переменную.
Ошибки при выполнении set_active и их причины
Команда простая, но загрузчики разных производителей ведут себя по-разному. Вот типичные проблемы и их вероятные причины.
| Симптом / ответ загрузчика | Вероятная причина | Что проверить |
|---|---|---|
| FAILED (remote: unknown command) | Загрузчик не поддерживает set_active или устройство без A/B | Наличие current-slot в getvar all; схема разделов устройства |
| Команда выполняется, но слот не меняется | Ограничения прошивки загрузчика | Повторный getvar current-slot; альтернативный синтаксис --set-active |
| Устройство не видно в fastboot devices | Драйверы, кабель, порт | Диспетчер устройств, другой кабель и USB-порт |
| После смены слота устройство не грузится | Целевой слот повреждён или заблокирован anti-rollback | Вернуться на исходный слот; прошить рабочие образы в целевой слот |
| Слот переключается, но после перезагрузки возвращается обратно | Механизм rollback загрузчика при неудачной загрузке | Состояние slot-unbootable / slot-retry-count |
Если загрузчик возвращает ошибку на любую из форм команды, возможная причина — заблокированный загрузчик. На части устройств команды, меняющие состояние слотов, доступны только после разблокировки (fastboot flashing unlock), что, в свою очередь, стирает данные и может влиять на гарантию. Условия разблокировки зависят от производителя.
Почему слот может «сам» переключаться обратно
Загрузчик отслеживает счётчик неудачных попыток загрузки (retry count). Если активный слот несколько раз не смог загрузиться и не был помечен системой как successful, загрузчик автоматически возвращается к предыдущему слоту. Поэтому ручное переключение на заведомо нерабочий слот выглядит как «команда не сработала» — на самом деле сработал механизм защиты.
Риски и ограничения метода
Смена слота — операция обратимая сама по себе: флаг можно переключить туда-обратно сколько угодно раз. Опасность представляет не команда, а состояние содержимого слотов. Если оба слота повреждены (например, прервалась прошивка обоих), никакое переключение не поможет — потребуется полная прошивка заводским образом.
⚠️ Внимание: не переключайте слот, если не уверены, что целевой слот содержит загрузочную систему. Перед сменой желательно прошить в него как минимум раздел boot из заведомо подходящего образа именно для вашей модели и ревизии устройства — образ от другой модификации может сделать аппарат незагружаемым.
Ещё одно ограничение: данные пользователя (раздел userdata) общие для обоих слотов. Откат на старую версию системы при обновлённых данных иногда вызывает сбои приложений или требование сброса — это нормальное следствие несовместимости форматов данных между версиями, а не ошибка смены слота.
Наконец, помните, что смена слота не заменяет прошивку: она лишь выбирает, какую из двух уже записанных копий системы загружать. Если задача — восстановить устройство, а оба слота в неизвестном состоянии, правильнее прошить заводской образ целиком по инструкции производителя.
FAQ: частые вопросы о смене слота
Как узнать, какой слот сейчас активен?
Выполните в режиме fastboot команду fastboot getvar current-slot. Ответ будет a или b. Расширенную информацию о состоянии слотов даёт fastboot getvar all.
Чем отличаются fastboot set_active a и fastboot --set-active=a?
Это два синтаксиса одной операции. Вариант set_active поддерживается большинством загрузчиков; --set-active — альтернативная форма, которую понимают некоторые устройства. Если одна форма возвращает ошибку, попробуйте другую.
Удалятся ли данные при смене слота?
Сама команда set_active данные не стирает — раздел userdata общий для обоих слотов. Однако откат на более старую версию системы может вызвать конфликт с данными, созданными новой версией, и система может потребовать сброс. Разблокировка загрузчика, если она потребуется для выполнения команды, стирает данные полностью.
Команда возвращает ошибку unknown command — что делать?
Вероятно, устройство не использует A/B-разделы либо его загрузчик не поддерживает эту команду. Проверьте вывод fastboot getvar all: если переменной current-slot нет, смена слота к вашему устройству неприменима.
После переключения слота телефон всё равно не загружается. Что дальше?
Переключитесь обратно на исходный слот и проверьте, загружается ли он. Если не загружается ни один слот, оба содержат повреждённую систему — нужна прошивка заводским образом по официальной инструкции для вашей модели. Также проверьте, не срабатывает ли защита anti-rollback.