Commit graph

322 commits

Author SHA1 Message Date
Justin Miller ff3dadf89d
[FREELDR] Enable UEFI boot for x86 and amd64 (#5267)
Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>

- Allow to boot NT kernel on UEFI systems with our 2 primary supported architectures
- Implement remaining code needed to pass execution to x86 and amd64 kernels

CORE-11954
2023-10-11 12:45:08 -07:00
Serge Gautherie aa2d2139be [FREELDR] Convert ntfs.c to UTF-8 without BOM
Addendum to f0d73e0 (and ab3bd82).
2023-08-18 00:51:36 +02:00
Hermès Bélusca-Maïto ab3bd82928
[FREELDR] Convert source files to UTF-8 without BOM 2023-08-17 15:36:54 +02:00
Sylvain Deverre f0d73e0f7f
[BOOTSECT][FREELDR] Support booting from NTFS partitions (#3416)
Implement NTFS boot sector that loads FreeLdr from a NTFS partition.

CORE-17474

- Able to find/parse root directory;
- Handle fixups in FILE MFT record;
- Implement directory tree search;
- Implement loading found file from disk;
- Handle fixups in INDX records;
- Fail if compressed or sparse;
- Attempt to support 64-bit disks.

Some TO-DOs for later:
- Handle "weird" NTFS partition with uncommon sector sizes / sectors per cluster / sectors per index record;
- Better implementation for file loading;
- 64-bit LCN support.
2023-08-17 15:07:59 +02:00
Dmitry Borisov ffbc81fdf2 [FREELDR] Implement bus mouse detection
This allows to automatically install the inport device driver
(it's now possible since 7d5e159131), which can be used on 86Box.

References:
- https://raw.githubusercontent.com/86Box/86Box/master/src/device/mouse_bus.c
- https://bochs.sourceforge.io/cgi-bin/lxr/source/iodev/busmouse.cc
2023-08-05 16:40:13 +03:00
Justin Miller e505394466
[FREELDR] Add UEFI Console input support. CORE-11954 (#5426)
Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
2023-07-11 11:07:31 -07:00
Hermès Bélusca-Maïto 3bc71f9086
[FREELDR][SCSIPORT][STORPORT] Use existing defines for some hardcoded max values.
See https://www.osronline.com/article.cfm%5Earticle=538.htm

[SCSIPORT] Remove 'MaxBus' variable, deprecated since commit fc3d38d1c (r26220).
2023-06-19 21:10:51 +02:00
Hermès Bélusca-Maïto 0c16bcd4e8
[FREELDR] scsiport.c: Fix x64 compilation. 2023-06-19 21:09:01 +02:00
Hermès Bélusca-Maïto af47866f76
[FREELDR:UEFI] Fix compilation warning LNK4006.
ntoskrnl.c.obj : warning LNK4006: _KeStallExecutionProcessor@4
already defined in stubs.c.obj; second definition ignored.
2023-06-19 21:09:00 +02:00
Hermès Bélusca-Maïto 095510bdac
[FREELDR:UEFI] Fix two MSVC build warnings C4553.
In both lines 451 and 474:
uefidisk.c: warning C4553: '==': result of expression not used; did you intend '='?

It's "funny" that GCC builds doesn't catch those...
2023-06-19 21:08:59 +02:00
Hermès Bélusca-Maïto 8061a6f6f4
[FREELDR] Cleanup some FldrCreateComponentKey() calls and archwsup.c 2023-06-05 22:39:47 +02:00
Hermès Bélusca-Maïto 7112815e23
[FREELDR] PeLdrLoadImage: FileName -> FilePath and make it const. 2023-05-07 22:14:30 +02:00
Justin Miller f2a58733e8
[FREELDR][SDK] Build UEFI bootloader for ARM32 (#5196)
CORE-17604

- Disable some functions for ARM32;
- Remove some link options not used on ARM;
- Add get _controlfp() to LIBCNTPR to link properly on ARM;
- Unify Freeldr UI Drawing on ARM;
- Add qemu UART debugging for ARM32/ARM64.
2023-05-03 20:56:06 +02:00
Justin Miller 1fd9d11f16
[FREELDR] Add disk access handlers for UEFI (#5219)
CORE-11953
2023-04-30 14:57:10 +02:00
Justin Miller ccef43f3b0
[FREELDR] Implement the memory managment functions for UEFI (#5174)
CORE-11954

- EFI binaries have a different subsystem in the PE header;
- ENVIRON: Make sure INTN and UINTN are 64bit for 64bit platforms;
- Handle UEFI Memory maps and translate it for freeldr;
- Add FAILED_TO_EXIT_BOOTSERVICES Freeldr BSoD code.
2023-04-03 17:33:20 +02:00
Justin Miller 150f721273
[FREELDR] Support compiling freeldr as a UEFI loader + Implement UI functions (#5171)
First batch of changes to implement a UEFI version of freeldr:
- Compile freeldr as EFI binary on top of the existing loader.
- Stub out various functions so we can create a UEFI machine-type in freeldr.
- Implement all of the video output functions so we can display a pretty freeldr BSoD :)
2023-03-19 20:13:16 +01:00
Hermès Bélusca-Maïto 995630ccec
[FREELDR] Fix missing exports and .edata section after commit 728694f6.
CORE-18880
2023-03-19 17:50:55 +01:00
Hermès Bélusca-Maïto 728694f60f
[FREELDR] Move platform-specific build targets into dedicated .cmake files. (#5141)
- Keep the common definitions and file lists in CMakeLists.txt
- Move PC-AT & compatibles (PC-98, XBOX) definitions in pcat.cmake
- Future UEFI-specific definitions will be in an uefi.cmake
2023-03-18 22:40:10 +01:00
Hermès Bélusca-Maïto 7a2aca423e
[FREELDR] Move common x64 runtime-specific ASM helpers to a misc file.
Co-authored-by: Justin Miller <justinmiller100@gmail.com>
2023-03-18 22:40:08 +01:00
Timo Kreuzer 20e6e17070 [FREELDR] Add stubs for pow and log to avoid pulling in the data from CRT (maybe fix printf functions instead?) 2022-12-01 15:21:59 +02:00
Dmitry Borisov 9d06e79373
[FREELDR] Partially implement docking station detection (#4751) 2022-10-19 16:48:27 +02:00
Stanislav Motylkov 328cc41192
[FREELDR] Allow to boot from FATX volume using vfatfs driver
Also copy vfatfs.sys to disk in 1st stage setup.
CORE-16216 CORE-16329 CORE-16373
2022-09-24 23:56:10 +03:00
Hermès Bélusca-Maïto 5cadc268ef
[BOOT][SDK:CMLIB] Compile a CMLIB for FreeLdr / NT bootloader with correct definitions. (#4619)
This also allows using the CMLIB with any reduced functionality
that could be required at boot-time.
2022-08-22 22:08:02 +02:00
Stanislav Motylkov 35a816a24e
[FREELDR][SDK] Sync copyright years with our banner and boot logo
Addendum to 831e2dea. CORE-18191
2022-06-27 21:42:01 +03:00
Stanislav Motylkov 831e2dea3d
[FREELDR][SDK] Use "ReactOS Project" for consistency
CORE-18191
2022-06-27 21:38:14 +03:00
Victor Perevertkin 447ef2aa4a
[CMAKE] Do not use USE_CLANG_CL variable in CMake scripts 2022-05-27 01:37:37 +03:00
Luke Luo de972e2bc2
[TRANSLATION] Improve Simplified Chinese (zh-CN) translation (#4513)
- Changed some wording according to the translation requirements.
- Fixed some mistakes.
- Changed my name.

Reviewed-by: He Yang <1160386205@qq.com>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2022-05-20 15:38:24 +03:00
Hermès Bélusca-Maïto c026b5950e
[FREELDR][MINIHAL] Move KefAcquireSpinLockAtDpcLevel stub back to HAL, #ifdef'ed in _MINIHAL_ where it's only needed. 2022-05-08 17:21:43 +02:00
Hermès Bélusca-Maïto ec1def3f31
[FREELDR] Remove unnecessary includes and deprecated defines. 2022-05-08 04:15:43 +02:00
Serge Gautherie 57d7f6f6b3
[FREELDR:NTLDR] Add '\n' to debug logs (#4474) 2022-04-29 18:20:36 +03:00
Hermès Bélusca-Maïto 8ed7d4b341
[SDK:CMLIB][FREELDR:NTLDR] Revert commit 168fea0ee and provide a better fix. Addendum to 93d8a1b7b.
Correct fix was to fix the HCELL_INDEX <-> HKEY conversions, much like
is being done with UlongToHandle / HandleToUlong.

The on-disk/in-memory hive file structures are platform-independent:
their layout must not depend on whether code is compiled in 32 or 64
bits.
2022-04-17 16:46:47 +02:00
Hermès Bélusca-Maïto 736331973e
[FREELDR:NTLDR] Rewrite RegInitCurrentControlSet() using CmpFindControlSet().
Also remove useless "success" traces at the end of some registry functions.
(Only show when they enter and when they fail.)
2022-04-17 04:57:43 +02:00
Hermès Bélusca-Maïto 94874baf19
[FREELDR:NTLDR] Use NTOS kernel's CMBOOT functions to enumerate and build the boot-time driver list.
They are correct and are more performant.

- Rewrite WinLdrAddDriverToList() on the model of CmpAddDriverToList()
  with support for CmpIsDriverInList().

- Disable RegEnumKey() as it is now unused.
2022-04-17 04:57:42 +02:00
Hermès Bélusca-Maïto 93d8a1b7b1
[FREELDR:NTLDR] Adapt the registry code to access from outside the underlying HHIVE and HCELL_INDEX (needed for cmboot). 2022-04-17 04:57:40 +02:00
Hermès Bélusca-Maïto f10437b1e2
[FREELDR:NTLDR] Expose and use the CurrentControlSetKey handle.
This allows: (i) to shorten dramatically the lengths of the static
registry path strings being used (and thus, allow for reduced binary
file size), and (ii) to prepare future support for selecting different
control sets (and related Last-Known-Good configurations).
2022-04-07 03:19:11 +02:00
Hermès Bélusca-Maïto 57b9c6b2f2
[FREELDR:NTLDR] Improve NLS data loading.
- Use UNICODE_STRINGs wherever possible.
- Retrieve the OEMHAL font file name. TODO: Load it!

- In WinLdrLoadNLSData(), don't open/close each file twice (and showing
  we are loading them twice). Instead, open all files at once (and keep
  them that way), retrieve their sizes and do the calculations, then
  load their respective contents one by one -- giving loading feedback
  only at that point -- and finally close all of them at once.
2022-04-07 03:19:10 +02:00
Hermès Bélusca-Maïto 24cb57fdea
[BOOT][SDK:RTL] Compile a reduced RTL library for FreeLdr / NT bootloader...
... as it should have always been done (and must be done for NTDLL
and NTOS kernel as well). This allows using the RTL with the correct
definitions and the reduced functionality available at boot-time.

+ Make the RTL main header compatible.

In addition, this will permit re-using existing code that already
uses the RTL (mostly string conversions).

See commits 427c90af3 (r36761) and b46e8cc18 (r36980) for some
background.
2022-04-07 03:19:09 +02:00
Hermès Bélusca-Maïto 88618f176d
[BOOTSECT] ISOBOOT: Add missing trailing 0x55AA sector signature. 2022-04-01 04:57:31 +02:00
Wu Haotian 0c42866e64
[TRANSLATION] Review & update Simplified Chinese (zh-CN) translation (#3933)
Reviewed all Chinese Simplified translation files and updated those
inappropriate or outdated ones.

Co-authored-by: Liu Wenyuan <15816141883@163.com>
Reviewed-by: Chan Chilung <eason066@gmail.com>
Reviewed-by: He Yang <1160386205@qq.com>
Reviewed-by: Zheng Jianping <robsean@126.com>
Reviewed-by: Luo Yufan <njlyf2011@hotmail.com>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2022-03-31 20:30:52 +03:00
Chan Chilung 2752c42f0b
[TRANSLATION] Update Hong Kong Chinese (zh-HK) translation - Part 2 (#4347)
- Added zh-HK translation for following files:
  - [BASE/SERVICES/W32TIME]
  - [BASE/SYSTEM/...] (except CMD console only applications)
  - [FDEBUG]
  - [DLL/CPL/...] (except Wine related applications)
  - [DLL/SHELLEXT/...]
  - [DLL/WIN32/...] (not all applications are translated, and Wine related applications are excluded from this part)
  - [MODULES/ROSAPPS/APPLICATIONS/...] (not all applications are translated)
  - [SCREENSAVERS]
  - [NTVDM]
  - [USERSRV]
- Translation Improvement
- Fix header for zh-TW and zh-HK translation files

Reviewed-by: Luo Yufan <njlyf2011@hotmail.com>
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
2022-03-31 17:10:21 +03:00
Hermès Bélusca-Maïto eeb4cbcb6b
[FREELDR:INF] Change immutable input string pointers to PCSTR when it's possible. 2022-03-25 18:54:22 +01:00
Vadim Galyant d4a05ad7aa
[FREELDR:NTLDR] Stub out x86 PAE support in preparation for PR #4272.
- Move boot options parsing early on in LoadWindowsCore().

- Add WinLdrIsPaeSupported(), move in it the PAE options parsing.
  The aim is to perform other tests to determine whether or not to
  enable PAE, and select an adequate kernel image.

Co-authored-by: Vadim Galyant <vgal@rambler.ru>

- Fix parsing of the NOEXECUTE options, taking their precedence
  into account. Most of these are also x86-specific.
2022-03-20 04:12:58 +01:00
Hermès Bélusca-Maïto d535ecf1dc
[FREELDR] Use safe-string buffer printf to initialize the returned strings in WinLdrGetNLSNames().
This will also stop the GCC 9+ warnings, see PR #4385.
2022-03-19 16:56:13 +01:00
Vadim Galyant d01f948925
[FREELDR] Allow booting from NTFS volume. (#3775) 2022-03-19 15:44:42 +01:00
Hermès Bélusca-Maïto 38cbe5acc3
[FREELDR] Update documentation following timeout and UI style work. 2022-02-21 02:54:06 +01:00
Hermès Bélusca-Maïto 63833c769f
[FREELDR] Update existing FREELDR.INI documentation. 2022-02-21 02:54:05 +01:00
Hermès Bélusca-Maïto d215039216
[FREELDR:UI] Improve setting UI colors/strings ("theme") defaults.
Now, default UI colors/strings (e.g. titles/timeout text) that are
dependent of the UI "theme" (mini vs. full TUI) are set first when
calling their corresponding Initialize() function.
Then, the user UI settings are read from the user's freeldr.ini file
and override the UI theme defaults.

These settings get effectively applied at the first drawing operation
(usually the UiFadeInBackdrop() call done by the main UiInitialize()
function).
For "directui" we don't care about the settings -- they are hardcoded.

This allows not having to specify the default settings in the
freeldr.ini files anymore.

+ Add support for "None" UiBackdropFillStyle: fill with whitespace,
  instead of the specific patterns.
2022-02-21 02:54:03 +01:00
Hermès Bélusca-Maïto 44ed4fb001
[FREELDR:UI] TuiUpdateDateTime(): Simplify building the date/time strings. 2022-02-21 02:54:02 +01:00
Hermès Bélusca-Maïto 3599c835f6
[FREELDR:UI] Improve menu timeout drawing.
Fixes CORE-13827, where the timer countdown would otherwise display
incorrectly if there were no trailing spaces after the timer string.
Now, the countdown is always appended with one space separator after
the end of the string, **or**, it is inserted at a specific place
delimited by a %d insertion point in the string.

Also, don't repaint the date & time (in full-UI mode) many times per
second -- instead of only once per second -- while displaying a menu.
2022-02-21 02:54:01 +01:00
Hermès Bélusca-Maïto ee32f9b86e
[FREELDR:UI] Isolate TuiDrawBox() top/bottom horizontal lines drawing into their own helpers. 2022-02-21 02:54:00 +01:00