Schermata iniziale personalizzata su Raspbian Jessie?


8

Molti siti web spiegano come fare una schermata iniziale sul Pi con SysV init, ma non sono riuscito a trovare informazioni su come farlo con systemd su Jessie. Ho provato a "convertire" lo script init in un systemd-service, ma non fa nulla.

Qualcuno è riuscito a fare questo o qualche consiglio utile?


hai provato a cercare senza specificare il Pi?
Steve Robillard,

fare una ricerca senza specificare Pi, sarebbe la plymouth? wiki.debian.org/plymouth . Sto ancora usando Wheezy, quindi non posso essere sicuro ...
eri0o

Anch'io sto cercando una soluzione su Jessie / RPi ... hai avuto fortuna? Le soluzioni di plymouth sembrano richiedere plymouth-drm che non si installa
jpw

Risposte:


2

Oh, l'ho fatto, ma è stata una PITA completa e totale.

Innanzitutto, i soliti file di plymouth, 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

E poi 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);

Questi vanno quindi nei luoghi pertinenti /usr/share/plymouth/themes/mythemeinsieme a mytheme.png.

Quindi abiliti mytheme con il plymouth-set-default-themecomando.

Ora qualche trucco. plymouth può leggere solo i primi 1024 byte del cmdline del kernel ... ma, il caricatore Rpi PREPENDE le cose in / proc / cmdline, quindi potresti PENSARE di averlo fatto bene, ma se in cat /proc/cmdlineseguito potresti scoprire che le tue impostazioni in effetti cadere fuori dal limite di 1024 byte. Quindi devi aggiungere lo splash silenzioso e plymouth ignora le impostazioni molto presto in cmdline.txt.

Ho cmdline.txt impostato su questo (ma usiamo il touchscreen di adafruit, quindi 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

Ora, è necessario utilizzare anche un initramfs, poiché la schermata iniziale è abilitata dagli script di avvio iniziale. Di solito è facile come eseguire update-initramfse specificare initramfs initrd.img-4.1.9-v7(o simili) in /boot/config.txt.

Nel mio caso, ho anche dovuto aggiornare Plymouth perché la versione fornita con Jessie si sarebbe confusa nel driver del framebuffer e, di conseguenza, non riuscivo a farlo funzionare sul touchscreen dell'adafruit.

Successivamente, ha iniziato a funzionare per me. Ma alla fine volevo anche una schermata di "spegnimento sicuro", poiché Rpi non ha l'hardware per spegnersi. Quindi ho aggiunto uno script systemd per questo:

[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

Sono passati almeno 6 mesi da quando l'ho fatto, ma spero che sia utile.

Modifica: aggiungi altri suggerimenti.

È possibile eseguire il debug di temi Plymouth in questo modo. Avviare plymouthd in modalità debug, ad esempio:

plymouthd --debug --debug-file=/tmp/plymouth-debug-out

E poi puoi testare il tuo tema usando:

plymouth --show-splash
plymouth --quit

Fu durante questa fase che ho scoperto di avere un segfault.

È inoltre possibile interrompere il processo di avvio e rilasciarlo in una shell per testarlo in un ambiente di avvio. Modifica /boot/cmdline.txt e aggiungi break=top, oppure vedi qui per maggiori informazioni.

Questi sono tutti i trucchi che ho usato e finalmente ci sono arrivato. Ma come ho detto, era una PITA.


Non riesco a farlo funzionare. Forse ho bisogno di mettere i comandi put prima nella cmdline? EDIT: gatto /proc/cmdline|wc -cdice che è solo 508 byte, però.
Kirby,

Ho aggiunto ulteriori dettagli su una shell di debug all'avvio e testando il tema separatamente.
izak,

Figo, grazie. Daro 'un'occhiata domani o la prossima settimana.
Kirby,

Come sei riuscito ad aggiornare plymouth?

Ho compilato dalla fonte. Sono un esperto nel creare pacchetti debian, quindi ho scaricato il sorgente da packages.debian.org e ho usato dpkg-buildpackage per crearlo. Questo può essere fatto sul pi, se vuoi, ma penso di averlo costruito in un ambiente chroot. Non ricordo esattamente, vedi :-)
izak

1

Puoi usare asplashscreen. Schermata di avvio personalizzata


Questo è il modo di farlo su vecchie versioni di Debian che utilizzavano SysV Init. Jessie usa systemd, quindi non funzionerà.
Kirby,

In questo modo funziona perfettamente con systemd. Ora lo faccio in Debian Stretch e funziona perfettamente seguendo i passaggi di howto.
Alfredo Pons Menargues,

Questo funziona in Jessie. Ho scoperto che la schermata iniziale veniva visualizzata per periodi incoerenti, risolta aggiungendo "sleep 5" prima di uscire nel metodo do_start ().
Greg T,

0

La risposta di @izak funziona, ma probabilmente ti imbatterai ancora nel problema del segfaulting di Plymouth quando usi il pacchetto Jessie predefinito. Per correggere il segfault, dovrai installare Plymouth dal repository di test.

Seguire le istruzioni dalla documentazione di AptPreferences ed eseguire quanto segue per aggiornare il pacchetto Plymouth:

apt install plymouth/testing

Questo ha risolto tutto per me!

(Non ho potuto pubblicare questo come commento su @izak il suo post)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.