Raspbian Jessieのカスタムスプラッシュスクリーン?


8

多くのウェブサイトがSysV initを使用してPiでスプラッシュスクリーンを実行する方法を説明していますが、Jessieのsystemdでそれを実行する方法に関する情報は見つかりませんでした。init-scriptをsystemd-serviceに「変換」してみましたが、何も実行されません。

誰かがこれを管理したり、役立つアドバイスをしたりしましたか?


Piを指定せずに検索してみましたか?
Steve Robillard、2015年

Piを指定せずに検索を行うと、プリマスでしょうか? wiki.debian.org/plymouth。私はまだWheezyを使用しているので、確信が持てません...
eri0o

私もJessie / RPiの解決策を探しています...運はありましたか?プリマスのソリューションは、インストールに失敗する
plymouth

回答:


2

ああ、私はそれをやったが、それは完全で完全な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バイトだと言っていますが。
カービー

起動時のデバッグシェルに関する詳細をいくつか追加し、テーマを個別にテストしました。
izak

よろしくお願いします。明日か来週見てみます。
カービィ

どのようにしてプリマスを更新しましたか?

ソースからコンパイルしました。私は古いDebianパッケージの作成者なので、packages.debian.orgからソースをダウンロードし、dpkg-buildpackageを使用してそれをビルドしました。これは、必要に応じてpiで実行できますが、chroot環境で構築したと思います。正確には思い出せません。次のように表示されます:-)
izak

1

asplashscreenを使用できます。カスタム起動画面


これは、SysV Initを使用した古いバージョンのDebianでこれを行う方法です。Jessieはsystemdを使用しているため、動作しません。
カービー

この方法はsystemdで完全に動作します。今私はDebian Stretchでそれを行い、howtoのステップに従って完全に動作します。
Alfredo Pons Menargues 2016

これはジェシーで動作します。スプラッシュスクリーンが一貫性のない時間で表示されることがわかりました-do_start()メソッドで終了する前に「sleep 5」を追加することで修正しました。
グレッグT

0

@izakによる回答は機能しますが、デフォルトのJessieパッケージを使用すると、おそらくプリマスsegfaultingの問題に遭遇するでしょう。segfaultを修正するには、テスト用リポジトリからプリマスをインストールする必要があります。

AptPreferencesドキュメントの指示に従い、次のコマンドを実行してプリマスパッケージを更新します。

apt install plymouth/testing

これですべてが修正されました!

(@izak彼の投稿へのコメントとしてこれを投稿できませんでした)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.