mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-18 20:47:55 +00:00
README.md: update repro notes. flake.nix: qemu_kvm was not included for native kvm support: added
Signed-off-by: Thierry Laurion <insurgo@riseup.net>
This commit is contained in:
parent
03e861ea48
commit
1bef1083e0
33
README.md
33
README.md
@ -50,25 +50,42 @@ echo 'experimental-features = nix-command flakes' >~/.config/nix/nix.conf
|
|||||||
# END OF DANGER SECTION TO BE REVIEWED
|
# END OF DANGER SECTION TO BE REVIEWED
|
||||||
# [...]
|
# [...]
|
||||||
# Build nix developer local env with flakes locks to specified versions and exits just running "true" command:
|
# Build nix developer local env with flakes locks to specified versions and exits just running "true" command:
|
||||||
nix --print-build-logs --verbose develop --ignore-environment -- true
|
nix --print-build-logs --verbose develop --ignore-environment --command true
|
||||||
# Build docker image with current develop created environment (this will take a while and create "linuxboot/heads:dev-env" local docker image:
|
# Build docker image with current develop created environment (this will take a while and create "linuxboot/heads:dev-env" local docker image:
|
||||||
nix build .#dockerImage && docker load < result
|
nix build .#dockerImage && docker load < result
|
||||||
```
|
```
|
||||||
|
|
||||||
Jump into docker image
|
|
||||||
|
Jump into nix develop created docker image for interactive workflow
|
||||||
=====
|
=====
|
||||||
`docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) linuxboot/heads:dev-env`
|
`docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) linuxboot/heads:dev-env`
|
||||||
|
|
||||||
Build a board from docker image
|
|
||||||
=====
|
From there you can use the docker image interactively.
|
||||||
|
|
||||||
`make BOARD=board_name` where board_name is the name of the board directory under `./boards` directory.
|
`make BOARD=board_name` where board_name is the name of the board directory under `./boards` directory.
|
||||||
|
|
||||||
|
|
||||||
Use prepared docker image from docker hub
|
One such useful example is to build and test qemu board roms and test them through qemu/kvm/swtpm provided in the docker image.
|
||||||
|
Please refer to [qemu documentation](targets/qemu.md) for more information.
|
||||||
|
|
||||||
|
Eg:
|
||||||
|
```
|
||||||
|
make BOARD=qemu-coreboot-fbwhiptail-tpm2 # Build rom, export public key to emulated usb storage from qemu runtime
|
||||||
|
make BOARD=qemu-coreboot-fbwhiptail-tpm2 PUBKEY_ASC=~/pubkey.asc inject_gpg # Inject pubkey into rom image
|
||||||
|
make BOARD=qemu-coreboot-fbwhiptail-tpm2 USB_TOKEN=Nitrokey3NFC PUBKEY_ASC=~/pubkey.asc ROOT_DISK_IMG=~/qemu-disks/debian-9.cow2 INSTALL_IMG=~/Downloads/debian-9.13.0-amd64-xfce-CD-1.iso run # Install
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, you can use locally built docker image to build a board ROM image in a single call.
|
||||||
|
|
||||||
|
Eg:
|
||||||
|
`docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) linuxboot/heads:dev-env -- make BOARD=nitropad-nv41`
|
||||||
|
|
||||||
|
Pull docker hub image to prepare reproducible ROMs as CircleCI in one call
|
||||||
====
|
====
|
||||||
```
|
```
|
||||||
docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) tlaurion/heads-dev-env:latest -- make BOARD=qemu-coreboot-whiptail-tpm2
|
docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) tlaurion/heads-dev-env:latest -- make BOARD=x230-hotp-maximized
|
||||||
docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) tlaurion/heads-dev-env:latest -- make BOARD=qemu-coreboot-whiptail-tpm2 run
|
docker run -e DISPLAY=$DISPLAY --network host --rm -ti -v $(pwd):$(pwd) -w $(pwd) tlaurion/heads-dev-env:latest -- make BOARD=nitropad-nv41
|
||||||
```
|
```
|
||||||
|
|
||||||
Maintenance notes on docker image
|
Maintenance notes on docker image
|
||||||
@ -81,7 +98,7 @@ docker push tlaurion/heads-dev-env:latest
|
|||||||
```
|
```
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
- Local builds can use ":latest"
|
- Local builds can use ":latest" tag, which will use latest tested successful CircleCI run
|
||||||
- To reproduce CirlceCI results, make sure to use the same versioned tag declared under .circleci/config.yml's "image:"
|
- To reproduce CirlceCI results, make sure to use the same versioned tag declared under .circleci/config.yml's "image:"
|
||||||
|
|
||||||
|
|
||||||
|
18
flake.nix
18
flake.nix
@ -6,9 +6,13 @@
|
|||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Using the unstable channel for the latest packages, while flake.lock fixates the commit reused until changed.
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Using the unstable channel for the latest packages, while flake.lock fixates the commit reused until changed.
|
||||||
flake-utils.url = "github:numtide/flake-utils"; # Utilities for flake functionality.
|
flake-utils.url = "github:numtide/flake-utils"; # Utilities for flake functionality.
|
||||||
};
|
};
|
||||||
|
|
||||||
# Outputs are the result of the flake, including the development environment and Docker image.
|
# Outputs are the result of the flake, including the development environment and Docker image.
|
||||||
outputs = { self, nixpkgs, flake-utils, ... }:
|
outputs = {
|
||||||
|
self,
|
||||||
|
flake-utils,
|
||||||
|
nixpkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
flake-utils.lib.eachDefaultSystem (system: let
|
flake-utils.lib.eachDefaultSystem (system: let
|
||||||
pkgs = nixpkgs.legacyPackages.${system}; # Accessing the legacy package set.
|
pkgs = nixpkgs.legacyPackages.${system}; # Accessing the legacy package set.
|
||||||
lib = pkgs.lib; # The standard Nix packages library.
|
lib = pkgs.lib; # The standard Nix packages library.
|
||||||
@ -66,8 +70,13 @@
|
|||||||
zlib.dev
|
zlib.dev
|
||||||
] ++ [
|
] ++ [
|
||||||
# Packages for qemu support with Canokey integration.
|
# Packages for qemu support with Canokey integration.
|
||||||
qemu # To test make BOARD=qemu-coreboot-* boards and then call make BOARD=qemu-coreboot-* with inject_gpg statement, and then run statement (RTFM).
|
#qemu_full #Heavier but contains qemu-img, kvm and everything else needed to do development cycles under docker
|
||||||
#canokey doesn;t work still even if compiled in, so no reason to add 1Gb of stuff in the image
|
qemu # To test make BOARD=qemu-coreboot-* boards and then call make BOARD=qemu-coreboot-* with inject_gpg statement, and then run statement.
|
||||||
|
qemu_kvm # kvm additional support for qemu without all the qemu-img and everything else under qemu_full
|
||||||
|
#
|
||||||
|
# TODO: make work qemu-canokey not existing in caches:
|
||||||
|
# Below are overrides to make canokey-qemu library availabe to qemu built derivative through override)
|
||||||
|
#canokey doesn't work still even if compiled in, so no reason to add 1Gb of stuff in the image (qemu -device canokey not exposed even if configured in)
|
||||||
#canokey-qemu # Canokey lib for qemu build-time compilation.
|
#canokey-qemu # Canokey lib for qemu build-time compilation.
|
||||||
#(qemu.override {
|
#(qemu.override {
|
||||||
# canokeySupport = true; # This override enables Canokey support in QEMU, resulting in -device canokey being available.
|
# canokeySupport = true; # This override enables Canokey support in QEMU, resulting in -device canokey being available.
|
||||||
@ -141,4 +150,3 @@
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user