Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH] initramfs-framework: support LABEL with root-only udev trigger
@ 2026-08-26  9:25 Wenwen Fu
  2026-08-27 13:04 ` Paul Barker
  2026-08-27 15:11 ` [PATCH v2] " Wenwen Fu
  0 siblings, 2 replies; 5+ messages in thread
From: Wenwen Fu @ 2026-08-26  9:25 UTC (permalink / raw)
  To: openembedded-core; +Cc: Wenwen Fu

Filesystem labels are not available in kernel uevents. Enable the
BusyBox findfs applet and use it to resolve root=LABEL= to a device.
Read the kernel-provided PARTUUID from sysfs and trigger only that
partition. Fall back to the full trigger when the label cannot be
resolved safely.

Signed-off-by: Wenwen Fu <wenwfu@qti.qualcomm.com>
---
 meta/recipes-core/busybox/busybox/defconfig          |  2 +-
 .../initrdscripts/initramfs-framework/udev           | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-core/busybox/busybox/defconfig b/meta/recipes-core/busybox/busybox/defconfig
index 1f4b5e3d1e..a282370a8f 100644
--- a/meta/recipes-core/busybox/busybox/defconfig
+++ b/meta/recipes-core/busybox/busybox/defconfig
@@ -634,7 +634,7 @@ CONFIG_FEATURE_FDISK_WRITABLE=y
 # CONFIG_FEATURE_OSF_LABEL is not set
 # CONFIG_FEATURE_GPT_LABEL is not set
 # CONFIG_FEATURE_FDISK_ADVANCED is not set
-# CONFIG_FINDFS is not set
+CONFIG_FINDFS=y
 CONFIG_FLOCK=y
 # CONFIG_FDFLUSH is not set
 # CONFIG_FREERAMDISK is not set
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev
index 8f67e78a7c..85c5ba1178 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
@@ -43,6 +43,18 @@ udev_trigger_root_device() {
 		PARTUUID=?*)
 			root_match="PARTUUID=${bootparam_root#PARTUUID=}"
 			;;
+		LABEL=?*)
+			# The kernel does not export the filesystem LABEL in the
+			# uevent, so resolve it to a device node with findfs and
+			# match on that device's kernel-provided PARTUUID.
+			root_label="${bootparam_root#LABEL=}"
+			root_dev=$(findfs "LABEL=$root_label" 2>/dev/null) || return 1
+			[ -n "$root_dev" ] || return 1
+			root_partuuid=$(sed -n 's/^PARTUUID=//p' \
+				"/sys/class/block/${root_dev#/dev/}/uevent" 2>/dev/null)
+			[ -n "$root_partuuid" ] || return 1
+			root_match="PARTUUID=$root_partuuid"
+			;;
 		*)
 			return 1
 			;;
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] initramfs-framework: support LABEL with root-only udev trigger
  2026-08-26  9:25 [PATCH] initramfs-framework: support LABEL with root-only udev trigger Wenwen Fu
@ 2026-08-27 13:04 ` Paul Barker
  2026-08-27 14:25   ` Wenwen Fu
  2026-08-27 15:11 ` [PATCH v2] " Wenwen Fu
  1 sibling, 1 reply; 5+ messages in thread
From: Paul Barker @ 2026-08-27 13:04 UTC (permalink / raw)
  To: Wenwen Fu, openembedded-core

On Wed, 2026-08-26 at 17:25 +0800, Wenwen Fu wrote:
> Filesystem labels are not available in kernel uevents. Enable the
> BusyBox findfs applet and use it to resolve root=LABEL= to a device.
> Read the kernel-provided PARTUUID from sysfs and trigger only that
> partition. Fall back to the full trigger when the label cannot be
> resolved safely.
> 
> Signed-off-by: Wenwen Fu <wenwfu@qti.qualcomm.com>
> ---
>  meta/recipes-core/busybox/busybox/defconfig          |  2 +-
>  .../initrdscripts/initramfs-framework/udev           | 12 ++++++++++++
>  2 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-core/busybox/busybox/defconfig b/meta/recipes-core/busybox/busybox/defconfig
> index 1f4b5e3d1e..a282370a8f 100644
> --- a/meta/recipes-core/busybox/busybox/defconfig
> +++ b/meta/recipes-core/busybox/busybox/defconfig
> @@ -634,7 +634,7 @@ CONFIG_FEATURE_FDISK_WRITABLE=y
>  # CONFIG_FEATURE_OSF_LABEL is not set
>  # CONFIG_FEATURE_GPT_LABEL is not set
>  # CONFIG_FEATURE_FDISK_ADVANCED is not set
> -# CONFIG_FINDFS is not set
> +CONFIG_FINDFS=y

Does this really need enabling in the defconfig, i.e. for all users? We
try to keep the default busybox configuration small.

Best regards,

-- 
Paul Barker



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] initramfs-framework: support LABEL with root-only udev trigger
  2026-08-27 13:04 ` Paul Barker
