** Description changed: + [ Impact ] + + * When a disk has partitions + a filesystem signature (e.g., it used to be a ZFS member and then ended up partitioned), using it in a guided reformat scenario results in a failed installation. Subiquity logs show "Partition xxx is not in list". + * Having Subiquity advertise guided scenarios that do not work gives a bad impression on users. + + [ Test Plan ] + + * Boot the 24.04.1 desktop ISO (can be a VM). + * If testing the fix, refresh the `ubuntu-desktop-bootstrap` snap to a patched version. + * Open a terminal and add a FS signature + partitions to a disk (here /dev/vda) + # dd if=/dev/zero of=/root/test.img count=100 bs=1M + # zpool create testpool /root/test.img + # zpool export testpool + # dd if=/root/test.img of=/dev/vda + # fdisk /dev/vda --wipe=never + * create a GPT partition table using "g" + * create partitions using "n" and follow instructions + * write to the disk using "w" + * Go through the desktop installer screens normally until "Disk setup" + * Select "Erase disk and install Ubuntu" + * Go through the next screens. At some point the installer will show a "Something went wrong" screen. + * Check for the presence of the "is not in list" error: + * $ sudo grep -F "is not in list" /var/log/installer/subiquity-server-debug.log + + + [ Where problems could occur ] + + * Currently, the bug makes the installation fail quite early ; before + the installer starts wiping the disk; so there should be no risk of data + loss for users running into it. + + * We think that the risk of a regression caused by the patch is low. + Fixing this bug will lower the number of failed installations and the + number of bug reports we get, which is great. However, it also means + that more installations will go past the disk wipe operation, so we + might end up with a slightly higher count of bug reports for other + unrelated issues (which are typically more severe if they occur past the + disk operation point). + + [ Other Info ] + + * The fix to backport is + https://github.com/canonical/subiquity/pull/2092 + + [ Original description ] + We have many private reports where the user selects a GuidedTargetReformat ; which fails with "Partition ... is not in list". Example: 2024-04-26 19:39:43,220 DEBUG subiquity.server.controllers.filesystem:1182 GuidedChoiceV2(target=GuidedStorageTargetReformat(disk_id='disk-sda', allowed=[<GuidedCapability.DIRECT: 2>, <GuidedCapability.LVM: 3>, <GuidedCapability.LVM_LUKS: 4>, <GuidedCapability.ZFS: 5>, <GuidedCapability.ZFS_LUKS_KEYSTORE: 6>], disallowed=[GuidedDisallowedCapability(capability=<GuidedCapability.CORE_BOOT_ENCRYPTED: 7>, reason=<GuidedDisallowedCapabilityReason.CORE_BOOT_ENCRYPTION_UNAVAILABLE: 2>, message='not encrypting device storage as checking TPM gave: the TPM is in DA lockout mode'), GuidedDisallowedCapability(capability=<GuidedCapability.CORE_BOOT_UNENCRYPTED: 8>, reason=<GuidedDisallowedCapabilityReason.THIRD_PARTY_DRIVERS: 4>, message='Enhanced secure boot options cannot currently install third party drivers.')]), capability=<GuidedCapability.DIRECT: 2>, recovery_key=None, sizing_policy=<SizingPolicy.ALL: 2>, reset_partition=False, reset_partition_size=None) 2024-04-26 19:39:43,221 DEBUG root:38 finish: subiquity/Filesystem/v2_guided_POST: SUCCESS: 500 Traceback (most recent call last): - File "/snap/ubuntu-desktop-bootstrap/171... + File "/snap/ubuntu-desktop-bootstrap/171... 2024-04-26 19:39:43,221 DEBUG subiquity.server.server:541 request to /storage/v2/guided crashed Traceback (most recent call last): - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/api/server.py", line 164, in handler - result = await implementation(**args) - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/server/controllers/filesystem.py", line 1184, in v2_guided_POST - await self.guided(data) - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/server/controllers/filesystem.py", line 726, in guided - gap = self.start_guided(choice.target, disk) - File "/snap/ubuntu-desktop-bootstrap/171/usr/lib/python3.10/functools.py", line 926, in _method - return method.__get__(obj, cls)(*args, **kwargs) - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/server/controllers/filesystem.py", line 645, in start_guided_reformat - self.reformat(disk, wipe="superblock-recursive") - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/filesystem/manipulator.py", line 257, in reformat - self.delete_partition(p, True) - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/filesystem/manipulator.py", line 120, in delete_partition - self.model.remove_partition(part) - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/models/filesystem.py", line 2110, in remove_partition - for p2 in movable_trailing_partitions_and_gap_size(part)[0]: - File "/snap/ubuntu-desktop-bootstrap/171/usr/lib/python3.10/functools.py", line 889, in wrapper - return dispatch(args[0].__class__)(*args, **kw) - File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/filesystem/gaps.py", line 281, in _movable_trailing_partitions_and_gap_size_partition - part_idx = pgs.index(partition) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/api/server.py", line 164, in handler + result = await implementation(**args) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/server/controllers/filesystem.py", line 1184, in v2_guided_POST + await self.guided(data) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/server/controllers/filesystem.py", line 726, in guided + gap = self.start_guided(choice.target, disk) + File "/snap/ubuntu-desktop-bootstrap/171/usr/lib/python3.10/functools.py", line 926, in _method + return method.__get__(obj, cls)(*args, **kwargs) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/server/controllers/filesystem.py", line 645, in start_guided_reformat + self.reformat(disk, wipe="superblock-recursive") + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/filesystem/manipulator.py", line 257, in reformat + self.delete_partition(p, True) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/filesystem/manipulator.py", line 120, in delete_partition + self.model.remove_partition(part) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/models/filesystem.py", line 2110, in remove_partition + for p2 in movable_trailing_partitions_and_gap_size(part)[0]: + File "/snap/ubuntu-desktop-bootstrap/171/usr/lib/python3.10/functools.py", line 889, in wrapper + return dispatch(args[0].__class__)(*args, **kw) + File "/snap/ubuntu-desktop-bootstrap/171/bin/subiquity/subiquity/common/filesystem/gaps.py", line 281, in _movable_trailing_partitions_and_gap_size_partition + part_idx = pgs.index(partition) ValueError: Partition(device=disk-sda, size=6109091840, wipe='superblock', number=1, preserve=True, offset=32768, partition_type='xxxxxxxx', path='/dev/sda1', uuid='xxxxxxxx', id='partition-sda1', type='partition') is not in list
** Also affects: subiquity (Ubuntu) Importance: Undecided Status: New ** Also affects: subiquity (Ubuntu Noble) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2081738 Title: [SRU] Guided disk reformat for disk with fs signature fails with "Partition ... is not in list" To manage notifications about this bug go to: https://bugs.launchpad.net/subiquity/+bug/2081738/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs