Giter Club home page Giter Club logo

tomatboot-uefi's Introduction

TomatBoot for UEFI

TomatBoot is a simple kernel loader for 64bit UEFI based systems.

Main Menu

Setup Menu

Features

  • Boot menu
    • change the framebuffer settings
    • change default entry and delay
  • Support for linux boot
  • Support for MB2
  • Support for Stivale/Stivale2

Future plans

  • allow to edit the configuration file on the fly

Boot Protocol

Linux Boot (linux)

With linux boot you can give TomatBoot a vmlinuz and initrd images and it will load it according to the linux boot protocol.

It supports both 32bit and a EFI Handover boot.

Multiboot 2 (mb2)

With MB2 boot you can load any mb2 compatible kernel image.

We support:

  • Command line
  • Boot Modules
  • E820 + Efi Memory Map
  • ELF32/ELF64 Images + Elf Sections
  • Framebuffer (Ignores the settings in the image)
  • New/Old ACPI tables

Stivale (stivale)

Stivale is a simple boot protocol aimed to provide everything a modern x86_64 kernel needs:

  • Direct higher half support (with 5 Level paging support)
  • Command line
  • Boot Modules
  • Memory Map
  • Framebuffer
  • ACPI tables

Stivale2 (stivale2)

Stivale2 is a simple boot protocol aimed to provide everything an advanced modern x86_64 kernel needs, it includes all provided by stivale along side:

  • More dynamic features (using a linked list of tags)
  • SMP Boot

How to

Getting the EFI module

First of all the latest EFI module is available to download from Github Actions as an Artifact.

If you want to build from source then simply run:

git clone [email protected]:TomatOrg/TomatBoot-UEFI.git
cd TomatBoot-UEFI
make

It will create the module and place it under bin/BOOTX64.EFI

Creating an image

To create a bootable image you will need to have a GPT formatted image with one EFI FAT partition. You will need to place the UEFI module under EFI/BOOT/BOOTX64.EFI

Other than the binary, you will also need to provide a configuration file. For an example you can see the example config. The config file needs to be placed at the root of the efi partition with the name tomatboot.cfg

Example file structure inside the UEFI partition:

.
├── EFI
│   └── BOOT
│       └── BOOTX64.EFI
├── tomatboot.cfg
└── kernel.elf

Config format

Check CONFIG.md.

UEFI Library

The uefi library consists mainly of headers and source files taken directly from EDK2. The reason for that is to cut on development time and use existing headers, but not using EDK2 build system.

tomatboot-uefi's People

Contributors

itay2805 avatar matt8898 avatar wazzaps avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.