View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000575 | AlmaLinux-10 | General | public | 2025-11-06 09:18 | 2025-11-13 05:29 |
| Reporter | rainerjung | Assigned To | |||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | new | Resolution | open | ||
| Platform | x86_64_v2 (VM) | OS | AlmaLinux 10 | OS Version | 10.1 |
| Summary | 0000575: DVD iso file .discinfo contains wrong architecture info for x86_64_v2 | ||||
| Description | The .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 Reproduce | One 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 Information | Error 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'. | ||||
| Tags | No tags attached. | ||||
|
|
For the record, the same issue is reported on the forum. https://forums.almalinux.org/t/almalinux-10-kickstart-problem/6119/11 |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-11-06 09:18 | rainerjung | New Issue | |
| 2025-11-13 05:29 | metalefty | Note Added: 0001182 |