Commit Graph

135 Commits

Author SHA1 Message Date
Lauri Kenttä
ffa29f6ffc Update gnu-efi to 3.0.18 2024-04-11 18:07:40 +03:00
Lauri Kenttä
b9e23c91a3 Update change log and tag 2.4.1 v2.4.1 2024-04-11 17:48:55 +03:00
Lauri Kenttä
697c57355b Disable old version before copying files
Apparently some people still have the obsolete v1.5.1 installed
and manage to break things by copying v2.x config in place.
2024-04-11 17:46:13 +03:00
Lauri Kenttä
da16365508 Report if BCDEdit is not working
One possible cause for BCDEdit failure is Windows error 0x800703EE.
"The volume for a file has been externally altered so that the opened file is no longer valid."
Suggested solutions include disabling antivirus or backup software.
2024-04-11 17:46:13 +03:00
Lauri Kenttä
665a4732ca Detect device paths which contain extra data
Apparently some firmware may add extra data to the device path,
so exit the loop on the first end-of-path record.
Fixes GH issue #181.
2024-03-24 17:27:02 +02:00
Lauri Kenttä
39596aadfc Don't try to remove non-existent dir. 2024-01-20 12:43:00 +02:00
Lauri Kenttä
1a5b1df064 Update change log and tag 2.4.0 v2.4.0 2023-12-31 18:35:35 +02:00
Lauri Kenttä
ea70f3ce79 Disable before enabling, and default to BCDEdit 2023-12-31 18:29:48 +02:00
Lauri Kenttä
a44b929012 Fix a shim error caused by bad load options data
Shim expects a filename or nothing in the load options.

To avoid an error message during boot, do several things:

When creating the NVRAM entry, use empty load options. The current
string ("HackBGRT\0") was just a decoration, and it's luckily ignored
by shim because the length is odd.

When creating the entry with BCDEdit, manually fix the load options.
The load options in BCDEdit entries start with "WINDOWS\0" followed
by UINT32 version, as seen in ReactOS struct BL_WINDOWS_LOAD_OPTIONS.
The version is 1, but BCDEdit seems to be happy with a higher number.
By setting this version to 'X' (0x58), the string becomes a valid
UCS-2 file name. Update the installer so that the HackBGRT loader is
installed with this weird file name.

The reason why the load options cannot be deleted completely is that
BCDEdit will recreate the entry on next boot if it doesn't find the
entry it just tried to create.

See: https://github.com/rhboot/shim/pull/621
See: https://github.com/reactos/reactos/blob/v0.4.7/boot/environ/include/bl.h#L911
2023-12-31 18:20:27 +02:00
Lauri Kenttä
9948e5a306 Fix BCDEdit dry run and add more logging 2023-12-31 17:50:14 +02:00
Lauri Kenttä
518d7c8a97 Show proper message if boot log is empty 2023-12-20 18:29:34 +02:00
Lauri Kenttä
c6108ffd62 Warn about old .Net version if methods are missing 2023-12-20 18:29:25 +02:00
Lauri Kenttä
6dc447a8ce Try to avoid some .Net Framework 4.8 features 2023-12-20 18:29:25 +02:00
Lauri Kenttä
5ec17a49e8 Detect ARM arch from MS loader 2023-12-20 18:29:25 +02:00
Lauri Kenttä
7b7309a255 Explain why the original logo is still visible 2023-12-20 18:29:25 +02:00
Lauri Kenttä
a82646a822 Wipe the vendor logo as soon as possible
Loading the image might take some minimal time. Optimize experience.
Hide cursor as well but restore it in ReadKey.
2023-12-20 18:27:19 +02:00
Lauri Kenttä
294da9c069 Get rid of \EFI\HackBGRT\ in config.txt 2023-12-16 15:13:05 +02:00
Lauri Kenttä
4096002eb2 Update issue templates 2023-12-16 15:03:05 +02:00
Lauri Kenttä
835cc1b2f2 Update change log and tag v2.3.1 v2.3.1 2023-11-27 18:57:20 +02:00
Lauri Kenttä
74a143e723 Make BitLocker detection more reliable 2023-11-27 18:57:08 +02:00
Lauri Kenttä
b75dbe13c7 Update change log and tag v2.3.0 v2.3.0 2023-11-27 15:33:31 +02:00
Lauri Kenttä
ba72b90082 Add logging to verify entry creation 2023-11-27 15:19:46 +02:00
Lauri Kenttä
6b724d5590 Don't create entries higher than Boot00FF
Apparently Boot20## are sometimes reserved for firmware even if
they seem to be free. Boot00## is the normal place to be.
2023-11-27 15:19:06 +02:00
Lauri Kenttä
9ebe4e2476 Add run-qemu-<arch> to Makefile
The exact command may vary by OS, this is for Arch Linux.
2023-11-25 20:04:54 +02:00
Lauri Kenttä
5111897fae Update Makefile (instructions, release) 2023-11-25 20:04:54 +02:00
Lauri Kenttä
aac8a38cbb Don't print HackBGRT on every output line 2023-11-25 20:02:53 +02:00
Lauri Kenttä
77dd2bd699 If GOP is missing, use config.txt resolution or 1024x768 2023-11-25 20:02:01 +02:00
Lauri Kenttä
8dfa456a7b Fix ARM (32-bit) build
Use -O, because -O2 causes Undefined OpCode in QEMU / UEFI Shell.

