Oh tôi đã làm nó, nhưng nó là một PITA hoàn chỉnh và hoàn hảo.
Đầu tiên, các tệp plymouth thông thường, mysteme.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
Và sau đó là chuyện hoang đường
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);
Sau đó chúng đi đến những nơi có liên quan /usr/share/plymouth/themes/mytheme
cùng với huyền thoại.png.
Sau đó, bạn kích hoạt huyền thoại với plymouth-set-default-theme
lệnh.
Bây giờ một số mánh khóe. plymouth chỉ có thể đọc 1024 byte đầu tiên của cmdline kernel ... nhưng, trình tải Rpi CHUẨN BỊ những thứ cần / Proc / cmdline, vì vậy bạn có thể NGHINK rằng bạn đã làm đúng, nhưng nếu cat /proc/cmdline
sau này, bạn có thể thấy rằng cài đặt của mình trên thực tế rơi ra khỏi giới hạn 1024 byte. Vì vậy, bạn phải thêm cài đặt giật gân yên tĩnh và bỏ qua plymouth từ rất sớm trong cmdline.txt.
Tôi đã đặt cmdline.txt của mình thành cái này (nhưng chúng tôi sử dụng màn hình cảm ứng adaf nhung, vì vậy 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
Bây giờ, bạn cũng phải sử dụng initramfs, vì màn hình giới thiệu được bật từ các tập lệnh khởi động sớm. Điều này thường dễ dàng như chạy update-initramfs
và chỉ định initramfs initrd.img-4.1.9-v7
(hoặc tương tự) trong /boot/config.txt.
Trong trường hợp của tôi, tôi cũng phải cập nhật plymouth vì phiên bản đi kèm với Jessie sẽ bị lỗi trong trình điều khiển bộ đệm khung và kết quả là tôi không thể làm cho nó hoạt động trên màn hình cảm ứng adafbean.
Sau đó, nó bắt đầu làm việc cho tôi. Nhưng tôi cũng muốn có một màn hình "an toàn để tắt" ở cuối, vì Rpi không có phần cứng để tự tắt. Vì vậy, tôi đã thêm một tập lệnh systemd cho điều đó:
[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
Bây giờ đã được ít nhất 6 tháng kể từ khi tôi làm điều này, nhưng tôi hy vọng điều này hữu ích.
Chỉnh sửa: Thêm một số gợi ý.
Bạn có thể gỡ lỗi các chủ đề plymouth như vậy. Bắt đầu plymouthd trong chế độ gỡ lỗi, ví dụ:
plymouthd --debug --debug-file=/tmp/plymouth-debug-out
Và sau đó bạn có thể kiểm tra chủ đề của mình bằng cách sử dụng:
plymouth --show-splash
plymouth --quit
Chính trong giai đoạn này, tôi phát hiện ra rằng mình đã bị segfault.
Bạn cũng có thể tạm dừng quá trình khởi động của mình và thả vào một cái vỏ để kiểm tra điều này trong môi trường thời gian khởi động. Chỉnh sửa /boot/cmdline.txt và thêm break=top
hoặc xem tại đây để biết thêm thông tin về điều đó.
Đây là tất cả các thủ thuật tôi đã sử dụng và cuối cùng tôi đã đến đó. Nhưng như tôi đã nói, đó là một PITA.