Oh, ich habe es geschafft, aber es war eine vollständige und völlige PITA.
Erstens die üblichen Plymouth-Dateien, 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
Und dann 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);
Diese gehen dann /usr/share/plymouth/themes/mytheme
zusammen mit mytheme.png an die entsprechenden Stellen .
Dann aktivieren Sie Mythos mit dem plymouth-set-default-theme
Befehl.
Nun ein Trick. plymouth kann nur die ersten 1024 Bytes der Kernel-Cmdline lesen ... aber der Rpi-Loader VORHANDEN Dinge an / proc / cmdline, sodass Sie vielleicht DENKEN, dass Sie es richtig gemacht haben, aber wenn Sie es cat /proc/cmdline
später tun , werden Sie möglicherweise feststellen, dass Ihre Einstellungen tatsächlich vorhanden sind fallen von der 1024-Byte-Grenze. Sie müssen also die Einstellungen für leises Spritzen und Plymouth-Ignorieren sehr früh in cmdline.txt hinzufügen.
Ich habe meine cmdline.txt darauf eingestellt (aber wir verwenden den Adafruit-Touchscreen, also 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
Jetzt müssen Sie auch ein initramfs verwenden, da der Begrüßungsbildschirm über die frühen Startskripte aktiviert ist. Dies ist normalerweise so einfach wie das Ausführen update-initramfs
und Angeben initramfs initrd.img-4.1.9-v7
(oder ähnliches) in /boot/config.txt.
In meinem Fall musste ich auch Plymouth aktualisieren, da die mit Jessie gelieferte Version im Framebuffer-Treiber fehlerhaft war und ich sie daher nicht auf dem Adafruit-Touchscreen zum Laufen bringen konnte.
Danach fing es an, für mich zu arbeiten. Aber ich wollte am Ende auch einen Bildschirm zum sicheren Ausschalten, da das Rpi keine Hardware hat, um sich selbst auszuschalten. Also habe ich ein systemd-Skript dafür hinzugefügt:
[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
Jetzt sind mindestens 6 Monate vergangen, seit ich das getan habe, aber ich hoffe, das ist nützlich.
Bearbeiten: Fügen Sie weitere Hinweise hinzu.
Sie können Plymouth-Themen wie folgt debuggen. Starten Sie plymouthd im Debug-Modus, z.
plymouthd --debug --debug-file=/tmp/plymouth-debug-out
Und dann können Sie Ihr Thema testen mit:
plymouth --show-splash
plymouth --quit
In dieser Phase stellte ich fest, dass ich einen Segfault hatte.
Sie können den Startvorgang auch anhalten und in eine Shell einfügen, um dies in einer Startzeitumgebung zu testen. Bearbeiten Sie /boot/cmdline.txt und fügen Sie hinzu break=top
, oder lesen Sie hier, um weitere Informationen dazu zu erhalten.
Das sind alles Tricks, die ich benutzt habe und die ich endlich erreicht habe. Aber wie gesagt, es war eine PITA.