Màn hình giật gân tùy chỉnh trên Raspbian Jessie?


8

Rất nhiều trang web giải thích cách thực hiện màn hình giật gân trên Pi với SysV init, nhưng tôi không thể tìm thấy bất kỳ thông tin nào về cách thực hiện với systemd trên Jessie. Tôi đã thử chỉ "chuyển đổi" tập lệnh init thành dịch vụ systemd, nhưng nó không làm gì cả.

Có ai quản lý để làm điều này hoặc bất kỳ lời khuyên hữu ích?


Bạn đã thử tìm kiếm mà không chỉ định Pi?
Steve Robillard

thực hiện tìm kiếm mà không chỉ định Pi, sẽ là plymouth? wiki.debian.org/plymouth . Tôi vẫn đang sử dụng Wheezy, vì vậy không thể chắc chắn ...
eri0o

Tôi cũng đang tìm kiếm một giải pháp trên Jessie / RPi ... bạn có gặp may mắn không? Các giải pháp plymouth dường như yêu cầu plymouth-drm không cài đặt được
jpw

Câu trả lời:


2

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/mythemecùng với huyền thoại.png.

Sau đó, bạn kích hoạt huyền thoại với plymouth-set-default-themelệ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/cmdlinesau 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-initramfsvà 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=tophoặ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.


Không thể làm cho nó hoạt động. Có lẽ tôi cần đặt các lệnh đặt sớm hơn trong cmdline? EDIT: mèo /proc/cmdline|wc -cnói rằng nó chỉ có 508 byte.
Kirby

Tôi đã thêm một số chi tiết về trình gỡ lỗi khi khởi động và kiểm tra riêng chủ đề.
izak

Tuyệt thật, cảm ơn nhé. Tôi sẽ xem ngày mai hoặc tuần tới.
Kirby

Làm thế nào bạn quản lý để cập nhật plymouth?

Tôi tổng hợp từ nguồn. Tôi là một người già trong việc tạo ra các gói debian, vì vậy tôi đã tải xuống nguồn từ gói.debian.org và sử dụng dpkg-buildpackage để xây dựng nó. Điều này có thể được thực hiện trên pi, nếu bạn muốn, nhưng tôi nghĩ rằng tôi đã xây dựng nó trong một môi trường chroot. Tôi không thể nhớ chính xác, bạn thấy :-)
izak

1

Bạn có thể sử dụng asplashscreen. Màn hình khởi động tùy chỉnh


Đây là cách thực hiện trên các phiên bản cũ của Debian đã sử dụng SysV init. Jessie sử dụng systemd, do đó sẽ không hoạt động với nó.
Kirby

Cách này hoạt động hoàn hảo với systemd. Bây giờ tôi làm điều đó trong Debian Stretch và hoạt động hoàn hảo theo các bước của cách làm.
Alfredo Pons Menargues

Điều này hoạt động trong Jessie. Tôi thấy rằng màn hình giật gân sẽ hiển thị thời gian không nhất quán - đã được sửa bằng cách thêm "ngủ 5" trước khi thoát trong phương thức do_start ().
Greg T

0

Câu trả lời của @izak hoạt động, nhưng có lẽ bạn vẫn sẽ gặp phải vấn đề về cách ly Plymouth khi sử dụng gói Jessie mặc định. Để sửa lỗi segfault, bạn sẽ cần cài đặt Plymouth từ kho lưu trữ thử nghiệm.

Làm theo hướng dẫn từ tài liệu AptPreferences và chạy phần sau để cập nhật gói Plymouth của bạn:

apt install plymouth/testing

Điều này cố định mọi thứ cho tôi!

(Tôi không thể đăng bài này dưới dạng nhận xét về @izak bài đăng của anh ấy)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.