Brad Fitzpatrick
d0fcb668d5
cmd/tailscale/cli: add 'tailscale configure flash-appliance'
...
Adds a CLI subcommand that downloads a signed Tailscale appliance
image (Gokrazy archive format, GAF) from pkgs.tailscale.com,
constructs a fresh GPT-partitioned disk from it (mbr.img + a
synthesized partition table + boot.img + root.img), formats /perm
as ext4 in pure Go via go-diskfs, and ejects the disk so a user
running on a regular workstation can flash an SD card or homelab
VM disk in one command without installing e2fsprogs.
On macOS the target disk is auto-discovered via diskutil, skipping
the boot disk and anything bigger than 256 GB out of paranoia. On
Linux the user passes --disk=/dev/sdX explicitly. Windows is not
supported yet and the command returns an error.
The GPT layout matches monogok's full-disk layout via the new
public github.com/bradfitz/monogok/disklayout package; a drift-
guard test inside monogok asserts the two implementations stay
byte-identical so OTA updates against monogok-built images keep
working.
Behind a ts_omit_flashappliance build tag (on by default).
Updates #1866
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
Change-Id: Ic1a8cd185e7039edccb7702ab4104544fcb58d29
2026-07-01 08:09:50 -07:00
..
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-02-08 10:04:04 -08:00
2026-02-08 10:04:04 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-02-04 13:15:41 -08:00
2026-02-04 13:15:41 -08:00
2026-02-04 12:52:08 -08:00
2026-02-04 12:52:08 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-07-01 08:09:50 -07:00
2026-07-01 08:09:50 -07:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-04-07 10:22:37 -07:00
2026-04-07 10:22:37 -07:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-05-15 15:50:50 -07:00
2026-05-15 15:50:50 -07:00
2026-05-26 16:02:01 -07:00
2026-05-26 16:02:01 -07:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-03-24 09:44:58 -07:00
2026-03-24 09:44:58 -07:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-02-08 10:04:04 -08:00
2026-02-08 10:04:04 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00
2026-01-23 15:49:45 -08:00