[PATCH] test: use virt-make-fs to build image

AKASHI Takahiro takahiro.akashi at linaro.org
Wed Jul 15 06:19:20 CEST 2020


Heinrich,

On Tue, Jul 14, 2020 at 01:18:04AM +0200, Heinrich Schuchardt wrote:
> Am 14. Juli 2020 01:02:07 MESZ schrieb AKASHI Takahiro <takahiro.akashi at linaro.org>:
> >Heinrich,
> >
> >On Tue, Jul 14, 2020 at 12:15:34AM +0200, Heinrich Schuchardt wrote:
> >> Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
> >
> >Have you read this?
> >https://lists.denx.de/pipermail/u-boot/2020-July/419345.html
> >
> >-Takahiro Akashi
> 
> Just put chmod 644 /boot/vmlinu* into your update-initramfs hook directory /etc/initramfs-tools and complain to Ubuntu maintainers about them breaking their own packages.

If this solves all the issues, that's fine.
But if you require this extra step to run the test, you should
describe it explicitly somewhere. Otherwise, people can get confused.

I believe that it would be still useful to have a fall-back
method of "sudo" version.

> Hook scripts are described here: http://manpages.ubuntu.com/manpages/xenial/man8/initramfs-tools.8.html
> 
> >
> >> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> >> ---
> >>  test/py/tests/test_efi_secboot/conftest.py | 27
> >++++------------------
> >>  test/py/tests/test_efi_secboot/defs.py     |  7 ------
> >>  2 files changed, 4 insertions(+), 30 deletions(-)
> >> 
> >> diff --git a/test/py/tests/test_efi_secboot/conftest.py
> >b/test/py/tests/test_efi_secboot/conftest.py
> >> index 71ef723e59..c6709700a8 100644
> >> --- a/test/py/tests/test_efi_secboot/conftest.py
> >> +++ b/test/py/tests/test_efi_secboot/conftest.py
> >> @@ -38,34 +38,15 @@ def efi_boot_env(request, u_boot_config):
> >> 
> >>      image_path = u_boot_config.persistent_data_dir
> >>      image_path = image_path + '/' + EFI_SECBOOT_IMAGE_NAME
> >> -    image_size = EFI_SECBOOT_IMAGE_SIZE
> >> -    part_size = EFI_SECBOOT_PART_SIZE
> >> -    fs_type = EFI_SECBOOT_FS_TYPE
> >> 
> >>      if HELLO_PATH == '':
> >>          HELLO_PATH = u_boot_config.build_dir +
> >'/lib/efi_loader/helloworld.efi'
> >> 
> >>      try:
> >> -        mnt_point = u_boot_config.persistent_data_dir +
> >'/mnt_efisecure'
> >> +        mnt_point = u_boot_config.build_dir + '/mnt_efisecure'

Please use persistent_data_dir here as a work directory.
'build_dir' is for U-Boot build.

-Takahiro Akashi


> >> +        check_call('rm -rf {}'.format(mnt_point), shell=True)
> >>          check_call('mkdir -p {}'.format(mnt_point), shell=True)
> >> 
> >> -        # create a disk/partition
> >> -        check_call('dd if=/dev/zero of=%s bs=1MiB count=%d'
> >> -                   % (image_path, image_size), shell=True)
> >> -        check_call('sgdisk %s -n 1:0:+%dMiB'
> >> -                   % (image_path, part_size), shell=True)
> >> -        # create a file system
> >> -        check_call('dd if=/dev/zero of=%s.tmp bs=1MiB count=%d'
> >> -                   % (image_path, part_size), shell=True)
> >> -        check_call('mkfs -t %s %s.tmp' % (fs_type, image_path),
> >shell=True)
> >> -        check_call('dd if=%s.tmp of=%s bs=1MiB seek=1 count=%d
> >conv=notrunc'
> >> -                   % (image_path, image_path, 1), shell=True)
> >> -        check_call('rm %s.tmp' % image_path, shell=True)
> >> -        loop_dev = check_output('sudo losetup -o 1MiB --sizelimit
> >%dMiB --show -f %s | tr -d "\n"'
> >> -                                % (part_size, image_path),
> >shell=True).decode()
> >> -        check_output('sudo mount -t %s -o umask=000 %s %s'
> >> -                     % (fs_type, loop_dev, mnt_point), shell=True)
> >> -
> >>          # suffix
> >>          # *.key: RSA private key in PEM
> >>          # *.crt: X509 certificate (self-signed) in PEM
> >> @@ -145,8 +126,8 @@ def efi_boot_env(request, u_boot_config):
> >>                     % (mnt_point, EFITOOLS_PATH),
> >>                     shell=True)
> >> 
> >> -        check_call('sudo umount %s' % loop_dev, shell=True)
> >> -        check_call('sudo losetup -d %s' % loop_dev, shell=True)
> >> +        check_call('virt-make-fs --partition=gpt --size=+1M
> >--type=vfat {} {}'.format(mnt_point, image_path), shell=True)
> >> +        check_call('rm -rf {}'.format(mnt_point), shell=True)
> >> 
> >>      except CalledProcessError as exception:
> >>          pytest.skip('Setup failed: %s' % exception.cmd)
> >> diff --git a/test/py/tests/test_efi_secboot/defs.py
> >b/test/py/tests/test_efi_secboot/defs.py
> >> index 099f453979..ba6b9f391e 100644
> >> --- a/test/py/tests/test_efi_secboot/defs.py
> >> +++ b/test/py/tests/test_efi_secboot/defs.py
> >> @@ -3,13 +3,6 @@
> >>  # Disk image name
> >>  EFI_SECBOOT_IMAGE_NAME = 'test_efi_secboot.img'
> >> 
> >> -# Size in MiB
> >> -EFI_SECBOOT_IMAGE_SIZE = 16
> >> -EFI_SECBOOT_PART_SIZE = 8
> >> -
> >> -# Partition file system type
> >> -EFI_SECBOOT_FS_TYPE = 'vfat'
> >> -
> >>  # Owner guid
> >>  GUID = '11111111-2222-3333-4444-123456789abc'
> >> 
> >> --
> >> 2.27.0
> >> 
> 


More information about the U-Boot mailing list