Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rocky Linux ISO Builder

Automated tooling to customize, build, and test unattended Rocky Linux installation ISOs using Docker, mkksiso, and QEMU.

This project packages mkksiso into a predictable Docker container environment so you can inject Kickstart configurations, modify boot arguments, and output bootable ISOs consistently on both local development workstations and CI/CD runners.


Features

  • Reproducible Build Environment: Dockerized mkksiso toolchain prevents host OS dependency mismatches.
  • Dynamic Network Provisioning: Uses native Anaconda link1,link2 binding to support arbitrary physical network interface names (eno1/eno2, eth0/eth1, em1/em2).
  • Hardware & Virtualization Ready: Boot options pre-configured to support bare-metal servers (e.g., HPE ProLiant Gen10 iLO consoles) and QEMU/KVM virtual machines.
  • Automated Checksums: Generates .sha256 hash verification files on every build.
  • Virtual Testing: Built-in QEMU launcher script (test-iso.sh) to quickly validate ISO installation without touching physical hardware.

Directory Structure

.
├── Makefile                # Primary task automation interface
├── docker-compose.yml      # Container orchestration for mkksiso
├── Dockerfile              # Build container definition
├── test-iso.sh             # POSIX shell script to boot and test ISO in QEMU
├── ks/
│   └── ks.cfg              # Unattended Kickstart configuration file
├── iso/                    # Storage directory for official base ISOs (git-ignored)
└── output/                 # Storage directory for generated custom ISOs (git-ignored)

Prerequisites

  • Docker and Docker Compose
  • QEMU (qemu-system-x86_64, qemu-img, ovmf) for local ISO testing
  • Make

Getting Started

1. Download Base ISO

Download the official Rocky Linux minimal ISO and place it inside the iso/ directory:

mkdir -p iso
# Example for Rocky Linux 10.2 minimal:
wget -P iso/ https://download.rockylinux.org/pub/rocky/10/isos/x86_64/Rocky-10.2-x86_64-minimal.iso

2. Configure Kickstart

Modify ks/ks.cfg to fit your target server environment (users, storage layouts, package choices, network configs).


Usage

Display Available Commands

make help

Build Custom ISO & Checksum

Builds the custom ISO and creates output/rocky-custom.iso.sha256:

make build-iso

To override defaults via environment variables or CLI:

make build-iso ROCKY_VERSION=10.2 BASE_ISO=Rocky-10.2-x86_64-minimal.iso OUTPUT_ISO=my-custom.iso

Test ISO in QEMU

Boots the newly generated ISO in a virtualized QEMU session:

make test-iso

Override default QEMU RAM/CPUs:

make test-iso MEMORY=8192 CPUS=4

Clean Build Artifacts

Removes all generated .iso and .sha256 files from the output/ directory:

make clean

Environment Overrides (.env)

You can create a .env file in the repository root to persistently override defaults without editing the Makefile:

ROCKY_VERSION=10.2
BASE_ISO=Rocky-10.2-x86_64-minimal.iso
OUTPUT_ISO=rocky-custom.iso
BOOT_ARGS=console=ttyS0,115200n8 console=tty0 inst.text nomodeset

License

GNU General Public License v2.0

About

Rocky Linux ISO Builder

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages