moc
Posts: 6
Joined: Tue Jan 15, 2019 11:16 am

Splash screen einrichten

Tue Jan 15, 2019 11:34 am

Hallo, ich bin neu im Forum ;)

Seit Tagen versuche ich einen Splash Screen einzurichten, aber es gelingt mir nicht

System: Raspberry Pi 3 mit Raspian (Stretch)

Habe es mit folgenden Methoden probiert

1. Über die raspi-config Boot Options → B3 Splash Screen
Fehlermeldung: The splash screen is not installed so cannot be activated

2. Plymouth

Die Funktionsweise von 1 entzieht sich mir völlig und bei 2 habe ich blind herumprobiert, weil ich im Netz zu beidem keine verständlichen Infos fand.


3. FBI
Das erschien mir am aussichtsreichsten

Also bin ich nach dieser Anleitung vorgegangen:
https://developer-blog.net/raspberry-pi ... ashscreen/

Egal was ich ausprobiert habe, das Bild erscheint beim Bootvorgang nicht.

Gebe ich den Befehl manuell auf der Konsole ein, wird das Bild angezeigt:
/usr/bin/fbi -T 1 -noverbose -a /etc/splash.png

Es gibt hier schon einen Thread dazu, wo der Nutzer das Problem mit einem sudo vor dem Befehl löste, aber das half bei mir nicht.

Habe dann verschiedene Rechte geändert, die asplashscreen mehrfach übrprüft und Raspian schließlich neu installiert, weil ich dachte dass es vielleicht daran liegt, dass ich den Nutzer geändert habe.

Muss ich vielleicht in der cmdline.txt noch was ändern?
Habe schon testweise logo.nologo hinzugefügt, weil ich dachte, dass vielleicht die Himbeeren dazwischenfunken, schließlich noch quiet splash hinzugefügt und die Konsole geändert.

moc
Posts: 6
Joined: Tue Jan 15, 2019 11:16 am

Re: Splash screen einrichten

Tue Jan 15, 2019 4:27 pm

Inzwischen habe ich vermutlich eine Lösung gefunden. Ich will das System aber erst nochmal neu aufsetzen und sehen ob es dann noch funktioniert, da ich während der Fehlersuche alles Mögliche verändert und nachinstalliert habe. Sollte es funktionieren werde ich meine Vorgehensweise hier umgehend posten. :)

moc
Posts: 6
Joined: Tue Jan 15, 2019 11:16 am

Re: Splash screen einrichten

Wed Jan 16, 2019 1:04 pm

Nun habe ich es hinbekommen, auch wenn ich mit dem Lösungsweg nicht so richtig glücklich bin.

Was ich nicht erwähnt hatte, ich habe eine reine Konsoleninstallation. Beim Start soll das Splash-Image erscheinen und dann automatisch Music On Console starten. Als Display setze ich das 5" Display von Elecrow ein.

Folgende Anleitung hat mir bei der Einrichtung des Splash screens geholfen:
https://yingtongli.me/blog/2016/12/21/splash.html

Und so bin ich letztendlich vorgegangen:

Um den Rainbow screen beim Start zu entfernen, am Ende disable_splash=1 einfügen

Code: Select all

nano /boot/config.txt

Bootoptionen bearbeiten um die Himbeeren und den blinkenden Cursor zu entfernen sowie Textmeldungen zu reduzieren. Dazu am Ende einfügen: logo.nologo loglevel=2 quiet splash vt.global_cursor_default=0

Code: Select all

nano /boot/cmdline.txt

Bildbetrachter FBI installieren:

Code: Select all

apt-get install fbi

Das Foto als PNG auf dem Rechner ablegen. Meins habe ich in 1920x1080 als splash.png in /etc abgelegt.

Dann folgende Datei anlegen:

Code: Select all

nano /etc/systemd/system/splashscreen.service

Hiervon habe ich ehrlich gesagt nur wenig Ahnung. Ich habs einfach übernommen und nur die ExecStart Zeile angepasst:

Code: Select all

[Unit]
Description=Splash screen
DefaultDependencies=no
After=local-fs.target

[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /etc/splash.png
StandardInput=tty
StandardOutput=tty

[Install]
WantedBy=sysinit.target

Aktivieren und neu starten

Code: Select all

systemctl enable splashscreen
systemctl start splashscreen
reboot

Dann störten mich noch einige Meldungen vor dem Programmstart, die ich mangels besseren Kenntnissen ganz pragmatisch eliminiert habe.

Folgende Dateien habe ich geleert:

Code: Select all

>/etc/motd
>/etc/issue
>/etc/kernelinfo.txt
>/var/log/lastlog
>/var/log/wtmp
>/var/log/btmp

Damit der Kram nicht wieder auftaucht:

Code: Select all

chattr +i /var/log/lastlog
chattr +i /var/log/wtmp /var/log/btmp

Schließlich soll ja noch noch Music On Console starten.

Code: Select all

nano /home/moc/.bashrc
Ganz am Ende hinzugefügt:
clear
mocp

Für Verbesserungsvorschläge bin ich sehr dankbar ;)

