Details
-
Task
-
Resolution: Unresolved
-
Major
-
None
-
None
Description
Our freeldr.sys file became somewhat large and doesn't fit in current memory layout used in fat.bin VBR.
FAT16 boot sequence looks like this: MBR -> VBR/BPB (fat.bin) -> code at first 512 bytes of freeldr.sys (which is jumped over in other VBRs) -> main freeldr.sys code
And here we have an issue with that "second part" of VBR code: it loads whole FAT into memory at 7000:0000 which leaves us 395264 bytes for freeldr.sys (we load it at 0000:F800). Currently freeldr.sys file can be 366592 bytes (gcc-built) or 448512 bytes (msvc-built). Obviously, msvc-compiled version doesn't fit into space and thus boot is being failed.
Possible solution - do not load whole FAT into memory and only read it from disk where we need. But this would affect floppy-disk performance, which should be addressed somehow
Attachments
Issue Links
- is duplicated by
-
CORE-13740 A halt at the beginning of the 2nd stage (FAT16 partition)
- Resolved
-
CORE-14558 Invalid instruction causes a crash at the boot to the second stage of install
- Resolved
-
CORE-16195 Can`t boot from partition 500Mb on Disk 20Gb
- Resolved
- relates to
-
CORE-15384 Corruption when writing to FAT16 volumes
- Resolved
-
CORE-16864 FreeLdr assert OptionalHeader->SizeOfImage > MAX_FREELDR_PE_SIZE
- Resolved