Launchpad Entry: appselection-foundations-n-usb-creator-bugfixer
Packages affected: usb-creator-gtk, usb-creator-kde
usb-creator will be modified to use GRUB2 as the default bootloader. Care will be taken to fall back to syslinux on pre-Maverick Ubuntu CDs.
The interface will be streamlined for the common case of putting an Ubuntu ISO on a partition.
The Startup Disk Creator application now creates a single directory ("boot") to store all of its files on your USB disk. Its interface has also been improved to streamline the common use case.
- Using GRUB2 allows us to reduce the contents needed on the USB disk for usb-creator to a directory (/boot) and two files (grub.cfg and the ISO file).
- The interface for selecting the target device is currently very confusing. The user must understand the difference between a disk device and a partition device. They must also understand that clicking on "Wipe Disk" will in fact clear the contents of the entire disk device, regardless of whether they selected the disk or one of its partitions.
Bill wants to use his SanDisk Cruzer Micro as a startup disk. He starts usb-creator, selects an ISO file he's downloaded, and then selects the only target option, his SanDisk Cruzer Micro. He presses "Make Startup Disk".
foundations-n-cd-boot is implemented.
- The "Wipe Disk" button will be greyed out and its label changed to "Formatting" for any disk that is currently being formatted.
- The destination treeview will contain only one item for each set of a disk block device and its partition block devices.
- The error messages presented by usb-creator will be reviewed to ensure they are clear and descriptive of the error, and do not simply say "Installation failed."
- A "Test USB disk" button will be added to the "Install Complete" dialog.
Correcting the behavior of the format button
The devices structure will carry an additional boolean flag for each device that designates whether or not the device is being formatted. The frontend will check this flag and, if the device is selected, grey out the format button and change its label to "formatting". Selecting a device that isn't being formatted will return the button state to normal.
Only show the smartest option for each device
The label for the destination device will always be sourced from the vendor and model of the device, as obtained by udisks. This will clear up confusion as to what the "Wipe Disk" button erases, in addition to making the selection understandable to non-technical users.
A set of rules will govern what partition will be installed to:
- If a filesystem is written directly to the disk, use the disk device.
- If no partition table exists on the device and no filesystem exists on the device, require a format before use.
- If a partition table exists, but no partitions exist, require a format before use.
- If several usable partitions exist, use the first.
- If a disk image is selected in the source treeview, use the disk device.
This set of rules will live in the backend, which will simply expose a single device to the frontend.
Better error handling
When an exception is caught, usb-creator will hand the error to apport, after handling it itself.
Only write the ISO to the disk (support GRUB2)
Instead of writing the contents of the ISO image, we will leverage grub2's ability to boot straight from an ISO image (iso-scan/filename=). usb-creator will create a boot/ directory, and place the ISO image and a grub configuration file in it. When the ISO is finished copying, usb-creator will loop mount it and verify the MD5 checksums.
The supported filesystems will be expanded from VFAT to the set of filesystems that GRUB2 supports booting from (VFAT, NTFS, ext, ...).
If the source CD is older than Maverick, we will fall back to the old functionality of writing the contents of the ISO to a disk.
Test USB disk
The "Test USB disk" button on the "Installation Complete" dialog will run the USB disk in KVM. The button will only be present if kvm-ok returns 0.
- We will endeavor to resurrect the test suite for usb-creator to cover the new functionality as well as cover existing code.
If time allows, we will investigate integrating usb-creator into the continuous integration system created in foundations-m-upgrade-and-install-testing, using Sikuli as well as usb-creator's existing test harness.