Message ID | 20250621162642.804605-5-adrian.freihofer@siemens.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | FIT image beaglebone-yocto (poky part) | expand |
On Sat Jun 21, 2025 at 6:26 PM CEST, Adrian Freihofer via lists.yoctoproject.org wrote: > From: Adrian Freihofer <adrian.freihofer@siemens.com> > > The kernel configuration of the beaglebone-yocto MACHINE supports booting > on real hardware as well as in Qemu. Add an oe-selftest which tests that > booting in Qemu is possible even when the kernel is a FIT image kernel > with a RAM disk. > Since Qemu does not support FIT images, Qemu boots the zImage in direct > kernel mode. This works with or without initramfs. > > Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> > --- > .../selftest/cases/beaglebone_yocto_qemu.py | 39 +++++++++++++++++++ > 1 file changed, 39 insertions(+) > create mode 100644 meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py > > diff --git a/meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py b/meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py > new file mode 100644 > index 00000000000..aeae431fd2c > --- /dev/null > +++ b/meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py > @@ -0,0 +1,39 @@ > + > +from oeqa.selftest.case import OESelftestTestCase > +from oeqa.utils.commands import runCmd, bitbake, runqemu, runqemu_check_taps > +from oeqa.core.decorator import OETestTag > + > + > +class BeagleboneYoctoQemuTests(OESelftestTestCase): > + > + @OETestTag("runqemu") > + def test_fit_image_initramfs_qemu(self): > + """ > + Summary: Verify building an image including a FIT image kernel and booting in Qemu works. > + Expected: 1. core-image-minimal including a FIT image in /boot gets built > + 2. Qemu can boot the zImage and initramfs with direct kernel boot > + since Qemu does not support FIT images > + """ > + > + config = """ > +DISTRO = "poky" > +MACHINE = "beaglebone-yocto" > +INITRAMFS_IMAGE = "core-image-initramfs-boot" > +FIT_IMAGE_KERNEL = "1" > +# Do not override kernel command line network configuration > +BAD_RECOMMENDATIONS:append:pn-oe-selftest-image = " init-ifupdown" > +""" > + self.write_config(config) > + if not runqemu_check_taps(): > + self.skipTest('No tap devices found - you must set up tap devices with scripts/runqemu-gen-tapdevs before running this test') > + testimage = "oe-selftest-image" > + bitbake(testimage) > + # Boot the image > + with runqemu(testimage) as qemu: > + # Run a test command to see if it was installed properly > + sshargs = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' > + result = runCmd('ssh %s root@%s %s' % (sshargs, qemu.ip, "ls -1 /boot")) > + self.logger.debug("ls -1 /boot: %s" % str(result.output)) > + boot_files = result.output.splitlines() > + self.assertIn("fitImage", boot_files) > + self.assertNotIn("zImage", boot_files) Hi Adrian, I think this is causing the following issue on the autobuilder: ERROR: Nothing RPROVIDES 'ssh-pregen-hostkeys' (but /srv/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-730917/meta-selftest/recipes-test/images/oe-selftest-image.bb RDEPENDS on or otherwise requires it) ssh-pregen-hostkeys was skipped: incompatible with machine beaglebone-yocto (not in COMPATIBLE_MACHINE) Can you look into it? Thanks, Antonin
diff --git a/meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py b/meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py new file mode 100644 index 00000000000..aeae431fd2c --- /dev/null +++ b/meta-yocto-bsp/lib/oeqa/selftest/cases/beaglebone_yocto_qemu.py @@ -0,0 +1,39 @@ + +from oeqa.selftest.case import OESelftestTestCase +from oeqa.utils.commands import runCmd, bitbake, runqemu, runqemu_check_taps +from oeqa.core.decorator import OETestTag + + +class BeagleboneYoctoQemuTests(OESelftestTestCase): + + @OETestTag("runqemu") + def test_fit_image_initramfs_qemu(self): + """ + Summary: Verify building an image including a FIT image kernel and booting in Qemu works. + Expected: 1. core-image-minimal including a FIT image in /boot gets built + 2. Qemu can boot the zImage and initramfs with direct kernel boot + since Qemu does not support FIT images + """ + + config = """ +DISTRO = "poky" +MACHINE = "beaglebone-yocto" +INITRAMFS_IMAGE = "core-image-initramfs-boot" +FIT_IMAGE_KERNEL = "1" +# Do not override kernel command line network configuration +BAD_RECOMMENDATIONS:append:pn-oe-selftest-image = " init-ifupdown" +""" + self.write_config(config) + if not runqemu_check_taps(): + self.skipTest('No tap devices found - you must set up tap devices with scripts/runqemu-gen-tapdevs before running this test') + testimage = "oe-selftest-image" + bitbake(testimage) + # Boot the image + with runqemu(testimage) as qemu: + # Run a test command to see if it was installed properly + sshargs = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' + result = runCmd('ssh %s root@%s %s' % (sshargs, qemu.ip, "ls -1 /boot")) + self.logger.debug("ls -1 /boot: %s" % str(result.output)) + boot_files = result.output.splitlines() + self.assertIn("fitImage", boot_files) + self.assertNotIn("zImage", boot_files)