> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
> Sent: Tuesday, August 04, 2015 2:01 PM
> 
> On 4 August 2015 at 10:07, Sharma Bhupesh <bhupesh.sha...@freescale.com>
> wrote:
> > I have a related question. The EFI stub documentation (see [1]), seems
> > to suggest that we have the support to boot the kernel Image, DTB and
> > Rootfs when supplied as separate images to the EFI stub.
> >
> > However, other Bootloaders like u-boot are supporting newer FIT image
> > format (see [2]), where these 3 images can be bundled into one and
> > passed to the bootloader for verification (both crc as well as
> cryptographic checks) and loading. This is supported on both x86 and ARM
> platforms.
> >
> > At Freescale, we have a internal re-worked version of the ARM Bds
> > Linux Loader, where we can parse a FIT format Linux image and load
> Linux using the same on ARM64 platforms.
> >
> 
> OK, first of all, I should point out that the ARM BDS does not adhere to
> the UEFI spec regarding booting removable media. This means that, as long
> as you use the ARM BDS, you will not be able to run OS installers that
> have their GRUB or kernel image in /EFI/BOOT/BOOTAA64.EFI, which is a
> default path defined by the spec.

Agreed.
 
> > With the EFI_STUB becoming more or less mandatory and the leagacy ARM
> > Bds Linux Loader being deprecated, are there any plans to provide means
> to pass FIT format images via EFI_STUB to the ARM64 Linux kernel?
> >
> 
> No. FIT images are a U-Boot construct. The recommended way under UEFI is
> to install the device tree as a FDT configuration table in the firmware.
> Look at FdtPlatformDxe for more info. The initrd can be loaded by the EFI
> stub, by passing the initrd= option.
> 
> The recommended way of doing authentication of bootable images is to use
> UEFI Secure Boot. DTB authentication is implicit if it is part of the
> UEFI image itself. How to do initrd authentication is undefined.

initrd (Rootfs) is probably the easiest place to introduce a malicious 
application
in, which can easily overwrite the text area, thus causing the core to run a 
Trojan.

The normal secure chain of boot, requires that each component verifies the next 
component
it launches. FIT format seems to plug this gap.

Can you point me to some documentation on UEFI secure boot and how it works on 
the
ARM64 platforms - does it internally use and program the ARM TrustZone 
components
like the TZASC and TZPC to partition the System RAM, etc into appropriate secure
and non-secure partitions and the images cryptographically verify the next 
stage image.
A typical flow most OEMs use is:

BootROM -> Arm Trusted Firmware -> UEFI -> Linux -> Initrd

The current SEC stage code for ARM64 platforms supported in EDK2 seem to be
programming the TZASC and TZPC entities, but I cannot see any secure 
chain-of-trust being
established for the next stage images there.

Regards,
Bhupesh

