해당 포스팅은 공부 및 기록 목적으로 작성한 글로써 코드가 일부 작동하지 않거나 틀린 부분이 존재할 수 있습니다.
개요
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 페이지 포스팅
댓글남기기