https://github.com/fiedka/fiedka
a visual toolkit for exploring and editing firmware images, running on web platforms
https://github.com/fiedka/fiedka
firmware hacktoberfest hacktoberfest2020 uefi wasm web
Last synced: 3 months ago
JSON representation
a visual toolkit for exploring and editing firmware images, running on web platforms
- Host: GitHub
- URL: https://github.com/fiedka/fiedka
- Owner: fiedka
- License: mit
- Created: 2020-09-19T01:08:43.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-11-16T01:12:08.000Z (over 1 year ago)
- Last Synced: 2024-11-16T01:26:33.713Z (over 1 year ago)
- Topics: firmware, hacktoberfest, hacktoberfest2020, uefi, wasm, web
- Language: JavaScript
- Homepage: https://fiedka.app/
- Size: 8.05 MB
- Stars: 107
- Watchers: 7
- Forks: 9
- Open Issues: 68
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fiedka
[Fiedka](https://fiedka.app) is a firmware editor app with back-ends running in
[WebAssembly](#webassembly).
## Releases
[](
https://github.com/fiedka/fiedka/actions/workflows/shipit.yml)
Binaries are [published on GitHub](https://github.com/fiedka/fiedka/releases).
## Development
The app is based on Electron.
You need to have a [Node.js](https://nodejs.org/) runtime and `npm` installed.
For the back-end, you need [Go](https://go.dev/) version 1.21 at least.
Find them in your respective OS distribution and install them through your
package manager, e.g., `yay -S go nodejs npm`.
To install the dependencies, run `npm install`.
For DXE GUIDs, efiXplorer is used as a submodule. Do an initial checkout:
```
git submodule update --init --checkout
```
### Managing Go dependencies
Due to targeting WebAssembly, we need to pass env vars to the `go` command.
**Note**: The `go.mod` file is in `src/`. Run Go commands in that directory.
To upgrade Fiano, one of Fiedka's core dependencies:
```sh
GOOS=js GOARCH=wasm go get github.com/linuxboot/fiano@v1.2.0
```
If you want to add a new dependency, run:
```sh
GOOS=js GOARCH=wasm go get github.com/foo-org/foobar-go@v1.2.3
```
**Note**: Running `go get` may leave inconsistencies in `go.mod`.
Afterwards, always run:
```sh
go mod tidy
```
### Running
```
npm start
```
### Working with a local copy of Fiano
Clone Fiano side by side with Fiedka; i.e., have them like this:
```
fiano/
fiedka/
```
#### A: Using a Go workspace
Create this symlink: `ln -s go.workspace go.work`
That will tell Go to use `../fiano` instead of `github.com/linuxboot/fiano`.
Note: `go.work` is gitignored so that you cannot accidentally commit it.
#### B: Using a `replace` directive
Add this line to the bottom of `src/go.mod`:
```
replace github.com/linuxboot/fiano => ../../fiano
```
Be sure never to have this in a PR to Fiedka. Prefer the workspace method.
## UEFI
### Obtain Test Images
See [retrage's nightly OVMF builds](https://retrage.github.io/edk2-nightly/).
Download `RELEASEX64_OVMF.fd` and load it using the file picker.
## WebAssembly
- [Research on WebAssembly](https://github.com/sophoslabs/WebAssembly)
- [Understanding WebAssembly](
https://www.sophos.com/en-us/medialibrary/PDFs/technical-papers/understanding-web-assembly.pdf)
- [WASM Tutorial](https://marcoselvatici.github.io/WASM_tutorial/#files)
### WASM issues
- [Most performant way to pass data JS/WASM context](
https://github.com/WebAssembly/design/issues/1231)