SSブログ

ラズパイでBasilisk II... OS起動画面をどうにかする。 [Raspberry Pi]

# なぜかこの記事,書きかけで ひと月位放置してました。

の続き…

MacOS専用機を仕立てるって言っている割には,電源投入時に Raspi OS 起動画面…
ラズパイ上のエミュで動かしているのだから,しようがないけど,正直,『これは違う』感,全開で,かなり気になってました。

実は今まで,対応するのは面倒そうなので放置していたのですが…
まぁ,いつも通り,我慢の限界(笑)って事で…

(ひと月位前の事ですが)急遽,今回のお題目は…『より専用機感を出す』と,なりました(笑


で,具体的に何をするのか?

  • 起動時のログなどテキストやら一式,非表示にする。
  • 非表示で真っ黒になった画面に,何か画像を表示する。

と,簡単なお仕事…


手始めに,参考なるネタを漁っていると…
『ラズパイの起動画面を自社ロゴにしたい!』って… ネタが沢山見つかります…

でも,ほぼほぼ

plymouthを使ったネタ

なのです orz

実際,今回の BasiliskII ネタは,X無しRaspi OS liteがベース,当然 plymouth は入ってません。

まぁ,それでも方法が無い訳では無い様です。
# 誰だよ,簡単なお仕事…って言ったのは(苦笑


ちなみに,Raspi OS Lite の起動中の画面変移は…

  1. レインボー画像(電源ONで,一瞬(?)表示される4:3で "レインボー" な画面)
  2. ラズベリーのロゴ(左上隅に表示される,CPU Core数分のラズベリー絵)
  3. ブートメッセージ ログの点滅カーソル(左上隅のアンダーバーなヤツ)
  4. ブートメッセージ ログ(大量に表示される [ OK ] 〜 なヤツ)
  5. ログインメッセージ(issue や MOTD なヤツ)
  6. ログインプロンプト(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 $TERMExecStart=-/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つの方法で,画像を表示します。

  1. initramfsを使った画像表示。
  2. systemdでfbiを使って画像表示。

なぜ,2つの方法を併用するかと言いますと…

/boot/config.txtdtoverlay=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です。

Hints:
  • 画像ファイルを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 rootwait vt.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) 
共通テーマ:趣味・カルチャー

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。