|
@@ -1,13 +1,16 @@
|
|
|
The EFI Boot Stub
|
|
|
---------------------------
|
|
|
|
|
|
-On the x86 platform, a bzImage can masquerade as a PE/COFF image,
|
|
|
-thereby convincing EFI firmware loaders to load it as an EFI
|
|
|
-executable. The code that modifies the bzImage header, along with the
|
|
|
-EFI-specific entry point that the firmware loader jumps to are
|
|
|
-collectively known as the "EFI boot stub", and live in
|
|
|
+On the x86 and ARM platforms, a kernel zImage/bzImage can masquerade
|
|
|
+as a PE/COFF image, thereby convincing EFI firmware loaders to load
|
|
|
+it as an EFI executable. The code that modifies the bzImage header,
|
|
|
+along with the EFI-specific entry point that the firmware loader
|
|
|
+jumps to are collectively known as the "EFI boot stub", and live in
|
|
|
arch/x86/boot/header.S and arch/x86/boot/compressed/eboot.c,
|
|
|
-respectively.
|
|
|
+respectively. For ARM the EFI stub is implemented in
|
|
|
+arch/arm/boot/compressed/efi-header.S and
|
|
|
+arch/arm/boot/compressed/efi-stub.c. EFI stub code that is shared
|
|
|
+between architectures is in drivers/firmware/efi/efi-stub-helper.c.
|
|
|
|
|
|
By using the EFI boot stub it's possible to boot a Linux kernel
|
|
|
without the use of a conventional EFI boot loader, such as grub or
|
|
@@ -23,7 +26,9 @@ The bzImage located in arch/x86/boot/bzImage must be copied to the EFI
|
|
|
System Partition (ESP) and renamed with the extension ".efi". Without
|
|
|
the extension the EFI firmware loader will refuse to execute it. It's
|
|
|
not possible to execute bzImage.efi from the usual Linux file systems
|
|
|
-because EFI firmware doesn't have support for them.
|
|
|
+because EFI firmware doesn't have support for them. For ARM the
|
|
|
+arch/arm/boot/zImage should be copied to the system partition, and it
|
|
|
+may not need to be renamed.
|
|
|
|
|
|
|
|
|
**** Passing kernel parameters from the EFI shell
|
|
@@ -63,3 +68,11 @@ Notice how bzImage.efi can be specified with a relative path. That's
|
|
|
because the image we're executing is interpreted by the EFI shell,
|
|
|
which understands relative paths, whereas the rest of the command line
|
|
|
is passed to bzImage.efi.
|
|
|
+
|
|
|
+
|
|
|
+**** The "dtb=" option
|
|
|
+
|
|
|
+For the ARM architecture, we also need to be able to provide a device
|
|
|
+tree to the kernel. This is done with the "dtb=" command line option,
|
|
|
+and is processed in the same manner as the "initrd=" option that is
|
|
|
+described above.
|