Raspi3 RDK NFS 설정

RDK 2021q1 릴리즈 버전은 DTVKit이 포함된 것을 확인하고, 아래 글을 참고하여 Raspberry Pi3에 RDK을 올려서 DTVKit기반으로 개발된 동작하는 DVBApp을 확인하였다.

 

rpidtv [DTVKit Wiki]

dtvkit.org

DTVKit은 DVB TS를 수신하기 위한 Tuner driver가 필요하며, 이것은 LinuxTV에서 찾아 펌웨어를 설치하도록 한다. TV 수신카드도 없고, USB Tuner driver가 없는 관계로 DVB 기능은 검증할 수 없으므로, 이 기능을 제외하고 기본 DTVKit 라이브러리 구조와 DVB App이 어떻게 작성되었는지 확인하려고 한다.

Yocto 기반으로 개발환경을 구성한 RDK를 매번 빌드하고 이미지를 쓰는 것은 매우 번거로운 일이며, 단순히 DVB App의 동작을 분석하기 위해 디버그 메시지를 추가한 것인데, Yocto 구조상 이미지 생성시 종속 관계의 패키지를 다 빌드하기 때문에 간단히 rootfs를 NFS로 연결하여 사용하려면 라즈베리파이의 boot param을 아래와 같이 변경하여야 한다.

$ vi /raspiberrypi/cmdline.txt

dwc_otg.lpm_enable=0 console=serial0,115200 ip=dhcp rootfstype=nfs root=/dev/nfs rw nfsroot=192.168.0.2:/media/gon/proj/RDK/__nfsraspi,tcp,vers=3

NFS 서버는 Host PC로 아이피는 192.168.0.2이며, NFS 디렉토리는 /media/gon/proj/RDK/__nfsraspi로 설정하였다. 따라서 raspi로 빌드된 rootfs directory를 /media/gon/proj/RDK/__nfsraspi로 복사해야 하며, 유저 권한 및 실행 권한을 아래와 같이 설정하도록 한다.

$ sudo cp -rf <working_dir>/build-raspberrypirdkhybriddtv/tmp/work/raspberrypirdkhybriddtv-rdk-linux-gnueabi/rdk-generic-hybrid-dtv-image/1.0-r0/rootfs /media/gon/proj/RDK/__nfsraspi
$ sudo chown -R gon:gon /media/gon/proj/RDK/__nfsraspi
$ chmod -R 755 /media/gon/proj/RDK/__nfsraspi

그리고 마지막으로 SystemD의 Network 서비스의 IP를 설정해야 한다. 만약 이것을 설정하지 않으면 NFS 연결에서 설정한 IP와 SystemD의 Network 서비스의 IP가 충돌이 발생하여 커널 부팅 중, NFS가 끊겨 시스템이 Hang 되는 현상이 발생하기 때문에 SystemD에서 참조하는 설정 파일(/etc/device.properites)을 아래와 같이 수정해야 한다.

정확한 것은 systemd 빌드에서 사용되는 환경변수 설정 파일을 확인해야 하겠지만, 급한대로 위와 같이 변경하여 DTVKit의 DVB App만 빌드하여 디버깅 할 수 있는 NFS 환경을 간단히 구성할 수 있다.