Commit Graph
827 Commits
Author SHA1 Message Date
Hermès Bélusca-Maïto fa92d95800 [FREELDR] Use the new volume size mechanism when loading a storage volume as a RamDisk (#8423)
CORE-14603

The differentiation between a regular file loaded as a RamDisk and a
storage device volume, is done by invoking `ArcGetFileInformation()`
and looking at the `Information.Type` value.
2025-11-12 18:41:08 +01:00
Hermès Bélusca-Maïto 0ac0eb251c [FREELDR] Add a mechanism to determine the actual size of a mounted storage filesystem volume (#8423)
CORE-14603

- Each filesystem exposes a `*GetVolumeSize()` routine that returns the
  volume size it claims it reports (this is based on data from FAT/NTFS
  BIOS Parameter Blocks, or EXTn/BTRFS superblocks, similarly to what
  their NT filesystem drivers do).

- Given a device ID corresponding to a mountable drive, a top-level
  `FsGetVolumeSize()` routine attempts to mount the corresponding filesystem.
  This may fail if the device is not a drive, or if the filesystem is
  not recognized. If it succeeds, then the per-filesytem `*GetVolumeSize()`
  is invoked and the corresponding volume size is returned.
2025-11-12 18:40:45 +01:00
Daniel Victor 9690555308 [FREELDR] Remove some messages to free some code space on amd64.S (#8439) 2025-11-11 22:19:30 +01:00
Daniel Victor 3964c936cb [FREELDR] Add the relocator caller on realmode code (#8439)
CORE-19882
2025-11-11 22:19:30 +01:00
Daniel Victor 16f9ad2f46 [FREELDR] Add/change necessary code for the relocation code (#8439)
CORE-19882
2025-11-11 22:19:30 +01:00
Daniel Victor 70119785be [FREELDR] Do some MSVC fixes (#8454)
Ensure using the correct data segment in the lgdt/lidt invocation.
Also simplify the MASM/ML vs. gas syntax by using `lXdtPrefix`.

Fixes x86 MSVC FreeLoader boot following commit 9decadee83.
2025-11-11 16:27:47 +01:00
Daniel Victor 9decadee83 [FREELDR] Adapt bootsectors and multiboot code for future base address change (#7785)
See also PRs #8439 and #7530.
CORE-19882
2025-11-08 20:40:01 +01:00
Dmitry Borisov 19df2e65ff [INF] Add support for the NEC Star Alpha C-bus bridge device (#8446)
This device is present in some PC-98 models without C-bus slots
and has a SubClass ID of 0x80 (other bridge) instead of 0x01 (ISA bridge),
thus a critical device database entry is required.

00:06.0 Bridge [0680]: NEC Corporation Star Alpha 2 [1033:002c] (rev 01)
    Subsystem: Unknown [0000:0000]
    Flags: bus master, medium devsel, latency 0

Addendum to commit 84fabd819d.

CORE-17977
2025-11-05 12:48:41 +03:00
Hermès Bélusca-Maïto 106dbed40d [BOOT] Actually add the remastering scripts in the ISOs
Addendum to commit fdc4272b1a (#4988)
CORE-8872
2025-11-03 20:22:42 +01:00
Hermès Bélusca-Maïto fdc4272b1a [BOOT] Add an ISO remastering script (#4988)
CORE-8872

This is useful in the context of e.g. 3rd-party testers who want to
quickly add/remove/modify any file in a ReactOS ISO image and remastering
it without the need of our whole build environment.

remaster.cmd: Batch script.
remaster.sh : Almost-POSIX-compatible shell script version.
2025-11-03 20:08:39 +01:00
Hermès Bélusca-Maïto 6dd82ad146 [BOOT] Add the ISOMBR boot sector file in the ISO images (#4988)
This completes our set of provided boot sectors offered in the
ReactOS ISOs that can help for remastering those without our whole
build environment.
2025-11-03 20:06:48 +01:00
3fe5b8b0bb [SDK][WDF][USBDEX][NTOSKRNL_VISTA] Fully enable KMDF (#8396)
[SDK][WDFLDR] Add kmdf loader driver
[SDK][WDF] Add kmdf drver init static library
[SDK][WDF] Modify kmdf driver for working with wdfldr driver
[SDK][CDROM] Cdrom driver dynamically linking with kmdf
[SDK][WDF] Add kmdfdriver module type
[SDK][WDF][USBDEX][NTOSKRNL_VISTA] Fully enable KMDF
[KMDF][WDFLDR][WDF01000] Fix Windows 10 Compatibility WDFLDR and WDF01000
[WDF01000] NO_KERNEL_LIST_ENTRY_CHECKS for wdf01000 3rd party code

This PR is an accumulation of three peoples work, with the goal of the trying to get WDF to work like it should.
This has been tested in combination with some extra NT6+ ntoskrnl against multiple drivers.

---------

Co-authored-by: Max Korostil <[email protected]>
Co-authored-by: Victor Perevertkin <[email protected]>
Co-authored-by: Adam Słaboń <[email protected]>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2025-11-03 06:38:52 -08:00
Hermès Bélusca-Maïto c7d4040767 [FREELDR] ArcGetFileInformation(): Set Information->FileName, Length, and Attributes for filesystems (#8420)
CORE-9023

Add support for all the supported filesystems: FAT/FATX, NTFS,
ISO, EXT, BTRFS, as well as for files loaded via PXE.

arc.h:
- Add `FILEATTRIBUTES` enumeration;
- Remove non-existing `CreateReadOnly` and `SupersedeReadOnly`
  `OPENMODE` values; add missing `CreateReadWrite`.
2025-10-19 22:38:30 +02:00
Hermès Bélusca-Maïto eec9ca1305 [FREELDR] fs.c: Fix path device name lookup
Suppose the list of devices contains, for example listed in this order:

  `multi(0)disk(0)rdisk(0)partition(1)`,
followed by:
  `multi(0)disk(0)rdisk(0)`,

then if someone attempts to open `multi(0)disk(0)rdisk(0)`, the code
would erroneously open `multi(0)disk(0)rdisk(0)partition(1)` instead.

Device name lookup now verifies that the device name being tested has
the same length as the one being opened.

Noticed by user "Xen", see:
https://reactos.org/forum/viewtopic.php?p=144840#p144840
> Wrong name comparison in ArcOpen (can open "device()partition()"
> instead of "device()" that was really requested)
2025-10-19 21:23:12 +02:00
Hermès Bélusca-Maïto b51789c28d [FREELDR] scsiport.c: Set the Information->Type field (#8418)
CORE-9023

And more accurately detect and report disks:
using `InquiryBuffer.DeviceType`, differentiate between "rigid" disks,
floppy disks, and CD-ROM drives.
2025-10-19 17:13:50 +02:00
Hermès Bélusca-Maïto 246f2d29db [FREELDR] ArcGetFileInformation(): Set the Information->Type field for devices (#8418)
CORE-9023

Some of this determination is platform-specific (e.g. BIOS-based PC vs.
NEC PC-98 vs. Xbox), and is done in a per-platform `DiskGetConfigType()`
routine.
This routine is then invoked by `hwdisk.c!DiskOpen()` and `PcInitializeBootDevices()`.
2025-10-19 17:13:49 +02:00
Hermès Bélusca-Maïto 5ce7d88397 [FREELDR] iso.h: Code doesn't use BIOS-specific DriveNumber
Addendum to commit e307cb2881 (r42528)
2025-10-14 14:15:48 +02:00
Hermès Bélusca-Maïto d32b3e6e0a [FREELDR] ext.c/h: Use "standard" _S_IF* mode flags, exposed by fs/stat.h (#8413)
CORE-9023
2025-10-10 16:58:32 +02:00
Hermès Bélusca-Maïto a9981acdce [FREELDR] Add a fs/stat.h file (#8413)
CORE-9023

The purpose of this file is to contain all the known `_S_IF*` flags
and `_S_IS*` macros, some of which are used by the FreeLoader *nix-based
file-systems.
2025-10-10 16:58:22 +02:00
Hermès Bélusca-Maïto b39e6ee51c [FREELDR] Improve RamDisk loading loop (#8399)
CORE-9023

Do the seek to the beginning only once before starting the loop,
but avoid doing it for each chunk read: we base ourselves on the
fact that read operations automatically advance the internal read
pointer (per the specs).
2025-10-10 16:52:13 +02:00
Hervé PoussineauandHermès Bélusca-Maïto 8f6da8d78a [FREELDR] Fix RamDisk size determination; add some traces (#8399)
CORE-14603 CORE-9023

The RamDisk path specified with `/RDPATH=` can be a path to a block
device, like a disk partition, or the current boot disk (a ReactOS
specific feature added in commit 9b70d4380c), instead of being only
a file (as with Windows' NTLDR).

In this case, the `StartingAddress` and `EndingAddress` returned by
`ArcGetFileInformation()` are, per the specs, the start and end
positions of the partition as byte offsets from the start of the disk.
Therefore, the size of the partition is `== EndingAddress - StartingAddress`.

+ Add diagnostic traces in `RamDiskLoadVirtualFile()` and `RamDiskInitialize()`.

Co-authored-by: Hermès Bélusca-Maïto <[email protected]>
2025-10-10 16:52:12 +02:00
Hermès Bélusca-Maïto d8a9159145 [FREELDR] setupldr.c: Allow empty RDPATH parameter (#8399)
Addendum to commit 9b70d4380c, that implemented the same but only
for the standard (non-Setup) ReactOS loader.

CORE-14603 CORE-9023
2025-10-10 16:52:12 +02:00
Eric Kohl 42d2453918 [BOOTDATA][KBDCR] Add the Slovenian keyboard layout
Croatian and Slovenian share the same keyboard layout file.
- Add the Slovenian keyboard layout to the registry.
- Modify the keyboard layout file description accordingly.

CORE-16194
2025-10-10 16:26:54 +02:00
Eric Kohl 974807294f [BOOTDATA][INPUT][KBDCMK] Add Colemak keyboard layout
- Add the Colemak keyboard layout. It is not done yet. Some deadkey translations are still missing.
- Add missing strings for the German Extended (E1) keyboard layout.

CORE-4463
2025-10-09 00:04:34 +02:00
Eric Kohl 88ec843e02 [KBD] Add German Extended 1 keyboard layout 2025-10-05 11:39:26 +02:00
Hermès Bélusca-Maïto a0c427319f [FREELDR] Improve DiskGetExtendedDriveParameters()
- Move BIOS-specific `EXTENDED_GEOMETRY` structure to pcdisk.c

- Zero out the transfer buffer for INT 13h, function 48h before
  invocation. This ensures that any random data is removed and
  that some broken BIOSes behave better.

- Use a more suitable type for the pointer to the transfer buffer,
  so that we can use more human-manageable member names in TRACEs
  instead of magic buffer offsets.
2025-09-29 20:48:19 +02:00
Hermès Bélusca-Maïto 1375320ac4 [FREELDR] pc98disk.c: Simplify disk read checks in loops 2025-09-29 20:27:04 +02:00
Hermès Bélusca-Maïto 10b7a85991 [FREELDR] Fix the DPTE validity check, addendum to commit 4190b48924
Which is also an addendum to commit b3f11cfb38 (r17484).

The Enhanced Disk Drive Specification tells us that if the (far) pointer
to the Device Parameter Table Extension is set to FFFF:FFFF, the pointer
is invalid.

However there are some BIOSes, incl UEFI ones when running in Legacy
mode (e.g. GIGABYTE UEFI DualBIOS), that set this pointer to 0000:0000
instead, which is also an invalid value.
2025-09-29 20:13:30 +02:00
Hermès Bélusca-Maïto 4ffe8e86f0 [FREELDR] disk/fs: Improve some TRACEs and comments (#8400)
- Enhance some TRACEs.
- Improve printf formatters.
- Checking for success is part of the operation, no need to comment on that.
2025-09-29 20:09:44 +02:00
Hermès Bélusca-Maïto 9d3809febd [BOOTDATA] Disable logoff/password-change/workstation-lock in the LiveCD (#8373)
- Disable "Log Off" from the Start Menu and the C-A-D Security dialog;

- Disable the "Lock Workstation" and "Change Password" buttons in the
  Security dialog.

These are only "UI"-usability features to prevent the user from
logging off when running the LiveCD. (Logging off from the SYSTEM
account, and changing its password, don't make much sense.)

CORE-11397
2025-09-04 22:58:48 +02:00
Eric Kohl 88325f637b [BROWSER][BOOTDATA] Make the Browser service start properly
- Implement SvchostPushServiceGlobals() to make svchost happy.
- Add the Browser service to the netsvcs group.

CORE-18262
2025-08-10 10:47:03 +02:00
Eric Kohl 67e47135da [BOOTDATA] Revert unintended change and fix more keyboard layout IDs 2025-07-29 23:25:31 +02:00
Eric Kohl f02ac8bc1e [BOOTDATA][KEYBOARDS] Add the German (IBM) keyboard layout 2025-07-29 21:52:20 +02:00
Eric Kohl d908ad026d [BOOTDATA] Change the keyboard IDs of the Ristome, Ergo and Neo keyboard layouts.
Windows uses the keyboard layout IDs of the Ristome, Ergo and Neo layouts for the German(IBM), German Extended 1 and German Extended 2 keyboard layouts.
2025-07-29 21:42:26 +02:00
Eric Kohl c62ef77697 [KEYBOARD] Rename kbdgr1.dll to kbdgrist.dll
kbdgr1.dll is reserved for the German (IBM) keyboard layout but it is currently used by the German (RISTOME) keyboard layout.
2025-07-28 21:20:40 +02:00
Eric Kohl fade0c3b89 [BOOTDATA] Fix resource id of Malayalam keyboard layout display name 2025-07-27 13:58:02 +02:00
Eric Kohl 4e425b54b6 [BOOTDATA] Add missing Locale for Bengali (Bangaldesh)
This should fix CORE-20213. Please test again.
2025-07-23 22:25:46 +02:00
Justin Miller b8f1da6483 [BOOT] Make ACPI always copy on amd64 (#8238)
This just makes it so ACPI.sys is always loaded and copied by the bootcd no matter what on amd64.
On x86 it can depend on whether we're using an ACPI hal but is set up to never boot with ACPI on the bootcd.
2025-07-14 22:51:15 -07:00
Hermès Bélusca-Maïto 9b7c788cd0 [SETUPLDR] Add support for architecture-specific "SourceDisksNames" section (#8249)
Will be used for installing specific drivers on x64
(e.g. the ACPI driver, see PR #8238).

Add also the ARM64 define in the SETUPLIB spapisup.h header.
2025-07-13 19:23:06 +02:00
Justin Miller 83faff8706 [FREELDR] Hack AMD64 so it can boot in high mem (#8226)
Hack ReactOS AMD64 so we can boot on systems with higher ram amounts tested up to 128gb

JIRA report: CORE-20265
2025-07-03 12:47:34 -07:00
Hermès Bélusca-Maïto af96e9f353 [TRANSLATIONS] Fix some typos in French translations (#8164) 2025-06-29 16:31:39 +02:00
Daniel Victor 6ed46baf49 [FREELDR] Improve disk detection (#8074)
Improve disk detection on UEFI by using PublicBootHandle index

JIRA issue: CORE-11954
2025-06-23 16:03:05 -07:00
Hermès Bélusca-Maïto b401f547ae [NDK][ROSLOAD][ROSTESTS][SDK][WINE] Fix and use standard 'ReactOS' casing (#8163) 2025-06-22 22:49:54 +02:00
Katayama Hirofumi MZ b199e9d05f [SHLWAPI][SDK][BOOTDATA] Implement SHGetAppCompatFlags (#8137)
Compatibility is a key that the system
works well.
JIRA issue: CORE-19278
- Add appcompat.c.
- Implement SHGetAppCompatFlags
  function.
- Add Str_SetPtrA prototype to
  <commctrl.h>.
- Add SHACF_... flags to
  <shlwapi_undoc.h>.
- Add comctl32 delay import
  (for Str_SetPtrA).
- Modify boot/bootdata/hivesft.inf
  for registry key
  HRESULTKLM\SOFTWARE\Microsoft\
  Windows\CurrentVersion\
  ShellCompatibility\Applications.
2025-06-22 09:52:37 +09:00
Timo Kreuzer c495e0d727 ]HIVESYS] Add missing NLS files to registry 2025-06-19 17:36:40 +00:00
Whindmar Saksit 8ff8f676b3 [SYSDM][BROWSEUI][SHELL32][SDK] Added Advanced Performance Options property sheets (#8029) 2025-06-18 17:46:38 +02:00
Katayama Hirofumi MZ 24b2c4be8c [INF] intl.inf: Add [KbdLayoutIds] section (#8115)
Win2K internat.exe uses this section.
WinXP and Win2k3 have this section.
JIRA issue: CORE-19268
- Add [KbdLayoutIds] section and add values to intl.inf.
- Add some missing "Layout Id" for "SYSTEM\
  CurrentControlSet\Control\Keyboard Layouts" of
  hivesys.inf.
2025-06-16 17:16:19 +09:00
Katayama Hirofumi MZ d809cd0f7f [BOOTDATA][NTUSER] Add DontLoadCTFIME and use it (#8110)
Improve CTF IME customization.
Use the proper names for CTF IME.
JIRA issue: CORE-19268
- In the registry key "HKLM\SOFTWARE\Microsoft\
  Windows NT\CurrentVersion\IMM", add
  DontLoadCTFIME value and set it to 1.
- Delete LoadCTFIME value to avoid user
  confusing.
- Rename UserIsCiceroEnabled function
  as UserIsCTFIMEEnabled.
- Rename SRVINFO_CICERO_ENABLED
  flag as SRVINFO_CTFIME_ENABLED.
2025-06-12 13:55:49 +09:00
Daniel Victor 22d077f9f1 [FREELDR] Make the NTFS filename comparison conforming to NTLDR/BOOTMGR (#8021)
When an NTFS partition is created with Windows and modified with Linux
(see below), the NTLDR/BOOTMGR will compare the file names ignoring the
case of the files, while FreeLdr does not and the same hack is on Btrfs
file name comparison.

This PR is necessary because the case of the file names on registry, etc.
may not always be consistent!

How to reproduce:
- Try to install Windows with NTFS and install FreeLdr on it;
- Try to modify Windows partition on Linux like creating/copying some new files;
- Try to boot with FreeLdr (it will fail if the hive file path case is different
  than the actual file path);
- Try to boot with NTLDR/BOOTMGR (it will work finally reaching the desktop).
2025-06-03 16:47:15 +02:00
Serge Gautherie 9fd4378def [BOOTDATA] hivesys.inf: Sort 5 NLS languages and locales (#8068)
- Remove '0414' redundant NLS Language. Addendum to 532d977 (r27709).
- Remove '0401' redundant NLS Language. Addendum to 3a88ebc (r63713).
- Sort '0845', '0c04' and '1004' NLS Locales

CORE-16766
2025-06-02 22:27:10 +02:00