WubiJaunty

Summary

This page is for discussion related to Wubi development in the Jaunty cycle.

Wubi Frontend

Wubi frontend rewrite

Current nsis code is difficult to maintain and extend. But there is a trade-off in terms of size increase. Moving to python will simplify maintenance, it will make it easier to incorporate new features (in primis bittorrent support) and it will open the door to wubi ports to other platforms.

A preliminary implementation (although not complete yet) is available in https://code.edge.launchpad.net/~ubuntu-installer/wubi/jaunty.python

To reduce size, the code uses a thin wrapper around ctypes (winui) and a custom python exe packager (pylauncher) that uses lzma solid compression. The code should also make it easier to port Wubi to other platforms in the future.

* Check accessibility of winui interface with Luke * Fix tabs and transparency in winui

Windows GUI chnages

  • Add "Use existing ISO" button during download, to use a pre-downloaded ISO (at the moment ISO and wubi.exe can be placed in the same folder, but it is not too obvious).
  • Keep the accessibility page in sync with the gfxboot one

Downloader

  • Add bittorrent support to the download manager:
    • Try first to use bittorrent
    • If that fails, use http with automatic country mirror selection
  • Add automatic proxy support

Wubi Backend

ntfs-3g fsck

At the moment unclean shutdowns result in ntfs being flagged as dirty which in turns prevents us from mounting it. The user is then forced to clean the filesystem from within Windows, by booting and rebooting cleanly and sometimes by running chkdsk /r. It is important to be able to do consistency checks, fix most common problems and if it is safe to do so, reset the dirty flag and mount normally from within Linux.

See https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/226622

Grub 2

Evaluate the possibility of using grub-2. In particular that seems to support loop mounting and ntfs, which could greatly simplify the backend design.

Loopinstallation speed

It should be possible to improve on the stock loop module. See:

Colin King seems to like the dm-loop approach, although he mentioned that dm-loop will give better performance only if it has direct access to the block device - in the Wubi case it won't, so the difference is debatable. More testing is required to confirm this.

Also assess whether the new syncio option in ntfs-3g has a negative impact on the use of a swap file.

Hibernation with swap files

It seems that this feature is already planned for Intrepid because other projects also require it (confirm). At the moment suspend-to-disk works when swap is on file, but resuming does not.

Remounting of loopfiles

See https://bugs.launchpad.net/wubi/+bug/201750)

Remounting ntfs-3g

See https://bugs.launchpad.net/wubi/+bug/186117

D-I support (i.e. same hooks as lupin-casper)

  • initrd-preseed needs to be able to take UUID and path; possibly file-preseed as well but we really need the former
  • iso-scan needs to be able to take UUID and path
  • sync this with lupin-casper
  • lupin-casper should drop initrd-override
  • casper-premount.sh should be native to lupin-casper

HD-media like installation from HD (target empty partitions?)

  • Depends on fixing bugs in partman that cause partition tables to be marked dirty
  • Any partition table changes require the disk to be entirely unused during partitioning, which is infeasible in Ubiquity
    • Consider supporting this only for d-i

Resizable images

Add support for resizable virtual disks. This can be done via:

  • LVM
  • Use 4GB contiguous (zeroed) + nGB sparse
  • qcow2 type of images

MyDocuments and host bookamarks

Add bookmarks for MyDocuments and Host drive

  • Evan does not want to add this to m-a. He's afraid users would get horribly confused when they removed their NTFS partition and all of their documents suddenly disappeared. Since it's specific to Wubi, Evan thinks it should be done there.
  • It was agreed that bookmarks are a preferred solution over symlinks or bindmounts.
  • One complication of having a MyDocuments bookmark is that it does not necessarily lie in the /host volume, so that the partition might not be mounted and/or mounted with r/o permissions.

  • see xdg-user-dir

Sysvinit improvements

  • In umountfs unmount items in /proc/mounts in reverse order stopping at /.
  • Don suggested using lazy unmount (-l) but it should not be required given the above, also lazy unmounts do not help with /host since that contains / which is never unmounted.
  • Keep the -f option, but either fix its behaviour within umount when handling bindmounts (now umount -f bindmount will unmount the underlying device) or keep using WEAKMOUNTPOINTS

Porting Wubi to other platforms

  • Support installing inside a folder (no loopfile). Handy for Lubi and Mac ports.
  • very important that this be separated such that it imposes zero cost on most Ubuntu users
  • lubi (wubi for linux)
  • mubi (wubi for mac)

Porting Wubi To Debian

  • Requires porting upstream all the changes to initramfs-tools, grub & co, sysvinit scripts, casper/d-i initrd hooks, lupin-support.

    • ... and almost certainly most of Ubuntu's d-i customisations! This is a large project (which should be done anyway, but will take a while and contains some elements which are likely to be contentious).
    • console-setup needs to become the default in Debian
    • localechooser encoding support needs to be fixed
  • Investigate the opportunity of a tighter integration with the win32-loader project (at the moment it does netinstallation only).

Wishlist

  • Support for \"large\" distros such as Ubuntu Studio or Ubuntu Education Edition (support separate add-on CD directly? or leave it as post-installation task? shall we automate such tasks somehow?)
  • support DVD
  • Bootable USB device with ISO with casper-rw
  • Grub2 (as recommended by bean123)
    • grub is still unsupported in Ubuntu anyway, and it won't be critical to have grub4dos unsupported too
    • we should move over eventually, but consensus is \"not yet\"
  • Built-in CD burner (need to evaluate CD burning libraries)
  • Online resizing (in particular squeezing of ntfs partition while it is mounted and even hosting /)
  • native ntfs installations (last time I checked szaka mentioned it was 2 years away)
  • fallocate in ntfs/vfat (we can generate the virtual disk images via the windows frontend)

Brainstorm

Wubi in brainstorm

BoF agenda and discussion


CategorySpec

WubiJaunty (last edited 2008-12-11 20:25:00 by 216)