All Projects → linuxboot → Linuxboot

linuxboot / Linuxboot

Licence: gpl-2.0
The LinuxBoot project is working to enable Linux to replace your firmware on all platforms.

Projects that are alternatives of or similar to Linuxboot

Pawn
Extract BIOS firmware from Intel-based workstations and laptops
Stars: ✭ 214 (-61.37%)
Mutual labels:  firmware, uefi, bios
HUANANZHI-X99-F8
CX99DE25 BIOS for HUANANZHI X99-F8 GAMING Motherboard 07/25/2020
Stars: ✭ 43 (-92.24%)
Mutual labels:  firmware, uefi, bios
HUANANZHI-X99-TF
BY99RD25 BIOS for HUANANZHI X99-TF GAMING Motherboard 08/25/2020
Stars: ✭ 27 (-95.13%)
Mutual labels:  firmware, bios
MACHINIST-X99ZV102
C612RD23 BIOS for MACHINIST X99Z V102 Motherboard 07/31/2020
Stars: ✭ 21 (-96.21%)
Mutual labels:  firmware, bios
Arch
These are easy, in-depth instructions on how to install Arch Linux.
Stars: ✭ 16 (-97.11%)
Mutual labels:  uefi, bios
mu oem sample
Project Mu OEM Sample Code
Stars: ✭ 27 (-95.13%)
Mutual labels:  firmware, uefi
samsung-bios-check
BIOS update checker for Samsung laptops running Linux
Stars: ✭ 25 (-95.49%)
Mutual labels:  firmware, bios
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (-91.52%)
Mutual labels:  uefi, bios
Rpi4
Raspberry Pi 4 UEFI Firmware Images [EXPERIMENTAL]
Stars: ✭ 480 (-13.36%)
Mutual labels:  firmware, uefi
UEFI MULTI
UEFI_MULTI - Make Multi-Boot USB-Drive
Stars: ✭ 33 (-94.04%)
Mutual labels:  uefi, bios
MultiOS-USB
Boot operating systems directly from ISO files
Stars: ✭ 106 (-80.87%)
Mutual labels:  uefi, bios
Efixplorer
IDA plugin for UEFI firmware analysis and reverse engineering automation
Stars: ✭ 268 (-51.62%)
Mutual labels:  firmware, uefi
ansible-ilo
Prepare, configure and upgrade HP firmwares using iLO REST API and SSH
Stars: ✭ 15 (-97.29%)
Mutual labels:  firmware, bios
meltdown-spectre-bios-list
a list of BIOS/Firmware fixes adressing CVE-2017-5715, CVE-2017-5753, CVE-2017-5754
Stars: ✭ 16 (-97.11%)
Mutual labels:  firmware, bios
Uefi retool
A tool for UEFI firmware reverse engineering
Stars: ✭ 227 (-59.03%)
Mutual labels:  firmware, uefi
GrubFM-Installer
GrubFM Installer
Stars: ✭ 27 (-95.13%)
Mutual labels:  uefi, bios
Edk2
EDK II
Stars: ✭ 2,624 (+373.65%)
Mutual labels:  firmware, uefi
Ghidra Firmware Utils
Ghidra utilities for analyzing PC firmware
Stars: ✭ 194 (-64.98%)
Mutual labels:  firmware, uefi
smram parse
System Management RAM analysis tool
Stars: ✭ 50 (-90.97%)
Mutual labels:  firmware, uefi
systemboot
SystemBoot is a LinuxBoot distribution that works as a system firmware + bootloader, based on u-root
Stars: ✭ 103 (-81.41%)
Mutual labels:  firmware, uefi

linuxboot

The LinuxBoot project allows you to replace your server's firmware with Linux.

Supported server mainboards

  • qemu emulated Q35 systems
  • Intel S2600WF
  • Dell R630
  • Winterfell Open Compute node (works well)
  • Leopard Open Compute node (works well)
  • Tioga Pass Open Compute node (works well)
  • Monolake Open Compute node (not tested)

Build instructions

Make sure you have installed the dependencies uuid-dev, nasm, and acpica-tools (or equivalent for your distribution).

You need to provide:

  • The vendor UEFI firmware for the mainboard
  • A Linux kernel built with the CONFIG_EFI_BDS option enabled
  • An initrd.cpio file with enough tools to kexec the rest of the system.

For the initrd, the Heads firmware or u-root systems work well. Both will build minimal runtimes that can fit into the few megabytes of space available.

For everything except qemu, you'll need to copy the vendor ROM dump to boards/$(BOARD)/$(BOARD).rom. Due to copyright restrictions, we can't bundle the ROM images in this tree and you must supply your own ROM from your own machine. qemu can built its own ROM from the edk2 tree, so this is not necessary.

Configure the build system:

cp path/to/s2600wf.rom boards/s2600wf/
make \
	BOARD=s2600wf \
	KERNEL=../path/to/bzImage \
	INITRD=../path/to/initrd.cpio.xz \
	config
make

This will write the values into the .config file so that you don't need to specify them each time. If all goes well you will end up with a file in build/$(BOARD)/linuxboot.rom that can be flashed to your machine. It will take a while since it also clones the LinuxBoot patched version of tianocore/edk2 UDK2018 branch and build it.

Emulating with qemu

If you want to experiment with LinuxBoot you can run it under qemu. No ROM file is necessary, although you still need a Heads or NERF runtime kernel/initrd pair. You can launch the emulator by running:

make run

This will use your current terminal as the serial console, which will likely mess with the settings. After killing qemu by closing the window you will need to run stty sane to restore the terminal settings (echo is likely turned off, so you'll have to type this in the blind).

Adding a new mainboard

Copy Makefile.board from one of the other mainboards and edit it to match your new board's ROM layout. The qemu one is not the best example since it has to match the complex layout of OVMF; most real mainboards are not this messy.

You'll need to figure out which FVs have to be preserved, how much space can be recovered from the ME region, etc. The per-board makefile needs to set the following variables:

  • FVS: an ordered list of IFD, firmware volumes and padding
  • linuxboot-size: the final size of the ROM image in bytes (we should verify this against the real ROM instead)

More info

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].