해당 포스팅은 공부 및 기록 목적으로 작성한 글로써 코드가 일부 작동하지 않거나 틀린 부분이 존재할 수 있습니다.

개요

Jetson Platform을 이용할 때 PK(Production Kit)에서 BSP를 이용한 Jetpack 설치를 했다면 부팅 시와 OS 로그인 시 기존 Nvidia 로고가 나온다. 해당 이미지를 본인이 원하는 이미지로 변경하는 방법을 알아본다. 확인해보진 않았지만 DK(Developement Kit)에도 BSP를 이용한 플래싱을 한다면 적용가능 할 것으로 예상된다.

부팅 로고 변경

부팅 로고는 bmp.blob 파일과 관련이 있다. 해당 파일은 BSP 파일의 Linux_for_Tegra/bootloader/bmp.blob 이며 보드를 플래싱 하는 과정에서 부팅 로고(이미지)를 연결한다.

준비

  • 24bit 비트맵 이미지 3장
    • 3장 이미지의 사이즈는 (640480, 1280720, 1920*1080)
    • 확장자는 .bmp이다,.
  • BSP 파일 다운로드

이미지 스플래시 툴에 이미지 설정

비트맵 이미지 3장의 이름을 각각 myimage-480.bmp, myimage-720.bmp, myimage-1080.bmp라고 가정한다.

이 3장의 이미지를 BSP의 bmp-splash 도구 디렉토리 내로 옮겨주는데 해당 경로는 BSP를 압축해제 하면 나오는 Linux_for_Tegra경로 아래에 tools/bmp-splash/에 있다. 이 bmp-splash라는 디렉토리에 3장의 비트맵 이미지를 위치해준다.

# BSP Path

Linux_for_Tegra/tools/bmp-splash
├── bmp-blob-README.txt
├── BMP_generator_L4T.py
├── config_file.example
├── genbmpblob_L4T.sh
├── myimage-480.bmp
├── myimage-720.bmp
└── myimage-1080.bmp

이미지를 옮겼으면 설정파일을 수정한다. 설정파일은 config_file.example이다. 해당 파일을 vi등의 텍스트에디터로 열면 기존 내용은 다음과 같다.

nvidia480.bmp nvidia 480;
nvidia720.bmp nvidia 720;
nvidia1080.bmp nvidia 1080

각 줄에 있는 nvidia라는 단어와 해상도를 나타내는 숫자는 건들지 않고 각 줄의 첫 요소인 이미지 파일 경로를 교체한다. 다음과 같다. 파일 경로는 절대경로 혹은 상대경로도 가능하다.

myimage-480.bmp nvidia 480;
myimage-720.bmp nvidia 720;
myimage-1080.bmp nvidia 1080

liblz4-tool 설치

liblz4-tool이라는 패키지를 설치 후 해당 바이너리의 경로를 기억해야한다. 해당 경로는 bmp.blob 생성 시 파라미터로 넣는다.

$ sudo apt install liblz4-tool
$ whereis -b lz4c

>>> /usr/bin/lz4c

웬만하면 /usr/bin/lz4c가 아닌 다른 경로가 나오진 않겠지만 확실히 확인 후 기억한다.

bmp.blob 생성

기본적인 커맨드는 다음과 같다.

$ OUT=$PWD ./genbmpblob_L4T.sh <chip> <product config file> <path to blob_generator> [ <path to lz4c> ] <output file>
  • <chip> 자리에는 Jetson 칩셋 명이 들어가는데 TX1(Tegra1)은 T210, TX2(Tegra2)는 T186, Xavier는 T194를 사용한다. 예를 들면 Jetson Nano는 Tegra 1 칩이라서 T210이고 Jetson Xaiver NX는 T194이다. TX2NX 혹은 TX2를 사용한다면 T186이 될 것이다.
  • <product config file>은 우리가 아까 수정한 config_file.example을 사용한다.
  • <path to blob_generator>는 같은 경로에 있는 BMP_gengerator_L4T.py를 사용한다.
  • <path to lz4c>에서 기억한 lz4c 바이너리의 경로를 넣어준다. /usr/bin/lz4c과 같다.
  • <output file>bmp.blob로 설정한다. 다른 이름으로 주고 플래싱 시에 파일 경로를 지정해줘도 되지만 굳이 번거롭게 그럴 필요는 없다.

해당 옵션을 채워서 다시 적는다면 다음과 같이 사용할 수 있다.

# Jetson Xavier NX
$ OUT=$PWD ./genbmpblob_L4T.sh t210 ./config_file ./BMP_generator_L4T.py /usr/bin/lz4c bmp.blob

# Jetson TX2NX
$ OUT=$PWD ./genbmpblob_L4T.sh t186 ./config_file ./BMP_generator_L4T.py /usr/bin/lz4c bmp.blob

# Jetson Nano
$ OUT=$PWD ./genbmpblob_L4T.sh t194 ./config_file ./BMP_generator_L4T.py /usr/bin/lz4c bmp.blob

해당 파일을 이용하여 보드 플래시

해당 파일을 이용하여 보드를 플래시하는 방법엔 2가지가 있다. 첫 번째는 기존 경로에 있는 bmp.blob를 교체하여 플래시하는 것이다. 기존 BSP 파일 내의 Linux_for_Tegra/bootloader/bmp.blob를 백업해두고 위에서 생성된 bmp.blob로 교체한다. 이 때 교체 시에는 bmp.blob 라는 파일 이름이 동일해야 한다.

두 번째는 플래시 스크립트를 수행 시 옵션으로 해당 파일을 지정한다. EN715 보드에 Xavier NX를 플래시한다고 가정하면 다음과 같다.

$ sudo ./flash.sh -r -k BMP --image ./tools/bmp-splash/bmp.blob jetson-xavier-nx-en715 mmcblk0p1

본인은 첫 번째 방법이 간편해서 선호하는 편이다.

로그인 로고 변경

로그인 로고는 부팅로고 다음에 이어서 출력되는 로고이다. 부팅로고와 같을 수도 있고 다른 이미지일 수도 있다. 해당 이미지의 교체는 플래시 및 Jetpack 설치가 다 끝난 후 진행하였다.

준비

  • 1080해상도의 png 이미지 파일

교체

해당 이미지 파일을 my-logo.png라고 가정한다.

해당 이미지 파일이 위치한 경로에서 터미널을 열고 다음 명령어를 통해 교체작업을 진행한다.

# Directory path in image 
$ chmod 644 my-logo.png
$ sudo mv my-logo.png /usr/share/backgrounds/my-logo.png
$ sed -i 's/NVIDIA_Login_Logo/my-logo/g' ~/.xsessionrc
$ sudo sed -i 's/NVIDIA_Login_Logo/my-logo/g' /etc/skel/.xsessionrc
  • 해당 이미지 파일에 group이나 others에 읽기권한이 없다면 부팅 시 로그인 로고가 출력되지 않는다.
  • /usr/share/backgrounds 경로에 이미지를 위치해주고 .xsesstionrc라는 파일에서 이미지 파일 경로를 바꿔주는 간단한 작업으로 구성되어 있다.

참고링크 forecr 페이지 포스팅

댓글남기기