ラズパイでBasilisk II... OS起動画面をどうにかする。 [Raspberry Pi]
# なぜかこの記事,書きかけで ひと月位放置してました。
の続き…
MacOS専用機を仕立てるって言っている割には,電源投入時に Raspi OS 起動画面…
ラズパイ上のエミュで動かしているのだから,しようがないけど,正直,『これは違う』感,全開で,かなり気になってました。
実は今まで,対応するのは面倒そうなので放置していたのですが…
まぁ,いつも通り,我慢の限界(笑)って事で…
(ひと月位前の事ですが)急遽,今回のお題目は…『より専用機感を出す』と,なりました(笑
で,具体的に何をするのか?
- 起動時のログなどテキストやら一式,非表示にする。
- 非表示で真っ黒になった画面に,何か画像を表示する。
と,簡単なお仕事…
手始めに,参考なるネタを漁っていると…
『ラズパイの起動画面を自社ロゴにしたい!』って… ネタが沢山見つかります…
でも,ほぼほぼ
plymouthを使ったネタ
なのです orz
実際,今回の BasiliskII ネタは,X無しなRaspi OS lite
がベース,当然 plymouth は入ってません。
まぁ,それでも方法が無い訳では無い様です。
# 誰だよ,簡単なお仕事…って言ったのは(苦笑
ちなみに,Raspi OS Lite
の起動中の画面変移は…
- レインボー画像(電源ONで,一瞬(?)表示される4:3で "レインボー" な画面)
- ラズベリーのロゴ(左上隅に表示される,CPU Core数分のラズベリー絵)
- ブートメッセージ ログの点滅カーソル(左上隅のアンダーバーなヤツ)
- ブートメッセージ ログ(大量に表示される
[ OK ] 〜
なヤツ) - ログインメッセージ(issue や MOTD なヤツ)
- ログインプロンプト(raspberrypi login: pi (Automatic login)なヤツ)
って流れ。
GUI(X)有りだと,ちょっと違って,1〜4の後に「Welcome to Pixel」など表示されます…
まず,これらを全部非表示にします。
その後,真っ黒な画面に何か適当な画像を貼り付けてる…って感じ。
全部非表示
ご参考: (実は,散々試して手順がほぼ出来上がった直後に,このネタを見つけた… orz)
Step-1. "レインボー画面" を非表示
$ sudo nano /boot/config.txt
以下を追記します。
# Disable rainbow image at boot
disable_splash=1
Step-2. ラズベリー画像(CPU Core数)とカーソルを非表示
$ sudo nano /boot/cmdline.txt
まず,起動ログ出力先を tty1
から tty3
へ変更します。
console=tty3
そして,以下を文末に追記します。(cmdline.txtなので,1行で記述します)
vt.global_cursor_default=0 logo.nologo quiet
Option | Remarks |
---|---|
vt.global_cursor_default=0 | 左上のカーソル点滅を非表示 |
logo.nologo | 左上のラズベリー画像を非表示 |
quiet | カーネルログを非表示 |
Step-3. ログインメッセージを非表示
ユーザーフォルダの直下に,.hushlogin
って空ファイルが有るとメッセージが出なくなる。
$ touch ~/.hushlogin
Step-4. オートログインメッセージを非表示
* 先に raspi-config
でAutologinを有効にしています。
$ sudo nano /etc/systemd/system/getty@tty1.service.d/autologin.conf
ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM
↓
ExecStart=-/sbin/agetty --skip-login --noclear --noissue --login-options "-f pi" %I $TERM
--autologin pi
を取っ払って
--skip-login --noissue --login-options "-f pi"
を追記
この変更による具体的な変化は…
Step-2で,[ OK ]〜の行,ほとんどが消えます。(ちょっとだけ残ります)
Step-3で,水色部分が消えます。(残っていた[ OK ]〜も消えます)
Step-4で,黄色部分が消えます。
: : [ OK ] Reached target Multi-User System. Starting Update UTMP about System unlevel Changes... [ OK ] Started Update UTMP about System unlevel Changes. Raspbian GNU/Linux 10 raspberrypu tty1 raspberrypi login: pi (Automatic login) Last login: Fri Jan 22 17:10:33 2021 from 192.168.***.*** on pts/0 Linux raspberrypi 5.4.79-v7+ #1373 SMP Mon Nov 23 13:22:33 GMT 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. pi@raspberrypi:~ $
で,結果,こうなります。
pi@raspberrypi:~ $
あとは,以前の記事で書きました,『BasiliskII自動起動の為,~/.bashrc
を小細工』を,少々調整します。
# 2>&1 >/dev/null
を追加して,余計な物(コメント)が出ない様にします。
(以下は見易くする為,改行とコメント入れてます)。
if [ `tty` == '/dev/tty1' ]; then
/usr/bin/aplay -q /boot/boot-sound.wav; # 起動音(ジャ〜ン)
/usr/local/bin/BasiliskII 2>&1 >/dev/null; # BasiliskII起動
sudo halt; # BasiliskII終了で,System Halt
fi
これで最後に残ったコマンドプロンプト(pi@raspberrypi:)も表示されずに BasiliskII が起動してきます。
真っ黒な画面に何か画像を…
ここでは,2つの方法で,画像を表示します。
- initramfsを使った画像表示。
- systemdでfbiを使って画像表示。
なぜ,2つの方法を併用するかと言いますと…
/boot/config.txt
で dtoverlay=vc4-fkms-v3d
が有効だと,RaspiOS起動途中に画面が初期化され,initramfsを使って表示した画像がクリアされる。
したがって,dtoverlay=vc4-fkms-v3d
が必須っぽい4B+では,現状回避不能らしい…
そこで,初期化,クリア後に再度,systemdを使って表示させます。
わかりにくいですが,時系列では,こんな感じ。
経過時間 | 時間 | 画面の状態 | 備考 |
---|---|---|---|
[Power ON] | |||
0 | 9.2 | Blackout | |
9.2 | 4.6 | splash.png | initramfsで表示 |
13.8 | 2.5 | Blackout | dtoverlay=vc4-fkms-v3dの影響? |
16.3 | 18.3 | splash.png | systemdで再表示 |
34.6 | 2.7 | Blackout | BasiliskII 起動の影響? |
37.3 | 12.9 | MacOS起動中 | アイコンパレード |
50.2 | 起動完了 | MacOSのデスクトップが表示 |
0. 事前に,表示させる画像を用意します
initramfsで使用する画像ファイルは,PNG, Jpeg, BMP形式が使えます。
# ここでは,”splash.png” とします。
ファイルは,ラズパイの /boot/
以下へ配置します。
systemdで使用する画像ファイルは,initramfsと同じものでOKです。
- 画像ファイルを2種類用意して,前半,後半と使い分けしても良いかも。
fbi
は,モーションGIFなど動画っぽいヤツは,扱えない様です。
1. initramfsを使った画像表示
起動の前半部分で画像を表示。
便利そうなものを見つけたので,使わせてもらいます。
セットアップ
$ cd ~/git# ←自分の環境に合わせてください $ git clone https://gitlab.com/DarkElvenAngel/initramfs-splash.git$ sudo cp initramfs-splash/boot/*.* /boot/
設定
$ sudo nano /boot/splash.txt image=splash.png# 使用するファイル名 fullscreen=0# 0 → 1 でフルスクリーン表示
config.txt 修正
$ sudo nano /boot/config.txt initramfs initramfs.img# ←この行を追加します
cmdline.txt 確認
$ sudo nano /boot/cmdline.txt console=serial0,115200 console=tty3 root=PARTUUID=3a427405-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwaitvt.global_cursor_default=0 logo.nologo quiet
$ sudo reboot
ラズパイを再起動すると,起動中に画像が表示されるはずです。
2. systemdでfbiを使って画像表示
起動の後半部分で画像を表示。
ご参考:
下準備
$ sudo apt install -y fbi
systemdの定義
$ sudo nano /etc/systemd/system/bootsplash.service
[Unit]
Description=Splash screen
DefaultDependencies=no
After=local-fs.target
[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /boot/splash.png
StandardInput=tty
StandardOutput=tty
[Install]
WantedBy=sysinit.target
設定の有効化
$ sudo systemctl enable bootsplash.service
$ sudo reboot
ラズパイを再起動すると,起動中に画像が表示されるはずです。
所感:
起動中,何度か暗転してしまうのは,かなり微妙… 暗転の時間も,2.5秒程度と,これまた微妙な長さ。
現状,dtoverlay=vc4-fkms-v3d
の所は,回避不能の様なので,やりようが無い…
このネタ,ラズパイで,X無しでデジタルサイネージしたいって案件にも使えるかな…
今後,『X-Less』シリーズとして『matchboxでchromiumをkiosk』ってのも面白いかも…
# でもこれって,厳密には ”X less” じゃないし,って,いつからシリーズになった?!
コメント 0