- Status Closed
- Percent Complete
- Task Type Implementation Request
- Category Firrmware
-
Assigned To
Emulatorman - Operating System All
- Severity Medium
- Priority Very Low
- Reported Version Milky Way v0.2
- Due in Version Starfix
-
Due Date
Undecided
- Votes
- Private
Opened by Megver83 - 12/03/2019
Last edited by Emulatorman - 15/03/2019
FS#1366 - [ISO][UEFI] Replace Syslinux with rEFInd
Actual v0.2 ISOs use Syslinux UEFI Boot Manager for supporting EFI systems. However, I wanted to request its replacement by rEFInd, which is much, much better.
Here is why Syslinux should not be used, at least for more advanced tasks than just booting the OS:
- UEFI Syslinux application syslinux.efi cannot be signed by sbsign (from sbsigntools) for UEFI Secure Boot. Bug report: [3]
- Using TAB to edit kernel parameters in UEFI Syslinux menu might lead to garbaged display (text on top of one another). Bug report: [4]
- UEFI Syslinux does not support chainloading other EFI applications like UEFI Shell or Memtest86+. Enhancement request: [5]
- In some cases, UEFI Syslinux might not boot in some Virtual Machines like QEMU/OVMF or VirtualBox or some VMware products/versions and in some UEFI emulation environments like DUET. A Syslinux contributor has confirmed no such issues present on VMware Workstation 10.0.2 and Syslinux-6.02 or later. Bug reports: [6], [7] and [8]
- Memdisk is not available for UEFI. Enhancement request: [9]
The citations are from the ArchWiki, check it out for more info.
From all of those points, I have confirmed the 3rd and 4th ones. These are a PITA, because EFI Shell is super useful (Parabola and Arch has it in its ISOs) and not being able to test it in VMs make it harded for ISO testers since they’ve to take more time on writing the image to the USB... etc.
rEFInd doesn’t have these issues, plus, it can be easily testes with QEMU. Try this:
- install ovmf package
- run the following, and specify the latest Milky Way ISO:
/bin/qemu-system-x86_64 -soundhw ac97 \ -k es -machine accel=kvm -m 1024 \ -boot once=d,menu=off -net nic -net user -rtc base=localtime \ -bios /usr/share/ovmf/x64/OVMF_CODE.fd -cdrom /path/to/file.iso
You will see errors in the CLI. Now, try with my customized ISO (dir with ISO file, sign [key: 6DB9C4B4F0D8C0DC432CF6E4227CA7C556B2BA78], and sha512 checksum), the same steps as above. You’ll see that it successfully boots, and has UEFI Shell apps.
Here is my hyperiso fork. Take a look at the refind/* branches. The refind/with-uefi-shell has EFI Shell from Tianocore EDK2 latest stable tag, and refind/without-uefi-shell, well, doesn’t have it. Note that the binary files from refind/with-uefi-shell are downloaded from upstream and they’re sha512 checksumed. If for any reason you cannot do that way, there’s the other branch as an alternative.
P.S.: I see that actual configs have configured syslinux.efi to show other boot menus rather than the “Boot Hyperbola” option, but I tested it in my PC with UEFI enabled and it just showed the mentioned option
Loading...
Available keyboard shortcuts
- Alt + ⇧ Shift + l Login Dialog / Logout
- Alt + ⇧ Shift + a Add new task
- Alt + ⇧ Shift + m My searches
- Alt + ⇧ Shift + t focus taskid search
Tasklist
- o open selected task
- j move cursor down
- k move cursor up
Task Details
- n Next task
- p Previous task
- Alt + ⇧ Shift + e ↵ Enter Edit this task
- Alt + ⇧ Shift + w watch task
- Alt + ⇧ Shift + y Close Task
Task Editing
- Alt + ⇧ Shift + s save task
git-am patches:
oops, here is the one for refind/without-uefi-shell:
https://gitlab.com/Megver83/hyperiso/commit/5471c1c14ff0c95eba21ad0eaa5295772721663a.patch
I would add the EFI Shell v1 and v2 applications, however both should be built from source. We are distributing the edk2-uefi-shell-v2, however i'm trying build the edk2-uefi-shell-v1 package that contains some issues in Shell/Library/IA32/math.c:
Distribute only x86_64 could be a way to ignore it, however i would distribute 32-bit support for other tasks such as virtualization, testing, etc. Would you help us solve this issue?
edk2-uefi-shell-v1.install (0.1 KiB)
I made a new PKGBUILD with some fixes and new patch for testing, however it still unstable since x86_64 can be built but application contains issues (eg. no keyboard support). If you can find a way to fix it, please let me know. Meanwhile, we will distribute the UEFI Shell v2 only.
let-gcc-use-intel-syntax-in-i... (3.7 KiB)
edk2-uefi-shell-v1.install (0.1 KiB)