@ 2026-08-27 14:25   ` Wenwen Fu
  0 siblings, 0 replies; 5+ messages in thread
From: Wenwen Fu @ 2026-08-27 14:25 UTC (permalink / raw)
  To: Paul Barker, openembedded-core@lists.openembedded.org; +Cc: Zhuo Fu

[-- Attachment #1: Type: text/plain, Size: 2003 bytes --]

Hi Pual,

Thank you for your review,

Good point. It does not need to be enabled globally.
I'll send a v2 using the separately packaged util-linux-findfs as a runtime dependency of initramfs-module-udev, leaving the default BusyBox configuration unchanged.

Thanks
Wenwen
________________________________
From: Paul Barker <paul@pbarker.dev>
Sent: Thursday, August 27, 2026 21:04
To: Wenwen Fu <wenwfu@qti.qualcomm.com>; openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH] initramfs-framework: support LABEL with root-only udev trigger

WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.

On Wed, 2026-08-26 at 17:25 +0800, Wenwen Fu wrote:
> Filesystem labels are not available in kernel uevents. Enable the
> BusyBox findfs applet and use it to resolve root=LABEL= to a device.
> Read the kernel-provided PARTUUID from sysfs and trigger only that
> partition. Fall back to the full trigger when the label cannot be
> resolved safely.
>
> Signed-off-by: Wenwen Fu <wenwfu@qti.qualcomm.com>
> ---
>  meta/recipes-core/busybox/busybox/defconfig          |  2 +-
>  .../initrdscripts/initramfs-framework/udev           | 12 ++++++++++++
>  2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-core/busybox/busybox/defconfig b/meta/recipes-core/busybox/busybox/defconfig
> index 1f4b5e3d1e..a282370a8f 100644
> --- a/meta/recipes-core/busybox/busybox/defconfig
> +++ b/meta/recipes-core/busybox/busybox/defconfig
> @@ -634,7 +634,7 @@ CONFIG_FEATURE_FDISK_WRITABLE=y
>  # CONFIG_FEATURE_OSF_LABEL is not set
>  # CONFIG_FEATURE_GPT_LABEL is not set
>  # CONFIG_FEATURE_FDISK_ADVANCED is not set
> -# CONFIG_FINDFS is not set
> +CONFIG_FINDFS=y

Does this really need enabling in the defconfig, i.e. for all users? We
try to keep the default busybox configuration small.

Best regards,

--
Paul Barker


[-- Attachment #2: Type: text/html, Size: 4230 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2] initramfs-framework: support LABEL with root-only udev trigger
  2026-08-26  9:25 [PATCH] initramfs-framework: support LABEL with root-only udev trigger Wenwen Fu
  2026-08-27 13:04 ` Paul Barker
@ 2026-08-27 15:11 ` Wenwen Fu
  2026-08-28 13:05   ` [OE-core] " Mathieu Dubois-Briand
  1 sibling, 1 reply; 5+ messages in thread
From: Wenwen Fu @ 2026-08-27 15:11 UTC (permalink / raw)
  To: openembedded-core; +Cc: Wenwen Fu

Filesystem labels are not available in kernel uevents. Add
util-linux-findfs to initramfs-module-udev and use findfs to resolve
root=LABEL= to a device. Read the kernel-provided PARTUUID from sysfs
and trigger only that partition, falling back to a full trigger if the
label cannot be resolved safely. Keeping findfs out of the BusyBox
defconfig avoids increasing BusyBox for unrelated users.

Tested with bitbake -p and by generating the
core-image-minimal-initramfs dependency graph.

AI-Generated: OpenAI Codex
Signed-off-by: Wenwen Fu <wenwfu@qti.qualcomm.com>
---
Changes in v2:
- Keep findfs out of the default BusyBox configuration.
- Add util-linux-findfs as an initramfs-module-udev runtime dependency.
---

 .../initrdscripts/initramfs-framework/udev           | 12 ++++++++++++
 .../initrdscripts/initramfs-framework_1.0.bb         |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/udev b/meta/recipes-core/initrdscripts/initramfs-framework/udev
index 8f67e78a7c..85c5ba1178 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/udev
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/udev
@@ -43,6 +43,18 @@ udev_trigger_root_device() {
 		PARTUUID=?*)
 			root_match="PARTUUID=${bootparam_root#PARTUUID=}"
 			;;
+		LABEL=?*)
+			# The kernel does not export the filesystem LABEL in the
+			# uevent, so resolve it to a device node with findfs and
+			# match on that device's kernel-provided PARTUUID.
+			root_label="${bootparam_root#LABEL=}"
+			root_dev=$(findfs "LABEL=$root_label" 2>/dev/null) || return 1
+			[ -n "$root_dev" ] || return 1
+			root_partuuid=$(sed -n 's/^PARTUUID=//p' \
+				"/sys/class/block/${root_dev#/dev/}/uevent" 2>/dev/null)
+			[ -n "$root_partuuid" ] || return 1
+			root_match="PARTUUID=$root_partuuid"
+			;;
 		*)
 			return 1
 			;;
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index 2ec03bc34c..936cd0c995 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -88,7 +88,7 @@ RDEPENDS:initramfs-module-mdev = "${PN}-base busybox-mdev"
 FILES:initramfs-module-mdev = "/init.d/01-mdev"
 
 SUMMARY:initramfs-module-udev = "initramfs support for udev"
