View Issue Details

IDProjectCategoryView StatusLast Update
0000575AlmaLinux-10Generalpublic2025-11-13 05:29
Reporterrainerjung Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Platformx86_64_v2 (VM)OSAlmaLinux 10OS Version10.1
Summary0000575: DVD iso file .discinfo contains wrong architecture info for x86_64_v2
DescriptionThe .discinfo file on the AlmaLinux 10 DVD iso for x86_64_v2 contains "x86_64_v2" as the architecture string, but Anaconda expects "x86_64". This is also true for 10.1-beta-1 and probably also for the other DVD images (boot, minimal).

By the way: thanks a ton to provide the v2 option!!
Steps To ReproduceOne can boot from the ISO and start anaconda, but when anaconda tries to do an installation from this DVD, it repeatedly mounts and unmounts it and fails, allowing only a network install to proceed. Reproducible e.g. when doing a kickstart build with installation method "cdrom".

Logging in via ssh at that point to the incomplete system shows the python exception below in the logs. Anaconda had mounted the cdrom (from which the system already had booted) and immediately unmounts it again, due to the failing arch comparison.
Additional InformationError message from anaconda:

 File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/payloads/source/mount_tasks.py", line 77, in run
    return self._do_mount()
           ^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/payloads/source/cdrom/initialization.py", line 52, in _do_mount
    raise SourceSetupError("Found no CD-ROM")
pyanaconda.modules.common.errors.payload.SourceSetupError: Found no CD-ROM

Anaconda code in question:
32 class SetUpCdromSourceTask(SetUpMountTask):
 33 """Task to set up a CD-ROM source."""
 34
 35 @property
 36 def name(self):
 37 return "Set up a CD-ROM source"
 38
 39 def _do_mount(self):
 40 """Set up an installation source.
 41
 42 Try to discover installation media and mount that. Device used for booting (inst.stage2)
 43 has a priority.
 44 """
 45 log.debug("Trying to detect CD-ROM automatically")
 46 device_tree = STORAGE.get_proxy(DEVICE_TREE)
 47
 48 device_candidates = self._get_device_candidate_list(device_tree)
 49 device_id = self._choose_installation_device(device_tree, device_candidates)
 50
 51 if not device_id:
 52 raise SourceSetupError("Found no CD-ROM")
 53
 54 return device_id
 55

Then:C

59 def _choose_installation_device(self, device_tree, devices_candidates):
 60 device_id = ""
 61
 62 for dev_id in devices_candidates:
 63 try:
 64 device_data = DeviceData.from_structure(device_tree.GetDeviceData(dev_id))
 65 mount(device_data.path, self._target_mount, "iso9660", "ro")
 66 except OSError as e:
 67 log.debug("Failed to mount %s: %s", device_data.path, str(e))
 68 continue
 69
 70 if is_valid_install_disk(self._target_mount):
 71 device_id = dev_id
 72 log.info("using CD-ROM device %s mounted at %s",
 73 device_data.name, self._target_mount)
 74 break
 75 else:
 76 unmount(self._target_mount)
 77
 78 return device_id

Now

 24 from pyanaconda.modules.payloads.source.utils import is_valid_install_disk
67 def is_valid_install_disk(tree_dir):
 68 """Is the disk a valid installation repository?
 69
 70 Success criteria:
 71 - Disk must be already mounted at tree_dir.
 72 - A .discinfo file exists.
 73 - Third line of .discinfo equals current architecture.
 74
 75 :param str tree_dir: Where the disk is mounted.
 76 :rtype: bool
 77 """
 78 try:
 **79 with open(join_paths(tree_dir, ".discinfo"), "r") as f:**
 80 f.readline() # throw away timestamp
 81 f.readline() # throw away description
 82 arch = f.readline().strip()
 **83 if arch == get_arch():**
 84 return True
 85 except OSError:
 86 pass
 87 return False

OK, here's the arch == get_arch() check, where arch was read from file .discinfo. Now what is get_arch()?

 23 from blivet.arch import get_arch

and there:
def get_arch():
    """
    :return: The hardware architecture
    :rtype: string

    """
    if is_x86(bits=32):
        return 'i386'
    elif is_x86(bits=64):
 ** return 'x86_64'**
    elif is_ppc(bits=32):
        return 'ppc'
    elif is_ppc(bits=64):
        # ppc64 and ppc64le are distinct architectures
        return os.uname()[4]
    elif is_aarch64():
        return 'aarch64'
    elif is_alpha():
        return 'alpha'
    elif is_arm():
        return 'arm'
    elif is_riscv64():
        return 'riscv64'
    elif is_loongarch(bits=32):
        return 'loongarch32'
    elif is_loongarch(bits=64):
        return 'loongarch64'
    else:
        return os.uname()[4]

So no v2 case, just 'x86_64'.

TagsNo tags attached.

Activities

metalefty

2025-11-13 05:29

manager   ~0001182

For the record, the same issue is reported on the forum.
https://forums.almalinux.org/t/almalinux-10-kickstart-problem/6119/11

Issue History

Date Modified Username Field Change
2025-11-06 09:18 rainerjung New Issue
2025-11-13 05:29 metalefty Note Added: 0001182