사용자:Senouis/오드로이드 고 어드밴스 리눅스 개발
이 문서는 Yocto를 사용해서 하드커널 사의 오드로이드 고 어드밴스 블랙 에디션(ODROID Go Advance Black Edition)에 커스텀 리눅스를 만들어 설치하는 레이어를 구성하려고 시도했던 삽질들(?)의 모음이다.
2024년 1월 ~ 2024년 4월
초기 기획
- LG webOS OSE 1.10.1(build tag 91)을 포팅하는 것을 최종 목표로 삼는다.
- 2.X부터 최소 램 요구 사항이 4GB 이상이기 때문에, 그런 제약이 덜한 1.x 버전을 포팅해야 함
- webOSE 공식 빌드 스크립트를 사용하여 2주간 컴팡리
- 사용한 컴퓨터는 초기에는 RYZEN 5700G(8코어 16스레드) + 64GB RAM 환경으로 하여 작업 속도가 빨랐으나, 가족에게 빌려줄 일이 생겨 RYZEN 5 3550H(4코어 8스레드) + 16GB RAM 환경으로 내려와 작업하면서 개별 빌드 시간이 길어짐
- JeffyCN의 meta-rockchip 레이어를 결합
결과: 실패
가장 중요한 실패 요인은 U-boot 버전과 Linux 커널 버전이 아예 맞지 않았다는 점이다. 하드커널 사의 오드로이드 고 어드밴스에 대한 공식적인 리눅스 커널 지원 버전은 4.4로, 아무리 세팅을 바꿔보아도 webOS는 물론이고 kirkstone 버전 yocto가 아예 지원하지 않는다. yocto 버전마다 사용 가능한 커널 버전이 있다는 특징을 깨달은 이후, 공식 버전이 아닌 커뮤니티 개발 버전을 탐색하기 시작했다. 또한 내장된 U-boot도 rockchip 사가 한 차례 커스텀한 2017.09 버전에 하드커널 사의 커스텀이 추가로 들어가 있기 때문에, 하드커널 사의 GitHub 리포지토리로 빌드한 U-boot가 아닌, 공식 U-boot 빌드로는 부팅이 되지 않는다. 하지만 Yocto는 공식 U-boot를 사용하며 이 상태로 부팅이 되는 방법이 있다. 최신 U-Boot를 사용하되, SPI 리커버리 기능을 직접 이식하거나 제작하기 전까지 본체 뒷면의 SPI 부팅 우회 버튼을 누르면서 부팅하는 방식으로 테스트한다.
그리고...Rockchip 사에서 만든 자사 SoC용 리눅스 커널을 meta-rockchip 레이어에서 가져오는데, 이게 안드로이드의 커널 빌드 환경에 최적화되어 있어서 전용 빌드 환경을 갖추고 전용 빌드 스크립트를 실행해야 한다. yocto의 기본 빌드 실행 기능인 oe-runmake가 작동하는 방식처럼 단순히 make defconfig -> make all 한다고 작동이 되지 않는다.
여러 모로 봤을 때 yocto 세팅을 하려면 다음 요구사항이 필요하다.
- 공식 지원이 없으므로, 커뮤니티 기여로 메인라인 커널에 디바이스 트리와 빌드 세팅이 구성된 커널 리포지토리를 찾아야 한다.
- U-boot는 최신 U-boot를 먼저 사용한 후 하드커널 사가 공개한 2017.09 커스텀 버전 소스 코드의 기능을 이식한다.
- webOS부터 포팅하려고 하지 말고, poky부터 포팅하자.
대안: meta-odroid
한편, 오드로이드 시리즈에 대한 직접적인 yocto layer가 존재한다. 처음에는 kirkstone 브랜치에 오드로이드 고 어드밴스 세팅은 물론이고, SoC 제조사인 락칩 사의 제품에 대한 설정 자체가 없었기 때문에 관심이 금방 식었으나, 마스터 브랜치에 rk3568 관련 세팅이 추가되면서 rk3326으로 변경 후 백포팅하는 것이 가능할 수도 있겠다는 생각에 다시 활용하기로 하였다.