mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
efidebug: add multiple device path instances on Boot####
The UEFI spec allows a packed array of UEFI device paths in the FilePathList[] of an EFI_LOAD_OPTION. The first file path must describe the loaded image but the rest are OS specific. Previous patches parse the device path and try to use the second member of the array as an initrd. So let's modify efidebug slightly and install the second file described in the command line as the initrd device path. Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
53f6a5aa86
commit
cbea241e93
7 changed files with 177 additions and 58 deletions
|
@ -39,7 +39,7 @@ class TestEfiCapsuleFirmwareFit(object):
|
|||
with u_boot_console.log.section('Test Case 1-a, before reboot'):
|
||||
output = u_boot_console.run_command_list([
|
||||
'host bind 0 %s' % disk_img,
|
||||
'efidebug boot add 1 TEST host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot order 1',
|
||||
'env set -e OsIndications',
|
||||
'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
|
||||
|
@ -114,7 +114,7 @@ class TestEfiCapsuleFirmwareFit(object):
|
|||
with u_boot_console.log.section('Test Case 2-a, before reboot'):
|
||||
output = u_boot_console.run_command_list([
|
||||
'host bind 0 %s' % disk_img,
|
||||
'efidebug boot add 1 TEST host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot order 1',
|
||||
'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
|
||||
'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
|
||||
|
@ -188,7 +188,7 @@ class TestEfiCapsuleFirmwareFit(object):
|
|||
with u_boot_console.log.section('Test Case 3-a, before reboot'):
|
||||
output = u_boot_console.run_command_list([
|
||||
'host bind 0 %s' % disk_img,
|
||||
'efidebug boot add 1 TEST host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 TEST host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot order 1',
|
||||
'env set -e -nv -bs -rt OsIndications =0x0000000000000004',
|
||||
'env set dfu_alt_info "sf 0:0=u-boot-bin raw 0x100000 0x50000;u-boot-env raw 0x150000 0x200000"',
|
||||
|
|
|
@ -28,7 +28,7 @@ class TestEfiSignedImage(object):
|
|||
# Test Case 1a, run signed image if no PK
|
||||
output = u_boot_console.run_command_list([
|
||||
'host bind 0 %s' % disk_img,
|
||||
'efidebug boot add 1 HELLO1 host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot next 1',
|
||||
'bootefi bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
@ -36,7 +36,7 @@ class TestEfiSignedImage(object):
|
|||
with u_boot_console.log.section('Test Case 1b'):
|
||||
# Test Case 1b, run unsigned image if no PK
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 2 HELLO2 host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot next 2',
|
||||
'bootefi bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
@ -58,13 +58,13 @@ class TestEfiSignedImage(object):
|
|||
'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK'])
|
||||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO1 host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert('\'HELLO1\' failed' in ''.join(output))
|
||||
assert('efi_start_image() returned: 26' in ''.join(output))
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 2 HELLO2 host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot next 2',
|
||||
'efidebug test bootmgr'])
|
||||
assert '\'HELLO2\' failed' in ''.join(output)
|
||||
|
@ -104,7 +104,7 @@ class TestEfiSignedImage(object):
|
|||
'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK'])
|
||||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert '\'HELLO\' failed' in ''.join(output)
|
||||
|
@ -142,7 +142,7 @@ class TestEfiSignedImage(object):
|
|||
'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK'])
|
||||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert '\'HELLO\' failed' in ''.join(output)
|
||||
|
@ -169,7 +169,7 @@ class TestEfiSignedImage(object):
|
|||
'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK'])
|
||||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi.signed_2sigs ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
@ -227,7 +227,7 @@ class TestEfiSignedImage(object):
|
|||
'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK'])
|
||||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed ""',
|
||||
'efidebug boot next 1',
|
||||
'bootefi bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
|
|
@ -39,7 +39,7 @@ class TestEfiSignedImageIntca(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO_a host 0:1 /helloworld.efi.signed_a ""',
|
||||
'efidebug boot add -b 1 HELLO_a host 0:1 /helloworld.efi.signed_a ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert '\'HELLO_a\' failed' in ''.join(output)
|
||||
|
@ -48,7 +48,7 @@ class TestEfiSignedImageIntca(object):
|
|||
with u_boot_console.log.section('Test Case 1b'):
|
||||
# Test Case 1b, signed and authenticated by root CA
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 2 HELLO_ab host 0:1 /helloworld.efi.signed_ab ""',
|
||||
'efidebug boot add -b 2 HELLO_ab host 0:1 /helloworld.efi.signed_ab ""',
|
||||
'efidebug boot next 2',
|
||||
'bootefi bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
@ -70,7 +70,7 @@ class TestEfiSignedImageIntca(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc ""',
|
||||
'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert '\'HELLO_abc\' failed' in ''.join(output)
|
||||
|
@ -116,7 +116,7 @@ class TestEfiSignedImageIntca(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc ""',
|
||||
'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc ""',
|
||||
'efidebug boot next 1',
|
||||
'efidebug test bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
|
|
@ -35,7 +35,7 @@ class TestEfiUnsignedImage(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot next 1',
|
||||
'bootefi bootmgr'])
|
||||
assert '\'HELLO\' failed' in ''.join(output)
|
||||
|
@ -64,7 +64,7 @@ class TestEfiUnsignedImage(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot next 1',
|
||||
'bootefi bootmgr'])
|
||||
assert 'Hello, world!' in ''.join(output)
|
||||
|
@ -88,7 +88,7 @@ class TestEfiUnsignedImage(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot next 1',
|
||||
'bootefi bootmgr'])
|
||||
assert '\'HELLO\' failed' in ''.join(output)
|
||||
|
@ -106,7 +106,7 @@ class TestEfiUnsignedImage(object):
|
|||
assert 'Failed to set EFI variable' not in ''.join(output)
|
||||
|
||||
output = u_boot_console.run_command_list([
|
||||
'efidebug boot add 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi ""',
|
||||
'efidebug boot next 1',
|
||||
'bootefi bootmgr'])
|
||||
assert '\'HELLO\' failed' in ''.join(output)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue