OpenBSD Manual Partitioning at Installation
Tags: openbsd, disk, partition, install
Published: 2018-10-31 09:40:14

---
title: OpenBSD Manual Partitioning at Installation
published: true
description: When installing OpenBSD, at the partitioning section, the installer asks which partitioning layout option to choose. I show how to manage partitions manually via disklabel.
tags: openbsd, disk, partition, install
---


![partitioning section when installing openbsd](https://thepracticaldev.s3.amazonaws.com/i/54u4m2uvpu16ucbe04hb.png)

When installing OpenBSD, at the partitioning section, the installer asks which option to choose:

1. Use (A)uto layout
1. (E)dit auto layout
1. Create (C)ustom layout


The first "a" is a good choice to rely on the default settings and save operation time at installation.


I sometimes, however, like to choose manual partitioning.
For example, using storage-limited virtual machines, I want to let the sizes of the specific mount points such as `/var` and `/home` as big as possible.
At such a time, "e" or "c" is also a good choice.

- "e": Use auto layout but configure it.
- "c": Create my own layout from the beginning.


The choices are followed by [`disklabel`](https://man.openbsd.org/disklabel) running:

![disklabel](https://thepracticaldev.s3.amazonaws.com/i/jqzq377do29cpqo2302s.png)

We can manage partitions via these commands:

```shell
? | h                # show help
2.7G
p                    # print partitions

a [Partition Label]  # add partition
d [Partition Label]  # delete partition
z                    # delete all partitions

x                    # exit & lose changes
q                    # quit & save changes
```


Today, I created OpenBSD vm image for Google Compute Engine (GCE) whose storage size is limited to 30 GBytes.
I changed mount points and their sizes like these operations:

```shell
> a a                  # add parition labeled as 'a'
offset: [64]           # just click Enter key
size: [62910476] 1.0G  # set partition size
FS type: [4.2BSD]      # just click Enter key
mount point: [none] /  # set mount point

> a b                  # add parition labeled as 'b'
offset: [2104512]      # just click Enter key
size: [60806028] 1.1G
FS type: [swap]        # just click Enter key

# skip 'c'

> a d                  # add parition labeled as 'd'

...

> p                    # check partitions in the end
> q                    # save changes and exit
```


Finally, I changed the whole disk like this:

| Partition Label | Mount Point | Before | After |
| --- | --- | ---:| ---:| ---:|
| a | `/` | 1.0G | 1.0G |
| b | *`swap`* | 1.2G | 1.1G |
| c | *`(unused)`* | - | - |
| d | `/tmp` | 1.7G | 1.6G |
| e | `/var` | 2.7G | 10.0G |
| f | `/usr` | 1.9G | 1.6G |
| g | `/usr/X11R6` | 0.9G | 0.3G |
| h | `/usr/local` | 4.0G | 4.0G |
| i | `/usr/src` | 1.7G | 1.0G |
| j | `/usr/obj` | 5.8G | 3.0G |
| k | `/home` | 9.1G | 6.4G |
|   | (sum) | 30.0G | 30.0G |

Thus, I built OpenBSD on GCE and launched a small database server with its storage big enough for my usage : )

**Updated:**

| Partition Label | Mount Point | Before | After |
| --- | --- | ---:| ---:| ---:|
| a | `/` | 1.0G | 0.8G |
| b | *`swap`* | 1.2G | 0.8G |
| c | *`(unused)`* | - | - |
| d | `/tmp` | 1.7G | 1.4G |
| e | `/var` | 2.7G | 2.4G |
| f | `/var/www` | - | 7.6G |
| f -> g | `/usr` | 1.9G | 1.6G |
| g -> h | `/usr/X11R6` | 0.9G | 0.4G |
| h -> i | `/usr/local` | 4.0G | 3.5G |
| i -> j | `/usr/src` | 1.7G | 1.0G |
| j -> k | `/usr/obj` | 5.8G | 3.0G |
| k -> l | `/home` | 9.1G | 7.5G |
|   | (sum) | 30.0G | 30.0G |

These assignments are also good for a tiny virtual machine when serving with using Google Cloud SQL as database : )