Chapter 1. Introduction

There are many wishlist features that we might desire from any installer of GNU/Linux and that are related to partitioning:

One nice feature of the Debian installer is that it is modular. Its components are packaged in separate udebs and they can have relatively independent development process. This document describes how we can solve all mentioned tasks keeping the Debian installer as modular as it is now. Ideally in order to add some new feature only a few new udebs must be all that is needed – no changes in the existing udebs and no recompilation would be required.

The script partman from the package partman-base opens the main partitioning menu; it may look like this one:

+------------------+ [!!] Partition the storage devices +-----------------+
|             Partition, free space or device to be modified              |
|                                                                         |
|        IDE1 master - Seagate U Series 40810 (40.0 GB)                   |
|                 #3 primary    2.1 GB B F ext3       /                   |
|                    pri/log    4.4 GB     FREE SPACE                     |
|                 #5 logical    3.6 GB                                    |
|                 #7 logical   10.0 GB   F ext3       /usr                |
|                 #8 logical   19.9 GB   K ext2       /home               |
|        IDE2 master - Maxtor 6Y120L0 (122.9 GB)                          |
|                 #7 logical    1.0 GB     linux-swap                     |
|                    logical  114.5 GB     FREE SPACE                     |
|                 #5 logical    5.5 GB     reiserfs                       |
|                 #6 logical    1.9 GB                                    |
|                                                                         |
|        Undo changes to partitions                                       |
|        Finish partitioning and write changes to disk                    |
|                                                                         |
|      <Go Back>                                          <Continue>      |
|                                                                         |
+-------------------------------------------------------------------------+

When the users choose some free space they are offered to create a new partition just like they are in cfdisk. When users choose a partition they are offered with a menu with various editing operations:

+------------------+ [!!] Partition the storage devices +-----------------+
|                    Settings on the partition:                           |
|                                                                         |
|           Usage method:          format the partition                   |
|           File system:           ext3                                   |
|           Mount point:           /var/mail                              |
|           Mount options:         noatime,nodev,nosuid,noexec,usrquota   |
|           Bootable flag:         off                                    |
|           Size:                  995.2 MB                               |
|                                                                         |
|           Finished setting up partition                                 |
|           Delete the partition                                          |
|                                                                         |
|      <Go Back>                                          <Continue>      |
|                                                                         |
+-------------------------------------------------------------------------+

All udebs are allowed to add items to this menu as well as to several other menus. They can add new items in the list of devices such as software RAID and LVM devices, networked file systems, encrypted partitions, etc. The package partman-partitioning is responsible for pure partitioning operations such as creation of new partitions and deletion. The packages partman-target and partman-basicmethods are responsible for the items `Choose how this partition should be used' and `Choose a file system'. The package partman-basicfilesystems adds support for ext2, linux-swap, fat16 and fat32. The package partman-ext3 adds support for ext3.