From 083cb78e3c010afe94223c25299a3a48d09742c7 Mon Sep 17 00:00:00 2001 From: Kiran Chavala Date: Wed, 16 Sep 2026 16:49:03 +0530 Subject: [PATCH] cks: set CDROM volume label when building the binaries ISO The CKS nodes locate the binaries ISO purely by its ISO 9660 volume label: output=`blkid -o device -t LABEL=CDROM` (conf/k8s-control-node.yml) but create-kubernetes-binaries-iso.sh invoked mkisofs without -V, relying on the tool's default volume ID. That default is not portable: genisoimage / cdrkit (Debian, Ubuntu) -> CDROM xorriso mkisofs compat mode (EL8+) -> ISOIMAGE genisoimage has not been available since EL8, where mkisofs is provided by xorriso, so an ISO built on EL8/EL9/EL10 gets LABEL="ISOIMAGE". The nodes then never mount it, loop on "Waiting for Binaries directory /mnt/k8sdisk/ to be available" until the offline install times out, and silently fall through to installing from the Internet instead of using the pinned ISO contents. Pass -V CDROM explicitly so the output no longer depends on which ISO tool the build host happens to provide. This is a no-op on hosts where the script works today, since CDROM is already the genisoimage default. Co-Authored-By: Claude Opus 5 (1M context) --- scripts/util/create-kubernetes-binaries-iso.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/util/create-kubernetes-binaries-iso.sh b/scripts/util/create-kubernetes-binaries-iso.sh index e4364054d2af..69968cbb6244 100755 --- a/scripts/util/create-kubernetes-binaries-iso.sh +++ b/scripts/util/create-kubernetes-binaries-iso.sh @@ -148,6 +148,10 @@ chmod ${kubeadm_file_permissions} "${working_dir}/k8s/kubeadm" echo "Updating imagePullPolicy to IfNotPresent in yaml files..." sed -i "s/imagePullPolicy:.*/imagePullPolicy: IfNotPresent/g" ${working_dir}/*.yaml -mkisofs -o "${output_dir}/${build_name}" -J -R -l "${iso_dir}" +# The volume label must be CDROM: the CKS nodes locate this ISO with +# "blkid -o device -t LABEL=CDROM" (see conf/k8s-control-node.yml). Do not rely on the +# tool default -- genisoimage defaults to CDROM but xorriso's mkisofs compatibility mode +# (the only mkisofs available on EL8+) defaults to ISOIMAGE, which the nodes never find. +mkisofs -V CDROM -o "${output_dir}/${build_name}" -J -R -l "${iso_dir}" rm -rf "${iso_dir}"