1. 程式人生 > >Raspberry Pi樹莓派上的自定義動態開機畫面

Raspberry Pi樹莓派上的自定義動態開機畫面

指南:Raspberry Pi上的自定義動態開機畫面,Raspbian Jessie

網際網路上有許多指南在Linux上建立自定義啟動螢幕,但大多數Raspbian都基於SysV init,並且不能與Raspbian現在使用的systemd介面良好。因此,我已經寫了這個指南,直接將簡單的init風格的splash螢幕移植到systemd,以便快速簡便的解決方案來覆蓋Raspberry Pi上的開機畫面。

靜態

首先,我們要從啟動過程中刪除儘可能多的文字,以允許乾淨的轉換。

通過將行新增

disable_splash=1到/boot/config.txt來禁用Raspberry Pi'顏色測試' 。

通過新增

logo.nologo到/boot/cmdline.txt來禁用螢幕角落的Raspberry Pi標誌。

consoleblank=0 loglevel=1 quiet到/boot/cmdline.txt來禁用核心等各種輸出位。

通過

systemctl disable [email protected]以root 身份執行來禁用登入提示。

設定啟動螢幕

設計您的閃屏影象並將其放置在易於閱讀的位置。

安裝fbi,framebuffer影象檢視器,以root身份執行。

sudo apt-get install fbi

建立具有以下內容的檔案/etc/systemd/system/splashscreen.service:

[Unit]Description=SplashscreenDefaultDependencies=noAfter=local-fs.target[Service]ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /opt/splash.pngStandardInput=ttyStandardOutput=tty[Install]WantedBy=sysinit.target

根據需要,更換/opt/splash.png靜態開機畫面影象的儲存路徑。

-d /dev/fb0

選項將告訴fbi哪個幀緩衝區顯示影象。

--noverbose將螢幕底部的fbi'狀態列'。-a將允許fbi自動選擇影象的正確縮放級別。如果您的影象已經處於正確的顯示解析度,則可以省略此選項。FBI希望獲得一個TTY,所以StandardInput和StandardOutput選項將允許這一點。您也可以省略這些選項,並將-T標誌傳遞給fbi,指定要使用的tty的編號。

該DefaultDependencies選項將覆蓋systemd在啟動過程中延遲啟動服務的預設行為(因為大多數普通服務需要訪問資源),並且該WantedBy選項將導致fbi在引導過程的早期載入,已經準備好了,通過

通過以root使用者身份執行

systemctl enable splashscreen,使服務在引導時執行。

您現在可以通過

systemctl start splashscreen以root使用者身份執行,或只需重新啟動Pi 即可測試。

刪除黑色邊框

您可能會碰到這樣一個問題,那裡似乎是一個黑色的邊框畫在閃屏旁邊。這實際上是整個幀緩衝區周圍的硬體級黑色邊框,可以通過新增

disable_overscan=1到/boot/config.txt來禁用。

動態開機畫面

在我的情況下,上述過程工作正常,但是由於我已經將系統設定為自動啟動到Kodi,並且Kodi在重新顯示啟動螢幕本身之前將螢幕黑白地短暫顯示,這樣會產生刺耳的效果。我的解決方案是用黑色背景上的簡單載入螢幕替換第一個閃屏,從而為轉換創造更平滑,更真實的感覺。但靜態載入螢幕中的樂趣在哪裡?

fbi不支援動畫,我們將利用專門的,被低估的工具bannerd,不幸的是在儲存庫中不可用,因此必須從原始碼編譯。幸運的是,這似乎是很直截了當的:

git clone https://github.com/alukichev/bannerd.gitcd bannerd

然後將新建立的bannerd二進位制檔案複製到易於閱讀的位置,如/ usr / local / bin / bannerd,並確保它是可執行的。

現在,我們需要將動畫轉換成一系列BMP檔案。用GIF動畫編輯器將視訊生成GIF

然後用GIF分離器將動態圖分離出許多的bmp檔案。這些檔案放在一個資料夾裡上傳到樹莓派。

將BMP檔案複製到易於訪問的位置。

現在,可以通過更改ExecStart行來輕鬆調整來自較早版本的systemd服務:

ExecStart=/bin/sh -c '/usr/local/bin/bannerd/bannerd -vD /path/to/frames/*.bmp'

呼叫sh是擴充套件glob的必要條件。

如前所述,您可以通過執行

systemctl start splashscreen

或重新啟動來測試啟動螢幕。啟動的演示視訊可以到主頁的視訊裡找到。