USBCreatorMaverick

Revision 6 as of 2010-05-18 15:44:18

Clear message

h##(see the SpecSpec for an explanation)

Summary

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.

Release Note

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.

Rationale

  • 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.

User stories

  • 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".

Assumptions

foundations-m-cd-boot is implemented.

Design

  • 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.

Implementation

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.

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.

Test/Demo Plan

  • We will endeavor to resurrect the test suite for usb-creator to cover the new functionality as well as cover existing code.

BoF agenda and discussion

= Bugs =
 * Show Manufactuer name instead of device name (Eg Acme Disk rather than /dev/sdb)
 * do not display /dev/sdb and /dev/sdb1;
  * Only offer the "smartest" choice in the UI.
    - If they don't have a partition table, then behind the scenes only offer the full disk device
    - If they do have a partition table, then behind the scenes only offer the partition device
 * Make startup disk button needs to be greyed out when disk and iso are not selected (no bug reported - file bug)
 * Detect other filesystem quirks and force format (FAT16 or USB key that has no partition table i.e. partition direct on device - unless --whole-disk is used)
 * when formatting show more feedback than just a spinning cursor.
  * target/destination box should show you that it is "Formating..." and allow you to format other disks
 * verify the disk after we write it out - do md5summing by reading back from flash

= If we move to Grub2 for disks =
 * Other file system support
   - Support existing NTFS disk support
   - Support ext3/ext4
 * Only putting a .iso on the disk and use grub's loopback (in conjunction with `iso-scan/filename=`)


= Random Ideas =
 * automated tests?
 * better messages for internal failures
 * allow apport to report crashes?
 * better message if you try to install something that's not an ubuntu iso
 * clone an existing usb stick (allowing for different sizes; might cause ui confusion)
 * We can try kvm-qemu boot to verify ISO
 * look at competition and steal ideas (e.g. Fedora)


CategorySpec