bzt 586ddf60ac Updated FS/Z 11 月之前
..
Makefile d596e49a59 Loaders moved to dist directory 4 年之前
OLVASSEL.md 03bd9bd82b FS0:/BOOTBOOT/LOADER moved to FS0:/BOOTBOOT.BIN 3 年之前
README.md 03bd9bd82b FS0:/BOOTBOOT/LOADER moved to FS0:/BOOTBOOT.BIN 3 年之前
boot.asm 7c6a8ee72e Dynamically query CDROM drive on BIOS 3 年之前
bootboot.asm 47c01213e5 Use correct CRLFs in BIOS version 1 年之前
bootboot.inc e03097211b Update dates 3 年之前
fs.inc 586ddf60ac Updated FS/Z 11 月之前
mkboot.c e03097211b Update dates 3 年之前
tinf.inc e03097211b Update dates 3 年之前

README.md

BOOTBOOT BIOS / Multiboot / El Torito / Expansion ROM / Linux boot 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, run as a BIOS Expansion ROM (so not only the ramdisk can be in ROM, but the loader as well), or can be loaded as a Linux kernel (by ISOLINUX, LoadLin etc.).

Machine state

IRQs masked. GDT unspecified, but valid, IDT unset. SSE, SMP enabled. Code is running in supervisor mode in ring 0 on all cores.

Installation

  1. BIOS disk / cdrom: copy bootboot.bin to FS0:\BOOTBOOT.BIN. You can place it inside your INITRD partition

    or outside of partition area as well (with `dd conv=notrunc seek=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](https://gitlab.com/bztsrc/bootboot/blob/master/x86_64-bios/mkboot.c)
    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.bin         # the loader
    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