Skip to content
/ DXB Public

Feature-filled BIOS ROM dumper for x86 CPUs

Notifications You must be signed in to change notification settings

mxtlrr/DXB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note

DXB supports the 8088 processor in theory, but has not been tested. Use at your own discretion.

DXB

DXB is a tiny bootable program to dump (protected mode) BIOS ROM onto either

  1. The VGA text mode (with similar formatting to the hexdump UNIX utility)
  2. A storage medium, i.e. a hard drive or a floppy disk.

It should be noted that, despite various sources, the BIOS ROM is NOT located at 0xF000:0xFFF0, this is what is being run, not the actual compiled ROM. Instead, it's located just under the 1 GB line.

You can use INT 0x15/AH=0x87 to swap into 32-bit mode, read the byte data and then return back. There is a program written for DOS that does this.

Instead DXB just boots into 32-bit mode to simplify everything:

  • Reading BIOS ROM is as simple as *(uint8_t*)(bios_rom_loc + off).
  • More leeway (memory, and register size)
  • Easily write drivers
  • Don't rely on the BIOS for everything (not standardized, and some things may not work on some BIOSes while others will work on others)

What's the use case?

I don't have an EEPROM programmer/reader and I'm curious on the implementation of various BIOS ROMs that are, for obvious reasons, are proprietary. So, DXB was born -- it dumps BIOS ROM.

If you are in the same boat, DXB is for you.

Accquiring DXB

If you want the most stable version, then use the .iso/.img in the releases tab. Some features may be present in the most recent git commit but not in the release. However, the most git commit may also be broken. Make sure you know what you're doing before you run bleeding edge!

Building From Source

Dependencies are:

  • i386-elf-* (GCC crosscompiler). This is likely in your package manager.
  • nasm (assembler).

Then you just run make. Output is dxb.iso.

Note for on NixOS

On NixOS, you (unfortunately), you can't install the cross-compiler system-wide, and specifically 'i386-elf' isn't avaialable either. Sure, you could compile from source, but you'd also have to compile MPFR, GMP, and those dependencies aswell. If you would like to compile DXB on NixOS, run

nix-shell nix-compiler.nix

It will install i686-elf-* and put you in a shell with it. You will also need to compile with

make CC=i686-elf-gcc

Usage

Using DXB

TODO

What kind of disk can I use?

Disk Type Version Implemented Planned?
ATA/IDE pre-v0.1 Yes
SATA unimplemented Yes
NVMe unimplemented No
Floppy unimplemented Yes
ATAPI unimplemented No
USB unimplemented No

Roadmap

  • Successfully dump SeaBIOS ROM (QEMU) as a test.
  • Implement user interface for either dumping to hard disk or dumping to VGA output
  • Implement more hard-drive / storage drivers
    • Floppy
    • SATA
  • Remove GRUB as bootloader, write custom one
  • Test on more CPUs

Contributing

Open a pull request! If you find a bug or issue, open an issue.

About

Feature-filled BIOS ROM dumper for x86 CPUs

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published