Перейти к основному содержанию

Обзор

RMA расшифровывается как Return Merchandise Authorization (разрешение на возврат товара). Это ситуация, когда с устройством возникает проблема, которую конечный пользователь не может решить самостоятельно, и он принимает решение вернуть устройство в сервисный центр для диагностики и ремонта.

Как правило, сервисному центру сложно запускать какие-либо диагностические инструменты или ремонтные программы, не подписанные Google, из-за функции безопасной загрузки (verified boot) и защиты от записи в Chrome OS. Чтобы обойти эти ограничения, сервисному партнеру потребуется RMA shim. Этот инструмент подписан Google и позволяет партнеру запускать собственные программы диагностики для проверки и подтверждения работоспособности компонентов.

Образ RMA shim спроектирован как комбинация уже существующих компонентов фабричного пакета Chrome OS и включает в себя следующее:

  • Фабричный установочный shim
  • Образ выпуска (FSI)
  • Тестовый образ
  • Фабричный инструментарий
  • Пакет HWID
  • Другие дополнительные компоненты (прошивка, завершающий скрипт и т. д.)

Индивидуальные RMA shim против универсальных RMA shim

Несмотря на чрезвычайную полезность, проблема обычных RMA shim для конкретной платы заключается в том, что они привязаны к модели материнской платы. Это может затруднить управление образами shim на физических USB-накопителях.

Эту проблему можно решить созданием универсального shim. Универсальный shim может содержать несколько RMA shim для разных плат, что упрощает управление образами и их распространение.

Компромиссом здесь является то, что универсальные shim могут быть довольно большими, так как для shim каждой платы требуется около 3 ГБ памяти. Таким образом, универсальный shim, содержащий 3 платы, будет иметь общий размер 9–10 ГБ.

Какая программа необходима

image_tool — это программа, необходимая для управления RMA shim. Ее можно загрузить из общедоступного фабричного репозитория с помощью следующих команд.

$ git clone https://chromium.googlesource.com/chromiumos/platform/factory
$ cd factory/

Инструмент будет находиться в директории setup/image_tool. Настоятельно рекомендуется периодически синхронизировать git-репозиторий, чтобы быть уверенным, что у вас установлена последняя версия. Это можно сделать с помощью следующей команды...

$ git pull

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

$ py/tools/image_tool_rma_unittest.py

Настройка списка тестов RMA в фабричном инструментарии

Список тестов RMA отличается от списка тестов, используемого на фабричной производственной линии. Например, во время процесса RMA не будет фабричного сервера. Вот почему нам понадобится другой список тестов для RMA.

Рекомендуемый процесс создания списка тестов заключается в создании списка, который наследуется от generic_rma.test_list.json. Это должно позаботиться об общих настройках RMA, таких как отключение фабричного сервера и включение rma_mode, а также о добавлении фабричных тестов в группу RMAFFT.

{
  "inherit": [
    "generic_rma.test_list"
  ],
  "label": "RMA Test List for <project>",
  "definitions": {
    "RMAFFT": {
      "subtests": [
        ...
        ...
      ]
    }
  }
}

Также рекомендуется изменить следующие настройки...

  • Фабричные тесты в сервисных центрах выполняются с сокращенными циклами тестирования. Например, сократите длительность стресс-теста с 4 часов до 10 минут.
  • Проверяйте, чтобы все запасные материнские платы, используемые в сервисных центрах, проходили SMT-тесты.
  • Проверяйте, чтобы все запасные материнские платы имели регистрационный код, записанный в RW_VPD во время фабричного процесса перед отправкой плат в сервисные центры.
  • Согласуйте с OEM перечень элементов тестирования для процесса RMA.
  • Не изменяйте и не удаляйте пункты GRT (Google Required Test — тесты, требуемые Google).
  • Убедитесь, что защита прошивки от записи включена (это должно быть истинно, если constants.phase установлено в PVT).

Объединение компонентов фабричного пакета в образ RMA shim

После того как компоненты пакета готовы, вы можете объединить их в единый образ RMA shim. Образ RMA shim можно создать из фабричного пакета с помощью команды image_tool rma create:

