Debian Installer preseeding: partitioning
For automated Debian installations you usually have two choices:- scripted install
- image based
Most things are quite obvious to implement, but there are a few tricks still.
Partitioning is one of the tasks which is really tricky. It's so easy to get something wrong, and the installer will just not tell you why it failed.
What I wanted to achieve:
- 16GB root fs on the first HP SmartArray device, outside LVM
- rest of the first hpsa device as an LVM PV
- one LVM VG called "vg1"
- 1GB swap inside that
- leave the other devices untouched
So I ended up doing a simple recipe, which creates a 16GB rootfs (becoming /dev/cciss/c0d0p1) and a swap partition. The swap partition usually ends up being a logical partition, spanning the rest of the blockdevice (becoming /dev/cciss/c0d0p5).
Example:
d-i partman-auto/expert_recipe string regularvnode :: 16000 16000 16000 ext3 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext3 } mountpoint{ / } . 100 10000 1000000000 linux-swap method{ swap } format{ } .
This example actually works. So safe it for reference!
In the late script I then run parted to drop the swap partition and prepare LVM:
Example late_script:
echo "Configuring LVM" swapoff -a swapoff /dev/cciss/c0d0p5 parted /dev/cciss/c0d0 -- rm 2 parted /dev/cciss/c0d0 -- mkpart primary ext2 16GB -1s parted /dev/cciss/c0d0 -- toggle 2 lvm pvcreate /dev/cciss/c0d0p2 apt-install lvm2 # make sure target knows about lvmAll of this was only tested with Debian etch. The lenny installer has a new share of problems, and I haven't successfully seeded it yet.
One thing to know: you can't have no swap partition. While this works when doing a manual install, it doesn't when seeded. In my experience the installer would just endlessly loop in the partitioner.