moc
Posts: 6
Joined: Tue Jan 15, 2019 11:16 am

Re: Splash screen einrichten

Sun Jan 20, 2019 2:24 pm

Ich habe noch Änderungen vorgenommen:

Die Datei "/etc/systemd/system/splashscreen.service" habe ich jetzt wie unten angepasst.

DefaultDependencies müssen auf yes stehen, sonst wird die /etc/default/console-setup ignoriert. Ich hatte nämlich das Problem, dass die Einstellung der Konsolenschriftart ohne Wirkung blieb.

After=local-fs.target kann wegfallen.

WantedBy=sysinit.target shutdown.target zeigt den Splash screen auch beim runterfahren. Allerdings nur sofern der PC länger zu tun hat. Bei mir fährt er meist schneller runter als die Grafik zum laden braucht.

Code: Select all

[Unit]
Description=Splash screen
DefaultDependencies=yes

[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /etc/splash.png
StandardInput=tty
StandardOutput=tty

[Install]
WantedBy=sysinit.target shutdown.target 

moc
Posts: 6
Joined: Tue Jan 15, 2019 11:16 am

Re: Splash screen einrichten

Sun Jan 20, 2019 10:10 pm

Da ich mich über Tage bei dem Thema durchgebissen habe, wollte ich nun auch wissen wie ich den Splash screen mit Plymouth zum Laufen bekomme. Das habe ich jetzt endlich geschafft.

Hier erkläre ich wie man seine eigene (nicht animierte) Splash-Grafik installiert.

Nochmal zur Anmerkung: Ausprobiert auf dem Raspberry 3 B mit Raspian (Stretch)

Zuerst sollte man die Updates installieren. Ohne die bekam ich - aus welchen Gründen auch immer - durch die Installation der Plymouth-Pakete Probleme mit der Paketverwaltung.

Code: Select all

sudo -i

Code: Select all

apt-get update
apt-get upgrade

Die cmdline.txt anpassen

Code: Select all

nano /boot/cmdline.txt

Folgendes am Ende hinzufügen:

Code: Select all

logo.nologo loglevel=1 quiet splash vt.global_cursor_default=0 plymouth.ignore-serial-consoles

Nun installiert man folgende Plymouth-Pakete:

Code: Select all

apt-get install plymouth plymouth-themes pix-plym-splash

Die Themes kann man sich mit folgendem Befehl anzeigen lassen

Code: Select all

plymouth-set-default-theme -l

Und mit diesem Befehl auswählen (für mein Beispiel wähle ich das Theme "pix" aus):

Code: Select all

plymouth-set-default-theme -R pix

Jetzt sollte man es mal ausprobieren:

Code: Select all

reboot

Funktioniert alles, ersetzt man die Splash-Grafik des pix-Themes durch seine eigene:

Code: Select all

cp ~/eigenes_bild.png /usr/share/plymouth/themes/pix/splash.png

Nun sollte man noch das Script anpassen, um diversen Text auf der Konsole zu entfernen und damit der Splash screen auch beim Runterfahren angezeigt wird:

Code: Select all

nano /usr/share/plymouth/themes/pix/pix.script

Den Inhalt durch folgenden ersetzen:

Code: Select all

screen_width = Window.GetWidth();
screen_height = Window.GetHeight();

theme_image = Image("splash.png");
image_width = theme_image.GetWidth();
image_height = theme_image.GetHeight();

scale_x = image_width / screen_width;
scale_y = image_height / screen_height;

flag = 1;

if (scale_x > 1 || scale_y > 1)
{
       if (scale_x > scale_y)
       {
               resized_image = theme_image.Scale (screen_width, image_height / scale_x);
               image_x = 0;
               image_y = (screen_height - ((image_height  * screen_width) / image_width)) / 2;
       }
       else
       {
               resized_image = theme_image.Scale (image_width / scale_y, screen_height);
               image_x = (screen_width - ((image_width  * screen_height) / image_height)) / 2;
               image_y = 0;
       }
}
else
{
        resized_image = theme_image.Scale (image_width, image_height);
        image_x = (screen_width - image_width) / 2;
        image_y = (screen_height - image_height) / 2;
}

if (Plymouth.GetMode() != "shutdown")
{
        sprite = Sprite (resized_image);
       sprite.SetPosition (image_x, image_y, -100);
}

Übrigens: Wenn man das Bild in der an das Display angepassten Auflösung hochlädt, kann man sich die resize-Funktionen sparen und das Script reduziert sich auf wenige Zeilen:

Code: Select all

theme_image = Image("splash.png");
image_width = theme_image.GetWidth();
image_height = theme_image.GetHeight();
sprite = Sprite (theme_image.Scale (image_width, image_height));

Neu starten

Code: Select all

reboot

Jetzt sollte der Splash screen beim Starten und Runterfahren erscheinen.

Zumindest bei mir funktioniert es 8-)

Return to “Deutsch”