$ setup/image_tool rma create 
    --board BOARD
    --factory_shim path/to/factory_install_shim.bin 
    --test_image path/to/chromiumos_test_image.bin 
    --toolkit path/to/install_factory_toolkit.run 
    --release_image path/to/chromiumos_image.bin 
    --hwid path/to/hwid_bundle.sh 
    --output rma_image.bin

Команду можно упростить при условии, что все компоненты помещены в соответствующие директории пакета (release_image/, test_image/ и т. д.):

$ setup/image_tool rma create
      --board BOARD
      --output rma_image.bin

Кроме того, мы можем указать активный список тестов при создании RMA shim. Таким образом, нам не придется изменять active_test_list.json в фабричном инструментарии.

$ setup/image_tool rma create
     --board BOARD
     --output rma_image.bin
     --active_test_list rma_main

Создание универсального RMA shim

Мы можем создать универсальный RMA shim, используя команду image_tool rma merge.

$ setup/image_tool rma merge 
    -i soraka.bin scarlet.bin 
    -o universal.bin

Чтобы удалить ранее созданный выходной образ, необходимо указать опцию -f:

$ setup/image_tool rma merge 
    -i soraka.bin scarlet.bin 
    -o universal.bin -f

Обновление универсального RMA shim

Команда image_tool rma merge поддерживает объединение универсальных shim. Если есть дублирующиеся платы, пользователю будет предложено выбрать, какую плату он хочет использовать. Эта функция может быть использована для обновления платы в универсальном shim с помощью обновленного RMA shim для отдельной платы.

$ setup/image_tool rma merge 
    -i universal.bin soraka_new.bin 
    -o universal_new.bin
Сканирование 2 входных файлов образов...

Для платы soraka найдено более одной записи.
========================================================================
(1)
Из universal.bin
board         : soraka
install_shim  : 10323.39.28
release_image : 10575.37.0 (Official Build) dev-channel soraka
test_image    : 10323.39.24 (Official Build) dev-channel soraka test
toolkit       : soraka Factory Toolkit 10323.39.24
firmware      : Google_Soraka.10431.32.0;Google_Soraka.10431.48.0
hwid          : None
complete      : None
toolkit_config: None
lsb_factory   : lsb_factory
========================================================================
(2)
Из soraka_new.bin
board         : soraka
install_shim  : 10323.39.31
release_image : 10575.37.0 (Official Build) dev-channel soraka
test_image    : 10323.39.24 (Official Build) dev-channel soraka test
toolkit       : soraka Factory Toolkit 10323.39.24
firmware      : Google_Soraka.10431.32.0;Google_Soraka.10431.48.0
hwid          : None
complete      : None
toolkit_config: None
lsb_factory   : lsb_factory
========================================================================
Пожалуйста, выберите опцию [1-2]:

Использование RMA shim

Запишите rma_image.bin на USB-накопитель и загрузитесь с него, предварительно включив режим разработчика и переведя устройство в режим восстановления.

Как записать образ shim на USB-накопитель

Используйте команду dd для записи образа shim на ваше устройство хранения, заменив /dev/sdX именем вашего устройства.

$ sudo dd if=rma_image.bin of=/dev/sdX bs=8M iflag=fullblock oflag=dsync

Если на вашем устройстве установлена среда разработки ОС, то вы можете использовать команду ``cros flash`` внутри chroot.

$ cros flash usb:// rma_image.bin

Как загрузиться с RMA shim на ноутбуках (clamshells)

  1. Войдите в режим восстановления (recovery mode).
  2. Нажмите CTRL + D, чтобы включить переключатель режима разработчика.
  3. Нажмите ENTER для подтверждения.
  4. Снова войдите в режим восстановления (ждать завершения очистки не нужно).
  5. Вставьте USB-флешку с rma_image.bin и загрузитесь с нее.

