본문 바로가기
Linux BSP

[RaspberryPi Kernel] Ubuntu 환경에서 커널 부팅 이미지 바꿔버리기~

by TYB 2024. 2. 15.
반응형

얘를 다른 이미지로 바꿀거임!

 

 

저는 모니터로 7인치 LCD를 쓰고 있으니 800x480보다 큰 사이즈의 이미지를 준비해주겠습니다.

 

각자 큰 사이즈의 이미지를 준비하십쇼

 

어차피 나중에 gimp라고 하는 이미지 편집기로 편집할거니까 상관 읍어요~

 

samba로 넣어주든 우분투에서 넣든 다 괜춘~ 결론적으로 우분투에  이미지가 준비되어 있으면 됨.

 

samba로 들어간 이미지 파일을 ~pi_bsp/kernel/로 copy해주시고

 

sudo apt install gimp 안되면 sudo snap install gimp

 

gimp

gimp 열고나서 이미지 드래그해서 넣어주고  열고 회전하고 크기 조절해주면 됨.

LCD에 이미지의 LOW_LEVEL 데이터 값을 줘서 이미지를 출력하는거임.

 

세로 이미지 이신분들은 

이미지 좌클릭 ->  이미지 image  ->  변형 transform  -> 회전 해주시고 가로는 ㄱㅊ 저는 패스합니다.

 

 

 

좌클릭 -> 이미지 -> 이미지 크기조정

 

요거 A 눌러서 텍스트 박스 넣어서 글자도 적어주고~ 하고싶은거 다해

 

파일-> export as -> 

하단에 파일 유형 선

 

PPM
ASCII 선택

 

 

그럼 이제 이미지는 준비된겨 본격적으로 커널 이미지 바꿔보자구~


 

gimp를 통해 kernel에 사용할 이미지를 만들고 로 변환하기 위해 

ubuntu@ubuntu8:~$ sudo apt install netpbm

 

ubuntu@ubuntu8:~/pi_bsp/kernel$ pnmquant -fs 224 wing.ppm > logo_wing_224.ppm



ubuntu@ubuntu8:~/pi_bsp/kernel$ ls -l logo_wing_224.ppm
-rw-rw-r-- 1 ubuntu ubuntu 1152015  2월 15 13:39 logo_wing_224.ppm

여기까지 하면 ppm ascii를 binary로 바꾼거고

 

ubuntu@ubuntu8:~/pi_bsp/kernel$ pnmnoraw logo_wing_224.ppm > logo_wing_clut224.ppm
ubuntu@ubuntu8:~/pi_bsp/kernel$ ls -l logo_wing_clut224.ppm
-rw-rw-r-- 1 ubuntu ubuntu 3348958  2월 15 13:40 logo_wing_clut224.ppm

여기까지 하면 binary를 10진수 숫자로 변환해주는거임

 

ubuntu@ubuntu8:~/pi_bsp/kernel$ cp logo_wing_clut224.ppm linux/drivers/video/logo/


ubuntu@ubuntu8:~/pi_bsp/kernel$ cd linux/drivers/video/logo/

ubuntu@ubuntu8:~/pi_bsp/kernel/linux/drivers/video/logo$ ls -l logo_wing_clut224.ppm
-rw-rw-r-- 1 ubuntu ubuntu 3348958  2월 15 13:42 logo_wing_clut224.ppm

 

ubuntu@ubuntu8:~/pi_bsp/kernel$ vi linux/drivers/video/logo/Kconfig

71G로 71번째 줄 가주고 

O누르면 현재 커서 윗라인에 입력모드

 

 71 config LOGO_WING_CLUT224
 72     bool "wing 224-color Linux logo"
 73     depends on LOGO
 74     default y
 75 endif # LOGO

 

 

 

72번째 줄은 bool타입으로 커널에 띄울건지 미포함할건지를 선택할 수 있음.

또 tri state도 있는데 커널 ,디바이스 드라이버, 미포함 3개 중 하나를 선택할 수 있음.

 

ubuntu@ubuntu8:~/pi_bsp/kernel$ vi linux/drivers/video/logo/Makefile

 

15라인에서 o눌러서 아랫 라인에 입력모드

16 obj-$(CONFIG_LOGO_WING_CLUT224)     += logo_wing_clut224.o

 

 

아래 명령어 쳐서 logo.c 수정

ubuntu@ubuntu8:~/pi_bsp/kernel$ vi linux/drivers/video/logo/logo.c

102번 라인 소문자 o쳐서 아랫줄에 아래 코드 추가.

103 #ifdef CONFIG_LOGO_WING_CLUT224
104         logo = &logo_wing_clut224;
105 #endif

 

 

 

ubuntu@ubuntu8:~/pi_bsp/kernel$ vi linux/include/linux/linux_logo.h

47번 라인 소문자 o쳐서 아랫줄에 아래 코드 추가.

 48 extern const struct linux_logo logo_wing_clut224;

 

ubuntu@ubuntu8:~/pi_bsp/kernel/linux$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

menuconfig 들어가서 설정 변경해보자

 

 

 

 

 

 

 

standard는 스페이스 눌러서 해제하고
NEW만 남겨줘~

왼쪽 화살표로 help로 넘어가서 enter 쳐보면 아래와 같이 나온다.

Kconfig가 있는 위치에 파일을 넣었다고 알 수 있는거고

exit하고 save하고 쭉 exit

 

read only만 가능한 파일 (.config)의    5382라인 가보면 값이 바뀌어 있는게 보임

 

 

ubuntu@ubuntu8:~/pi_bsp/kernel/linux$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4

make 명령어를 치면 

우리가 넣은 logo 이미지가 잘 들어간걸 볼 수 있음.

 

 

 

 

이제 타겟보드인 라즈베리파이로 넘겨 줘야겠져

ubuntu@ubuntu8:~/pi_bsp/kernel/linux$ cp arch/arm/boot/zImage /srv/nfs/

pi@pi08:/mnt/ubuntu_nfs$ sudo cp zImage /boot/firmware/kernel7
kernel7.img          kernel7l-backup.img  kernel7l.img

pi@pi08:/mnt/ubuntu_nfs$ sudo cp zImage /boot/firmware/kernel7l.img


pi@pi08:/mnt/ubuntu_nfs$ sync

pi@pi08:/mnt/ubuntu_nfs$ sudo reboot

 

잘 나오죠? 참 쉽죠?..허허

반응형