多くのウェブサイトがSysV initを使用してPiでスプラッシュスクリーンを実行する方法を説明していますが、Jessieのsystemdでそれを実行する方法に関する情報は見つかりませんでした。init-scriptをsystemd-serviceに「変換」してみましたが、何も実行されません。
誰かがこれを管理したり、役立つアドバイスをしたりしましたか?
多くのウェブサイトがSysV initを使用してPiでスプラッシュスクリーンを実行する方法を説明していますが、Jessieのsystemdでそれを実行する方法に関する情報は見つかりませんでした。init-scriptをsystemd-serviceに「変換」してみましたが、何も実行されません。
誰かがこれを管理したり、役立つアドバイスをしたりしましたか?
回答:
ああ、私はそれをやったが、それは完全で完全なPITAでした。
まず、通常のプリマスファイルmytheme.plymouth:
[Plymouth Theme]
Name=My theme
Description=Raspberry Pi theme
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/mytheme
ScriptFile=/usr/share/plymouth/themes/mytheme/mytheme.script
そしてmytheme.script
screen_width = Window.GetWidth();
screen_height = Window.GetHeight();
theme_image = Image("mytheme.png");
resized_wallpaper_image = theme_image.Scale(screen_width, screen_height);
sprite = Sprite(resized_wallpaper_image);
sprite.SetZ(-100);
message_sprite = Sprite();
message_sprite.SetPosition(screen_width * 0.1, screen_height * 0.8, 10000);
fun message_callback (text) {
my_image = Image.Text(text, 1, 1, 1);
message_sprite.SetImage(my_image);
}
Plymouth.SetUpdateStatusFunction(message_callback);
これらは/usr/share/plymouth/themes/mytheme
、mytheme.pngとともに関連する場所に配置されます。
次に、plymouth-set-default-theme
コマンドでmythemeを有効にします。
今いくつかの策略。plymouthはカーネルcmdlineの最初の1024バイトしか読み取ることができません...しかし、Rpiローダーは/ proc / cmdlineに物事をPREPENDするので、正しく実行したとcat /proc/cmdline
思うかもしれませんが、後で設定すると、 1024バイトの制限から外れます。そのため、静かなスプラッシュとプリマスの無視設定をcmdline.txtの非常に早い段階で追加する必要があります。
私はcmdline.txtを次のように設定しています(ただし、adafruitタッチスクリーンを使用しているので、ymmv):
dwc_otg.lpm_enable=0 console=tty3 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles fbcon=map:10 fbcon=font:VGA8x8
ここで、初期起動スクリプトからスプラッシュスクリーンが有効になるため、initramfsも使用する必要があります。これは通常、/ boot / config.txtで実行update-initramfs
および指定initramfs initrd.img-4.1.9-v7
(または類似)するのと同じくらい簡単です。
私の場合、Jessieに同梱されているバージョンではフレームバッファードライバーでsegfaultが発生し、その結果、adafruitタッチスクリーンで機能しないため、plymouthも更新する必要がありました。
その後、それは私のために働き始めました。ただし、Rpiにはハードウェア自体をオフにするハードウェアがないため、最後に「安全にオフにできる」画面も必要でした。だから私はそのためのsystemdスクリプトを追加しました:
[Unit]
Description=Tell Plymouth to show a safe-to-power-off message
DefaultDependencies=no
After=umount.target
Before=shutdown.target
[Service]
ExecStart=-/bin/plymouth update --status " SAFE TO POWER DOWN"
Type=oneshot
[Install]
WantedBy=shutdown.target
これを行ってから少なくとも6か月になりますが、これが役立つことを願っています。
編集:ヒントをいくつか追加します。
このようにして、プリマスのテーマをデバッグできます。plymouthdをデバッグモードで起動します。例:
plymouthd --debug --debug-file=/tmp/plymouth-debug-out
そして、あなたはあなたを使ってあなたのテーマをテストすることができます:
plymouth --show-splash
plymouth --quit
この段階で、セグメンテーションフォルトが発生していることがわかりました。
ブートプロセスを停止してシェルにドロップし、ブート時環境でこれをテストすることもできます。/boot/cmdline.txtを編集してを追加するbreak=top
か、詳細についてはこちらをご覧ください。
これらはすべて私が使用したトリックで、ついにそこに着きました。しかし、私が言ったように、それはピタでした。
/proc/cmdline|wc -c
は508バイトだと言っていますが。
asplashscreenを使用できます。カスタム起動画面
@izakによる回答は機能しますが、デフォルトのJessieパッケージを使用すると、おそらくプリマスsegfaultingの問題に遭遇するでしょう。segfaultを修正するには、テスト用リポジトリからプリマスをインストールする必要があります。
AptPreferencesドキュメントの指示に従い、次のコマンドを実行してプリマスパッケージを更新します。
apt install plymouth/testing
これですべてが修正されました!
(@izak彼の投稿へのコメントとしてこれを投稿できませんでした)