Oh saya sudah melakukannya, tapi itu adalah PITA yang lengkap dan mengucapkan.
Pertama, file plymouth yang biasa, 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
Dan kemudian mitos
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);
Ini kemudian pergi di tempat-tempat yang relevan /usr/share/plymouth/themes/mytheme
bersama dengan mytheme.png.
Kemudian Anda mengaktifkan mitos dengan plymouth-set-default-theme
perintah.
Sekarang beberapa tipu daya. plymouth hanya dapat membaca 1024 byte pertama dari kernel cmdline ... tetapi, loader Rpi MENYIAPKAN hal-hal ke / proc / cmdline, jadi Anda mungkin BERPIKIR Anda melakukannya dengan benar, tetapi jika cat /proc/cmdline
kemudian, Anda mungkin menemukan bahwa pengaturan Anda sebenarnya jatuh dari batas 1024 byte. Jadi Anda harus menambahkan pengaturan splash dan plymouth abaikan sangat awal di cmdline.txt.
Saya mengatur cmdline.txt untuk ini (tetapi kami menggunakan layar sentuh adafruit, jadi 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
Sekarang, Anda juga harus menggunakan initramfs, karena layar splash diaktifkan dari skrip startup awal. Ini biasanya semudah menjalankan update-initramfs
dan menetapkan initramfs initrd.img-4.1.9-v7
(atau serupa) di /boot/config.txt.
Dalam kasus saya, saya juga harus memperbarui plymouth karena versi yang dikirimkan dengan Jessie akan segfault pada driver framebuffer dan akibatnya saya tidak bisa membuatnya bekerja pada layar sentuh AdWords.
Setelah itu, mulai bekerja untuk saya. Tetapi saya juga menginginkan layar "aman untuk dimatikan" pada akhirnya, karena Rpi tidak memiliki perangkat keras untuk mematikannya. Jadi saya menambahkan skrip systemd untuk itu:
[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
Sekarang sudah setidaknya 6 bulan sejak saya melakukan ini, tapi saya harap ini bermanfaat.
Sunting: Tambahkan beberapa petunjuk lagi.
Anda dapat men-debug tema plymouth seperti itu. Mulai plymouthd dalam mode debug, misalnya:
plymouthd --debug --debug-file=/tmp/plymouth-debug-out
Dan kemudian Anda dapat menguji tema Anda menggunakan:
plymouth --show-splash
plymouth --quit
Selama tahap ini saya menemukan bahwa saya mengalami segfault.
Anda juga dapat menghentikan proses boot Anda dan jatuh ke shell untuk mengujinya dalam lingkungan waktu boot. Edit / boot / cmdline.txt dan tambahkan break=top
, atau lihat di sini untuk info lebih lanjut tentang itu.
Ini semua adalah trik yang saya gunakan dan akhirnya saya sampai di sana. Tapi seperti yang saya katakan, itu adalah PITA.