Как загрузиться с RMA shim на планшете

  1. Войдите в режим восстановления.
  2. Нажмите VOL_UP + VOL_DOWN, чтобы отобразить меню восстановления.
  3. Нажимайте VOL_UP или VOL_DOWN для перемещения курсора к «Confirm Disabling OS Verification» и нажмите POWER для выбора.
  4. Снова войдите в режим восстановления (ждать завершения очистки не нужно).
  5. Вставьте USB-флешку с rma_image.bin и загрузитесь с нее.

Навигация по меню RMA shim

RMA shim имеет меню, позволяющее пользователю выбирать различные действия, которые описаны в файле README. Если пользователь создает RMA shim с помощью команды image_tool rma create, инструмент добавит флаг RMA_AUTORUN=1 в файл lab-factory. Это установит действия по умолчанию в меню.

Дополнительные команды RMA.

Существуют другие команды image_tool, которые могут упростить проверку и модификацию ваших RMA shim. Подробные описания можно найти, используя аргумент --help для других команд. Например...

$ setup/image_tool rma show --help

Просмотр компонентов пакета в RMA shim

Команда image_tool rma show может вывести версию компонентов в вашем RMA shim:

$ setup/image_tool rma show -i soraka.bin
Этот RMA shim содержит платы: soraka
========================================================================
board         : soraka
install_shim  : 10323.39.31
release_image : 10575.37.0 (Official Build) dev-channel soraka
test_image    : 10323.39.24 (Official Build) dev-channel soraka test
toolkit       : soraka Factory Toolkit 10323.39.24
firmware      : Google_Soraka.10431.32.0;Google_Soraka.10431.48.0
hwid          : None
complete      : None
toolkit_config: cb5b52296cd4fcb0418b6879c0acc32b
lsb_factory   : d2c9d6a7d32ee3b1279c2b0b27244727
========================================================================

Та же команда может использоваться для универсальных RMA shim.

$ setup/image_tool rma show -i universal.bin
Этот RMA shim содержит платы: soraka scarlet
========================================================================
board         : soraka
install_shim  : 10323.39.31
release_image : 10575.37.0 (Official Build) dev-channel soraka
test_image    : 10323.39.24 (Official Build) dev-channel soraka test
toolkit       : soraka Factory Toolkit 10323.39.24
firmware      : Google_Soraka.10431.32.0;Google_Soraka.10431.48.0
hwid          : None
complete      : None
toolkit_config: cb5b52296cd4fcb0418b6879c0acc32b
lsb_factory   : d2c9d6a7d32ee3b1279c2b0b27244727
========================================================================
board         : scarlet
install_shim  : 10211.68.0
release_image : 10575.67.0 (Official Build) stable-channel scarlet
test_image    : 10211.53.0 (Official Build) dev-channel scarlet test
toolkit       : scarlet Factory Toolkit 10211.53.0
firmware      : Google_Scarlet.10388.26.0
hwid          : None
complete      : None
toolkit_config: None
lsb_factory   : c82d4c1f831bf20d7cdc70138fe4ef72
========================================================================

Замена компонентов пакета в RMA shim

Команда image_tool rma replace может заменить компоненты, находящиеся в вашем RMA shim. Например, вы можете заменить пакет HWID на новый:

$ setup/image_tool rma replace -i rma_image.bin --hwid new_hwid_bundle.sh

Аргумент --board потребуется, если вы хотите заменить что-либо в универсальном shim.

$ setup/image_tool rma replace -i universal.bin
    --board soraka --hwid new_hwid_bundle.sh

Эта команда также может заменять release_image, test_image, toolkit, factory_shim, firmware, hwid, complete_script и toolkit_config.

Извлечение RMA shim для одной платы из универсального shim

Команда image_tool rma extract может быть использована для извлечения RMA shim для одной платы из вашего универсального shim.

$ setup/image_tool rma extract -i universal.bin -o extract.bin
Сканирование входного файла образа...

Пожалуйста, выберите плату для извлечения.
========================================================================
(1)
board         : soraka
install_shim  : 10323.39.31
release_image : 10575.37.0 (Official Build) dev-channel soraka
test_image    : 10323.39.24 (Official Build) dev-channel soraka test
toolkit       : soraka Factory Toolkit 10323.39.24
firmware      : Google_Soraka.10431.32.0;Google_Soraka.10431.48.0
hwid          : None
complete      : None
toolkit_config: cb5b52296cd4fcb0418b6879c0acc32b
lsb_factory   : d2c9d6a7d32ee3b1279c2b0b27244727
========================================================================
(2)
board         : scarlet
install_shim  : 10211.68.0
release_image : 10575.67.0 (Official Build) stable-channel scarlet
test_image    : 10211.53.0 (Official Build) dev-channel scarlet test
toolkit       : scarlet Factory Toolkit 10211.53.0
firmware      : Google_Scarlet.10388.26.0
hwid          : None
complete      : None
toolkit_config: None
lsb_factory   : c82d4c1f831bf20d7cdc70138fe4ef72
========================================================================
Пожалуйста, выберите опцию [1-2]:

Как редактировать конфигурацию lab-factory в RMA shim

Команда image_tool edit_lsb может изменять конфигурацию lsb-factory, такую как флаг RMA_AUTORUN.

$ setup/image_tool edit_lsb -i rma_image.bin

Текущая конфигурация LSB:
========================================================================
CHROMEOS_AUSERVER=http://...
CHROMEOS_DEVSERVER=http://...
FACTORY_INSTALL=1
HTTP_SERVER_OVERRIDE=true
FACTORY_INSTALL_FROM_USB=1
RMA_AUTORUN=true
========================================================================
(1) Изменить адрес фабричного сервера Chrome OS.
(2) Изменить конфигурацию cutoff в полезной нагрузке cros (только для старых устройств).
(3) Включить/выключить подсказку завершения в RMA shim.
(4) Включить/выключить автозапуск в RMA shim.
(q) Выйти без сохранения изменений.
(w) Применить изменения и выйти.
Пожалуйста, выберите опцию [1-4, q, w]:

кроме того, вы можете использовать

$ setup/image_tool edit_lsb -i universal.bin --board soraka

Как редактировать конфигурацию инструментария в RMA shim

Команда image_tool edit_toolkit_config может изменять конфигурацию инструментария, такую как активный список тестов и конфигурация cutoff.

$ setup/image_tool edit_toolkit_config -i rma_image.bin

Конфигурация инструментария:
========================================================================
{
  "cutoff": {
    "CUTOFF_BATTERY_MAX_PERCENTAGE": 90,
    "CUTOFF_BATTERY_MIN_PERCENTAGE": 60,
    "CUTOFF_METHOD": "battery_cutoff",
    "CUTOFF_AC_STATE": "remove_ac"
  },
  "active_test_list": {
    "id": "main_rma"
  }
}
========================================================================
(1) Изменить активный список тестов.
(2) Изменить константы списка тестов.
(3) Изменить конфигурацию cutoff.
(q) Выйти без сохранения изменений.
(w) Применить изменения и выйти.
Пожалуйста, выберите опцию [1-3, q, w]:

кроме того, вы можете использовать

$ setup/image_tool edit_toolkit_config -i universal.bin --board soraka

Распаковка и перепаковка инструментария в RMA shim

Команда image_tool payload toolkit может распаковать и перепаковать фабричный инструментарий в RMA shim.

$ setup/image_tool payload toolkit -i rma_image.bin --unpack toolkit_path
(Отредактируйте некоторые файлы в toolkit_path/ ...)
$ setup/image_tool payload toolkit -i rma_image.bin --repack toolkit_path

или

$ setup/image_tool payload toolkit 
    -i universal.bin --board soraka --unpack toolkit_path
(Отредактируйте некоторые файлы в toolkit_path/ ...)
$ setup/image_tool payload toolkit 
    -i universal.bin --board soraka --repack toolkit_path

Дополнительная информация

Jacob Mehnert

Участник с: 10/18/21

49 877 Репутация

Автор 52 руководств

Команда

iFanatics Участник iFanatics

Community

69 членов

Автор 1 151 руководств

0 Комментариев

Добавить комментарий

Статистика просмотров:

За последние 24 часов: 10

За последние 7 дней: 79

За последние 30 дней: 405

За всё время: 19,510