개요
RMA는 반품 승인(Return Merchandise Authorization)의 약자입니다. 이는 기기에 최종 사용자가 해결할 수 없는 문제가 발생하여 사용자가 진단 및 수리를 위해 기기를 서비스 센터로 반품하기로 결정했을 때 이루어집니다.
일반적으로 Chrome OS의 검증된 부팅 및 쓰기 방지 기능으로 인해, 서비스 센터에서 Google의 서명이 없는 진단 도구나 수리 프로그램을 실행하기는 어렵습니다. 이러한 문제를 해결하기 위해 수리 협력업체는 RMA 쉼이 필요합니다. 이 도구는 Google의 서명이 포함되어 있으며, 협력업체가 자체 진단 프로그램을 실행하여 구성 요소를 점검하고 확인할 수 있게 해줍니다.
쉼 이미지는 기존 Chrome OS 팩토리 번들 구성 요소를 조합하여 설계되었으며, 다음과 같은 내용을 포함합니다:
- 공장 설치 쉼
- 릴리스 이미지(FSI)
- 테스트 이미지
- 팩토리 도구키트
- HWID 번들
- 기타 선택적 구성 요소(펌웨어, 완료 스크립트 등)
개별 RMA 쉼 vs. 범용 RMA 쉼
일반적인 단일 보드용 RMA 쉼은 매우 유용하지만, 마더보드 모델에 특화되어 있다는 문제가 있습니다. 이로 인해 물리적 USB 드라이브에서 쉼 이미지를 관리하기 어려울 수 있습니다.
이 문제는 범용 쉼(Universal shim)을 생성하여 해결할 수 있습니다. 범용 쉼에는 서로 다른 보드용 RMA 쉼이 여러 개 포함될 수 있어 이미지를 관리하고 배포하기가 더 쉽습니다.
그 대가로 범용 쉼은 크기가 상당히 클 수 있습니다. 각 보드의 쉼마다 약 3GB의 저장 공간이 필요하기 때문입니다. 따라서 보드 3개를 포함하는 범용 쉼의 총 크기는 9~10GB가 됩니다.
필요한 프로그램
RMA 쉼을 관리하려면 image_tool이라는 프로그램이 필요합니다. 다음 명령어를 사용하여 팩토리 공개 저장소에서 다운로드할 수 있습니다.
$ 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_mode를 활성화하는 등 일반적인 RMA 설정을 처리할 수 있으며, 팩토리 테스트를 RMAFFT 그룹에 추가할 수 있습니다.
{
"inherit": [
"generic_rma.test_list"
],
"label": "RMA Test List for <project>",
"definitions": {
"RMAFFT": {
"subtests": [
...
...
]
}
}
}
또한 다음 설정을 변경하는 것이 좋습니다...
- 서비스 센터의 팩토리 테스트는 단축된 테스트 주기로 실행됩니다. 예를 들어, 스트레스 테스트 기간을 4시간에서 10분으로 줄이세요.
- 서비스 센터에서 사용하는 모든 예비 메인보드가 SMT 테스트를 완료했는지 확인하세요.
- 모든 예비 메인보드를 서비스 센터로 보내기 전에, 공장 공정 중에 RW_VPD에 등록 코드가 기록되었는지 확인하세요.
- RMA 프로세스에 대한 테스트 항목을 확정하기 위해 OEM과 상의하세요.
- 절대로 GRT(Google 필수 테스트) 항목을 수정하거나 제거하지 마세요.
- 펌웨어 쓰기 방지가 활성화되어 있는지 확인하세요(
constants.phase가 PVT로 설정된 경우 참이어야 합니다).
팩토리 번들 구성 요소를 RMA 쉼 이미지로 결합하기
번들 구성 요소가 준비되면 해당 구성 요소를 단일 RMA 쉼 이미지로 결합할 수 있습니다. 팩토리 번들에서 image_tool rma create 명령어를 사용하여 RMA 쉼 이미지를 생성할 수 있습니다:
$ 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 쉼을 생성할 때 활성 테스트 목록을 지정할 수도 있습니다. 이렇게 하면 팩토리 도구에서 active_test_list.json을 수정할 필요가 없습니다.
$ setup/image_tool rma create
--board BOARD
--output rma_image.bin
--active_test_list rma_main
범용 RMA 쉼 생성하기
image_tool rma merge 명령어를 사용하여 범용 RMA 쉼을 생성할 수 있습니다.
$ 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 쉼 업데이트하기
image_tool rma merge 명령어는 범용 쉼의 병합을 지원합니다. 보드가 중복되는 경우, 사용자는 어떤 보드를 사용할지 선택하라는 메시지를 받게 됩니다. 이 기능을 사용하면 업데이트된 단일 보드용 RMA 쉼을 사용하여 범용 쉼의 보드를 업데이트할 수 있습니다.
$ setup/image_tool rma merge
-i universal.bin soraka_new.bin
-o universal_new.bin
입력 이미지 파일 2개를 스캔하는 중...
보드 soraka에 대한 항목이 하나 이상 있습니다.
========================================================================
(1)
From 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)
From 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 쉼 사용하기
rma_image.bin을 USB 드라이브에 플래싱하고, 개발자 모드를 활성화하고 기기를 복구 모드로 전환한 상태에서 부팅하세요.
쉼 이미지를 USB 드라이브에 플래싱하는 방법
dd 명령어를 사용하여 쉼 이미지를 저장 장치에 플래싱하세요. /dev/sdx는 사용 중인 저장 장치의 이름으로 바꾸세요.
$ sudo dd if=rma_image.bin of=/dev/sdX bs=8M iflag=fullblock oflag=dsync
기기에 OS 개발 환경이 있다면 chroot에서 ``cros flash`` 명령어를 사용할 수 있습니다.
$ cros flash usb:// rma_image.bin
클램셸(노트북형) 기기에서 RMA 쉼으로 부팅하는 방법
- 복구 모드로 들어갑니다.
CTRL + D를 눌러 개발자 스위치를 켭니다.ENTER를 눌러 확인합니다.- 복구 모드로 다시 들어갑니다(삭제될 때까지 기다릴 필요 없습니다).
rma_image.bin이 포함된 USB 스틱을 삽입하고 부팅합니다.
태블릿에서 RMA 쉼으로 부팅하는 방법
- 복구 모드로 들어갑니다.
VOL_UP + VOL_DOWN을 눌러 복구 메뉴를 표시합니다.VOL_UP또는VOL_DOWN을 눌러 커서를 "Confirm Disabling OS Verification"으로 옮긴 후,POWER를 눌러 선택합니다.- 복구 모드로 다시 들어갑니다(삭제될 때까지 기다릴 필요 없습니다).
rma_image.bin이 포함된 USB 스틱을 삽입하고 부팅합니다.
RMA 쉼 메뉴 탐색하기
RMA 쉼에는 README 파일에 설명된 다양한 작업을 선택할 수 있는 메뉴가 있습니다. 사용자가 image_tool rma create 명령어를 통해 RMA 쉼을 생성하면, 이 도구는 lab-factory 파일에 RMA_AUTORUN=1 플래그를 추가합니다. 이는 메뉴에서 기본 작업을 설정합니다.
추가 RMA 명령어
RMA 쉼을 보다 쉽게 확인하고 수정할 수 있게 해주는 다른 image_tool 명령어가 있습니다. 자세한 설명은 다른 명령어에 대해 --help 인수를 사용하여 확인할 수 있습니다. 예를 들어...
$ setup/image_tool rma show --help
RMA 쉼의 번들 구성 요소 출력하기
image_tool rma show 명령어를 사용하여 RMA 쉼에 포함된 구성 요소 버전을 출력할 수 있습니다
$ setup/image_tool rma show -i soraka.bin 이 RMA 쉼에는 다음 보드가 포함되어 있습니다: 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 쉼에도 사용할 수 있습니다.
$ setup/image_tool rma show -i universal.bin 이 RMA 쉼에는 다음 보드가 포함되어 있습니다: 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 쉼의 번들 구성 요소 교체하기
image_tool rma replace 명령어를 사용하여 RMA 쉼에 포함된 구성 요소를 교체할 수 있습니다. 예를 들어, HWID 번들을 새것으로 교체할 수 있습니다:
$ setup/image_tool rma replace -i rma_image.bin --hwid new_hwid_bundle.sh
범용 쉼에서 무언가를 교체하려면 --board 인수가 필요합니다.
$ 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 쉼 추출하기
image_tool rma extract 명령어를 사용하여 범용 쉼에서 단일 보드용 RMA 쉼을 추출할 수 있습니다.
$ 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]:
RMA 쉼에서 lab-factory 설정 편집하기
image_tool edit_lsb 명령어를 사용하여 RMA_AUTORUN 플래그와 같은 lsb-factory 설정을 수정할 수 있습니다.
$ 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) cros 페이로드의 cutoff 설정 수정(구형 기기 전용). (3) RMA 쉼의 완료 프롬프트 활성화/비활성화. (4) RMA 쉼의 자동 실행 활성화/비활성화. (q) 변경 사항을 저장하지 않고 종료. (w) 변경 사항을 적용하고 종료. 옵션을 선택하세요 [1-4, q, w]:
또한 다음을 사용할 수 있습니다
$ setup/image_tool edit_lsb -i universal.bin --board soraka
RMA 쉼에서 도구키트 설정 편집하기
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 쉼의 도구키트 압축 풀기 및 다시 압축하기
image_tool payload toolkit 명령어를 사용하여 RMA 쉼 내의 팩토리 도구키트 압축을 풀고 다시 압축할 수 있습니다.
$ 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개