Pantalla de bienvenida personalizada en Raspbian Jessie?


8

Muchos sitios web explican cómo hacer una pantalla de inicio en el Pi con SysV init, pero no pude encontrar ninguna información sobre cómo hacerlo con systemd en Jessie. Intenté simplemente "convertir" el guión de inicio a un servicio systemd, pero no hace nada.

¿Alguien ha logrado hacer esto o algún consejo útil?


¿Has intentado buscar sin especificar el Pi?
Steve Robillard

haciendo una búsqueda sin especificar Pi, ¿sería el plymouth? wiki.debian.org/plymouth . Todavía estoy usando Wheezy, así que no puedo estar seguro ...
eri0o

Yo también estoy buscando una solución en Jessie / RPi ... ¿Tuviste suerte? Las soluciones de plymouth parecen requerir plymouth-drm que no se instala
jpw

Respuestas:


2

Oh, lo he hecho, pero fue una PITA completa y absoluta.

Primero, los archivos habituales de 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

Y luego 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);

Estos luego van en los lugares relevantes /usr/share/plymouth/themes/mythemejunto con mytheme.png.

Luego habilitas mytheme con el plymouth-set-default-themecomando.

Ahora algunos trucos. plymouth solo puede leer los primeros 1024 bytes del cmdline del kernel ... pero, el cargador Rpi PREPONE cosas a / proc / cmdline, por lo que puede CREER que lo hizo bien, pero si más cat /proc/cmdlinetarde, puede encontrar que su configuración de hecho caerse del límite de 1024 bytes. Por lo tanto, debe agregar la presentación silenciosa y plymouth ignorar la configuración muy temprano en cmdline.txt.

Tengo mi cmdline.txt configurado para esto (pero usamos la pantalla táctil adafruit, así que 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

Ahora, también debe usar un initramfs, porque la pantalla de inicio está habilitada desde los scripts de inicio temprano. Esto suele ser tan fácil como ejecutar update-initramfsy especificar initramfs initrd.img-4.1.9-v7(o similar) en /boot/config.txt.

En mi caso, también tuve que actualizar plymouth porque la versión que se incluye con Jessie sería predeterminada en el controlador de framebuffer y, como resultado, no pude hacerlo funcionar en la pantalla táctil de adafruit.

Después de eso, comenzó a funcionar para mí. Pero también quería una pantalla "segura para apagar" al final, ya que el Rpi no tiene hardware para apagarse. Entonces agregué un script systemd para eso:

[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

Ahora han pasado al menos 6 meses desde que hice esto, pero espero que esto sea útil.

Editar: agregue algunas sugerencias más.

Puede depurar temas de Plymouth así. Inicie plymouthd en modo de depuración, por ejemplo:

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

Y luego puedes probar tu tema usando:

plymouth --show-splash
plymouth --quit

Fue durante esta etapa que descubrí que tenía un defecto de seguridad.

También puede detener su proceso de arranque y colocarlo en un shell para probar esto en un entorno de tiempo de arranque. Edite /boot/cmdline.txt y agregue break=top, o vea aquí para obtener más información al respecto.

Todos estos son trucos que usé y finalmente llegué allí. Pero como dije, fue una PITA.


No puedo hacer que funcione. ¿Quizás necesito poner los comandos put antes en la línea de cm? EDITAR: cat /proc/cmdline|wc -cdice que solo tiene 508 bytes.
Kirby

Agregué algunos detalles más sobre un shell de depuración en el arranque y probando el tema por separado.
izak

Genial, gracias. Echaré un vistazo mañana o la próxima semana.
Kirby

¿Cómo lograste actualizar plymouth?

Recopilé de la fuente. Soy un experto en hacer paquetes de Debian, así que descargué la fuente de packages.debian.org y usé dpkg-buildpackage para compilarlo. Esto puede hacerse en el pi, si lo desea, pero creo que lo construí en un entorno chroot. No puedo recordar exactamente, ves :-)
izak

1

Puedes usar asplashscreen. Pantalla de arranque personalizada


Esta es la forma de hacerlo en versiones antiguas de Debian que usaban SysV Init. Jessie usa systemd, por lo que no funcionará con él.
Kirby

De esta manera funciona perfectamente con systemd. Ahora lo hago en Debian Stretch y funciona perfectamente siguiendo los pasos de howto.
Alfredo Pons Menargues

Esto funciona en Jessie. Descubrí que la pantalla de inicio se mostraría para tiempos inconsistentes, arreglado agregando "sleep 5" antes de salir en el método do_start ().
Greg T

0

La respuesta de @izak funciona, pero probablemente aún se encontrará con el problema de Plymouth segfaulting cuando utilice el paquete predeterminado de Jessie. Para arreglar el segfault, necesitará instalar Plymouth desde el repositorio de prueba.

Siga las instrucciones de la documentación de AptPreferences y ejecute lo siguiente para actualizar su paquete Plymouth:

apt install plymouth/testing

¡Esto me arregló todo!

(No pude publicar esto como un comentario en @izak su publicación)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.