• Stars
    star
    293
  • Rank 141,748 (Top 3 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created over 6 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Go-based tools for modifying UEFI firmware

fiano

Go-based tools for modifying UEFI firmware.

CircleCI Go Report Card GoDoc CodeCov License

Fiano

Contributing

For information about contributing, including how we sign off commits, please see CONTRIBUTING.md

UTK: Generic UEFI tool kit meant to handle rom images

Example usage:

# For a comprehensive list of commands
utk -h

# Display the image in a compact table form:
utk winterfell.rom table

# Summarize everything in JSON:
utk winterfell.rom json

# List information about a single file in JSON (using regex):
utk winterfell.rom find Shell

# Dump an EFI file to an ffs
utk winterfell.rom dump DxeCore dxecore.ffs

# Insert an EFI file into an FV near another Dxe
utk winterfell.rom insert_before Shell dxecore.ffs save inserted.rom
utk winterfell.rom insert_after Shell dxecore.ffs save inserted.rom

# Insert an EFI file into an FV at the front or the end
# "Shell" is just a means of specifying the FV that contains Shell
utk winterfell.rom insert_front Shell dxecore.ffs save inserted.rom
utk winterfell.rom insert_end Shell dxecore.ffs save inserted.rom

# Remove a file and pad the firmware volume to maintain offsets for the following files
utk winterfell.rom remove_pad Shell save removed.rom

# Remove two files by their GUID without padding and replace shell with Linux:
utk winterfell.rom \
  remove 12345678-9abc-def0-1234-567890abcdef \
  remove 23830293-3029-3823-0922-328328330939 \
  replace_pe32 Shell linux.efi \
  save winterfell2.rom

# Extract everything into a directory:
utk winterfell.rom extract winterfell/

# Re-assemble the directory into an image:
utk winterfell/ save winterfell2.rom

DXE Cleaner

Delete unnecessary DXEs from your firmware. Free up space, speed up boot times and decrease the attack surface area! See the demo:

asciicast

FMAP: Parses flash maps.

Example usage:

  • fmap checksum [md5|sha1|sha256] FILE
  • fmap extract i FILE
  • fmap jget JSONFILE FILE
  • fmap jput JSONFILE FILE
  • fmap summary FILE
  • fmap usage FILE
  • fmap verify FILE

Installation

# Golang version 1.13 is required:
go version

# For UTK:
go install github.com/linuxboot/fiano/cmds/utk

# For fmap:
go install github.com/linuxboot/fiano/cmds/fmap

The executables are installed in $HOME/go/bin.

Updating Dependencies

# Fiano utilizes Go modules.
Use the following to download the dependencies:
```
go mod download
go mod verify
```

If you desire to update a existing dependency to a newer version:
```
go get path/to/dependency/module@tag
```
Execute this in any directory of fiano repository

More Repositories

1

heads

A minimal Linux that runs as a coreboot or LinuxBoot ROM payload to provide a secure, flexible boot environment for laptops, workstations and servers.
Makefile
1,420
star
2

linuxboot

The LinuxBoot project is working to enable Linux to replace your firmware on all platforms.
Roff
858
star
3

book

LinuxBoot book which contains the documentation in markdown format
270
star
4

heads-wiki

Documentation for the Heads firmware project
85
star
5

uefisettings

The tool to read/get/extract and write/change/modify BIOS/UEFI settings from Linux terminal.
Rust
34
star
6

mainboards

work in progress ports of linuxboot for various mainboards
Makefile
21
star
7

contest

Run continuous and on-demand system testing for real and virtual hardware
Go
17
star
8

linuxboot-ci

LinuxBoot CI
Shell
10
star
9

linuxboot.org

LinuxBoot.org website
HTML
10
star
10

voodoo

run UEFI apps
C
9
star
11

corebootnerf

Simple tool to build coreboot/nerf images
Go
7
star
12

u-root-builder

7
star
13

acpitools

Tools for working with ACPI blobs
Go
6
star
14

demo

This repository collects several LinuxBoot demos given at conferences and workshops
Shell
5
star
15

cbfs

Go
5
star
16

osf-builder

osf-builder contains tools to build OSF (Open System Firmware) firmware images, and to keep track of their versioning information.
Go
5
star
17

stickers

Stickers for LinuxBoot related projects
4
star
18

linuxboot-ci-api

API to submit job to the Linuxboot CI platform
Go
3
star
19

archives

PDF files of important documents
2
star
20

dut

basic dhcp/http server for DUT
Go
2
star
21

bins

LinuxBoot pre-compiled c/c++ binaries which are replaced over the time
2
star
22

gogoflash

Pure Golang based flashrom replacement for Linux mtd only usage
1
star