systemd로 부팅할 때 fbi를 사용하여 이미지 표시

systemd로 부팅할 때 fbi를 사용하여 이미지 표시

다음 명령을 사용하여 이미지를 성공적으로 표시할 수 있습니다.

sudo fbi -T 1 /home/pi/photo-screen/photos/*.jpg -t 4

이제 Raspberry PI가 부팅되자마자 이러한 이미지의 슬라이드쇼를 시작하고 싶습니다.

그래서 다음과 같은 시스템 파일을 추가했습니다.

[Unit]
Wants=graphical.target
After=graphical.target

[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/photo-screen
ExecStart=sudo bash -c "fbi -T 1 -d /dev/fb0 photos/*"
Restart=always
RestartSec=20

[Install]
WantedBy=multi-user.target
● photo-screen.service
     Loaded: loaded (/etc/systemd/system/photo-screen.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-12-11 15:12:07 CET; 61ms ago
   Main PID: 1080 (sudo)
      Tasks: 2 (limit: 472)
        CPU: 23ms
     CGroup: /system.slice/photo-screen.service
             ├─1080 sudo bash -c fbi -T 1 -d /dev/fb0 photos/*
             └─1082 fbi -T 1 -d /dev/fb0 photos/0058966c-7ee5-4fc0-80ec-55885809567b.jpg photos/04669eb7-bf5e-4cbf-ab8f-fc7b3566186d.jpg photos/0cc1ad40-1b05-4f1c-beae-0c285d6b62>

Dec 11 15:12:07 foto systemd[1]: Started photo-screen.service.
Dec 11 15:12:07 foto sudo[1080]:       pi : PWD=/home/pi/photo-screen ; USER=root ; COMMAND=/usr/bin/bash -c fbi -T 1 -d /dev/fb0 photos/*
Dec 11 15:12:07 foto sudo[1080]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)

저는 SSH를 통해 로그인하고 있으므로 올바른 tty를 할당하면 해당 -T 1매개변수가 제대로 작동합니다.

나는 시도했다:

  • chvt 1;내 스크립트에 포함됨
  • 다음과 같이 실행root
  • -d /dev/fb0내 스크립트에 옵션 추가
  • 하지만 나는 사용하여 fim똑같은 문제가 있습니다
  • 비상대 경로 사용

화면이 연결되어 있고 로그인 프롬프트가 가끔 검게 표시되지만 이미지가 표시되지 않습니다.

OOPS Terminated어느 시점에서 로그인 프롬프트 위의 화면에 표시되었습니다.

또한 화면을 임의의 항목으로 채우면 잠시 후 화면의 약 80%를 덮는 검은색 막대로 덮이게 됩니다.

cat /dev/random > /dev/fb0

여기에 이미지 설명을 입력하세요.

FBI 스크립트를 다음으로 바꾸려고 시도했지만 cat /dev/random > /dev/fb0화면이 채워지지 않았습니다.

나는 높은 bash 터미널을 제공하면 문제를 해결할 수 있다고 생각했습니다.

sudo bash -c "chvt 1; fbi -T 1 -d /dev/fb0 images/*"

이것은 다시 내 SSH 터미널을 통해 작동하지만 systemd를 사용하지 않습니다.

답변1

나는 성공하지 못한 채 이 토끼굴 아래로 내려왔습니다. systemd 데몬에서 fbi의 tty1에 액세스하는 방법을 찾을 수 없습니다.

대신 crontab을 사용합니다. 먼저 기본 설정 > Raspberry Pi 구성을 선택하여 GUI를 통한 자동 로그인을 비활성화했습니다. "시스템" 탭에서 "자동 로그인"을 "사용 안 함"으로 설정했습니다.

그런 다음 cron 항목을 추가했습니다( sudo crontab -e따라서 루트로 실행됩니다).

@reboot fbi -a --noverbose -T 1 -d /dev/fb0 -l /home/ed/Documents/PictureFrame/images.txt --random --blend 120 -t 30

따라서 pi가 나타나면 명령이 실행됩니다. 그러나 그것은 작동하지 않았습니다. 슬라이드쇼가 잠시 시작되는 것을 볼 수 있지만 그 후 로그인 화면으로 이동합니다. 슬라이드쇼가 너무 일찍 시작되었습니다. 괜찮습니다. 어쨌든 제가 정말로 원하는 것은 SmugMug에서 매번 새로운 이미지 배치를 다운로드하는 것입니다. 그래서 이미지를 다운로드한 다음 fbi를 호출하는 쉘 스크립트를 만들었습니다. 따라서 내 cron 작업에서는 네트워크 연결을 기다린 다음 다음을 수행하는 쉘 스크립트를 호출합니다.

@reboot /bin/bash -c 'until nc -z 8.8.8.8 53; do sleep 1; done; /home/ed/Documents/PictureFrame/FBISlideShow'

나는 NC를 얻기 위해 도망쳤다 sudo apt install netcat-traditional. sleep 10 등을 사용할 수 있습니다.

이제 Pi가 부팅된 후 잠시 지연되기는 하지만 내 슬라이드쇼가 자동으로 시작됩니다.

이것은 Debian Bookworm이 설치된 Raspberry Pi 4에 있습니다.

관련 정보