diff options
| author | Mikko Rapeli <mikko.rapeli@linaro.org> | 2025-02-06 16:44:06 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-02-18 11:56:04 +0000 |
| commit | af38235305fc2ac59a82f0413a1fe4cc5161ff86 (patch) | |
| tree | e487acf22af41e25ed7705d96103ed9edf8d5376 /meta | |
| parent | 6dd4120d62979a80ac8f0986c4e971d6c21b3b5f (diff) | |
| download | poky-af38235305fc2ac59a82f0413a1fe4cc5161ff86.tar.gz | |
psplash: start via udev if framebuffer device detected
psplash-start.service expected to find /dev/fb0 and failed
if device was not found. This failure breaks systemd
oeqa runtime test with "runqemu nographic". Starting
psplash based on detected framebuffer device fixes systemd
boot status and systemd oeqa runtime tests for qemu
boots with and without graphics support.
Note that psplash-systemd.service still depends on /dev/fb0
so startup with multiple framebuffer devices may not work
correctly. I don't have devices with multiple framebuffer
devices to test with.
On qemu machine with graphics, psplash displays yocto
logo correctly and boot progress bar as well. Once boot completes
to systemd "running" state, the logo is replaced by login prompt.
On qemu machine without graphics, boot completes without psplash
or failures and login over serial console works normally.
Tested with genericarm64 machine poky-altcfg distro and core-image-base
image on qemu. AMD kv260 tested as well but graphics stack is not yet
working there so boot is similar to qemu without graphics.
(From OE-Core rev: 3820f6f342c2309ba7d51d3c08b3a951c2c17781)
Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/recipes-core/psplash/files/fb.rules | 1 | ||||
| -rw-r--r-- | meta/recipes-core/psplash/files/psplash-start@.service (renamed from meta/recipes-core/psplash/files/psplash-start.service) | 5 | ||||
| -rw-r--r-- | meta/recipes-core/psplash/files/psplash-systemd.service | 8 | ||||
| -rw-r--r-- | meta/recipes-core/psplash/psplash_git.bb | 9 |
4 files changed, 12 insertions, 11 deletions
diff --git a/meta/recipes-core/psplash/files/fb.rules b/meta/recipes-core/psplash/files/fb.rules new file mode 100644 index 0000000000..accdb8386c --- /dev/null +++ b/meta/recipes-core/psplash/files/fb.rules | |||
| @@ -0,0 +1 @@ | |||
| SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="psplash-start@%k.service psplash-systemd.service" | |||
diff --git a/meta/recipes-core/psplash/files/psplash-start.service b/meta/recipes-core/psplash/files/psplash-start@.service index bec9368427..1bc3642fc2 100644 --- a/meta/recipes-core/psplash/files/psplash-start.service +++ b/meta/recipes-core/psplash/files/psplash-start@.service | |||
| @@ -3,11 +3,10 @@ Description=Start psplash boot splash screen | |||
| 3 | DefaultDependencies=no | 3 | DefaultDependencies=no |
| 4 | RequiresMountsFor=/run | 4 | RequiresMountsFor=/run |
| 5 | ConditionFileIsExecutable=/usr/bin/psplash | 5 | ConditionFileIsExecutable=/usr/bin/psplash |
| 6 | After=dev-%i.device | ||
| 7 | Wants=dev-%i.device | ||
| 6 | 8 | ||
| 7 | [Service] | 9 | [Service] |
| 8 | Type=notify | 10 | Type=notify |
| 9 | ExecStart=/usr/bin/psplash | 11 | ExecStart=/usr/bin/psplash |
| 10 | RemainAfterExit=yes | 12 | RemainAfterExit=yes |
| 11 | |||
| 12 | [Install] | ||
| 13 | WantedBy=sysinit.target | ||
diff --git a/meta/recipes-core/psplash/files/psplash-systemd.service b/meta/recipes-core/psplash/files/psplash-systemd.service index e93e3deb35..f9aaa2db3d 100644 --- a/meta/recipes-core/psplash/files/psplash-systemd.service +++ b/meta/recipes-core/psplash/files/psplash-systemd.service | |||
| @@ -1,14 +1,12 @@ | |||
| 1 | [Unit] | 1 | [Unit] |
| 2 | Description=Start psplash-systemd progress communication helper | 2 | Description=Start psplash-systemd progress communication helper |
| 3 | DefaultDependencies=no | 3 | DefaultDependencies=no |
| 4 | After=psplash-start.service | 4 | After=psplash-start@fb0.service |
| 5 | Requires=psplash-start.service | 5 | Requires=psplash-start@fb0.service |
| 6 | RequiresMountsFor=/run | 6 | RequiresMountsFor=/run |
| 7 | ConditionFileIsExecutable=/usr/bin/psplash | 7 | ConditionFileIsExecutable=/usr/bin/psplash |
| 8 | ConditionFileExists=/run/psplash_fifo | ||
| 8 | 9 | ||
| 9 | [Service] | 10 | [Service] |
| 10 | ExecStart=/usr/bin/psplash-systemd | 11 | ExecStart=/usr/bin/psplash-systemd |
| 11 | RemainAfterExit=yes | 12 | RemainAfterExit=yes |
| 12 | |||
| 13 | [Install] | ||
| 14 | WantedBy=sysinit.target | ||
diff --git a/meta/recipes-core/psplash/psplash_git.bb b/meta/recipes-core/psplash/psplash_git.bb index 30cf61a2cb..fce5995efe 100644 --- a/meta/recipes-core/psplash/psplash_git.bb +++ b/meta/recipes-core/psplash/psplash_git.bb | |||
| @@ -11,8 +11,9 @@ PV = "0.1+git" | |||
| 11 | 11 | ||
| 12 | SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https \ | 12 | SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https \ |
| 13 | file://psplash-init \ | 13 | file://psplash-init \ |
| 14 | file://psplash-start.service \ | 14 | file://psplash-start@.service \ |
| 15 | file://psplash-systemd.service \ | 15 | file://psplash-systemd.service \ |
| 16 | file://fb.rules \ | ||
| 16 | ${SPLASH_IMAGES}" | 17 | ${SPLASH_IMAGES}" |
| 17 | UPSTREAM_CHECK_COMMITS = "1" | 18 | UPSTREAM_CHECK_COMMITS = "1" |
| 18 | 19 | ||
| @@ -112,8 +113,10 @@ do_install:append() { | |||
| 112 | 113 | ||
| 113 | if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then | 114 | if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then |
| 114 | install -d ${D}${systemd_system_unitdir} | 115 | install -d ${D}${systemd_system_unitdir} |
| 115 | install -m 644 ${UNPACKDIR}/psplash-start.service ${D}/${systemd_system_unitdir} | 116 | install -m 644 ${UNPACKDIR}/psplash-start@.service ${D}/${systemd_system_unitdir} |
| 116 | install -m 644 ${UNPACKDIR}/psplash-systemd.service ${D}/${systemd_system_unitdir} | 117 | install -m 644 ${UNPACKDIR}/psplash-systemd.service ${D}/${systemd_system_unitdir} |
| 118 | install -d ${D}${sysconfdir}/udev/rules.d | ||
| 119 | install -m 0644 ${UNPACKDIR}/fb.rules ${D}${sysconfdir}/udev/rules.d/ | ||
| 117 | fi | 120 | fi |
| 118 | 121 | ||
| 119 | install -d ${D}${bindir} | 122 | install -d ${D}${bindir} |
| @@ -124,7 +127,7 @@ do_install:append() { | |||
| 124 | } | 127 | } |
| 125 | 128 | ||
| 126 | SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}" | 129 | SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}" |
| 127 | SYSTEMD_SERVICE:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'psplash-start.service psplash-systemd.service', '', d)}" | 130 | SYSTEMD_SERVICE:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'psplash-start@.service psplash-systemd.service', '', d)}" |
| 128 | 131 | ||
| 129 | INITSCRIPT_NAME = "psplash.sh" | 132 | INITSCRIPT_NAME = "psplash.sh" |
| 130 | INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ." | 133 | INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ." |
