73 lines
1.6 KiB
Bash
Executable file
73 lines
1.6 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Simple Debian installation script for qcow2
|
|
# This creates a basic Debian system that can later be converted to bootc
|
|
|
|
QCOW2_IMAGE="./output/debian-bootc.qcow2"
|
|
ROOTFS_DIR="./output/rootfs"
|
|
|
|
echo "Creating Debian installation in qcow2 image..."
|
|
|
|
# Create rootfs directory
|
|
mkdir -p "$ROOTFS_DIR"
|
|
|
|
# Mount the qcow2 image
|
|
sudo losetup -fP "$QCOW2_IMAGE"
|
|
LOOP_DEVICE=$(sudo losetup -j "$QCOW2_IMAGE" | cut -d: -f1)
|
|
|
|
# Create partition table
|
|
sudo parted "$LOOP_DEVICE" mklabel gpt
|
|
sudo parted "$LOOP_DEVICE" mkpart primary ext4 1MiB 100%
|
|
|
|
# Format the partition
|
|
sudo mkfs.ext4 "${LOOP_DEVICE}p1"
|
|
|
|
# Mount the partition
|
|
sudo mount "${LOOP_DEVICE}p1" "$ROOTFS_DIR"
|
|
|
|
# Install Debian base system
|
|
echo "Installing Debian base system..."
|
|
sudo debootstrap --arch=amd64 trixie "$ROOTFS_DIR" http://deb.debian.org/debian
|
|
|
|
# Install essential packages
|
|
echo "Installing essential packages..."
|
|
sudo chroot "$ROOTFS_DIR" apt-get update
|
|
sudo chroot "$ROOTFS_DIR" apt-get install -y \
|
|
linux-image-amd64 \
|
|
grub-efi-amd64 \
|
|
systemd \
|
|
openssh-server \
|
|
curl \
|
|
wget \
|
|
vim \
|
|
nano
|
|
|
|
# Configure the system
|
|
echo "Configuring system..."
|
|
|
|
# Set root password
|
|
sudo chroot "$ROOTFS_DIR" passwd root
|
|
|
|
# Enable SSH
|
|
sudo chroot "$ROOTFS_DIR" systemctl enable ssh
|
|
|
|
# Install GRUB
|
|
sudo chroot "$ROOTFS_DIR" grub-install --target=x86_64-efi --efi-directory=/boot/efi
|
|
sudo chroot "$ROOTFS_DIR" update-grub
|
|
|
|
# Cleanup
|
|
sudo umount "$ROOTFS_DIR"
|
|
sudo losetup -d "$LOOP_DEVICE"
|
|
|
|
echo "Debian installation completed!"
|
|
echo "Image: $QCOW2_IMAGE"
|
|
echo "You can now boot this image and install bootc manually"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|