如何从 systemd 服务使用 FBI

如何从 systemd 服务使用 FBI

我正在尝试在没有 Xserver (Raspbian Buster) 的系统上在电视上显示图像。我无法让 FBI 通过 systemd 服务工作,但它可以通过 ssh 终端工作。

以下通过 ssh 进行工作...

sudo fbi -T 1 /path/to/image.jpg

但它在 systemd 服务(wallpaper.service)中不起作用......

[Unit]
Description=display image     

[Service]
Type=simple
ExecStart=/usr/bin/fbi -T 1 /path/to/image.jpg

...当我尝试运行它时...

sudo systemctl daemon-reload
sudo systemctl start wallpaper.service

我尝试添加..

StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty1

在服务文件中没有运气。

编辑:

输出来自sudo systemctl status wallpaper.service

● wallpaper.service - random wallpaper change script
   Loaded: loaded (/etc/systemd/system/wallpaper.service; static; vendor preset: enabled)
   Active: inactive (dead) since Wed 2019-08-07 01:34:34 EDT; 12s ago
  Process: 888 ExecStart=/usr/bin/fbi -T 1 -a /home/deanresin/temp/fire.dragon.jpg (code=exited, status=0/SUCCESS)
 Main PID: 888 (code=exited, status=0/SUCCESS)

Aug 07 01:34:34 kl3mmput3r systemd[1]: Started random wallpaper change script.
Aug 07 01:34:34 kl3mmput3r fbi[888]: using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
Aug 07 01:34:34 kl3mmput3r systemd[1]: wallpaper.service: Succeeded.

输出来自journalctl -u wallpaper.service

Aug 07 01:34:34 kl3mmput3r systemd[1]: Started random wallpaper change script.
Aug 07 01:34:34 kl3mmput3r fbi[888]: using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
Aug 07 01:34:34 kl3mmput3r systemd[1]: wallpaper.service: Succeeded.

编辑:我在某处读到联邦调查局必须从控制台运行 - 这是程序的限制。 Systemd 很糟糕......从那里没有任何作用。

答案1

您缺少-d /dev/fb0指向实际帧缓冲区设备的选项。顺便说一句,我现在正在尝试选择-T 1工作,但无论我做什么都失败了。对于fbi“如果没有给出虚拟终端则/dev/console使用”的问题还有另一个答案。 (如果我-T从 systemd开始工作,我会编辑这个)

以下作品(用于显示图像)作为systemd服务,可在 中找到/etc/systemd/system/splashscreen.service

[Unit]
Description=Splash screen
DefaultDependencies=no
After=local-fs.target

[Service]
#ExecStart=/usr/bin/fbi --noverbose -d -T 1 /dev/fb0 -t 60 -a -l /path/to/some/images.lst
ExecStart=/usr/bin/fbi --noverbose -d /dev/fb0 -t 60 -a -l /path/to/some/images.lst
#ExecStart=/usr/bin/fbi --noverbose -d /dev/fb0 -a /path/to/some/image.png
StandardInput=tty
StandardOutput=tty
#TTYPath=/dev/tty1

[Install]
WantedBy=sysinit.target

这些#行是我正在测试的 atm,第二行和第三ExecStart行都会显示图像。

如果您离开(默认启动)虚拟控制台,您将丢失帧缓冲区输出(屏幕为空白/黑色),尽管按键输入仍然有效(q退出 - 使用ps和进行验证systemctl)。我想如果你切换开,一切都会按预期工作,但我无法验证 atm,因为来自自动运行的操作系统作为其主操作系统,默认情况下在另一个终端上打开,并且也使用帧缓冲区设备。

相关内容