Stage a complete Alpine x86_64 image stack so \ --image alpineworks like the existing manual Void path instead of relying on Debian-oriented image builds.\n\nAdd make targets plus kernel/rootfs/register helpers that download pinned Alpine artifacts, extract a Firecracker-compatible vmlinux, build a matching mkinitfs initramfs, seed OpenRC services, and register/promote a managed image named alpine.\n\nFold in the bring-up fixes discovered during boot validation: use rootfstype=ext4 in shared boot args, install libgcc/libstdc++ for the opencode binary, and give opencode more time to become ready on cold boots.\n\nValidate with go test ./..., the Alpine helper builds, image promotion, and banger vm create --image alpine --name alp --nat plus guest service and port checks.
86 lines
1.1 KiB
Go
86 lines
1.1 KiB
Go
package imagepreset
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
var debianBase = []string{
|
|
"make",
|
|
"git",
|
|
"less",
|
|
"tree",
|
|
"ca-certificates",
|
|
"curl",
|
|
"wget",
|
|
"iproute2",
|
|
"vim",
|
|
"tmux",
|
|
}
|
|
|
|
var voidBase = []string{
|
|
"base-minimal",
|
|
"base-devel",
|
|
"bash",
|
|
"ca-certificates",
|
|
"curl",
|
|
"docker",
|
|
"docker-compose",
|
|
"e2fsprogs",
|
|
"git",
|
|
"iproute2",
|
|
"less",
|
|
"make",
|
|
"openssh",
|
|
"procps-ng",
|
|
"runit",
|
|
"shadow",
|
|
"sudo",
|
|
"tmux",
|
|
"tree",
|
|
"vim",
|
|
"wget",
|
|
}
|
|
|
|
var alpineBase = []string{
|
|
"alpine-base",
|
|
"bash",
|
|
"ca-certificates",
|
|
"curl",
|
|
"docker",
|
|
"docker-cli-compose",
|
|
"e2fsprogs",
|
|
"git",
|
|
"iproute2",
|
|
"less",
|
|
"libgcc",
|
|
"libstdc++",
|
|
"make",
|
|
"mkinitfs",
|
|
"openssh",
|
|
"procps-ng",
|
|
"shadow",
|
|
"sudo",
|
|
"tmux",
|
|
"tree",
|
|
"vim",
|
|
"wget",
|
|
}
|
|
|
|
func DebianBasePackages() []string {
|
|
return append([]string(nil), debianBase...)
|
|
}
|
|
|
|
func VoidBasePackages() []string {
|
|
return append([]string(nil), voidBase...)
|
|
}
|
|
|
|
func AlpineBasePackages() []string {
|
|
return append([]string(nil), alpineBase...)
|
|
}
|
|
|
|
func Hash(lines []string) string {
|
|
sum := sha256.Sum256([]byte(strings.Join(lines, "\n") + "\n"))
|
|
return fmt.Sprintf("%x", sum)
|
|
}
|