Обзор
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)
- Войдите в режим восстановления (recovery mode).
- Нажмите
CTRL + D, чтобы включить переключатель режима разработчика. - Нажмите
ENTERдля подтверждения. - Снова войдите в режим восстановления (ждать завершения очистки не нужно).
- Вставьте USB-флешку с
rma_image.binи загрузитесь с нее.
Как загрузиться с RMA shim на планшете
- Войдите в режим восстановления.
- Нажмите
VOL_UP + VOL_DOWN, чтобы отобразить меню восстановления. - Нажимайте
VOL_UPилиVOL_DOWNдля перемещения курсора к «Confirm Disabling OS Verification» и нажмитеPOWERдля выбора. - Снова войдите в режим восстановления (ждать завершения очистки не нужно).
- Вставьте 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
0 Комментариев