# Debian Bootc Image - Basic Template # This template creates a minimal Debian system suitable for bootc architecture: amd64 suite: trixie actions: # Action 1: Debootstrap the base system - action: debootstrap suite: trixie components: [main, contrib, non-free] mirror: http://deb.debian.org/debian keyring: /usr/share/keyrings/debian-archive-keyring.gpg # Action 2: Install essential packages - action: run description: Install essential system packages script: | #!/bin/bash set -e # Update package lists apt-get update # Install essential packages for a minimal system apt-get install -y \ systemd \ systemd-sysv \ dbus \ dbus-user-session \ bash \ coreutils \ util-linux \ findutils \ grep \ sed \ gawk \ tar \ gzip \ bzip2 \ xz-utils \ passwd \ shadow \ libpam-modules \ libpam-modules-bin \ locales \ keyboard-configuration \ console-setup \ udev \ kmod \ pciutils \ usbutils \ rsyslog \ logrotate \ systemd-timesyncd \ tzdata \ sudo \ curl \ wget \ ca-certificates \ gnupg # Action 3: Configure basic system - action: run description: Configure basic system settings script: | #!/bin/bash set -e # Set root password (change this in production) echo 'root:debian' | chpasswd # Configure locale echo "en_US.UTF-8 UTF-8" > /etc/locale.gen locale-gen echo "LANG=en_US.UTF-8" > /etc/default/locale # Configure timezone echo "America/Los_Angeles" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata # Enable systemd services systemctl enable systemd-timesyncd systemctl enable rsyslog # Configure network echo "auto lo" > /etc/network/interfaces echo "iface lo inet loopback" >> /etc/network/interfaces echo "auto eth0" >> /etc/network/interfaces echo "iface eth0 inet dhcp" >> /etc/network/interfaces # Action 4: Install and configure bootloader - action: run description: Install GRUB bootloader script: | #!/bin/bash set -e # Install GRUB apt-get install -y \ grub-efi-amd64 \ efibootmgr \ linux-image-amd64 \ linux-headers-amd64 \ initramfs-tools # Configure GRUB echo "GRUB_TIMEOUT=5" >> /etc/default/grub echo "GRUB_DEFAULT=0" >> /etc/default/grub echo "GRUB_DISABLE_SUBMENU=true" >> /etc/default/grub echo "GRUB_TERMINAL_OUTPUT=console" >> /etc/default/grub echo "GRUB_CMDLINE_LINUX_DEFAULT=\"quiet\"" >> /etc/default/grub echo "GRUB_CMDLINE_LINUX=\"\"" >> /etc/default/grub # Update GRUB update-grub # Action 5: Create basic user - action: run description: Create basic user account script: | #!/bin/bash set -e # Create user useradd -m -s /bin/bash -G sudo debian echo 'debian:debian' | chpasswd # Configure sudo echo "debian ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/debian # Action 6: Clean up - action: run description: Clean up package cache script: | #!/bin/bash set -e # Clean package cache apt-get clean apt-get autoremove -y # Remove unnecessary files rm -rf /var/lib/apt/lists/* rm -rf /tmp/* rm -rf /var/tmp/* # Action 7: Create image - action: image-partition imagename: debian-bootc-basic imagesize: 4G partitiontype: gpt mountpoints: - mountpoint: / size: 3G filesystem: ext4 - mountpoint: /boot size: 512M filesystem: vfat - mountpoint: /var size: 512M filesystem: ext4 # Output configuration output: format: qcow2 compression: true