이 글의 질문 · 센서 샘플링 레이트를 바꾸기 위해 무엇부터 확보해야 하는가?
시작점: 커널을 수정하는 것보다 먼저 필요한 것
맨 처음에는 커널 소스를 수정하면 될 것이라고 생각했다. 그런데 실제 기기에 수정된 결과를 올리기 위해서는 빌드, 이미지 패키징, 플래싱, 그리고 실패했을 때 복구하는 방법까지 전부 필요했다.
5월 23일 회의에서 먼저 정리된 방향은 testbed였다. 만약 빌드가 안되도 완성된 빌드를 얻으면 됨. 직접 빌드하는 것 자체가 목적은 아니고, 수정된 이미지가 실제 기기에서 어떻게 동작하는지 반복해서 확인할 수 있어야 했다.
GW5 Sensor Sampling Rate 방법론
당시 비교한 방법은 세 가지였다.
- Flashing new images to Galaxy Watch
- Kernel build in Galaxy Watch
- ADB & FASTBOOT
Galaxy Watch 안에서 직접 빌드하기
해당 방법론은 너무 많은 제약조건이 있었다.
- shell need for build but, shell mean adb.
- if we connect adb, there is no tool like gcc, make, toolchain and we need to have root also.
- GW5 have so insufficient resource to build
장치 안에서 직접 빌드하는 방향은 처음부터 제약이 너무 컸다.
기존 firmware의 boot.img를 교체하기
가장 가능성이 높은 방법론이었다. 정석적으로 접근하며 전세계적으로 가장 많이 시도하는 방식이라고 판단했다.
실제로 커널을 빌드해보니 Image와 Image.gz 그리고 dtb 파일이 생성됨을 알 수 있었다. netOdin을 사용하기 위해 필요한 파일은 tar.md5 혹은 tar 파일이고, 그 안에는 boot.img가 존재했다.
즉, 우리는 Image를 boot.img로, dtb를 dtbo.img로 바꾸어서 넣어야 합니다.
찾아본 결과 mkbootimg와 같은 tool이 존재하며 이를 통해 boot.img를 생성해낼 수 있었다. 하지만 해당 과정에는 ramdisk.img가 필요했고, dtb를 dtbo.img로 만드는 mkdtimg도 추가 조사가 필요했다.
발표자료에서 정리한 판단 근거
먼저 복구 가능한 환경을 만들기
펌웨어를 바꾸는 행위는 기존 Samsung의 보증에서 벗어나겠다는 의미였다. soft brick이라면 download mode, netOdin, Wipe data / Factory reset으로 돌아갈 수 있지만 hard brick이라면 단순히 PC만으로 복구할 수 없고 JTAG 같은 하드웨어 접근이 필요할 수 있었다.
그래서 당시 청사진은 다음과 같았다.
- Make a infinite test circumstance — if brick, then we can recovery.
- In given firmware, exchange boot.img with custom image.
- Flash the custom tar.md5 with netOdin.
즉, 기존에 존재하는 펌웨어에서 boot.img를 수정해서 올리는 것이 제가 계획하는 청사진입니다.
1주차 결론
이번 1주차에서는 방법론과 테스트 환경을 중심으로 조사 및 연구했다. 조사 결과 우리가 실행할 수 있는 방식은 기존 firmware에서 boot.img를 교체해 flashing하는 방법이 적합하다고 판단했다.
그리고 바로 다음 문제들이 남았다.
- ramdisk.img와 mkbootimg 조사
- mkdtimg 조사
- hard brick 대응
- 이미지 사이의 의존성과 보안 솔루션 조사
처음부터 답을 정해놓고 시작한 것이 아니라, 실제로 통제할 수 있는 실험 환경을 먼저 만들기로 한 것이 이 프로젝트의 출발점이었다.