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
或重新啟動來測試啟動螢幕。啟動的演示視訊可以到主頁的視訊裡找到。