Image build configurations for capsul.org operating system images
Find a file
2025-03-22 13:43:42 -05:00
alpine add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
archlinux add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
debian add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
guixsystem add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
nixos add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
openbsd add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
rockylinux add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
ubuntu add os name on task for sr.ht UI 2025-03-22 13:43:42 -05:00
.gitignore nixos: packer hcl2_upgrade packer.json 2024-07-04 19:14:59 -05:00
.woodpecker.yml Add nixos build 2023-01-13 23:44:04 -08:00
LICENSE Add arch support 2021-07-25 11:40:04 -05:00
README more chgrp in alpine setup 2025-03-22 13:41:01 -05:00

qweh

This repository is responsible for building OS images consumed by capsul.org

Based on: https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/images

== PRE REQS

    git clone <this-repo>
    cd capsul-images
    packer, libvirt, archlinux utils perhaps, nbd


== MAKE ALPINE IMAGE ==

    cd alpine
    ./build 3.14


== MAKE OPENBSD IMAGE ==

    cd openbsd
    ./build 6.9


== MAKE GUIX SYSTEM IMAGE

    cd guixsystem
    ./build 1.4.0


== MAKE ARCH IMAGE

    cd archlinux
    ./build


== TO CLOUD-INIT OR NOT TO CLOUD-INIT

We can use some of the heavier images straight from the source and leverage the built-in cloud-init (https://cloud-init.io/)

For everything else, (images which we build ourselves from scratch) we build in or own miniature fake cloud-init 
(Capsul requires this becuase it uses cloud-init to provide the ssher's key(s) to the VM)

== BACKUP SUPPORT / GRACEFUL SHUTDOWN SUPPORT

In order for capsul to be able to create backups, it needs qemu guest agent installed and enabled. 
In order for capsul to be able to do graceful shutdowns, it needs acpid installed and enabled.

For the images we build ourselves, it's easy to add these during the build.
For the ones that we pull as an image directly from the OS project, 
we can use cloud-init to install/enable these services.

Ones that use built-in cloud-init:

- debian
- ubuntu
- rocky

Ones that we build with custom ersatz cloud init: 

- alpine
- openbsd
- nixos
- guix
- archlinux

== RESOURCES ==

- https://github.com/alpinelinux/alpine-make-vm-image
- https://curlybracket.co.uk/blog/running-alpine-linux-on-digital-ocean/
- https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/images