YaST2 Expert Partitioner

Specification

Author: Stefan Hundhammer (sh@suse.de)

Updated: Dec 16, 1999 - see the change log for details.

Abstract

This document is the specification for a new YaST2 partitioner module.

Intentions

This new partitioner is intended for experts who know what they are doing. Novice users should stick with the automatic mode that will still be available.

Being fool-proof is not one of the primary goals for this expert partitioner. But providing the required functionality is. So excessive input and logic validations will be sacrificed for the sake of completeness. If the user decides it is OK the way he specified the partitioner will not question that.

At least the first version of this partitioner will be limited to the i386 PC platform. It will not support BSD disk labels or any other platform specific partitioning schemes.

Functional Specification

This section describes the functionality required for any partitioner regardless of its respective user interface.

Required Functionality

Create A Partition

(i386 specific)

Any of the following partition types can be created:

This is subject so the following restrictions:

For primary partitions and the extended partition, the partition name (e.g. /dev/hda1 - /dev/hda2) needs to be specified.

In order to stay compatible with other operating systems on the same machine, those partition names cannot be selected automatically: PC technology does not require the table entries to be sorted according to starting cylinder etc. - they might as well be mixed at random, and other OSes might rely on one of the slots to contain the address (i.e. the start and end cylinders) of one of their partitions.

For logical partitions, the partition name will be automatically generated: There is no central table for logical partitions within the extended partition. Rather, one logical partition points to the next one (or, more precisely, wraps the next one). So always the next free slot will be used.

For all types of partitions, the following values need to be specified:

Start and end cylinder values are subject to the following restrictions:

Delete A Partition

(i386 specific)

The user can delete a partition subject to the following restrictions:

Optional Functionality

Modify A Partition

Since the underlying 'fdisk' program does not provide a facility to actually modify a partition's cylinder boundaries other than deleting and re-creating a partition, this "modify" facility cannot offer modification of all of the "create" facility's fields, namely the start and end cylinders.

The following values can be changed:

Re-Read Partition Table

This function abandons all modifications to the original partitioning on the hard disk(s) and re-reads the original partition tables.

Default Partitioning

This will do the same as the novice mode automatic partitioning. The resulting partitioning scheme can be used as a basis for further customization.

Data Flow

Input Data

Output Data

User Interface Specification

Lessons Learned - The YaST1 Partitioner In Comparison

The YaST1 partitioner provided all of the required and most of the optional functionality described above.

YaST1 used to have a sequence of screens like this:

  1. Select one of the available hard disks or skip partitioning alltogether.
  2. Create / delete partitions on that selected disk, set file system type for individual partitions.
  3. Set mount points and inode density for partitions on the selected disk and/or read the /etc/fstab of an existing installation (for the mount points specified there).
  4. Go back to 1., i.e. if the user is finished with all of his hard disks he has to choose "skip partitioning" there in order to get out of this cycle.

A lot of confusion can be avoided if the new partitioner does not require the user to go through a sequence of screens like this, manually choosing when to terminate that process and continue with the installation. Avoiding this is a design goal.

Providing a better overview of the system's hard disks and their respective partitions (and any free space left) is another. It is much easier to have all information on one screen when trying to decide which disk should hold what part of the Linux system to be installed than switching back and forth between several screens.

Users should not be required to make notes on paper during that process just to keep track of partitions on several disks and their respective sizes.

Plus, many low-end PC systems only have one single hard disk to begin with. So step (1) above most of the times is unnecessary but still required here since this is the only exit from that screen sequence loop.

And this category of users will not be overloaded with information in one single dialog because this dialog of course will contain information about their one single hard disk.

The YaST2 Expert Partitioner User Interface

All hard disks and all partitions on them will be displayed on the screen in a scrolled window.

Each hard disk will be displayed in one line including:

Each partition will be displayed in one line including:

Free space between partitions or at the end of a disk will be displayed along with the partitions. This will include:

Partition and segments of free space will be displayed sorted by (a) hard disk and (b) start cylinder.

Subject to discussion:

Hard disks, primary, extended and logical partitions and free space should be indented to reflect hierarchy they have. Thus it would be much easier to explain to the not-yet-so-expert user the connections between extended and logical partitions and why he cannot simply delete an extended partition as long as there are still logical partitions within it.

The tradeoff, however, is screen space. This indentation might eat up just the screen space necessary to avoid horizontal scrolling (which makes operating this screen very annoying). But if possible with a reasonable amount of work, this indentation should be done.

Selection

Before any action (create, delete, ...) can be performed, a list entry (i.e. a hard disk, a partition or a segment of free space) has to be selected. Depending on that selection, the user can perform actions:

Modifying hard disks, extended partitions or free space does not make any sense. Neither does deleting hard disks (automatic eject?) or free space.

"Default Partitioning" and "Re-Read Partition Table" are independent of any selection. They may be performed at any time.

Operations

For each of the required and optional functions, a push button will be provided:

Create

The "create" button will open a popup dialog window to select a partition type (primary, extended or logical). This popup window includes an "OK" button and a "Cancel" button.

Upon making a selection and pressing the "OK" button, another dialog window will be popped up with the following fields:

Delete

The user will be prompted for confirmation when activating this function.

Modify

This opens the same dialog like the "create" function's second popup dialog with the fields for partition name, start cylinder, and end cylinder disabled. Those values will be displayed, however.

Re-Read Partition Table

The user will be prompted for confirmation when activating this function.

Default Partitioning

If the partitioning has been modified in any way, the user will be prompted for confirmation when activating this function since this will essentially abandon all changes.

Prototype

Main dialog

Partition your hard disk:

/dev/hda          1-1115    8.5 GB    SEAGATE ST48012
  /dev/hda1       1-  65  509.8 MB    FAT16
  /dev/hda2      66- 150  666.7 MB    NTFS
                151- 300    1.1 GB    [free]
  /dev/hda3     301-1024    5.5 GB    Extended
    /dev/hda5   301- 302    7.8 MB  F Linux ext2   /boot
    /dev/hda6   303- 318  128.0 MB  F Linux Swap
    /dev/hda7   319-1024    5.4 GB  F Linux ext2   /
               1025-1115  713.0 MB    [free]
				        
/dev/hdb          1-1115    8.5 GB    SEAGATE ST48012
  /dev/hdb1       1- 260    2.0 GB    NTFS
  /dev/hdb2     261-1115    6.5 GB    Extended
    /dev/hdb5   261- 276  128.0 MB  F Linux Swap
    /dev/hdb6   277-1115    6.4 GB  F Linux ext2   /work

  [Create]  [Delete]  [Modify]  [Default]  [Re-Read]



"Create partition" Dialog

Version 1

Create new primary partition

Name:          [/dev/hda1]
Start Cyl:     [____1]
End Cyl:       [__512] (99/+99/+99M)
Type:          Linux ext2
               Linux Swap
Mount Point:   [/_________]
               [ ] Format this partition
Inode Density: [______]

            [OK]   [Cancel]



Version 2

Create new primary partition

Name   Start Cyl  End Cyl Type        Mount Point  Format Inode Dens.
[hda1] [____1]    [__512] Linux ext2  [/________]   [ ]   [_______]
                          Linux swap

                          [OK]     [Cancel]



Change Log

Dec 16, 1999 sh@suse.de
  • Changed status from Draft Proposal to Final
  • Added section Change Log