the eMBR partitioning system

eMBR is a partitioning system that...

  • is easy to understand and implement
  • suits very small and very large media
  • uses simple allocation
  • provides Unicode names
  • requires little memory and CPU power
  • media allocation block size independent

eMBR is a free, simple, portable media partitioning system created to provide an alternative to the UEFI GPT partitioning system. It is primarily intended to show that you can be different, not following the expected norm, and to expand the system functionality of the FYSOS operating system.

The acronym eMBR stands for Extended Master Boot Record and extends and expands on the original Master Boot Record. The initial inspiration of this partitioning system came from the desire to create something different, because--as a hobby--this is the desired process of creating an operating system.

eMBR aims to be a simple partitioning system providing full access to very large media, though can be easily used on small media. With the default 512-byte sector size, this partitioning system allows media up to 273 bytes in size, or eight Zettabytes.

News

2023-01-02 - Version 1.05 of the reference implementation is available.

Overview

Structure of an eMBR media device

The basic allocation unit of an eMBR partitioning system is a group of contiguous conventional sectors, called a partition, each starting on an arbitrary boundary, never overlapping another group. Each partition's starting sector and count of sectors used is stored in a list with each list entry identifying a partition. The starting sector and count is only limited to a 64-bit value, thus an eMBR partitioned device may be used on very large media with billions of terabytes of capacity.

The device has a conventional MBR in the first sector of the disk allowing legacy firmware to choose and boot up to three of alternate partitions, as long as these partitions conform to the legacy MBR specification. For an eMBR scheme, when booting from Legacy firmware, the first MBR partition entry must be marked bootable and point to the second sector of the media device.

Starting with the second sector of the media, an arbitrary count of sectors may be used to store the eMBR code to parse the included partitions. Legacy firmware would use this code to parse, display, and allow the user to choose a partition to boot. The function of this code is outside this specification and can be as simple as finding a partition marked bootable, load, and then execute that partition's volume boot code. This second sector also contains a signature to confirm the existence of the eMBR code and a pointer to the list of partition entries.

In order to simplify implementation of this partitioning scheme, each entry in a list of entries has the same size and format, making for a simple task to read and parse. Each partition entry contains a last booted field so that the loading-code can find the last booted partition.

Technical résumé

Allocation unitA group of contiguous sectors
Sector sizeA power of two equal to or greater than 512 bytes
Max device size264-2 sectors
Number of partitionsUEFI: 216-1.
Legacy Firmware: Just more than 500
Identifying namesup to 64 bytes, case sensitive, in UTF-8 format
Endiannesslittle endian

Where to go from here

To go into the depth of structure formats of the partitioning system, you may read the eMBR partitioning specification.

A reference implementation, written in assmebly, is available in the Downloads section.