Skip to content

Instantly share code, notes, and snippets.

@kvaps
Last active August 3, 2025 00:21
Show Gist options
  • Save kvaps/28de23484cbe4b97022c7a68b83570c2 to your computer and use it in GitHub Desktop.
Save kvaps/28de23484cbe4b97022c7a68b83570c2 to your computer and use it in GitHub Desktop.
wget https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/x86_64/alpine-standard-3.22.1-x86_64.iso
qemu-img create -f qcow2 alpine.qcow2 8G
qemu-system-x86_64 -m 512 -nic user -boot d -cdrom alpine-standard-3.22.1-x86_64.iso -hda alpine.qcow2 -nographic -enable-kvm -cpu host
========================
setup-alpine
poweroff
========================
qemu-system-x86_64 -m 512 -nic user,hostfwd=tcp::50000-:50000 -hda alpine.qcow2 -nographic -enable-kvm -cpu host
========================
sed -i '/community$/ s/^#//' /etc/apk/repositories
apk add docker
service docker start
=========================
cat > Dockerfile <<\EOT
FROM ghcr.io/cozystack/cozystack/talos:v1.10.3
COPY --from=busybox:musl /bin/* /bin/
EOT
docker build -t ghcr.io/cozystack/cozystack/talos:v1.10.3-with-busybox .
docker run --name installer --privileged -d -v /dev:/dev --entrypoint sleep ghcr.io/cozystack/cozystack/talos:v1.10.3-with-busybox infinity
docker exec -i installer sh -es <<EOT
echo 'talos.platform=metal console=ttyS0' > /tmp/c
mount --bind /tmp/c /proc/cmdline
EOT
IP=$(ip -o -4 route get 8.8.8.8 | awk -F"src " '{sub(" .*", "", $2); print $2}')
GATEWAY=$(ip -o -4 route get 8.8.8.8 | awk -F"via " '{sub(" .*", "", $2); print $2}')
ETH=$(ip -o -4 route get 8.8.8.8 | awk -F"dev " '{sub(" .*", "", $2); print $2}')
CIDR=$(ip -o -4 addr show "$ETH" | awk -F"inet $IP/" '{sub(" .*", "", $2); print $2; exit}')
NETMASK=$(echo "$CIDR" | awk '{p=$1;for(i=1;i<=4;i++){if(p>=8){o=255;p-=8}else{o=256-2^(8-p);p=0}printf(i<4?o".":o"\n")}}')
DEV=eth0
fallocate test.raw -l 5G
loopdev=$(losetup -f)
losetup "$loopdev" test.raw
docker exec -i installer installer install --platform metal --disk "$loopdev" --force --extra-kernel-arg=ip=${IP}::${GATEWAY}:${NETMASK}::${DEV}::::: <<\EOT
version: v1alpha1
machine:
ca:
crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJQakNCOGFBREFnRUNBaEIrWU84MzlKT2Z5ZElsT25YOG1Zc0xNQVVHQXl0bGNEQVFNUTR3REFZRFZRUUsKRXdWMFlXeHZjekFlRncweU5UQTRNREl4TkRFNE5URmFGdzB6TlRBM016RXhOREU0TlRGYU1CQXhEakFNQmdOVgpCQW9UQlhSaGJHOXpNQ293QlFZREsyVndBeUVBRXlBZkZXWFM1V1FGb2tRc0kzOHNQR3FsRmt0ditvOUFqL0F3Cjl5T0ZaUXVqWVRCZk1BNEdBMVVkRHdFQi93UUVBd0lDaERBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUkKS3dZQkJRVUhBd0l3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVcnVEdkVjVjBHMEhiNjZtegpRemIwWCtVUVBGMHdCUVlESzJWd0EwRUFOUWtZVUdCV0RMR1ltckh6cTlLTGhhTSt3MWNOckkwSWltaXkzOSthCjRZSjkyN0xuS0srWXFOai8ySjFpdlBkUklPb2tjQ1ZiZjMvT294RHVrUUlyQUE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
install:
disk: /dev/sda
cluster:
controlPlane:
endpoint: https://localhost:6443
EOT
losetup -d "$loopdev"
docker stop installer -t 0
docker rm installer
dd if=test.raw of=/dev/sda bs=4M conv=fsync && echo b > /proc/sysrq-trigger
=====================
talosctl -e 127.0.0.1 -n 127.0.0.1 get rd -i
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment