Homelab Day 9

Day 9

  ·  2 min read

See intro for what this is about.

This post was entirely written by Claude (except this paragraph). The work was also done by Claude with my guidance.

A day of mostly fighting with Cobbler and UEFI. Got all three hypervisors installing unattended by the end of it.

The problems, roughly in the order I hit them:

  • inst.stage2 was missing from the kernel options, so dracut would intermittently fail to find the installer squashfs and drop to an interactive prompt.
  • Reinstalling a machine left the old LVM volume group imported in device mapper. clearpart wipes the partition table but not the VG, so Anaconda fails with “name ‘os’ is already in use”. Fixed with a %pre wipe.
  • GRUB rewrites NVRAM on install, putting itself first and breaking subsequent PXE boots. I tried fixing it in %post --nochroot but Anaconda runs grub2-install after %post, which resets it again. Ended up creating a oneshot systemd service that fixes the boot order on first boot and then removes itself.
  • The %post script used $ and \ which Cobbler’s Cheetah templating engine was treating as template variables. Needed escaping — this broke kickstart rendering for all machines until I figured out what was happening.
  • Anaconda tries to report install progress via IPMI on Dell hardware, fails, and shows a blocking IpmiErrorDialog. Blacklisting the IPMI kernel modules in the profile kernel options prevents this entirely.
  • Excluding fwupd to save space broke the boot: shim-x64 depends on dbxtool which is only in fwupd. Removed that exclusion.
  • Each reinstall was accumulating a stale NVRAM boot entry. Updated the firstboot service to also clean those up, keeping only the newest one.

Also documented the hypervisor hardware properly (hyper3 is a 7090 with a different PCH from the other two) and started retargeting Ansible from the old opti hosts to the new hyper group.

Commits #

cobbler #

ansible #