Automated UEFI Network Installation of Debian with GRUB2 and Preseed

Introduction

For a number of years, I’ve performed numerous Linux network installations on “legacy” BIOS systems with TFTP and PXELinux. This has been convenient when I’ve needed to build a lot servers, and has worked well when paired with Preseed automated installations on Debian systems or Kickstart automated installations on Enterprise Linux systems. However, BIOS has largely been superseded by UEFI; for better or worse, all computers now ship with UEFI firmware. It is also the default firmware mode on VMWare ESXi. With UEFI, PXELinux no longer works; now you must use GRUB2 over PXE. Recently I decided I wanted to learn how to do this with Debian, as I needed to install Debian 13/Trixie on four identical HPE ProLiant servers running UEFI firmware and wanted to do automated Preseed installations, as opposed to installing the OS manually on each server. This post explains how I was able to get this to work.

Continue reading

Building a lab environment in Proxmox VE with Ansible and Terraform

Introduction

Recently I started experimenting with Proxmox Virtual Environment, while also evaluating it as a replacement for VMWare ESXi. This post discusses some of my experiences with configuring a Proxmox VE “lab environment” of virtual machines on a separate network segment, using Ansible and Terraform. For me at least, trying this stuff out and blogging about it helps motivate me to learn the stuff and document what I have learned. Like a lot of my posts, this one will delve into different topics and is not meant as a how-to guide (there are better examples of this out there); it is mainly to document what I’ve been working on. I do hope, however, that this provides ideas for someone else and perhaps they can improve on what I’ve done here.

Continue reading

Configuring Ubuntu and Debian as a router

Recently, for my home network, I transitioned from using a standard home router running DD-WRT to a setup with a separate managed switch, wireless access point, and a combination router/server running Ubuntu 24.04. The “router” is a basic x86-64 mini-PC with two network interfaces, purchased for about $100. The internal interface hosts three VLANs (internal, lab, and guest) and provides DHCP, DNS, and LDAP services. I prefer this setup to something like OPNsense, because I can manage everything with the command line and Ansible. If the cheap PC dies an early death or I want to switch to something newer, I can simply install Ubuntu on the replacement system, configure the NICs, and run the Ansible project to configure everything else. It also gives me a low-power-usage PC that I can run other services on in containers or even virtual machines. In this blog post I run through the steps for configuring a router like this, with both Ubuntu and Debian.

Continue reading