Ubuntu 20.04 server install fails during partitioning - SUBIQUITY FAILURE

SUBIQUITY FAILURE. (I can't make new tags - so I get to shout more here, sorry)

I'm upgrading my server from Ubuntu 18.04.4 LTS "desktop" image to 20.04 LTS server.

/boot on /dev/sda1 (ext4) / on /dev/sda3 (ext4) user-data on a ZFS pool.

After going through the process to select the existing partitions and comitting to it, the subiquity installer fails consistently on creating /dev/sda1.

This can't be an uncommon scenario, to reuse (and reformat) the partitions in place?

I've tried to save the logs from this (and submitted all logs from three attempts to Canonical), but they are nowhere to be found on the USB stick, and there is no casper-rw file (despite setting up 4GB of persistent storage). So it's really hard to provide the data to fix the problem.

Fortunately, I have backups of the root and boot partitions, so I will dd them back in place to get the system running again.

Update: dd'ed back root&boot, system is up running 18.04.4 again.

transcript from crash log:

get_blockdev_sector_size: (log=512, phys=512)
 sda logical_block_size_bytes: 512
 Verifying /dev/sda1 exists
 Verifying /dev/sda1 size, expecting 1023000064 bytes, found 1023000064 bytes
 Running command ['sfdisk', '--dump', '/dev/sda'] with allowed return codes [0] (capture=True)
 An error occured handling 'partition-sda1': ValueError - dictionary update sequence element #3 has length 1; 2 is required
 finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: FAIL: configuring partition: partition-sda1
 TIMED BLOCK_META: 4.140
 finish: cmd-install/stage-partitioning/builtin/cmd-block-meta: FAIL: curtin command block-meta
 Traceback (most recent call last):
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/commands/main.py", line 202, in main
     ret = args.func(args)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/log.py", line 97, in wrapper
     return log_time("TIMED %s: " % msg, func, *args, **kwargs)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/log.py", line 79, in log_time
     return func(*args, **kwargs)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/commands/block_meta.py", line 105, in block_meta
     return meta_custom(args)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/commands/block_meta.py", line 1878, in meta_custom
     handler(command, storage_config_dict)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/commands/block_meta.py", line 850, in partition_handler
     partition_verify(part_path, info)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/commands/block_meta.py", line 754, in partition_verify
     verify_ptable_flag(devpath, info['flag'])
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/commands/block_meta.py", line 733, in verify_ptable_flag
     info = block.sfdisk_info(devpath)
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/block/__init__.py", line 290, in sfdisk_info
     return _sfdisk_parse(out.splitlines())
   File "/snap/subiquity/1772/lib/python3.6/site-packages/curtin/block/__init__.py", line 261, in _sfdisk_parse
     for item in rhs.replace(' ', '').split(',')))
 ValueError: dictionary update sequence element #3 has length 1; 2 is required
 dictionary update sequence element #3 has length 1; 2 is required
 curtin: Installation failed with exception: Unexpected error while running command.
 Command: ['curtin', 'block-meta', 'simple']
 Exit code: 3
 Reason: -
 Stdout: start: cmd-install/stage-partitioning/builtin/cmd-block-meta: curtin command block-meta
         get_path_to_storage_volume for volume partition-sda1({'device': 'disk-sda', 'size': 1023000064, 'wipe': 'superblock', 'flag': 'linux', 'number': 1, 'preserve': True, 'grub_device': False, 'type': 'partition', 'id': 'partition-sda1'})
         get_path_to_storage_volume for volume disk-sda({'ptable': 'msdos', 'serial': 'Samsung_SSD_850_EVO_250GB_S2R4NX0H523042A', 'wwn': '0x5002538d40e8f355', 'path': '/dev/sda', 'preserve': True, 'name': '', 'grub_device': True, 'type': 'disk', 'id': 'disk-sda'})
         Processing serial 0x5002538d40e8f355 via udev to 0x5002538d40e8f355
         lookup_disks found: ['wwn-0x5002538d40e8f355', 'wwn-0x5002538d40e8f355-part3', 'wwn-0x5002538d40e8f355-part1', 'wwn-0x5002538d40e8f355-part2']
         Running command ['udevadm', 'info', '--query=property', '--export', '/dev/sda'] with allowed return codes [0] (capture=True)
         /dev/sda is multipath device? False
         Running command ['multipath', '-c', '/dev/sda'] with allowed return codes [0] (capture=True)
         /dev/sda is multipath device member? False
         block.lookup_disk() returning path /dev/sda
         Running command ['partprobe', '/dev/sda'] with allowed return codes [0, 1] (capture=False)
         Running command ['udevadm', 'settle'] with allowed return codes [0] (capture=False)
         TIMED udevadm_settle(): 0.139
         devsync happy - path /dev/sda now exists
         return volume path /dev/sda
         Running command ['partprobe', '/dev/sda'] with allowed return codes [0, 1] (capture=False)
         Running command ['udevadm', 'settle'] with allowed return codes [0] (capture=False)
         TIMED udevadm_settle(): 0.127
         devsync happy - path /dev/sda now exists
         return volume path /dev/sda1
         get_path_to_storage_volume for volume partition-sda3({'device': 'disk-sda', 'size': 32768000000, 'wipe': 'superblock', 'flag': 'linux', 'number': 3, 'preserve': True, 'grub_device': False, 'type': 'partition', 'id': 'partition-sda3'})
         get_path_to_storage_volume for volume disk-sda({'ptable': 'msdos', 'serial': 'Samsung_SSD_850_EVO_250GB_S2R4NX0H523042A', 'wwn': '0x5002538d40e8f355', 'path': '/dev/sda', 'preserve': True, 'name': '', 'grub_device': True, 'type': 'disk', 'id': 'disk-sda'})
         Processing serial 0x5002538d40e8f355 via udev to 0x5002538d40e8f355
         lookup_disks found: ['wwn-0x5002538d40e8f355', 'wwn-0x5002538d40e8f355-part2', 'wwn-0x5002538d40e8f355-part1', 'wwn-0x5002538d40e8f355-part3']
         Running command ['udevadm', 'info', '--query=property', '--export', '/dev/sda'] with allowed return codes [0] (capture=True)

Solution 1:

Disable the network from the VM configuration, installer doesn't crash. Once ubuntu is installed, re-enable network and configure as usual