Guiding an AlmaLinux installation from start to production-ready: using the Anaconda installer in graphical, text, or Kickstart mode, choosing the Server or Minimal software set, preparing LVM, Btrfs, or encrypted partitions, enabling Secure Boot, and closing with automated deployment via cloud-init and dedicated images.

In the previous episode, Episode 2, we broke down AlmaLinux's architecture: how the rebuild is built from RHEL SRPMs, its main components, and the repositories that make it up. Now it's time to take real action: installing AlmaLinux on your machine. This episode guides you from booting the installer to a ready-to-use system, then opens the door to the automated deployment that is standard in the modern world.
Installation might look like a one-time task, but the decisions you make here — software set, partitioning, and boot options — determine the system's character for years to come. Let's do it right from the start.
Anaconda is the official installer of the Red Hat family. It's available in three modes you can choose based on your needs:
| Mode | Use |
|---|---|
| Graphical | The default mode with a full visual interface; easiest for beginners |
| Text | A terminal-based mode; lightweight and suitable for remote installation |
| Kickstart | A fully automated mode based on a configuration file; for mass provisioning |
1. Language & keyboard
2. Installation destination (partitioning)
3. Software selection (software set)
4. Root password & user creation
5. Network & hostname
6. Begin installationOne of the most important decisions is the software set — the default packages that get installed. Anaconda provides several options:
| Software Set | Characteristics |
|---|---|
| Server with GUI | Full server plus desktop; wasteful for production |
| Server | Server without a desktop; the main production choice |
| Minimal | Only the most basic packages; lightest and most secure |
| Workstation | Full desktop for end users |
Tip
For this series, choose Minimal or Server. A system with fewer packages is more secure (smaller attack surface), and you'll install the tools you need per episode step by step — exactly like a production sysadmin does.
The partitioning step determines how your storage is organized. Anaconda provides automatic and manual schemes.
LVM is the default and most popular scheme. It separates physical storage (/dev/sda) from logical storage (volumes), so partitions can be resized easily without replacing hardware. Its basic structure:
lsblkModern systems boot through UEFI (the replacement for the old BIOS), and Secure Boot verifies the signature of every boot component so no malware can hijack the boot process. AlmaLinux fully supports Secure Boot: its installer images and kernels are already signed, so it can boot on machines with Secure Boot enabled.
[ -d /sys/firmware/efi ] && echo "UEFI mode" || echo "Legacy BIOS mode"Warning
If your machine uses UEFI, make sure the boot mode in the firmware matches (UEFI, not Legacy/CSM). Mixing the two often causes the system to fail to boot or the EFI System Partition not to be created.
After mastering interactive installation, it's time to automate. Kickstart is a configuration file that answers all the installer's questions automatically — so thousands of servers can be installed with identical results and no human interaction.
# Kickstart file generated by Anaconda
lang=en_US.UTF-8
keyboard --vckeymap=us
network --bootproto=dhcp --device=ens192
rootpw --iscrypted <hash>
user --name=devops --groups=wheel
%packages
@server
openssh-server
%end%packages — the list of packages and groups to install, ending with %end.%post — scripts run after installation completes, suitable for additional configuration such as installing a monitoring agent or creating users.An interactive installation automatically produces a Kickstart file at /root/anaconda-ks.cfg — use it as the starting template for your Kickstart files. To validate files you write, install pykickstart, which provides a validator:
sudo dnf install -y pykickstart
ksvalidator /root/anaconda-ks.cfgOnce the file is valid, run the installer by adding inst.ks=<file-location> to the boot parameters, for example inst.ks=http://192.168.1.10/ks.cfg to source it from a network server.
For modern cloud and virtualization environments, installing through Anaconda is usually not the option. Instead, use cloud images that are already configured for automated provisioning.
cloud-init is the industry standard for provisioning cloud instances. Every AlmaLinux cloud image already includes it. When an instance first boots, cloud-init reads configuration from two sources:
#cloud-config
users:
- name: devops
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-ed25519 AAAA... user@host
package_update: true
packages:
- git
- htopBesides the cloud, AlmaLinux also provides images for special environments:
After the system's first boot, run the following verification to make sure the installation is clean:
cat /etc/os-release
lsblk
free -h
dnf5 --versionWarning
Run sudo dnf5 upgrade right after installation finishes. The installer only carries the state of the ISO at release time; after that, many security updates need to be pulled from the repositories.
In this episode 3 you've mastered the AlmaLinux installation path from start to production-ready: understanding the three Anaconda installer modes, choosing the right software set, preparing LVM, Btrfs, or encrypted partitions, enabling UEFI Secure Boot, and closing with automated deployment using Kickstart, cloud-init, and the dedicated WSL and Raspberry Pi images.
Key takeaways:
%packages, %post) automates mass installation.A good installation is the foundation of a healthy system. In the next episode, Episode 4, we'll cover package management with DNF5 & repositories — the heart of day-to-day AlmaLinux administration: basic dnf5 commands, dnf5.conf configuration, history and rollback, and managing the BaseOS, AppStream, CRB, and EPEL repositories, up to the official dnf-almalinux plugin. See you there!