88 Commits

Author SHA1 Message Date
Michael Stapelberg
34b02e215b include mount device config in /etc/gokrazy/mountdevices.json
related to https://github.com/gokrazy/gokrazy/issues/236
2024-05-10 19:03:41 +02:00
Michael Stapelberg
f7be03f9cb create mount device targets in /mnt
related to https://github.com/gokrazy/gokrazy/issues/236
2024-05-10 19:03:19 +02:00
Michael Stapelberg
04de7ab994 create /var as a symlink to /perm/var instead of empty directory
The /var directory is meant to hold data that changes (see hier(7)).

With the previous behavior, users had to bind-mount a writable
and persistent directory over /var, for example as documented in
https://gokrazy.org/packages/docker-containers/

With this commit, there is one fewer hurdle to get podman running.
2024-05-10 17:40:40 +02:00
Michael Stapelberg
dceb56ee39 pull in gokrazy/internal for updateflag.BaseURL change 2023-10-31 19:32:10 +01:00
Damiano Donati
1c3069c7e6 fix sbom generation inconsistency, take 2 (#66) 2023-10-25 08:39:46 +02:00
Damiano Donati
84c24f75e1 fix sbom generation inconsistency (#61)
prior to this commit SBOMs would have inconsistency in their hashing on
the configuration file.

The representation of the config file in fact would differ at certain
stages of the gok commands lifecycle, where at packer running time,
an extra InternalCompatibilityFlag, Sudo, would be added in memory
(while that not being the case at `gok sbom` time),
resulting in a differing config and as such differing SBOM hashes, same
goes for the differing pointer addresses that were skew the hashing
results.

This is now fixed by using the SudoOrDefault() accessor,
as well as converting the config into a string before computing the hash,
to avoid differing pointer problems.
2023-10-11 17:46:50 +02:00
Michael Stapelberg
fa33ef8830 packer: set 022 umask to ensure the o+x bit is present
fixes https://github.com/gokrazy/gokrazy/issues/205
2023-07-13 18:06:18 +02:00
Michael Stapelberg
56839a456a packer: fix incorrect parent association in mkdirp()
A bug was triggered when the file system contained two directories with the same
basename, because all directories were incorrectly associated with the root
directory.

fixes https://github.com/gokrazy/tools/issues/58
2023-06-29 22:20:40 +02:00
Michael Stapelberg
522f5b0a23 packer: implement mkdirp() for tar directories
See the source comment for more details.

fixes https://github.com/gokrazy/tools/issues/58
2023-06-24 20:30:46 +02:00
Michael Stapelberg
cd4073ee85 improve error message when multiple packages install the same binary
This can happen when adding a program called "hello",
when the default config already pulls in github.com/gokrazy/hello.

The previous error message was confusing and non-deterministic,
because it contained the name of whichever package happens to be
validated first.
2023-06-01 22:58:05 +02:00
oliverpool
b44363c41f gok: improve the error message for wrong target arch (#56) 2023-05-26 10:36:33 +02:00
Nhân
78e00a0be6 gok: ignore error when updating over tailscale (#55)
This is not a real fix. I still haven't figured out why a `connection
reset by peer` happens in the first place. `target.Reboot()` will still
block for a bit before giving up. At least it doesn't falsely report a
fail now.

Also moved canc() up so the terminal isn't littered with `[update boot
file system] 0.00% of 16 MiB, uploading at 0 B/s` during the wait.

Related: https://github.com/gokrazy/gokrazy/issues/199
2023-05-19 08:43:20 +02:00
Michael Stapelberg
03c240ea00 extrafiles: verify none are configured for /perm
related to https://github.com/gokrazy/gokrazy/issues/197
2023-04-30 09:39:39 +02:00
Brad Fitzpatrick
fa27ee75eb validate target userspace architecture matches kernel's architecture (#54)
For gokrazy/gokrazy#191.

Perhaps we'll make it automatic in the future, though. This is a
guardrail meanwhile.
2023-04-06 20:00:02 +02:00
Michael Stapelberg
2b2e2d9f24 gok: fix serial console default 2023-02-28 22:11:43 +01:00
Michael Stapelberg
abef3a8e0b skip Raspberry Pi 4 EEPROM updates when the version is unchanged
This shaves about 10s off of the `gok update` time.
2023-02-15 18:29:25 +01:00
Michael Stapelberg
05762f796b packer: initialize pack.Pack correctly in sudo child process
fixes https://github.com/gokrazy/gokrazy/issues/170
2023-02-06 22:47:48 +01:00
Michael Stapelberg
2b269a6d8d correctly plumb through config struct to GenerateSBOM 2023-02-05 21:43:49 +01:00
Michael Stapelberg
20bd48bfb6 include SBOM as /etc/gokrazy/sbom.json
related to https://github.com/gokrazy/gokrazy/issues/167
2023-02-05 16:14:49 +01:00
Damiano Donati
7e4c5df8fb gok overwrite: add gaf as output format
gaf is the new gokrazy archive format output type.
It is immagined for storage and upgrade.
A single, uncompressed zip archive files that contains:
- the MBR image (mbr.img)
- the boot image (boot.img)
- the root image (root.img)
- the SBOM of the gokrazy build (sbom.json)

It is lighter in size than a "full" disk image (it doesn't have the
partition filling bits).
It contains all the necessary bits to upgrade a gokrazy instance (all it
takes is the 3 imgs).
It can be directly accessed for a single file extraction (non compressed
zip property).
It can be easily unarchived by gokrazy appliances (cheap unzipping).
It is easy to verify what the build contains (SBOM alongside to be read).
2023-02-05 13:51:32 +01:00
Damiano Donati
239461d80e packer: use Pack as receiver for Main and logic 2023-02-05 13:51:32 +01:00
Michael Stapelberg
ca01203cad gok: add sbom subcommand 2023-01-29 21:55:42 +01:00
Michael Stapelberg
45ce7ad200 implement 'gok get' subcommand
fixes https://github.com/gokrazy/gokrazy/issues/162
2023-01-15 18:27:02 +01:00
Michael Stapelberg
f354e13fdf packer: get host fallback from instance hostname, not update host
The instance hostname is the logical hostname of the instance, e.g. consrv,
whereas the update hostname is the way to cross the network to get to said
instance, e.g. consrv.monkey-turtle.ts.net (on port 2345).
2023-01-15 16:55:25 +01:00
Michael Stapelberg
5e5fb5cf29 packer: use the httpclient package directly 2023-01-15 16:26:10 +01:00
Michael Stapelberg
4f93af68c8 packer: set HTTP(S)Port fallback values after host-specific fallback 2023-01-15 16:15:42 +01:00
Michael Stapelberg
a84f008488 identify gokrazy packer vs. gok in log output 2023-01-10 20:41:41 +01:00
Michael Stapelberg
8f9863a4c2 Config.Update.Hostname: fall back to Config.Hostname if empty 2023-01-07 18:59:26 +01:00
Michael Stapelberg
b169c0894c use two dashes for flags in error messages
That way, they work for cobra (gok) and Go flag parsing (gokr-packer).
2023-01-07 18:50:11 +01:00
Michael Stapelberg
5b3aa31300 populate PackageConfig for packer logic / writing config.json 2023-01-07 16:16:46 +01:00
Michael Stapelberg
496c018caf remove Env 2023-01-07 16:01:39 +01:00
Michael Stapelberg
d4fa52f791 uppercase HTTP(S) 2023-01-07 16:01:39 +01:00
Michael Stapelberg
a2832b7d25 move left-over flags 2023-01-07 16:01:39 +01:00
Michael Stapelberg
492ee69a2e wire up gok version 2023-01-07 16:01:39 +01:00
Michael Stapelberg
86312ca8d8 move config package to gokrazy/internal 2023-01-07 16:01:39 +01:00
Michael Stapelberg
64966b412e make package config overrideable in config.json
related to https://github.com/gokrazy/gokrazy/issues/147
2023-01-07 16:01:39 +01:00
Michael Stapelberg
038a9233cf add gok overwrite subcommand 2023-01-07 16:01:39 +01:00
Michael Stapelberg
434e942c97 refactor packer code into internal/packer, add gok update entrypoint
related to https://github.com/gokrazy/gokrazy/issues/147
2023-01-07 16:01:35 +01:00