I'm thinking about writing some code for Linux installers if nobody else does it first. I want to make an easy partition designer -- providing a nice task-oriented UI for picking your partition layout.

The problem I commonly see is new users being handed two choices: "partition the drive automatically" and "let me do it myself". Well, usually, if you partition automatically, you have to blow away the existing OS. (Even if you don't, you can't control the layout at all, and it's probably wrong.) Many users will be forced into the "do it myself" mode, and the UI for this is never nice -- mainly because "create a partition" and having to specify the size, fs-type and mount point is pretty bad. I'm not even going to go into the primary/extended/logical nightmare of usability.

So I propose a partitioner that is focused around partitions for specific tasks (i.e., mount points). The user is presented with a diagram of the disks, similar to existing partition programs. But instead of it saying "make your partitions now" it has a bunch of check boxes, and you can play around with checking and unchecking boxes in order to see the results updated in the diagram above it.

Each checkbox refers to a potential separate partition, and has a description, mount point, and sizing parameter. Examples:

  • [disabled, checked box] Root volume - essential system files (/etc, /bin, /sbin, /lib and /dev). Mount point: /. Default size: 1GB [help]
    • Help text: The root volume contains essential system files for operation and booting. Every system must reserve space for the root volume.
  • [unchecked box] Separate partition for installed user programs. Mount point: /usr. Default size: 5GB [help]
    • Help text: Non-essential user programs are installed beneath /usr. Checking this box will provide a separate partition for programs you install, which is useful when the root volume must be limited in size. If this is unchecked, user programs will be installed on the root volume.
      If unsure, leave unchecked.
  • [checked box] Separate partition for system variable data. Mount point: /var. Default size: 5GB [help]
    • Help text: The system periodically needs to store data that changes regularly (e.g., package management information, log files, email, and so on). Checking this box will provide a separate partition for this purpose. It provides greater security and stability, since filling up this partition will not cause the root volume to become unwritable. If this is unchecked, the system will store variable data on the root volume.
      If unsure, leave checked.
  • [unchecked box] Separate partition for user home directories. Mount point: /home. Default size: as big as possible [help]
    • Help text: Each user stores his own data in his home directory. Checking this box will provide a separate partition for user data, which provides greater security, since users cannot cause the root volume to become filled. It is also useful if the root volume must be limited in size or mounted read-only. If this is unchecked, users will store their home directories on the root volume.
      If unsure, leave unchecked.
  • [unchecked box] Separate partition for system boot. Mount point: /boot. Default size: 300MB [help]
    • Help text: The boot loader reads files from this partition in order to boot the system. Checking this box will provide a separate partition for these files, which is useful for certain systems that require a small booting partition.
      If unsure, leave it as the default (if your system requires a small boot partition, this will probably be automatically detected and selected).
  • [checked box] Swap partition. Default size: 1GB [help]
    • Help text: If your system is too low on memory, programs requiring more than the available space cannot run. Checking this box provides extra virtual RAM to programs, allowing you to run more larger programs at once. If you uncheck this box, when the system runs out of RAM, programs may unexpectedly quit.
      If unsure, leave checked.
  • Existing Windows (NTFS) partition, probably your C: drive. Default size: 21GB. Current size: 40GB (16GB filled). [help]
    This partition already contains data which will not be erased. [examine]
    This partition will be resized to make room for new partitions.
    • Help text: This partition probably belongs to another operating system. If you wish to continue to use that operating system, you should leave this box checked. Unchecking this box will cause this partition to be erased and provide more space for new partitions on this system.
      If unsure, leave checked.
    • Examine: shows filesystem explorer dialog box with WINDOWS/, Program Files/, etc., and allows user to browse the filesystem.

Do you get the point? We display the actual tasks people tend to use, rather than making them make everything up, and we provide lots of nice descriptive text for reading types. The NTFS example deserves examination -- we will detect and provide a similar dialog for old ext2/3, NTFS, FAT32, HFS+, and all the other filesystems that Linux knows how to detect and mount. The resizing will be defaulted only if the existing big partition takes up too much space. We show the files so that the user can examine the filesystem and identify partitions by content.