Rocky 8.4 kickstart error

I’m having trouble installing Rocky 8.4 (GA) with a kickstart, using NFS repos copied from the DVD. The install is started from a PXE boot. I don’t think that’s the issue, though. An install without using a kickstart file goes to completion without error.

When using the kickstart, I the installation of the rocky-repos package fails:

17:12:44,591 INF packaging: Installed: rocky-repos-8.4-23.el8.noarch 1622180055 129bbf6850c3e02e81a6d9d65a6e2812ca8959aec22791ca49e3a5e2cdc7e706
17:12:44,592 ERR dnf.rpm: Error unpacking rpm package rocky-repos-8.4-23.el8.noarch
17:12:44,645 INF dnf.rpm: error: unpacking of archive failed on file /etc/yum.repos.d/Rocky-AppStream.repo;60d100c0: cpio: open failed - Resource temporarily unavailable
error: rocky-repos-8.4-23.el8.noarch: install failed

Here’s the bit from my PXELinux.cfg:

label rocky84ks
  menu label Install ^Rocky Linux 8.4 Hadoop Node
  kernel rocky/8.4/vmlinuz
  append initrd=rocky/8.4/initrd.img showopts inst.loglevel=debug inst.ks=nfs:nfsvers=4:192.168.0.165:/os/ks/rhel8-hadoop.cfg inst.repo=nfs:nfsvers=4:192.168.0.165:/os/osfiles/isos/Rocky-8.4-x86_64-dvd1.iso inst.dd=nfs:nfsvers=4:192.168.0.165:/os/ks/drivers/dd-mptsas-3.04.20-5.el8_4.elrepo.iso ip=dhcp net.ifnames=0 biosdevname=0 bootdev=link

My KicksStart file below:

#version=RHEL8
# RHEL 8 - Install for Hadoop nodes
# VSE 20210620.01

# Installer options
graphical
keyboard --xlayouts='us'
lang en_US.UTF-8
timezone America/New_York --isUtc --nontp
firstboot --enable
reboot
eula --agreed

repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream

# Network information
network --bootproto=dhcp --device=eth0 --ipv6=ignore --activate --onboot=yes --hostname=vs-rhel8-new.vsnet.gmu.edu
network --bootproto=dhcp --device=eth1 --ipv6=ignore --activate --onboot=yes

# Disk partitioning information
ignoredisk --only-use=sda
clearpart --drives=sda --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=1024
part pv.01 --fstype="lvmpv" --ondisk=sda --size=20480 --grow
volgroup sys --pesize=4096 pv.01
logvol swap --vgname=sys --name=swap --fstype="swap" --recommended
logvol / --vgname=sys --name=root --fstype="xfs" --size=30720 --label="os_root"

# Groups

group --name=ssh_access --gid=401

# System services
services --enabled="chronyd"
services --enabled="ipmi"
# module --name=modulename --stream=streamname

%packages --ignoremissing

# Plymouth is excluded to eliminate graphical boot
@^minimal-environment
kexec-tools
chrony
-plymouth
device-mapper-multipath
nano
tar
zip
bzip2
net-tools
nfs-utils
nfs4-acl-tools
bind-utils
git
patch
gcc
make
rpm-build
rpm-sign
traceroute
wget
telnet
OpenIPMI
ipmitool
%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

# Other Options: don't configure X Window
skipx
selinux --enforcing

# Enable kdump
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end

# Pre-install activities
%pre-install --interpreter=/usr/bin/bash --log /mnt/sysroot/root/pre-install.log

echo "Step: Pre-install"
export MAC_ADDR=$( nmcli -p -e no --get-values GENERAL.HWADDR device show eth0 | tr [A-F:] [a-f-] )
echo "MAC address: $MAC_ADDR"
mkdir /mnt/sysroot/root/bin
mkdir /mnt/ks
mount -t nfs -o nfsvers=4,nolock,ro os-storage:/os/ks /mnt/ks
cp /mnt/ks/satellite-6-registration-vse.sh /mnt/sysroot/root/bin
if [ -f /mnt/ks/supplemental/hostnames ]; then
  H=$( grep $MAC_ADDR /mnt/ks/supplemental/hostnames | cut -d' ' -f2 )
  if [[ $H ]]; then
    echo "Found hostname: $H" 
    echo $H > /mnt/sysroot/root/hostname.tmp
  fi
fi
cp /mnt/ks/supplemental/dell-system-update.repo /mnt/sysroot/etc/yum.repos.d
echo "Pre-install activities complete"
%end

# Post-install activities (runs in installed system unless --nochroot option is used)
%post --interpreter=/usr/bin/bash --log /root/post-install.log

set -x
echo "Step: Post-install"
# See if we found a hostname from pre-install step
if [ -f /root/hostname.tmp ]; then
  export H=$( cat /root/hostname.tmp )
  echo "Setting hostname to $H"
  echo $H > /etc/hostname
fi

# Get info about just-installed system
source /etc/os-release
export NAME ID VERSION_ID

# Mount NFS install repos
mkdir -p /srv/osfiles
echo "os-storage:/os/osfiles /srv/osfiles nfs _netdev,nfsvers=4,sec=sys 0 0" >> /etc/fstab

# Configure repos for dnf/yum

cat <<EOF > /etc/yum.repos.d/nfs.repo
[nfs-baseos]
name=Local $NAME $VERSION_ID BaseOS
baseurl=file:///srv/osfiles/$ID/$VERSION_ID/BaseOS
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[nfs-appstream]
name=Local $NAME $VERSION_ID AppStream
baseurl=file:///srv/osfiles/$ID/$VERSION_ID/AppStream
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF

%end
# Password policies
%anaconda
pwpolicy root --minlen=6 --minquality=1 --strict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --strict --nochanges --notempty
pwpolicy luks --minlen=6 --minquality=1 --strict --nochanges --notempty
%end

FWIW, A CentOS 8 Stream install fails on the centos-stream-repos package.

I’m 99% certain it’s something I’m doing, but I’m stumped.

A RHEL 8.4 install (which, of course, lacks the repos packages) works fine.

UPDATE:

It appears to be the %pre section.

I’ve been adding bits of my kickstart to a “clean” kickstart generated during a manual install. Everything has worked until I added that back in.

Just for kicks, I u(n)mounted the NFS share I left dangling before the end of the section, but that doesn’t seem to be it. Doesn’t make sense why this isn’t broken in RHEL, unless they’re using a different version of Anaconda? Stay tuned.