> 
> Regards,
> Ard.
> 
> >> -----Original Message-----
> >> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf
> >> Of Ard Biesheuvel
> >> Sent: Tuesday, August 04, 2015 1:27 PM
> >> To: edk2-devel@lists.01.org; leif.lindh...@linaro.org;
> >> ler...@redhat.com
> >> Cc: ryan.har...@linaro.org; Ard Biesheuvel
> >> Subject: [edk2] [PATCH] ArmVirtPkg: align ARM BDS build with
> >> LinuxLoader changes
> >>
> >> LinuxLoader has been split off from the ARM BDS into a separate EFI
> >> application. Because we never included this application into the
> >> ArmVirtPkg platforms, its ARM BDS builds have effectively been broken
> >> ever since that change was merged.
> >>
> >> Let's fix the situation by:
> >> - Disabling LinuxLoader support for AARCH64 builds: arm64 Linux
> kernels
> >>   have UEFI stub support enabled by default, and the LinuxLoader code
> for
> >>   booting arm64 Linux kernels is buggy. Note that this does not
> disable
> >>   the ARM BDS text menu, it just removes the ability to boot bare
> Linux
> >>   kernels.
> >> - Adding the LinuxLoader EFI application to the ARM builds.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.0
> >> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> >> ---
> >>  ArmVirtPkg/ArmVirt.dsc.inc | 9 ++++++---  ArmVirtPkg/ArmVirtQemu.dsc
> >> | 5
> >> +++++  ArmVirtPkg/ArmVirtQemu.fdf | 3 +++
> >>  3 files changed, 14 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc
> >> index
> >> 2e2708d1c281..735f9edc58d6 100644
> >> --- a/ArmVirtPkg/ArmVirt.dsc.inc
> >> +++ b/ArmVirtPkg/ArmVirt.dsc.inc
> >> @@ -206,6 +206,9 @@ [LibraryClasses.common.UEFI_APPLICATION]
> >>
> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceL
> >> PerformanceLib|ib.in
> >> f
> >>
> >> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemory
> >> MemoryAllocationLib|Alloc
> >> ationLib.inf
> >>    HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
> >> +  ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
> >> +
> >> + FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.in
> >> + f  SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> >>
> >>  [LibraryClasses.common.UEFI_DRIVER]
> >>
> >> ReportStatusCodeLib|IntelFrameworkModulePkg/Library/DxeReportStatusCo
> >> ReportStatusCodeLib|deLib
> >> Framework/DxeReportStatusCodeLib.inf
> >> @@ -277,6 +280,9 @@ [PcdsFeatureFlag.common]
> >>
> >>    gEfiMdeModulePkgTokenSpaceGuid.PcdTurnOffUsbLegacySupport|TRUE
> >>
> >> +[PcdsFeatureFlag.AARCH64]
> >> +  gArmPlatformTokenSpaceGuid.PcdBdsLinuxSupport|FALSE
> >> +
> >>  [PcdsFixedAtBuild.common]
> >>    gArmPlatformTokenSpaceGuid.PcdFirmwareVendor|"ARM Virtualization
> >> Platform"
> >>
> >> @@ -398,9 +404,6 @@ [Components.common]
> >>
> >> NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1C
> >> NULL|omman
> >> dsLib.inf
> >>
> >> NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1C
> >> NULL|omman
> >> dsLib.inf
> >>
> >> HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandlePars
> >> HandleParsingLib|ingLi
> >> b.inf
> >> -      ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
> >> -
> >> FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
> >> -      SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> >>        PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
> >>
> >> BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfg
> >> BcfgCommandLib|Comma
> >> ndLib.inf
> >>
> >> diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
> >> index
> >> a2a82a4dba8c..92d55c770f55 100644
> >> --- a/ArmVirtPkg/ArmVirtQemu.dsc
> >> +++ b/ArmVirtPkg/ArmVirtQemu.dsc
> >> @@ -381,3 +381,8 @@ [Components.common]
> >>    MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
> >>    MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
> >>    MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
> >> +
> >> +[Components.ARM]
> >> +!if $(INTEL_BDS) == FALSE
> >> +  ArmPkg/Application/LinuxLoader/LinuxLoader.inf
> >> +!endif
> >> diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf
> >> index 3c0487cd95b6..47f9b095b3af 100644
> >> --- a/ArmVirtPkg/ArmVirtQemu.fdf
> >> +++ b/ArmVirtPkg/ArmVirtQemu.fdf
> >> @@ -177,6 +177,9 @@ [FV.FvMain]
> >>    INF IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
> >>  !else
> >>    INF ArmPlatformPkg/Bds/Bds.inf
> >> +!if $(ARCH) == ARM
> >> +  INF ArmPkg/Application/LinuxLoader/LinuxLoader.inf
> >> +!endif
> >>  !endif
> >>
> >>    #
> >> --
> >> 1.9.1
> >>
> >> _______________________________________________
> >> edk2-devel mailing list
> >> edk2-devel@lists.01.org
> >> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to