1
0
Fork 0
mirror of https://gitlab.com/bztsrc/bootboot.git synced 2023-02-13 20:54:32 -05:00
bztsrc--bootboot/x86_64-bios
2018-11-22 22:36:04 +01:00
..
boot.asm Support for El Torito CDROM boot 2018-07-24 00:10:35 +02:00
bootboot.asm Fixed a bug with empty encryption passwords 2018-11-14 14:33:25 +01:00
bootboot.inc timezone's place 2018-06-28 12:43:27 +02:00
fs.inc FS/Z content data checksums moved to extents for effectiveness 2018-11-22 22:36:04 +01:00
initrd.asm Initial commit 2018-06-05 20:34:03 +02:00
Makefile Initial commit 2018-06-05 20:34:03 +02:00
mkboot.c Support for El Torito CDROM boot 2018-07-24 00:10:35 +02:00
README.md Booting from encrypted initrd 2018-11-09 12:43:03 +01:00
tinf.inc Initial commit 2018-06-05 20:34:03 +02:00

BOOTBOOT BIOS / Multiboot Implementation

See BOOTBOOT Protocol for common details.

On BIOS based systems, the same image can be loaded via Multiboot, chainload from MBR, VBR (GPT hybrid booting) or from CDROM boot record via boot.bin, or run as a BIOS Expansion ROM (so not only the ramdisk can be in ROM, but the loader as well).

Machine state

IRQs masked. GDT unspecified, but valid, IDT unset. Code is running in supervisor mode in ring 0.

Installation

  1. BIOS disk / cdrom: copy bootboot.bin to FS0:\BOOTBOOT\LOADER. You can place it inside your INITRD partition or outside of partition area as well (with dd conv=notrunc oseek=x). Finally install boot.bin in the El Torito Boot catalog with "no emulation" or in Master Boot Record (or in Volume Boot Record if you have a boot manager), saving bootboot.bin's first sector's LBA number in a dword at 0x1B0. The mkboot utility will do that for you.

  2. BIOS ROM: install bootboot.bin in a BIOS Expansion ROM.

  3. GRUB: specify bootboot.bin as a Multiboot "kernel" in grub.cfg, or you can also chainload boot.bin. You can load the initrd and the environment file as modules (in this order). If no modules given, they will be loaded from disk as usual. Example:

menuentry "MyKernel" {
    multiboot /bootboot/loader      # bootboot.bin
    module /bootboot/initrd         # first module is the initrd (optional)
    module /bootboot/config         # second module is the environment file (optional)
    boot
}

Limitations

  • As it boots in protected mode, it only maps the first 4G of RAM.
  • Compressed initrd in ROM is limited to ~96k.
  • The CMOS nvram does not store timezone, so always GMT+0 returned in bootboot.timezone.
  • Only supports SHA-XOR-CBC, no AES