Remove -mno-red-zone which triggers -Wunused-command-line-argument.

Set architecture in PE file manually:
EFI uses IMAGE_FILE_MACHINE_ARMTHUMB_MIXED = 0x01C2,
while the default is IMAGE_FILE_MACHINE_ARMNT = 0x01C4.
2023-11-25 19:16:43 +02:00
Lauri Kenttä
7ccdcc4a77 Add ARM (32-bit) target (without shim, though)
Remove some integer divisions because they emit function calls.
2023-11-20 19:45:28 +02:00
Lauri Kenttä
50e84e8c90 Add AArch64 target 2023-11-20 19:45:28 +02:00
Lauri Kenttä
24c7e2b316 Switch to Clang
Clang can cross-compile to PE and is easier to setup than MinGW.
2023-11-20 19:45:28 +02:00
Lauri Kenttä
4379f9cbeb Add gnu-efi submodule for headers, don't link, just re-implement some functions 2023-11-20 19:42:23 +02:00
Lauri Kenttä
2a0f2a7757 Get shell arguments without gnu-efi 2023-11-20 19:31:25 +02:00
Lauri Kenttä
ebbacb72bb Open ESP root dir without gnu-efi 2023-11-20 19:31:25 +02:00
Lauri Kenttä
a908036ee8 Implement WaitKey without gnu-efi 2023-11-20 19:31:25 +02:00
Lauri Kenttä
57ce3ae33e Avoid using gnu-efi static global GUIDs 2023-11-20 19:31:25 +02:00
Lauri Kenttä
7dd048346d Use EFI BS FreePool, SetMem, CopyMem 2023-11-20 19:31:25 +02:00
Lauri Kenttä
0dfc49c800 Re-implement string formatting (%s, %d, %x) 2023-11-20 19:31:25 +02:00
Lauri Kenttä
4e50b33636 Check BMP pixel data size when loading 2023-11-20 19:31:25 +02:00
Lauri Kenttä
5856d25b5b Update change log and tag v2.2.0 v2.2.0 2023-11-17 23:24:58 +02:00
Lauri Kenttä
466ab69c48 Use shim 15.7 to support Secure Boot
Use shim-signed and shim-helpers-{arch}-signed from Debian:
https://packages.debian.org/bookworm/shim-signed
2023-11-17 23:24:58 +02:00
Lauri Kenttä
14aa79929a Easily override GIT_DESCRIBE 2023-11-17 23:13:12 +02:00
Lauri Kenttä
5e32a3f880 Add clean target to Makefile 2023-11-17 23:13:12 +02:00
Lauri Kenttä
db934099df Gather log during boot 2023-11-17 23:13:12 +02:00
Lauri Kenttä
e93ed54cb2 Make setup menu shorter 2023-11-17 22:47:29 +02:00
Lauri Kenttä
9b3b045a21 Add SBAT section to the EFI binaries 2023-11-17 22:26:43 +02:00
Lauri Kenttä
be8a5d35d2 Sign the EFI files 2023-11-17 22:26:43 +02:00
Lauri Kenttä
2366fc8b98 Warn about Fast Startup (Hiberboot) 2023-11-16 22:56:10 +02:00
Lauri Kenttä
e04ba3e451 Log boot entries during setup 2023-11-16 22:07:08 +02:00
Lauri Kenttä
f40f2bc9dc Clarify LogBGRT output for corner cases 2023-11-09 21:46:39 +02:00