-RDEPENDS:initramfs-module-udev = "${PN}-base udev"
+RDEPENDS:initramfs-module-udev = "${PN}-base udev util-linux-findfs"
 FILES:initramfs-module-udev = "/init.d/01-udev"
 
 SUMMARY:initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystems"
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH v2] initramfs-framework: support LABEL with root-only udev trigger
  2026-08-27 15:11 ` [PATCH v2] " Wenwen Fu
@ 2026-08-28 13:05   ` Mathieu Dubois-Briand
  0 siblings, 0 replies; 5+ messages in thread
From: Mathieu Dubois-Briand @ 2026-08-28 13:05 UTC (permalink / raw)
  To: wenwfu, openembedded-core

On Thu Aug 27, 2026 at 5:11 PM CEST, Wenwen Fu via lists.openembedded.org wrote:
> Filesystem labels are not available in kernel uevents. Add
> util-linux-findfs to initramfs-module-udev and use findfs to resolve
> root=LABEL= to a device. Read the kernel-provided PARTUUID from sysfs
> and trigger only that partition, falling back to a full trigger if the
> label cannot be resolved safely. Keeping findfs out of the BusyBox
> defconfig avoids increasing BusyBox for unrelated users.
>
> Tested with bitbake -p and by generating the
> core-image-minimal-initramfs dependency graph.
>
> AI-Generated: OpenAI Codex
> Signed-off-by: Wenwen Fu <wenwfu@qti.qualcomm.com>
> ---
> Changes in v2:
> - Keep findfs out of the default BusyBox configuration.
> - Add util-linux-findfs as an initramfs-module-udev runtime dependency.
> ---

Hi,

Thanks for the new version, but it looks like this is now breaking the
sstatetests.SStateHashSameSigs2.test_sstate_allarch_samesigs selftest:

2026-08-28 11:52:19,276 - oe-selftest - INFO - 11: 37/71 648/764 (178.91s) (0 failed) (sstatetests.SStateHashSameSigs2.test_sstate_allarch_samesigs)
2026-08-28 11:52:19,277 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/sstatetests.py", line 474, in test_sstate_allarch_samesigs
    self.sstate_common_samesigs(configA, configB, allarch=True)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/sstatetests.py", line 207, in sstate_common_samesigs
    self.assertEqual(files1, files2)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/buildtools/sysroots/x86_64-pokysdk-linux/usr/lib/python3.13/unittest/case.py", line 907, in assertEqual
    assertion_func(first, second, msg=msg)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/buildtools/sysroots/x86_64-pokysdk-linux/usr/lib/python3.13/unittest/case.py", line 1206, in assertDictEqual
    self.fail(self._formatMessage(msg, standardMsg))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/buildtools/sysroots/x86_64-pokysdk-linux/usr/lib/python3.13/unittest/case.py", line 732, in fail
    raise self.failureException(msg)
AssertionError: {'nat[225943 chars]k/do_create_package_spdx': '89409e9454bed0d549[78392 chars]4bc'} != {'nat[225943 chars]k/do_recipe_qa': '164b683aa2faabba13f23d8003ac[78392 chars]4bc'}
...
-  'initramfs-framework/do_create_package_spdx': '89409e9454bed0d5494c8686b6418dc7fdd8c7c0d0e97dd87dd3e8342b621da4',
+  'initramfs-framework/do_create_package_spdx': 'c7ab0c1500e7106e8265cef8bd1fe05be652789acf69432215a7e172408676b7',
...
-  'initramfs-framework/do_package_qa': 'b6819a7ecf80c6bf03ff749c968ce24754dd7a07d05fd0fc2fcc9a53efd87bfb',
-  'initramfs-framework/do_package_write_rpm': '5a3cc5880fa17990df7847741014ff9188f80d91e48d789665ff82b1016028f1',
+  'initramfs-framework/do_package_qa': '9b79d0a3fb13d27058711597b04fe0d62f4cd54f250db04408ceb02e35d09a12',
+  'initramfs-framework/do_package_write_rpm': '937c8f39225bc46d8d8abaa38ba17af2b428b690ecb5f4a7706a711824a52af2',
...

https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/4693
https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/4737
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/4514

Can you have a look at the issue?

Thanks,
Mathieu

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-08-28 13:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-26  9:25 [PATCH] initramfs-framework: support LABEL with root-only udev trigger Wenwen Fu
2026-08-27 13:04 ` Paul Barker
2026-08-27 14:25   ` Wenwen Fu
2026-08-27 15:11 ` [PATCH v2] " Wenwen Fu
2026-08-28 13:05   ` [OE-core] " Mathieu Dubois-Briand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox