2023년 3월 13일 월요일

도커로 webOS 빌드

webOS OSE 를 빌드하려는데 빌드를 위한 패키지는 설치하고 싶지 않아서 docker 로 빌드했다.

https://github.com/shallweeee/build-webos

600MB 짜리 (압축풀면 2.2GB) 이미지 하나 빌드하는데 하루 종일 걸린 것 같다.
에러가 나서 여러 번 끊기긴 했는데, 다시하면 문제 없이 실행되는게
아무래도 다 메모리 사용량이 커서였던 것 같다.
동시 실행 갯수 옵션을 줄여가며 다시 돌리다 보니 완성은 됐다.
(너무 줄여서 더 걸린 것 같기도 하다)

디스크 사용량은 몇 가지 큰 디렉토리만 보면 다음과 같다. (너무 크다.)

230G ./BUILD
30G  ./downloads
12G  ./sstate-cache

이미지 쓰기 에 따라 SD 카드에 이미지를 쓴다.

부팅 중의 화면이 다른 라즈베리파이 배포판이랑 좀 다르긴 한데 어찌됐든 화면이 뜨긴 했다.


그. 런. 데... 뭐가 너무 없다. (그냥 개발 환경인듯.)

osmc와 비교하면 이미지 크기는 굉장히 큰데 할 수 있는게 거의 없다.
(LG TV 가 아니라서인지) TV 리모컨도 안먹고,  설정도 언어와 Wifi 정도(?) 밖에 없다.
마우스나 키보드 둘 다 필요하고 (어느 하나만으로는 조작을 못하겠다.)
음성 명령은 되는듯 보이나 대응 리모컨이 없어서 못해봤다.
그나마 Youtube 앱을 전체화면 모드로 돌리는 것은 괜찮은듯 하다.

디바이스에 접속은 ares cli 를 쓰면 되는것 같았는데,
그냥 ssh 만으로도 접속은 잘 됐다. 사용자는 root 고 암호는 없다.

혹시나 해서 nginx 로 sstate-cache 서버를 만들어서 새로 빌드를 해봤는데, 이건 광속이다.
10734 개의 태스크 중 마지막 300 여개 정도 빼고는 거의 다운로드만 일어난 것같이 빨리 처리됐다.
나머지는 컴파일을 하기도 해서 시간이 좀 걸렸다.

다른 서버에 nginx 를 설치하고 sstate-cache 를 위한 설정을 추가 및 restart

# /etc/nginx/nginx.conf
http {
    . . .
    server {
    listen 34567;
    server_name sstate.webos.ose;
    root /yocto/webOS/sstate-cache;
    autoindex on;
  }
}

sstate-cache를 서버에 복사

$ scp -r sstate-cache <서버이름>:<포트>/<sstate-cache 까지의 경로>

webOS 빌드 설정에 sstate-cache 설정 추가 및 빌드

$ ./scripts/docksh ./mcf -b8 -p8 --sstatemirror http://192.168.0.12:34567 raspberrypi4-64
$ ./scripts/docksh bitbake webos-image