WubiMigration
Rationale
Provide a tool to help users migrate a Wubi installation to a dedicated partition
Implementation
- Rely on existing Ubuntu CD or USB stick; alternatively, offer to burn an existing CD or USB stick
- All from Ubuntu; Windows need not be involved
First stage (within Ubuntu)
- Ubiquity derivative with a simpler UI; partitioning options are more restricted, and many questions need not be asked;
- Language, keyboard, user questions are unnecessary because all the answers are in place on the source filesystem already; migration-assistant is unnecessary
- Simpler partitioner, No advanced partitioner. Autopartitioning alternatives:
- Resize nominated partition
- Select free space
Install into existing partition? -> general feature
Ask the user if they have an existing ISO if they want to use. Use BitTorrent to download a new ISO if they do not.
- Asks whether the user prefers to use a USB key (warn about wiping it) or burn a CD
- Modifies a known bit on the disk to notify gfxboot-theme-ubuntu that it should show the migrate option (TBD).
- As an alternative to using a CD/USB for the second stage, it might be possible to use a D-I based initrd with local preseeding, that would avoid issues with burning a CD (bad medium) and booting off CD/USB (BIOS, people ejecting the media). In this case in stage 1 we create a preseed file, download d-i initrd/kernel in /boot, and replace menu.lst. All the user has to do is selecting "Ubuntu" at next reboot, then d-i kicks in in non-interactive mode. The first stage ubiquity interface and the second stage tasks are the same as in the CD/USB approach.
Second Stage (after reboot)
- mount partitions and clear if necessary (i.e. normal bottom half of partman)
- copy - potential checksumming will depend on method of copying:
- dd + resize filesystem (only if we have a sane method of dding a sparse file)
partimage (backup suite that can skip zeros) http://www.partimage.org/Partimage-manual_Introduction
- file-level copy as usual in ubiquity
- dd + resize filesystem (only if we have a sane method of dding a sparse file)
- regenerate fstab from scratch
- regenerate menu.lst
- install grub package and do usual grub installation
- remove lupin-support package
- regenerate initramfs
Third stage (post-install)
- Notify the user that they can remove Wubi from the Windows side.
Ubiquity Partitioning Page Mockup
Following is a draft to enhance the usability of the Ubiquity partitioning page to be used both in Ubiquity and Wubi migration tool. (in case of Wubi migration, the options resize/delete options will be limited to feasible situations).
You currently have Ubuntu installed in a Windows partition. [*] Copy your existing installation into a dedicated partition [ ] Install Ubuntu from scratch Install into: [*] Available free space in hard disk #1 (sda, 8GB) [ ] Available free space in hard disk #2 (sdb, 6GB) [ ] Empty partition #2 of hard disk #1 (sda2, 26GB) [ ] Empty partition #5 of hard disk #1 (sda5, 12GB) [ ] Advanced Mode Free up space for the new installation: [Resize an existing partition] [Delete an existing disk/partition]
The install-into list only contains safe items, I.E. items that do not contain any file and are large enough. For instance, if disk #1 is in use, and the user wants to dedicate the full disk #1 to the installation, he will have to click on "Delete an existing disk/partition", delete disk #1 and then select "Free space in hard disk #1" which will appear in the install-into list.
This is safer and clearer than merging the two operations into a single action such as "Install into disk #1", as in current ubiquity dialog. In particular, with the above suggestion, it is not possible to accidentally overwrite/delete any file unless the user explicitly selects "Delete an existing disk/partition" or (s)he uses the "Advanced Mode".
If there is no available free space or empty partition the Install-into list will instead display a message such as "No free space is available. You will need to free up some space first in order to continue the installation. A minimum of 4GB are required."
Resize partition dialog:
Squeeze [partition #1] in [disk #1] to 5GB [ =====|========= ] and free up 10GB ----------------------------------------------------- Partition Info: /dev/sda1 Total size: 15GB In use: 4GB Label: mytarget Filesystem: NTFS Files: WINDOWS, temp, Program Files, RECYCLER ----------------------------------------------------- [Resize Partition] [Cancel]
Delete partition dialog:
Delete: [partition #1 | all partitions] in [disk #1] and free up 15GB ----------------------------------------------------- Partition Info: /dev/sda1 Total size: 15GB In use: 4GB Label: mytarget Filesystem: NTFS Files: WINDOWS, temp, Program Files, RECYCLER ----------------------------------------------------- [Delete Partition] [Cancel]
Advanced Mode (same as ubiquity):
- Overwrite an existing disk/partition #skip disk/partitions where wubi is installed
- Create multiple mountpoints