Raspberry Pi Lite だと特に設定していなければこんなように起動メッセージが表示される。
この画面をスプラッシュで隠してしまうお話。
環境
- Raspberry Pi 3B
- Raspberry Pi OS Lite (2024-07-04-raspios-bookworm-armhf-lite.img.xz)
インストール
raspi-config で設定してみます。
$ sudo raspi-config
1 System Options Configure system settings
S6 Splash Screen Choose graphical splash screen or text boot
を選んでも、
│ The splash screen is not installed so cannot be │
│ activated │
There was an error running option S6 Splash Screen
と出てきます。
plymouth が必要かな?
以下のようにインストールしたけれども、これだけではうまくいかなかった。次の rpd-plym-splash だけでいいみたい。
$ sudo apt install plymouth
rpd-plym-splash を更にインストールします。 先の plymouth はインストールしていなくても、ここで一緒にインストールされます。
$ sudo apt -y install rpd-plym-splash
スプラッシュ画像を変更する
デフォルトテーマの設定はどこを見ればいいのかな?
調べ方はわかりませんでしたが、テーマは pix になっているようです。
/usr/share/plymouth/themes/pix/splash.png
を入れ替えます。
入れ替えてリブートしてみると、終了時には変更したスプラッシュが表示されますが、起動時のスプラッシュはまだ変更にはなっていません。
起動時のスプラッシュを反映するには、以下のようにします。
$ sudo update-initramfs -u
Tips
起動してもスプラッシュが消えない
rc.local に終了しないプログラムを書いていました。
& を付加してプログラム終了を待たないようにします。
/boot/firmware/cmdline.txt
splash を有効にする前はこのようになってました。
console=serial0,115200 console=tty1 root=PARTUUID=e08d1729-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee80211_regdom=JP
raspi-config で splash を有効にした時。
console=serial0,115200 console=tty1 root=PARTUUID=e08d1729-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee80211_regdom=JP quiet splash plymouth.ignore-serial-consoles
quiet splash plymouth.ignore-serial-consoles
が増えています。
ログオンプロンプトを消す?
以下のログオンプロンプトが、スプラッシュが消えた後に表示されます。
Raspbian GNU/Linux 12 raspberrypi tty1
raspberrypi login:
これを消すには以下のようにすればいいかな?
$ sudo systemctl mask getty@tty1.service
Created symlink /etc/systemd/system/getty@tty1.service → /dev/null.
何故か動作が不安定になり、正常に起動せずリセットしたり、起動してもネットワークが動かなくなったりした。
当然、ネットワークが反応しなければ ssh でも入れない。
仕方なく元に戻して、
$ sudo systemctl unmask getty@tty1.service
Removed "/etc/systemd/system/getty@tty1.service".
$ sudo systemctl enable getty@tty1.service
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /lib/systemd/system/getty@.service.
再度設定。
$ sudo systemctl mask getty@tty1
Created symlink /etc/systemd/system/getty@tty1.service → /dev/null.
今度はうまくいきました。 getty@tty1.service
ではなくて getty@tty1
としなければいけなかったのかな?