* [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot
@ 2025-09-05 16:41 Vincent Davis Jr
2025-09-05 16:41 ` [OE-core][PATCH v3 2/8] bootimg_efi: " Vincent Davis Jr
` (7 more replies)
0 siblings, 8 replies; 13+ messages in thread
From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw)
To: openembedded-core; +Cc: Vincent Davis Jr
If caller wants to primarily leverage
grub as the primary boot loader current
oe-core doesn't support booting grub when
the boot firmware is legacy BIOS based and
the partition table format is GPT based.
Issue GPT header reside where core.img
should be located (at byte 512).
To navigate around issue core.img was
moved to a seperate partition.
If disk is a GPT disk caller must specify
the file system type as none and set the
partition type as BIOS boot. No filesystem
will be created on partition. This also
allows wic plugin to know where to dd
core.img.
Unfortunately No deep dive into grub-install
was perform to know the exact bytes changed
in hybrid boot case. To see the change in
bytes generated boot.img + core.img was compared
to boot.img + core.img after grub-install was
executed using the xxd command.
Signed-off-by: Vincent Davis Jr <vince@underview.tech>
---
.../lib/wic/plugins/source/bootimg_pcbios.py | 55 ++++++++++++++++++-
1 file changed, 53 insertions(+), 2 deletions(-)
diff --git a/scripts/lib/wic/plugins/source/bootimg_pcbios.py b/scripts/lib/wic/plugins/source/bootimg_pcbios.py
index caabda6318..a7fb2eca4e 100644
--- a/scripts/lib/wic/plugins/source/bootimg_pcbios.py
+++ b/scripts/lib/wic/plugins/source/bootimg_pcbios.py
@@ -101,7 +101,7 @@ class BootimgPcbiosPlugin(SourcePlugin):
disk_name, full_path, disk.min_size)
if cls.loader == 'grub':
- cls._do_install_grub(creator, kernel_dir,
+ cls._do_install_grub(disk, creator, kernel_dir,
native_sysroot, full_path)
elif cls.loader == 'syslinux':
cls._do_install_syslinux(creator, bootimg_dir,
@@ -340,6 +340,12 @@ class BootimgPcbiosPlugin(SourcePlugin):
@classmethod
def _do_configure_grub(cls, part, creator, cr_workdir):
+ # If partition type is either EFI System or
+ # BIOS boot no need to generate/copy grub config.
+ if part.part_type == '21686148-6449-6E6F-744E-656564454649' or \
+ part.part_type == 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B':
+ return 0
+
hdddir = "%s/hdd" % cr_workdir
bootloader = creator.ks.bootloader
@@ -438,6 +444,12 @@ class BootimgPcbiosPlugin(SourcePlugin):
grub_mods_path, core_img, builtin_modules)
exec_native_cmd(grub_mkimage, native_sysroot)
+ # If partition type is either EFI System or
+ # BIOS boot no need to copy in grub modules.
+ if part.part_type == '21686148-6449-6E6F-744E-656564454649' or \
+ part.part_type == 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B':
+ return 0
+
# Copy grub modules
install_dir = '%s/%s/%s' % (hdddir, grub_prefix_path, grub_format)
os.makedirs(install_dir, exist_ok=True)
@@ -454,7 +466,7 @@ class BootimgPcbiosPlugin(SourcePlugin):
native_sysroot, False)
@classmethod
- def _do_install_grub(cls, creator, kernel_dir,
+ def _do_install_grub(cls, disk, creator, kernel_dir,
native_sysroot, full_path):
core_img = '%s/grub-bios-core.img' % (kernel_dir)
@@ -478,6 +490,45 @@ class BootimgPcbiosPlugin(SourcePlugin):
# Install core.img or grub stage 1.5
dd_cmd = "dd if=%s of=%s conv=notrunc bs=1 seek=512" % (core_img, full_path)
exec_cmd(dd_cmd, native_sysroot)
+ elif creator.ptable_format == 'gpt':
+ # Issue GPT headers reside where core.img should be (at byte 512).
+ # To navigate around issue core.img was moved to a seperate partition.
+ #
+ # If disk is a GPT disk caller must specify the file system
+ # type as none. As no filesystem may be created. Caller must
+ # also set the partition type to BIOS boot. So, the plugin
+ # may embed core.img there.
+
+ # Replicates what grub-install does to boot.img
+ # Found by comparing xxd output of generated boot.img
+ # to boot.img after grub-install.
+ dd_cmd = "echo -ne '\\x00\\x08' | dd of=%s conv=notrunc bs=1 count=2 seek=92" % (full_path)
+ exec_native_cmd(dd_cmd, native_sysroot)
+
+ dd_cmd = "echo -ne '\\x90\\x90' | dd of=%s conv=notrunc bs=1 count=2 seek=102" % (full_path)
+ exec_native_cmd(dd_cmd, native_sysroot)
+
+ for part in creator.parts:
+ if part.part_type == '21686148-6449-6E6F-744E-656564454649':
+ part_start_byte = part.start * disk.sector_size
+
+ # Install core.img or grub stage 1.5
+ dd_cmd = "dd if=%s of=%s conv=notrunc bs=1 seek=%s" % \
+ (core_img, full_path, part_start_byte)
+ exec_cmd(dd_cmd, native_sysroot)
+
+ # Replicates what grub-install does to core.img
+ # Found by comparing xxd output of generated
+ # core.img to core.img ater grub install.
+ dd_cmd = "echo -ne '\\x01\\x08' | dd of=%s conv=notrunc bs=1 count=2 seek=%d" % \
+ (full_path, part_start_byte + 500)
+ exec_native_cmd(dd_cmd, native_sysroot)
+
+ dd_cmd = "echo -ne '\\x2f\\x02' | dd of=%s conv=notrunc bs=1 count=2 seek=%d" % \
+ (full_path, part_start_byte + 508)
+ exec_native_cmd(dd_cmd, native_sysroot)
+
+ break
else:
raise WicError("Unsupported partition table: %s" %
creator.ptable_format)
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [OE-core][PATCH v3 2/8] bootimg_efi: support grub hybrid boot 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 3/8] bootimg_efi: copy grub modules Vincent Davis Jr ` (6 subsequent siblings) 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr If bootimg_biosplusefi wics plugin is used check for loader-bios in sourceparam. The grub config is copied by the bootimg_pcbios wic's plugin. The reason is it's autogenerated grub config is generic enough to support both legacy boot and hybrid boot. Thus, no need to update it. If partition type marked as EFI System only copy in UEFI application boot*.efi (core.img). It appears the EFI directory resides after initial population of the EFI System partition. If bootimg_efi called again and the partiton type not marked as EFI System remove any unwanted files. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- scripts/lib/wic/plugins/source/bootimg_efi.py | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/scripts/lib/wic/plugins/source/bootimg_efi.py b/scripts/lib/wic/plugins/source/bootimg_efi.py index cf16705a28..98be12160c 100644 --- a/scripts/lib/wic/plugins/source/bootimg_efi.py +++ b/scripts/lib/wic/plugins/source/bootimg_efi.py @@ -223,7 +223,13 @@ class BootimgEFIPlugin(SourcePlugin): exec_cmd(install_cmd) try: - if source_params['loader'] == 'grub-efi': + # In grub hybrid boot case bootimg_pcbios generates/copies the grub.cfg + # that will be stored on same partitions as the grub modules. + if 'loader-bios' in source_params and \ + source_params['loader-bios'] == 'grub' and \ + source_params['loader'] == 'grub-efi': + pass + elif source_params['loader'] == 'grub-efi': cls.do_configure_grubefi(hdddir, creator, cr_workdir, source_params) elif source_params['loader'] == 'systemd-boot': cls.do_configure_systemdboot(hdddir, creator, cr_workdir, source_params) @@ -328,7 +334,25 @@ class BootimgEFIPlugin(SourcePlugin): logger.debug("Installed IMAGE_EFI_BOOT_FILES:\n%s" % out) try: - if source_params['loader'] == 'grub-efi': + if 'loader-bios' in source_params and \ + source_params['loader-bios'] == 'grub' and \ + source_params['loader'] == 'grub-efi': + + # If partition type is Bios Boot return + if part.part_type == '21686148-6449-6E6F-744E-656564454649': + return 0 + + # The grub config in the hybrid grub boot setup is + # copied by the bootimg_pcbios wics plugin. + if part.part_type == 'C12A7328-F81F-11D2-BA4B-00A0C93EC93B': + for mod in [x for x in os.listdir(kernel_dir) if x.startswith("grub-efi-")]: + cp_cmd = "cp -v -p %s/%s %s/EFI/BOOT/%s" % \ + (kernel_dir, mod, hdddir, mod[9:]) + exec_cmd(cp_cmd, True) + else: + shutil.rmtree("%s/EFI" % hdddir) + return 0 + elif source_params['loader'] == 'grub-efi': shutil.copyfile("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, "%s/grub.cfg" % cr_workdir) for mod in [x for x in os.listdir(kernel_dir) if x.startswith("grub-efi-")]: -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [OE-core][PATCH v3 3/8] bootimg_efi: copy grub modules 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 2/8] bootimg_efi: " Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 4/8] bootimg_pcbios: update default boot timeout to zero Vincent Davis Jr ` (5 subsequent siblings) 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr Assumming all grub modules weren't embedded into boot*.efi (core.img) copy them now. This commit populates the common partition used to store the grub config and grub modules for both PCBIOS and EFI. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- scripts/lib/wic/plugins/source/bootimg_efi.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/scripts/lib/wic/plugins/source/bootimg_efi.py b/scripts/lib/wic/plugins/source/bootimg_efi.py index 98be12160c..c3254033d6 100644 --- a/scripts/lib/wic/plugins/source/bootimg_efi.py +++ b/scripts/lib/wic/plugins/source/bootimg_efi.py @@ -350,7 +350,39 @@ class BootimgEFIPlugin(SourcePlugin): (kernel_dir, mod, hdddir, mod[9:]) exec_cmd(cp_cmd, True) else: + # Assumming all grub modules weren't embedded + # into grub.efi or core.img copy them now. + copy_types = [ '*.mod', '*.o', '*.lst' ] + + # It appears the EFI directory resides after + # initial population of the EFI System partition + # in the if statement above. Remove so that the + # partition doesn't contain any unrequired files. shutil.rmtree("%s/EFI" % hdddir) + + hdddir = "%s/hdd" % cr_workdir + + staging_libdir = cls._get_staging_libdir() + + grub_format = get_bitbake_var('GRUB_MKIMAGE_FORMAT_EFI') + if not grub_format: + grub_format = 'x86_64-efi' + + grub_prefix_path = get_bitbake_var('GRUB_PREFIX_PATH') + if not grub_prefix_path: + grub_prefix_path = '/boot/grub' + + # Copy grub modules + install_dir = '%s/%s/%s' % (hdddir, grub_prefix_path, grub_format) + os.makedirs(install_dir, exist_ok=True) + + for ctype in copy_types: + files = glob('%s/grub/%s/%s' % \ + (staging_libdir, grub_format, ctype)) + for file in files: + shutil.copy2(file, install_dir, follow_symlinks=True) + + # bootimg_pcbios calles prepare_rootfs no need to here. return 0 elif source_params['loader'] == 'grub-efi': shutil.copyfile("%s/hdd/boot/EFI/BOOT/grub.cfg" % cr_workdir, @@ -457,3 +489,24 @@ class BootimgEFIPlugin(SourcePlugin): part.size = int(bootimg_size) part.source_file = bootimg + + @classmethod + def _get_staging_libdir(cls): + """ + For unknown reasons when running test with poky + STAGING_LIBDIR gets unset when wic create is executed. + Bellow is a hack to determine what STAGING_LIBDIR should + be if not specified. + """ + + staging_libdir = get_bitbake_var('STAGING_LIBDIR') + staging_dir_target = get_bitbake_var('STAGING_DIR_TARGET') + + if not staging_libdir: + staging_libdir = '%s/usr/lib64' % staging_dir_target + if not os.path.isdir(staging_libdir): + staging_libdir = '%s/usr/lib32' % staging_dir_target + if not os.path.isdir(staging_libdir): + staging_libdir = '%s/usr/lib' % staging_dir_target + + return staging_libdir -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [OE-core][PATCH v3 4/8] bootimg_pcbios: update default boot timeout to zero 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 2/8] bootimg_efi: " Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 3/8] bootimg_efi: copy grub modules Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 5/8] bootimg_biosplusefi: add grub only examples Vincent Davis Jr ` (4 subsequent siblings) 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr If caller doesn't specify a timeout more than likely because caller doesn't want one. Set it to zero. This also fixes boot time issues related to OE selftest that leverage boot testing with qemu. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- scripts/lib/wic/plugins/source/bootimg_pcbios.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/lib/wic/plugins/source/bootimg_pcbios.py b/scripts/lib/wic/plugins/source/bootimg_pcbios.py index a7fb2eca4e..2fdca98848 100644 --- a/scripts/lib/wic/plugins/source/bootimg_pcbios.py +++ b/scripts/lib/wic/plugins/source/bootimg_pcbios.py @@ -208,7 +208,7 @@ class BootimgPcbiosPlugin(SourcePlugin): # 'None' being the value placed within the configuration # file. if not bootloader.timeout: - bootloader.timeout = 500 + bootloader.timeout = 0 # Set a default kernel params string if none specified # to avoid 'None' being the value placed within the @@ -364,7 +364,7 @@ class BootimgPcbiosPlugin(SourcePlugin): # 'None' being the value placed within the configuration # file. if not bootloader.timeout: - bootloader.timeout = 500 + bootloader.timeout = 0 # Set a default kernel params string if none specified # to avoid 'None' being the value placed within the -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [OE-core][PATCH v3 5/8] bootimg_biosplusefi: add grub only examples 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr ` (2 preceding siblings ...) 2025-09-05 16:41 ` [OE-core][PATCH v3 4/8] bootimg_pcbios: update default boot timeout to zero Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 6/8] grub-efi: support custom embedded grub configs Vincent Davis Jr ` (3 subsequent siblings) 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr Updates the comments section to explain new usage of wic plugins. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- .../wic/plugins/source/bootimg_biosplusefi.py | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/scripts/lib/wic/plugins/source/bootimg_biosplusefi.py b/scripts/lib/wic/plugins/source/bootimg_biosplusefi.py index 4279ddded8..ad4c0e1768 100644 --- a/scripts/lib/wic/plugins/source/bootimg_biosplusefi.py +++ b/scripts/lib/wic/plugins/source/bootimg_biosplusefi.py @@ -27,7 +27,7 @@ class BootimgBiosPlusEFIPlugin(SourcePlugin): """ Create MBR + EFI boot partition - This plugin creates a boot partition that contains both + This plugin creates a boot partition(s) that contains both legacy BIOS and EFI content. It will be able to boot from both. This is useful when managing PC fleet with some older machines without EFI support. @@ -50,7 +50,9 @@ class BootimgBiosPlusEFIPlugin(SourcePlugin): not turn the rootfs into an initramfs RAM image. This plugin is made to put everything into a single /boot partition so it - does not have the limitations listed above. + does not have the limitations listed above. Unless GRUB is the primary + bootloader. We have to seperate it into multiple partitions because + of core.img. The plugin is made so it does tries not to reimplement what's already been done in other plugins; as such it imports "bootimg_pcbios" @@ -70,9 +72,33 @@ class BootimgBiosPlusEFIPlugin(SourcePlugin): Plugin options, such as "--sourceparams" can still be passed to a plugin, as long they does not cause issue in the other plugin. - Example wic configuration: + Example wic configurations: + + ************ Example kickstart GRUB/Syslinux Hybrid Legacy Bios Or Newer UEFI Boot ************ part /boot --source bootimg_biosplusefi --sourceparams="loader=grub-efi"\\ --ondisk sda --label os_boot --active --align 1024 --use-uuid + ************ Example kickstart GRUB/Syslinux Hybrid Legacy Bios Or Newer UEFI Boot ************ + + + ********************** Example kickstart GRUB Hybrid Legacy Bios Or Newer UEFI Boot ********************** + # See https://wiki.archlinux.org/title/GPT_fdisk#Partition_type + + part bios_boot --label bios_boot --fstype none --offset 1024 --fixed-size 1M \\ + --part-type 21686148-6449-6E6F-744E-656564454649 --source bootimg_biosplusefi \\ + --sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false" + + part efi_system --label efi_system --fstype vfat --fixed-size 48M \\ + --part-type C12A7328-F81F-11D2-BA4B-00A0C93EC93B --source bootimg_biosplusefi \\ + --sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false" + + part grub_data --label grub_data --fstype ext4 --fixed-size 78M \\ + --part-type 0FC63DAF-8483-4772-8E79-3D69D8477DE4 --source bootimg_biosplusefi \\ + --sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false" + + part roots --label rootfs --fstype ext4 --source rootfs --part-type 0FC63DAF-8483-4772-8E79-3D69D8477DE4 + + bootloader --ptable gpt --source bootimg_biosplusefi + ********************** Example kickstart GRUB Hybrid Legacy Bios Or Newer UEFI Boot ********************** """ name = 'bootimg_biosplusefi' -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [OE-core][PATCH v3 6/8] grub-efi: support custom embedded grub configs 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr ` (3 preceding siblings ...) 2025-09-05 16:41 ` [OE-core][PATCH v3 5/8] bootimg_biosplusefi: add grub only examples Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 7/8] oe-selftest[wic]: add test_grub_install_biosplusefi Vincent Davis Jr ` (2 subsequent siblings) 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr Commit: Adds support for including custom embedded grub configs. The default one provided in OE-core is limited to everything being in the /EFI/BOOT directory. Adds an embedded grub config that sets root and prefix based upon the /boot/grub directory. Adds probe to the list of default builtin grub modules. Probe is required by the bootimg_pcbios wic plugin generated grub config. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- meta/recipes-bsp/grub/files/cfg-boot-grub | 3 +++ meta/recipes-bsp/grub/grub-efi_2.12.bb | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-bsp/grub/files/cfg-boot-grub diff --git a/meta/recipes-bsp/grub/files/cfg-boot-grub b/meta/recipes-bsp/grub/files/cfg-boot-grub new file mode 100644 index 0000000000..ab370479af --- /dev/null +++ b/meta/recipes-bsp/grub/files/cfg-boot-grub @@ -0,0 +1,3 @@ +search.file /boot/grub/grub.cfg root +set prefix=($root) +configfile ($root)/boot/grub/grub.cfg diff --git a/meta/recipes-bsp/grub/grub-efi_2.12.bb b/meta/recipes-bsp/grub/grub-efi_2.12.bb index 6354b43989..91748c8d04 100644 --- a/meta/recipes-bsp/grub/grub-efi_2.12.bb +++ b/meta/recipes-bsp/grub/grub-efi_2.12.bb @@ -9,6 +9,7 @@ RDEPENDS:${PN} = "grub-common virtual-grub-bootconf" SRC_URI += " \ file://cfg \ + file://cfg-boot-grub \ " S = "${UNPACKDIR}/grub-${PV}" @@ -48,6 +49,7 @@ EXTRA_OECONF += "--enable-efiemu=no" # Define GRUB_MKIMAGE_OPTS variable for additional grub-mkimage options (e.g., disabling shim lock) GRUB_MKIMAGE_OPTS ?= "" +EMBEDDED_GRUB_CONFIG ?= "${UNPACKDIR}/cfg" do_mkimage() { cd ${B} @@ -63,7 +65,7 @@ do_mkimage() { # Search for the grub.cfg on the local boot media by using the # built in cfg file provided via this recipe - grub-mkimage -v -c ${UNPACKDIR}/cfg -p ${EFIDIR} -d ./grub-core/ \ + grub-mkimage -v -c ${EMBEDDED_GRUB_CONFIG} -p ${EFIDIR} -d ./grub-core/ \ -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} \ ${GRUB_MKIMAGE_OPTS} ${GRUB_MKIMAGE_MODULES} } @@ -87,7 +89,7 @@ do_install() { # To include all available modules, add 'all' to GRUB_BUILDIN GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \ - efi_gop iso9660 configfile search loadenv test" + efi_gop iso9660 configfile search probe loadenv test" # 'xen_boot' is a module valid only for aarch64 GRUB_BUILDIN:append:aarch64 = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' xen_boot', '', d)}" -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [OE-core][PATCH v3 7/8] oe-selftest[wic]: add test_grub_install_biosplusefi 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr ` (4 preceding siblings ...) 2025-09-05 16:41 ` [OE-core][PATCH v3 6/8] grub-efi: support custom embedded grub configs Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 8/8] oe-selftest[wic]: add test_grub_install_biosplusefi_qemu Vincent Davis Jr 2025-09-07 14:02 ` [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Mathieu Dubois-Briand 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr Commit adds test to check if required files are found in the EFI directory and that grub modules for both EFI and BIOS are found on the same partition as the grub config. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- meta/lib/oeqa/selftest/cases/wic.py | 54 +++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index 44442e402d..10c3497519 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py @@ -1456,6 +1456,60 @@ run_wic_cmd() { out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname)) self.assertEqual(1, len(out)) + @skipIfNotArch(['x86_64']) + def test_grub_install_biosplusefi(self): + """ + Test the installation of the grub in hybrid boot mode. + """ + + # create a temporary file for the WKS content + with NamedTemporaryFile("w", suffix=".wks") as wks: + wks.write( + 'part bios_boot --label bios_boot --fstype none --offset 1024 --fixed-size 1M ' \ + '--part-type 21686148-6449-6E6F-744E-656564454649 --source bootimg_biosplusefi ' \ + '--sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false"\n' \ + 'part efi_system --label efi_system --fstype vfat --fixed-size 48M ' \ + '--part-type C12A7328-F81F-11D2-BA4B-00A0C93EC93B --source bootimg_biosplusefi ' \ + '--sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false"\n' \ + 'part grub_data --label grub_data --fstype ext4 --fixed-size 78M ' \ + '--part-type 0FC63DAF-8483-4772-8E79-3D69D8477DE4 --source bootimg_biosplusefi ' \ + '--sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false"\n' \ + 'bootloader --ptable gpt --source bootimg_biosplusefi\n' + ) + wks.flush() + + img = "core-image-minimal" + config = 'DEPENDS:pn-%s += "grub-native grub grub-efi"' % (img) + + self.append_config(config) + bitbake(img) + self.remove_config(config) + + cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir) + runCmd(cmd) + + wksname = os.path.splitext(os.path.basename(wks.name))[0] + out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname)) + self.assertEqual(1, len(out)) + + sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools') + + # Check if grub UEFI application (core.img) installed + result = runCmd("wic ls %s:2/EFI/BOOT -n %s" % (out[0], sysroot)) + self.assertIn('bootx64', result.output) + + # Check if grub.cfg is installed + result = runCmd("wic ls %s:3/boot/grub -n %s" % (out[0], sysroot)) + self.assertIn('grub', result.output) + + # Check if normal.mod is installed + result = runCmd("wic ls %s:3/boot/grub/i386-pc -n %s" % (out[0], sysroot)) + self.assertIn('normal', result.output) + + # Check if normal.mod is installed + result = runCmd("wic ls %s:3/boot/grub/x86_64-efi -n %s" % (out[0], sysroot)) + self.assertIn('normal', result.output) + @skipIfNotArch(['i586', 'i686', 'x86_64', 'aarch64']) def test_uefi_kernel(self): """ Test uefi-kernel in wic """ -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [OE-core][PATCH v3 8/8] oe-selftest[wic]: add test_grub_install_biosplusefi_qemu 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr ` (5 preceding siblings ...) 2025-09-05 16:41 ` [OE-core][PATCH v3 7/8] oe-selftest[wic]: add test_grub_install_biosplusefi Vincent Davis Jr @ 2025-09-05 16:41 ` Vincent Davis Jr 2025-09-07 14:02 ` [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Mathieu Dubois-Briand 7 siblings, 0 replies; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-05 16:41 UTC (permalink / raw) To: openembedded-core; +Cc: Vincent Davis Jr Test runs qemu given wic file and checks to see if the resulting wic image boots with either legacy bios or newer UEFI frimware whilst grub is the primary bootloader. Signed-off-by: Vincent Davis Jr <vince@underview.tech> --- meta/lib/oeqa/selftest/cases/wic.py | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index 10c3497519..efd1f5e6f0 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py @@ -1510,6 +1510,67 @@ run_wic_cmd() { result = runCmd("wic ls %s:3/boot/grub/x86_64-efi -n %s" % (out[0], sysroot)) self.assertIn('normal', result.output) + @skipIfNotArch(['x86_64']) + @OETestTag("runqemu") + def test_grub_install_biosplusefi_qemu(self): + """Test biosplusefi plugin grub only in qemu""" + + img = "core-image-minimal" + + # create a temporary file for the WKS content + with NamedTemporaryFile("w", suffix=".wks") as wks: + wks.write( + 'part bios_boot --label bios_boot --fstype none --offset 1024 --fixed-size 1M ' \ + '--part-type 21686148-6449-6E6F-744E-656564454649 --source bootimg_biosplusefi ' \ + '--sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false"\n' \ + 'part efi_system --label efi_system --fstype vfat --fixed-size 48M ' \ + '--part-type C12A7328-F81F-11D2-BA4B-00A0C93EC93B --source bootimg_biosplusefi ' \ + '--sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false"\n' \ + 'part grub_data --label grub_data --fstype ext4 --fixed-size 78M ' \ + '--part-type 0FC63DAF-8483-4772-8E79-3D69D8477DE4 --source bootimg_biosplusefi ' \ + '--sourceparams="loader=grub-efi,loader-bios=grub,install-kernel-into-boot-dir=false"\n' \ + 'part roots --label rootfs --fstype ext4 --source rootfs ' \ + '--part-type 0FC63DAF-8483-4772-8E79-3D69D8477DE4\n' \ + 'bootloader --timeout=1 --ptable gpt --source bootimg_biosplusefi\n' + ) + wks.flush() + + config = 'DEPENDS:pn-%s += "grub-native grub grub-efi ovmf"\n' % (img) + config += 'IMAGE_FSTYPES:pn-%s += "wic"\n' % (img) + #config += 'MACHINE_FEATURES:append = " efi"\n' + config += 'IMAGE_CLASSES += "qemuboot"\n' + config += 'WKS_FILE = "%s"\n' % (os.path.basename(wks.name)) + config += 'WKS_SEARCH_PATH = "%s"\n' % (os.path.dirname(wks.name)) + + self.append_config(config) + bitbake(img) + self.remove_config(config) + + cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir) + runCmd(cmd) + + # Test legacy bios boot + runqemu_params = get_bb_var('TEST_RUNQEMUPARAMS', img) or "" + with runqemu(img, ssh=False, runqemuparams='%s nographic' % (runqemu_params), + image_fstype='wic') as qemu: + # Check that we have all four /dev/sda* partitions (/boot and /) + cmd = "grep sda. /proc/partitions | wc -l" + status, output = qemu.run_serial(cmd) + self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) + self.assertEqual(output, '4') + + # Test UEFI boot + # Can't test as it requires swapping the grub-efi*.bb + # embedded grub config. With one that works in the + # hybrid boot case. + #with runqemu(img, ssh=False, runqemuparams='%s ovmf nographic' % (runqemu_params), + # image_fstype='wic') as qemu: + # Check that we have all four /dev/sda* partitions (/boot and /) + # cmd = "grep sda. /proc/partitions | wc -l" + # status, output = qemu.run_serial(cmd) + # self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) + # self.assertEqual(output, '4') + @skipIfNotArch(['i586', 'i686', 'x86_64', 'aarch64']) def test_uefi_kernel(self): """ Test uefi-kernel in wic """ -- 2.43.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr ` (6 preceding siblings ...) 2025-09-05 16:41 ` [OE-core][PATCH v3 8/8] oe-selftest[wic]: add test_grub_install_biosplusefi_qemu Vincent Davis Jr @ 2025-09-07 14:02 ` Mathieu Dubois-Briand 2025-09-07 15:47 ` Vincent Davis 7 siblings, 1 reply; 13+ messages in thread From: Mathieu Dubois-Briand @ 2025-09-07 14:02 UTC (permalink / raw) To: Vincent Davis Jr, openembedded-core On Fri Sep 5, 2025 at 6:41 PM CEST, Vincent Davis Jr wrote: > If caller wants to primarily leverage > grub as the primary boot loader current > oe-core doesn't support booting grub when > the boot firmware is legacy BIOS based and > the partition table format is GPT based. > > Issue GPT header reside where core.img > should be located (at byte 512). > > To navigate around issue core.img was > moved to a seperate partition. > > If disk is a GPT disk caller must specify > the file system type as none and set the > partition type as BIOS boot. No filesystem > will be created on partition. This also > allows wic plugin to know where to dd > core.img. > > Unfortunately No deep dive into grub-install > was perform to know the exact bytes changed > in hybrid boot case. To see the change in > bytes generated boot.img + core.img was compared > to boot.img + core.img after grub-install was > executed using the xxd command. > > Signed-off-by: Vincent Davis Jr <vince@underview.tech> > --- Hi Vincent, We still have the same failure as on v2. Still happening with selftests running on debian host, so there might be something related to the host configuration. ERROR: Qemu log output from /srv/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-2287526/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250907083922: SeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) ... iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... ... Booting from Hard Disk.. 2025-09-07 08:56:24,256 - oe-selftest - INFO - 9: 79/94 577/639 (1085.73s) (0 failed) (wic.Wic2.test_grub_install_biosplusefi_qemu) 2025-09-07 08:56:24,265 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py", line 390, in runqemu qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, launch_cmd=launch_cmd, discard_writes=discard_writes) File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/targetcontrol.py", line 179, in start raise RuntimeError("%s - FAILED to start qemu - check the task log and the boot log" % self.pn) RuntimeError: core-image-minimal - FAILED to start qemu - check the task log and the boot log https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2280 Thanks, Mathieu -- Mathieu Dubois-Briand, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot 2025-09-07 14:02 ` [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Mathieu Dubois-Briand @ 2025-09-07 15:47 ` Vincent Davis 2025-09-08 12:25 ` Mathieu Dubois-Briand 0 siblings, 1 reply; 13+ messages in thread From: Vincent Davis @ 2025-09-07 15:47 UTC (permalink / raw) To: Mathieu Dubois-Briand; +Cc: openembedded-core [-- Attachment #1: Type: text/plain, Size: 3463 bytes --] Okay Is there anyway I can see qemu_boot_log.20250907083922? Also assuming we are running in a docker container. May I see the Docker file. Ran v3 against latest poky using an ubuntu docker container after cherry picking v3 commits into it. DISTRO = "poky" MACHINE = "qemux86-64" I believe not near computer. My docker file and docker compose file https://github.com/under-view/docker-builds/blob/master/containers/yocto-project/ubuntu-24.04/Dockerfile https://github.com/under-view/docker-builds/blob/master/composes/default-compose.yaml On Sun, Sep 7, 2025, 10:02 AM Mathieu Dubois-Briand < mathieu.dubois-briand@bootlin.com> wrote: > On Fri Sep 5, 2025 at 6:41 PM CEST, Vincent Davis Jr wrote: > > If caller wants to primarily leverage > > grub as the primary boot loader current > > oe-core doesn't support booting grub when > > the boot firmware is legacy BIOS based and > > the partition table format is GPT based. > > > > Issue GPT header reside where core.img > > should be located (at byte 512). > > > > To navigate around issue core.img was > > moved to a seperate partition. > > > > If disk is a GPT disk caller must specify > > the file system type as none and set the > > partition type as BIOS boot. No filesystem > > will be created on partition. This also > > allows wic plugin to know where to dd > > core.img. > > > > Unfortunately No deep dive into grub-install > > was perform to know the exact bytes changed > > in hybrid boot case. To see the change in > > bytes generated boot.img + core.img was compared > > to boot.img + core.img after grub-install was > > executed using the xxd command. > > > > Signed-off-by: Vincent Davis Jr <vince@underview.tech> > > --- > > Hi Vincent, > > We still have the same failure as on v2. Still happening with selftests > running on debian host, so there might be something related to the host > configuration. > > ERROR: Qemu log output from > /srv/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-2287526/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250907083922: > SeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) > ... > iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 > Press Ctrl-B to configure iPXE (PCI 00:02.0)... > ... > Booting from Hard Disk.. > 2025-09-07 08:56:24,256 - oe-selftest - INFO - 9: 79/94 577/639 (1085.73s) > (0 failed) (wic.Wic2.test_grub_install_biosplusefi_qemu) > 2025-09-07 08:56:24,265 - oe-selftest - INFO - > testtools.testresult.real._StringException: Traceback (most recent call > last): > File > "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py", > line 390, in runqemu > qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, > launch_cmd=launch_cmd, discard_writes=discard_writes) > File > "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/targetcontrol.py", > line 179, in start > raise RuntimeError("%s - FAILED to start qemu - check the task log and > the boot log" % self.pn) > RuntimeError: core-image-minimal - FAILED to start qemu - check the task > log and the boot log > > https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2280 > > Thanks, > Mathieu > > -- > Mathieu Dubois-Briand, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com > > [-- Attachment #2: Type: text/html, Size: 5223 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot 2025-09-07 15:47 ` Vincent Davis @ 2025-09-08 12:25 ` Mathieu Dubois-Briand 2025-09-13 4:29 ` [PATCH " Vincent Davis Jr 0 siblings, 1 reply; 13+ messages in thread From: Mathieu Dubois-Briand @ 2025-09-08 12:25 UTC (permalink / raw) To: Vincent Davis Jr; +Cc: openembedded-core [-- Attachment #1.1: Type: text/plain, Size: 4066 bytes --] Hi Vincent, Here is the log file, but there isn't much. About build host, this is not a docker, so I believe I have no easy way to provide you with a reproducible setup. Configuration can be seen here: https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/3445173/raw_inline Best regards, Mathieu On Sun Sep 7, 2025 at 5:47 PM CEST, Vincent Davis Jr wrote: > Okay > > Is there anyway I can see > > qemu_boot_log.20250907083922? > > Also assuming we are running in a docker container. > > May I see the Docker file. > > Ran v3 against latest poky using an ubuntu docker container after cherry > picking v3 commits into it. > > DISTRO = "poky" > MACHINE = "qemux86-64" I believe not near computer. > > My docker file and docker compose file > > https://github.com/under-view/docker-builds/blob/master/containers/yocto-project/ubuntu-24.04/Dockerfile > > https://github.com/under-view/docker-builds/blob/master/composes/default-compose.yaml > > > > > > > On Sun, Sep 7, 2025, 10:02 AM Mathieu Dubois-Briand < > mathieu.dubois-briand@bootlin.com> wrote: > >> On Fri Sep 5, 2025 at 6:41 PM CEST, Vincent Davis Jr wrote: >> > If caller wants to primarily leverage >> > grub as the primary boot loader current >> > oe-core doesn't support booting grub when >> > the boot firmware is legacy BIOS based and >> > the partition table format is GPT based. >> > >> > Issue GPT header reside where core.img >> > should be located (at byte 512). >> > >> > To navigate around issue core.img was >> > moved to a seperate partition. >> > >> > If disk is a GPT disk caller must specify >> > the file system type as none and set the >> > partition type as BIOS boot. No filesystem >> > will be created on partition. This also >> > allows wic plugin to know where to dd >> > core.img. >> > >> > Unfortunately No deep dive into grub-install >> > was perform to know the exact bytes changed >> > in hybrid boot case. To see the change in >> > bytes generated boot.img + core.img was compared >> > to boot.img + core.img after grub-install was >> > executed using the xxd command. >> > >> > Signed-off-by: Vincent Davis Jr <vince@underview.tech> >> > --- >> >> Hi Vincent, >> >> We still have the same failure as on v2. Still happening with selftests >> running on debian host, so there might be something related to the host >> configuration. >> >> ERROR: Qemu log output from >> /srv/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-2287526/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250907083922: >> SeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) >> ... >> iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 >> Press Ctrl-B to configure iPXE (PCI 00:02.0)... >> ... >> Booting from Hard Disk.. >> 2025-09-07 08:56:24,256 - oe-selftest - INFO - 9: 79/94 577/639 (1085.73s) >> (0 failed) (wic.Wic2.test_grub_install_biosplusefi_qemu) >> 2025-09-07 08:56:24,265 - oe-selftest - INFO - >> testtools.testresult.real._StringException: Traceback (most recent call >> last): >> File >> "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/utils/commands.py", >> line 390, in runqemu >> qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, >> launch_cmd=launch_cmd, discard_writes=discard_writes) >> File >> "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/meta/lib/oeqa/targetcontrol.py", >> line 179, in start >> raise RuntimeError("%s - FAILED to start qemu - check the task log and >> the boot log" % self.pn) >> RuntimeError: core-image-minimal - FAILED to start qemu - check the task >> log and the boot log >> >> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2280 >> >> Thanks, >> Mathieu >> >> -- >> Mathieu Dubois-Briand, Bootlin >> Embedded Linux and Kernel engineering >> https://bootlin.com >> >> -- Mathieu Dubois-Briand, Bootlin Embedded Linux and Kernel engineering https://bootlin.com [-- Attachment #2: qemu_boot_log.20250907083922 --] [-- Type: text/plain, Size: 312 bytes --] ^[c^[[?7l^[[2J^[[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)...\r Booting from Hard Disk.. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot 2025-09-08 12:25 ` Mathieu Dubois-Briand @ 2025-09-13 4:29 ` Vincent Davis Jr 2025-09-15 12:17 ` [OE-core] " Mathieu Dubois-Briand 0 siblings, 1 reply; 13+ messages in thread From: Vincent Davis Jr @ 2025-09-13 4:29 UTC (permalink / raw) To: openembedded-core [-- Attachment #1.1: Type: text/plain, Size: 552 bytes --] This issue has been hard to reproduce. Even when I manually build the same SEABIOS version. Everything boots for me when manually trying with bellow command qemu-system-x86_64 \ -bios seabios/out/bios.bin \ -nographic \ -chardev stdio,id=char0,mux=on,signal=off \ -mon chardev=char0,mode=readline \ -serial chardev:char0 \ -drive file=vm-storage/emmc-wic-udoo-bolt-emmc.rootfs.wic,format=raw,if=virtio Is there anyway with v3 to soley run oe-selftest --verbose -r wic.Wic2.test_grub_install_biosplusefi_qemu. And paste output? [-- Attachment #1.2: Type: text/html, Size: 738 bytes --] [-- Attachment #2: Screenshot from 2025-09-13 00-20-31.png --] [-- Type: image/png, Size: 100516 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [OE-core] [PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot 2025-09-13 4:29 ` [PATCH " Vincent Davis Jr @ 2025-09-15 12:17 ` Mathieu Dubois-Briand 0 siblings, 0 replies; 13+ messages in thread From: Mathieu Dubois-Briand @ 2025-09-15 12:17 UTC (permalink / raw) To: Vincent Davis Jr, openembedded-core [-- Attachment #1.1: Type: text/plain, Size: 1046 bytes --] On Sat Sep 13, 2025 at 6:29 AM CEST, Vincent Davis Jr wrote: > This issue has been hard to reproduce. > > Even when I manually build the same SEABIOS version. > > Everything boots for me when manually trying with bellow command > > qemu-system-x86_64 \ > -bios seabios/out/bios.bin \ > -nographic \ > -chardev stdio,id=char0,mux=on,signal=off \ > -mon chardev=char0,mode=readline \ > -serial chardev:char0 \ > -drive file=vm-storage/emmc-wic-udoo-bolt-emmc.rootfs.wic,format=raw,if=virtio > > Is there anyway with v3 to soley run > > oe-selftest --verbose -r wic.Wic2.test_grub_install_biosplusefi_qemu. > > And paste output? Hi Vincent, I ran the selftest manually and captured the output in attached log. I'm also attaching the qemu_boot_log.20250915113946 file, but it's pretty short. I tried to capture most of the build-renamed-st directory, please tell me if there is any file you need. Thanks, Mathieu -- Mathieu Dubois-Briand, Bootlin Embedded Linux and Kernel engineering https://bootlin.com [-- Attachment #2: log --] [-- Type: text/plain, Size: 36004 bytes --] 2025-09-15 11:37:56,511 - oe-selftest - INFO - Adding layer libraries: 2025-09-15 11:37:56,511 - oe-selftest - INFO - /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta-poky/lib 2025-09-15 11:37:56,511 - oe-selftest - INFO - /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib 2025-09-15 11:37:56,512 - oe-selftest - INFO - /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta-yocto-bsp/lib 2025-09-15 11:37:56,512 - oe-selftest - INFO - /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta-selftest/lib 2025-09-15 11:37:56,512 - oe-selftest - INFO - Checking base configuration is valid/parsable NOTE: Reconnecting to bitbake server... 2025-09-15 11:37:56,887 - oe-selftest - INFO - Adding: "include selftest.inc" in /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/conf/local.conf 2025-09-15 11:37:56,888 - oe-selftest - INFO - Adding: "include bblayers.inc" in bblayers.conf 2025-09-15 11:37:56,888 - oe-selftest - INFO - test_grub_install_biosplusefi_qemu (wic.Wic2.test_grub_install_biosplusefi_qemu) 2025-09-15 11:38:50,817 - oe-selftest - DEBUG - Appending to: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/conf/selftest.inc DEPENDS:pn-core-image-minimal += "grub-native grub grub-efi ovmf" IMAGE_FSTYPES:pn-core-image-minimal += "wic" IMAGE_CLASSES += "qemuboot" WKS_FILE = "tmp0z_ad1mp.wks" WKS_SEARCH_PATH = "/tmp" 2025-09-15 11:39:27,897 - oe-selftest - DEBUG - Removing from: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/conf/selftest.inc DEPENDS:pn-core-image-minimal += "grub-native grub grub-efi ovmf" IMAGE_FSTYPES:pn-core-image-minimal += "wic" IMAGE_CLASSES += "qemuboot" WKS_FILE = "tmp0z_ad1mp.wks" WKS_SEARCH_PATH = "/tmp" Loading cache...done. 2025-09-15 11:56:43,439 - oe-selftest - INFO - ... ERROR Stdout: rootfs file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic Qemu log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 SSH log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/ssh_target_log.20250915113946 Using kvm for runqemu QMP Available for connection at /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.6v6jj4sg Created listening socket for qemu serial console on: 127.0.0.1:52143 Created listening socket for qemu serial console on: 127.0.0.1:54197 launchcmd=runqemu snapshot kvm nographic nographic qemux86-64 /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic tcpserial=52143:54197 bootparams=" printk.time=1" qemuparams="-pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait" runqemu started, pid is 1526684 waiting at most 300 seconds for qemu pid (09/15/25 11:39:55) QMP Initializing to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf QMP Connecting to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf QMP connected to QEMU at 09/15/25 11:39:56 and took 0.55 seconds QMP released QEMU at 09/15/25 11:39:56 and took 0.10 seconds from connect qemu started in 0.65 seconds - qemu procces pid is 1526688 (09/15/25 11:39:56) Target IP: None Server IP: None Starting logging thread Starting thread event loop Connection request received Setting connection established event Output from runqemu: runqemu - INFO - Continuing with the following parameters: MACHINE: [qemux86-64] FSTYPE: [wic] ROOTFS: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic] SNAPSHOT: [Enabled. Changes on rootfs won't be kept after QEMU shutdown.] CONFFILE: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.qemuboot.conf] runqemu - INFO - Using preconfigured tap device tap0 runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0. runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 runqemu - INFO - Copying rootfs to /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 runqemu - INFO - Copy done in 0.08897805213928223 seconds runqemu - INFO - Using scsi drive runqemu - INFO - Running /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -drive if=none,id=hd,file=/home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685,format=raw -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd -usb -device usb-tablet -usb -device usb-kbd -cpu Skylake-Client -machine q35,i8042=off -smp 4 -enable-kvm -m 256 -serial tcp:127.0.0.1:52143,nodelay=on -serial tcp:127.0.0.1:54197,nodelay=on -pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait -nographic runqemu - INFO - Host uptime: 589155.36 Waiting at most 1000 seconds for login banner (09/15/25 11:39:56) Connection from 127.0.0.1:38154 Target didn't reach login banner in 1000 seconds (09/15/25 11:56:37) Last 25 lines of login console (0): Last 25 lines of all logging (308): c[?7l[2J[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. Check full boot log: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 Stopping logging thread Stop event received Tearing down logging thread Sending SIGTERM to runqemu Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Extra log data read: Sending SIGTERM to runqemu Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" 2025-09-15 11:56:43,470 - oe-selftest - INFO - Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/utils/commands.py", line 390, in runqemu qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, launch_cmd=launch_cmd, discard_writes=discard_writes) File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/targetcontrol.py", line 179, in start raise RuntimeError("%s - FAILED to start qemu - check the task log and the boot log" % self.pn) RuntimeError: core-image-minimal - FAILED to start qemu - check the task log and the boot log During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/selftest/cases/wic.py", line 1599, in test_grub_install_biosplusefi_qemu with runqemu(img, ssh=False, runqemuparams='%s nographic' % (runqemu_params), File "/usr/lib/python3.11/contextlib.py", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/utils/commands.py", line 396, in runqemu raise Exception(msg) Exception: core-image-minimal - FAILED to start qemu - check the task log and the boot log Failed to start QEMU - see the logs in /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimageQemurunner log output from /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemurunner_log.20250915113946: INFO: rootfs file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic INFO: Qemu log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 INFO: SSH log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/ssh_target_log.20250915113946 DEBUG: Using kvm for runqemu INFO: QMP Available for connection at /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.6v6jj4sg DEBUG: Created listening socket for qemu serial console on: 127.0.0.1:52143 DEBUG: Created listening socket for qemu serial console on: 127.0.0.1:54197 DEBUG: launchcmd=runqemu snapshot kvm nographic nographic qemux86-64 /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic tcpserial=52143:54197 bootparams=" printk.time=1" qemuparams="-pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait" DEBUG: runqemu started, pid is 1526684 DEBUG: waiting at most 300 seconds for qemu pid (09/15/25 11:39:55) DEBUG: QMP Initializing to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf DEBUG: QMP Connecting to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf INFO: QMP connected to QEMU at 09/15/25 11:39:56 and took 0.55 seconds INFO: QMP released QEMU at 09/15/25 11:39:56 and took 0.10 seconds from connect DEBUG: qemu started in 0.65 seconds - qemu procces pid is 1526688 (09/15/25 11:39:56) DEBUG: Target IP: None DEBUG: Server IP: None DEBUG: Starting logging thread DEBUG: Starting thread event loop DEBUG: Connection request received DEBUG: Setting connection established event DEBUG: Output from runqemu: runqemu - INFO - Continuing with the following parameters: MACHINE: [qemux86-64] FSTYPE: [wic] ROOTFS: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic] SNAPSHOT: [Enabled. Changes on rootfs won't be kept after QEMU shutdown.] CONFFILE: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.qemuboot.conf] runqemu - INFO - Using preconfigured tap device tap0 runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0. runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 runqemu - INFO - Copying rootfs to /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 runqemu - INFO - Copy done in 0.08897805213928223 seconds runqemu - INFO - Using scsi drive runqemu - INFO - Running /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -drive if=none,id=hd,file=/home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685,format=raw -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd -usb -device usb-tablet -usb -device usb-kbd -cpu Skylake-Client -machine q35,i8042=off -smp 4 -enable-kvm -m 256 -serial tcp:127.0.0.1:52143,nodelay=on -serial tcp:127.0.0.1:54197,nodelay=on -pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait -nographic runqemu - INFO - Host uptime: 589155.36 DEBUG: Waiting at most 1000 seconds for login banner (09/15/25 11:39:56) DEBUG: Connection from 127.0.0.1:38154 WARNING: Target didn't reach login banner in 1000 seconds (09/15/25 11:56:37) WARNING: Last 25 lines of login console (0): WARNING: Last 25 lines of all logging (308): c[?7l[2J[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. WARNING: Check full boot log: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 DEBUG: Stopping logging thread DEBUG: Stop event received DEBUG: Tearing down logging thread DEBUG: Sending SIGTERM to runqemu INFO: Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" WARNING: Extra log data read: DEBUG: Sending SIGTERM to runqemu INFO: Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Stdout: rootfs file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic Qemu log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 SSH log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/ssh_target_log.20250915113946 Using kvm for runqemu QMP Available for connection at /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.6v6jj4sg Created listening socket for qemu serial console on: 127.0.0.1:52143 Created listening socket for qemu serial console on: 127.0.0.1:54197 launchcmd=runqemu snapshot kvm nographic nographic qemux86-64 /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic tcpserial=52143:54197 bootparams=" printk.time=1" qemuparams="-pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait" runqemu started, pid is 1526684 waiting at most 300 seconds for qemu pid (09/15/25 11:39:55) QMP Initializing to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf QMP Connecting to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf QMP connected to QEMU at 09/15/25 11:39:56 and took 0.55 seconds QMP released QEMU at 09/15/25 11:39:56 and took 0.10 seconds from connect qemu started in 0.65 seconds - qemu procces pid is 1526688 (09/15/25 11:39:56) Target IP: None Server IP: None Starting logging thread Starting thread event loop Connection request received Setting connection established event Output from runqemu: runqemu - INFO - Continuing with the following parameters: MACHINE: [qemux86-64] FSTYPE: [wic] ROOTFS: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic] SNAPSHOT: [Enabled. Changes on rootfs won't be kept after QEMU shutdown.] CONFFILE: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.qemuboot.conf] runqemu - INFO - Using preconfigured tap device tap0 runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0. runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 runqemu - INFO - Copying rootfs to /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 runqemu - INFO - Copy done in 0.08897805213928223 seconds runqemu - INFO - Using scsi drive runqemu - INFO - Running /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -drive if=none,id=hd,file=/home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685,format=raw -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd -usb -device usb-tablet -usb -device usb-kbd -cpu Skylake-Client -machine q35,i8042=off -smp 4 -enable-kvm -m 256 -serial tcp:127.0.0.1:52143,nodelay=on -serial tcp:127.0.0.1:54197,nodelay=on -pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait -nographic runqemu - INFO - Host uptime: 589155.36 Waiting at most 1000 seconds for login banner (09/15/25 11:39:56) Connection from 127.0.0.1:38154 Target didn't reach login banner in 1000 seconds (09/15/25 11:56:37) Last 25 lines of login console (0): Last 25 lines of all logging (308): c[?7l[2J[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. Check full boot log: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 Stopping logging thread Stop event received Tearing down logging thread Sending SIGTERM to runqemu Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Extra log data read: Sending SIGTERM to runqemu Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Stderr: ERROR: Qemu log output from /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946: ^[c^[[?7l^[[2J^[[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. 2025-09-15 11:56:43,470 - oe-selftest - INFO - ====================================================================== 2025-09-15 11:56:43,470 - oe-selftest - INFO - ERROR: test_grub_install_biosplusefi_qemu (wic.Wic2.test_grub_install_biosplusefi_qemu) 2025-09-15 11:56:43,470 - oe-selftest - INFO - ---------------------------------------------------------------------- 2025-09-15 11:56:43,470 - oe-selftest - INFO - Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/utils/commands.py", line 390, in runqemu qemu.start(params=qemuparams, ssh=ssh, runqemuparams=runqemuparams, launch_cmd=launch_cmd, discard_writes=discard_writes) File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/targetcontrol.py", line 179, in start raise RuntimeError("%s - FAILED to start qemu - check the task log and the boot log" % self.pn) RuntimeError: core-image-minimal - FAILED to start qemu - check the task log and the boot log During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/core/decorator/__init__.py", line 35, in wrapped_f return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/selftest/cases/wic.py", line 1599, in test_grub_install_biosplusefi_qemu with runqemu(img, ssh=False, runqemuparams='%s nographic' % (runqemu_params), File "/usr/lib/python3.11/contextlib.py", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File "/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/meta/lib/oeqa/utils/commands.py", line 396, in runqemu raise Exception(msg) Exception: core-image-minimal - FAILED to start qemu - check the task log and the boot log Failed to start QEMU - see the logs in /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimageQemurunner log output from /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemurunner_log.20250915113946: INFO: rootfs file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic INFO: Qemu log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 INFO: SSH log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/ssh_target_log.20250915113946 DEBUG: Using kvm for runqemu INFO: QMP Available for connection at /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.6v6jj4sg DEBUG: Created listening socket for qemu serial console on: 127.0.0.1:52143 DEBUG: Created listening socket for qemu serial console on: 127.0.0.1:54197 DEBUG: launchcmd=runqemu snapshot kvm nographic nographic qemux86-64 /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic tcpserial=52143:54197 bootparams=" printk.time=1" qemuparams="-pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait" DEBUG: runqemu started, pid is 1526684 DEBUG: waiting at most 300 seconds for qemu pid (09/15/25 11:39:55) DEBUG: QMP Initializing to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf DEBUG: QMP Connecting to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf INFO: QMP connected to QEMU at 09/15/25 11:39:56 and took 0.55 seconds INFO: QMP released QEMU at 09/15/25 11:39:56 and took 0.10 seconds from connect DEBUG: qemu started in 0.65 seconds - qemu procces pid is 1526688 (09/15/25 11:39:56) DEBUG: Target IP: None DEBUG: Server IP: None DEBUG: Starting logging thread DEBUG: Starting thread event loop DEBUG: Connection request received DEBUG: Setting connection established event DEBUG: Output from runqemu: runqemu - INFO - Continuing with the following parameters: MACHINE: [qemux86-64] FSTYPE: [wic] ROOTFS: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic] SNAPSHOT: [Enabled. Changes on rootfs won't be kept after QEMU shutdown.] CONFFILE: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.qemuboot.conf] runqemu - INFO - Using preconfigured tap device tap0 runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0. runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 runqemu - INFO - Copying rootfs to /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 runqemu - INFO - Copy done in 0.08897805213928223 seconds runqemu - INFO - Using scsi drive runqemu - INFO - Running /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -drive if=none,id=hd,file=/home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685,format=raw -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd -usb -device usb-tablet -usb -device usb-kbd -cpu Skylake-Client -machine q35,i8042=off -smp 4 -enable-kvm -m 256 -serial tcp:127.0.0.1:52143,nodelay=on -serial tcp:127.0.0.1:54197,nodelay=on -pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait -nographic runqemu - INFO - Host uptime: 589155.36 DEBUG: Waiting at most 1000 seconds for login banner (09/15/25 11:39:56) DEBUG: Connection from 127.0.0.1:38154 WARNING: Target didn't reach login banner in 1000 seconds (09/15/25 11:56:37) WARNING: Last 25 lines of login console (0): WARNING: Last 25 lines of all logging (308): c[?7l[2J[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. WARNING: Check full boot log: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 DEBUG: Stopping logging thread DEBUG: Stop event received DEBUG: Tearing down logging thread DEBUG: Sending SIGTERM to runqemu INFO: Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" WARNING: Extra log data read: DEBUG: Sending SIGTERM to runqemu INFO: Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Stdout: rootfs file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic Qemu log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 SSH log file: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/ssh_target_log.20250915113946 Using kvm for runqemu QMP Available for connection at /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.6v6jj4sg Created listening socket for qemu serial console on: 127.0.0.1:52143 Created listening socket for qemu serial console on: 127.0.0.1:54197 launchcmd=runqemu snapshot kvm nographic nographic qemux86-64 /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic tcpserial=52143:54197 bootparams=" printk.time=1" qemuparams="-pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait" runqemu started, pid is 1526684 waiting at most 300 seconds for qemu pid (09/15/25 11:39:55) QMP Initializing to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf QMP Connecting to /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/.fhz3nypf QMP connected to QEMU at 09/15/25 11:39:56 and took 0.55 seconds QMP released QEMU at 09/15/25 11:39:56 and took 0.10 seconds from connect qemu started in 0.65 seconds - qemu procces pid is 1526688 (09/15/25 11:39:56) Target IP: None Server IP: None Starting logging thread Starting thread event loop Connection request received Setting connection established event Output from runqemu: runqemu - INFO - Continuing with the following parameters: MACHINE: [qemux86-64] FSTYPE: [wic] ROOTFS: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.wic] SNAPSHOT: [Enabled. Changes on rootfs won't be kept after QEMU shutdown.] CONFFILE: [/srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.rootfs.qemuboot.conf] runqemu - INFO - Using preconfigured tap device tap0 runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0. runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0::eth0:off:8.8.8.8 net.ifnames=0 runqemu - INFO - Copying rootfs to /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 runqemu - INFO - Copy done in 0.08897805213928223 seconds runqemu - INFO - Using scsi drive runqemu - INFO - Running /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/x86_64-linux/qemu-helper-native/1.0/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -drive if=none,id=hd,file=/home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685,format=raw -device virtio-scsi-pci,id=scsi -device scsi-hd,drive=hd -usb -device usb-tablet -usb -device usb-kbd -cpu Skylake-Client -machine q35,i8042=off -smp 4 -enable-kvm -m 256 -serial tcp:127.0.0.1:52143,nodelay=on -serial tcp:127.0.0.1:54197,nodelay=on -pidfile /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/pidfile_1478605 -S -qmp unix:./.fhz3nypf,server,wait -qmp unix:./.6v6jj4sg,server,nowait -nographic runqemu - INFO - Host uptime: 589155.36 Waiting at most 1000 seconds for login banner (09/15/25 11:39:56) Connection from 127.0.0.1:38154 Target didn't reach login banner in 1000 seconds (09/15/25 11:56:37) Last 25 lines of login console (0): Last 25 lines of all logging (308): c[?7l[2J[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. Check full boot log: /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946 Stopping logging thread Stop event received Tearing down logging thread Sending SIGTERM to runqemu Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Extra log data read: Sending SIGTERM to runqemu Output from runqemu: runqemu - INFO - Received signal: 15 runqemu - INFO - Cleaning up runqemu - INFO - Host uptime: 590161.89 runqemu - INFO - Removing /home/pokybuild/tmp/core-image-minimal-qemux86-64.rootfs.wic.1526685 tput: unknown terminal "xterm-kitty" Stderr: ERROR: Qemu log output from /srv/pokybuild/yocto-worker/oe-selftest-debian-mathieu-2025-09-15/build/build-renamed-st/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/testimage/qemu_boot_log.20250915113946: ^[c^[[?7l^[[2J^[[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)... Booting from Hard Disk.. ---------------------------------------------------------------------- 2025-09-15 11:56:43,471 - oe-selftest - INFO - Ran 1 test in 1126.704s 2025-09-15 11:56:43,471 - oe-selftest - INFO - FAILED 2025-09-15 11:56:43,471 - oe-selftest - INFO - (errors=1) 2025-09-15 11:56:48,377 - oe-selftest - INFO - RESULTS: 2025-09-15 11:56:48,377 - oe-selftest - INFO - RESULTS - wic.Wic2.test_grub_install_biosplusefi_qemu: ERROR (1126.58s) 2025-09-15 11:56:48,385 - oe-selftest - INFO - SUMMARY: 2025-09-15 11:56:48,385 - oe-selftest - INFO - oe-selftest () - Ran 1 test in 1126.705s 2025-09-15 11:56:48,385 - oe-selftest - INFO - oe-selftest - FAIL - Required tests failed (successes=0, skipped=0, failures=0, errors=1) [-- Attachment #3: qemu_boot_log.20250915113946 --] [-- Type: text/plain, Size: 312 bytes --] ^[c^[[?7l^[[2J^[[0mSeaBIOS (version rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org) iPXE (http://ipxe.org) 00:02.0 CA00 PCI2.10 PnP PMM+0EFC6560+0EF26560 CA00 Press Ctrl-B to configure iPXE (PCI 00:02.0)...\r Booting from Hard Disk.. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-09-15 12:18 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-09-05 16:41 [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 2/8] bootimg_efi: " Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 3/8] bootimg_efi: copy grub modules Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 4/8] bootimg_pcbios: update default boot timeout to zero Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 5/8] bootimg_biosplusefi: add grub only examples Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 6/8] grub-efi: support custom embedded grub configs Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 7/8] oe-selftest[wic]: add test_grub_install_biosplusefi Vincent Davis Jr 2025-09-05 16:41 ` [OE-core][PATCH v3 8/8] oe-selftest[wic]: add test_grub_install_biosplusefi_qemu Vincent Davis Jr 2025-09-07 14:02 ` [OE-core][PATCH v3 1/8] bootimg_pcbios: support grub hybrid boot Mathieu Dubois-Briand 2025-09-07 15:47 ` Vincent Davis 2025-09-08 12:25 ` Mathieu Dubois-Briand 2025-09-13 4:29 ` [PATCH " Vincent Davis Jr 2025-09-15 12:17 ` [OE-core] " Mathieu Dubois-Briand
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.