[arch-releng] [RFCv4] [PATCH] [configs/releng] Add UEFI boot support via Linux >= 3.3 EFI boot stub on x86_64
Makes an efiboot.img (FAT16) for "El Torito" (additional).
Under an EFI-system, implies that this .ISO works only if is used
as "CD-ROM/DVD-ROM" not in ISO-HYBRID-MBR mode.
If you want, an EFI-ready USB-key, just unpack this "<ISO>/EFI/efiboot.img" (FAT16) to
"<USB-key-FAT-formatted>/EFI" then copy "<ISO>/arch" and setup the filesystem label.
An aditional EFI shell is provided with an startup script for automatic booting
until EFI_STUB supports "linux.conf" to pass boot parms to kernel.
Anyway I think that is a good idea to keep this shell, so can customize boot parms,
or for doing other tasks on systems without an EFI-shell.
RFCv1: Initial efiboot.img build with vmlinuz.efi (Linux with EFI_STUB enabled)
and archiso.img (initramfs).
RFCv2: Use an startup.nsh with EFI-Shell 2.0 (generated from build.sh) for automatic boot.
RFCv3: Use and older EFI-Shell 1.0 instead of 2.0, since not all UEFI-systems
are compatible with 2.3+ specs.
RFCv4: The script "startup.nsh" improved by Keshav P R, using a for-loop
(see notes below from original commit), now that has more than 1-line,
I moved it to an independent file and is parsed by build.sh.
----
About startup.nsh:
Author: Keshav P R
On 04/05/2012 03:38 PM, Gerardo Exequiel Pozzi wrote:
--- /dev/null +++ b/configs/releng/efiboot/EFI/boot/startup.nsh @@ -0,0 +1,10 @@ +echo -off + +for %m in (0 9) + if exist fs%m:\EFI\archiso\vmlinuz.efi then + fs%m: + cd fs%m:\EFI\archiso + echo "Launching Arch Linux ISO Kernel fs%m:\EFI\archiso\vmlinuz.efi" + vmlinuz.efi archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% initrd=\EFI\archiso\archiso.img + endif +endfor
oops, "in" should be "run" for using (0 9) -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
On 04/05/2012 07:01 PM, Gerardo Exequiel Pozzi wrote:
On 04/05/2012 03:38 PM, Gerardo Exequiel Pozzi wrote:
--- /dev/null +++ b/configs/releng/efiboot/EFI/boot/startup.nsh @@ -0,0 +1,10 @@ +echo -off + +for %m in (0 9) + if exist fs%m:\EFI\archiso\vmlinuz.efi then + fs%m: + cd fs%m:\EFI\archiso + echo "Launching Arch Linux ISO Kernel fs%m:\EFI\archiso\vmlinuz.efi" + vmlinuz.efi archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% initrd=\EFI\archiso\archiso.img + endif +endfor
oops, "in" should be "run" for using (0 9)
-echo -off +@echo -off ;) -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
On Fri, Apr 6, 2012 at 23:39, Gerardo Exequiel Pozzi
On 04/05/2012 07:01 PM, Gerardo Exequiel Pozzi wrote:
On 04/05/2012 03:38 PM, Gerardo Exequiel Pozzi wrote:
--- /dev/null +++ b/configs/releng/efiboot/EFI/boot/startup.nsh @@ -0,0 +1,10 @@ +echo -off + +for %m in (0 9) + if exist fs%m:\EFI\archiso\vmlinuz.efi then + fs%m: + cd fs%m:\EFI\archiso + echo "Launching Arch Linux ISO Kernel fs%m:\EFI\archiso\vmlinuz.efi" + vmlinuz.efi archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% initrd=\EFI\archiso\archiso.img + endif +endfor
oops, "in" should be "run" for using (0 9)
-echo -off +@echo -off
;)
-- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1
I tries the testing enabled releng iso and created a FAT32 USB. It boots successfully (in my system it was fs2:). I was thinking about maybe implementing efistub + shell (like Archiso) or efistub + rEFInd in AIF. I think its easy, just have this the same loop in startup.nsh but this time launch the kernel with the user's parameters. But I think for a HDD/SSD boot, rEFInd is better. Regards. Keshav
participants (2)
-
Gerardo Exequiel Pozzi
-
Keshav P R