How to create a new file system in OpenBSD

4 minute read

Another self-reference short post that can be useful for any OpenBSD newbie and because I love to go through the basics from time to time just to don’t lose my expertise.

Also I’ll explain the basics about how disks and partitions are managed in OpenBSD

Identify and prepare the disk

There are two types of disks common to most platform where OpenBSD can run:

  • IDE disks. Identified as wdX
  • SCSI disks and devices that use SCSI commands. Identified as sdX. This category includes also the USB and SATA disks.

Our disk for this example will be a SCSI one, sd3. Using dmesg check that the system has recognized the device.

[root@obsd ~]# dmesg |grep SCSI
sd0 at scsibus1 targ 0 lun 0: <VMware,, VMware Virtual S, 1.0> SCSI2 0/direct fixed
sd1 at scsibus1 targ 1 lun 0: <VMware,, VMware Virtual S, 1.0> SCSI2 0/direct fixed
sd2 at scsibus1 targ 2 lun 0: <VMware,, VMware Virtual S, 1.0> SCSI2 0/direct fixed
sd3 at scsibus1 targ 3 lun 0: <VMware,, VMware Virtual S, 1.0> SCSI2 0/direct fixed
[root@obsd ~]#

Next initialize the MBR of the disk using the default template. Use fdisk -i to perform the task.

[root@obsd ~]# fdisk -i sd3
Do you wish to write new MBR and partition table? [n] y
Writing MBR at offset 0.
[root@obsd ~]# fdisk sd3
Disk: sd3       geometry: 1044/255/63 [16777216 Sectors]
Offset: 0       Signature: 0xAA55
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
 0: 00      0   0   0 -      0   0   0 [           0:           0 ] unused     
 1: 00      0   0   0 -      0   0   0 [           0:           0 ] unused     
 2: 00      0   0   0 -      0   0   0 [           0:           0 ] unused     
*3: A6      0   1   2 -   1043 254  63 [          64:    16771796 ] OpenBSD    
[root@obsd ~]#

As it can be seen the partition number 3 has been initialize as OpenBSD. In the example we are using the whole disk for OpenBSD, if not you should enter in edition mode with fdisk -i <disk> and partition the disk appropriately.

Partition the disk using disklabel

Here you can be confused, because really we are going to partition the partition. These partition are also known as Filesystem Partitions since is on top of them where the filesystems and swap devices are created. And the fdisk partitions are known as MBR Partitions.

In other BSD systems, like FreeBSD, these partitions are called slices however in OpenBSD historically have been called also partitions which have lead to some confusion.

disklabel partitions are identified by appending a letter to the disk identifier, like sd3a which represents the first partition of the SCSI disk 3. There are some reserved letters:

  • a - represents always the root partition of the disk.
  • b - is always use a swap device.
  • c - represents the whole disk.

And finally here it is an example on how to create a filesystem partition. Use disklabel -E <disk> to edit the disk.

[root@obsd ~]# disklabel -E sd3
Label editor (enter '?' for help at any prompt)
> p
OpenBSD area: 64-16771860; size: 16771796; free: 16771796
#                size           offset  fstype [fsize bsize  cpg]
  c:         16777216                0  unused                  
> a a
offset: [64]
size: [16771796]
FS type: [4.2BSD]
> p
OpenBSD area: 64-16771860; size: 16771796; free: 20
#                size           offset  fstype [fsize bsize  cpg]
  a:         16771776               64  4.2BSD   2048 16384    1
  c:         16777216                0  unused                  
> q
Write new label?: [y] y
[root@obsd ~]#
[root@obsd ~]# disklabel sd3
# /dev/rsd3c:
type: SCSI
disk: SCSI disk
label: VMware Virtual S
uid: 2462f082e9092afc
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 1044
total sectors: 16777216
boundstart: 64
boundend: 16771860
drivedata: 0

16 partitions:
#                size           offset  fstype [fsize bsize  cpg]
  a:         16771776               64  4.2BSD   2048 16384    1
  c:         16777216                0  unused                  
[root@obsd ~]#

Create the file system

Use newfs against the special raw device file to create the file system. By default OpenBSD uses the 4.3BSD file system to build file systems with backward compatibility with older boot ROMS, however it also support Fast File System (FFS) as the default format for filesystem smaller that 1TB and Enhanced Fast File System (FFS2) for file systems larger than 1TB.

[root@obsd ~]# newfs /dev/rsd3a
/dev/rsd3a: 8192.0MB in 16777216 sectors of 512 bytes
41 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each
super-block backups (for fsck -b #) at:
 32, 414688, 829344, 1244000, 1658656, 2073312, 2487968, 2902624, 3317280, 3731936, 4146592, 4561248, 4975904, 5390560, 5805216, 6219872, 6634528, 7049184, 7463840, 7878496, 8293152, 8707808, 9122464,
 9537120, 9951776, 10366432, 10781088, 11195744, 11610400, 12025056, 12439712, 12854368, 13269024, 13683680, 14098336, 14512992, 14927648, 15342304, 15756960, 16171616, 16586272,
[root@obsd ~]#

Next you can mount your newly created file system like any other Unix system.

[root@obsd ~]# mkdir /data
[root@obsd ~]# mount /dev/sd3a /data
[root@obsd ~]#
[root@obsd ~]# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a      5.8G   43.1M    5.4G     1%    /
/dev/sd0d      508M   10.4M    472M     2%    /home
/dev/sd0f     1001M    6.0K    951M     0%    /tmp
/dev/sd0g     25.3G    625M   23.4G     3%    /usr
/dev/sd0e      1.9G    5.1M    1.8G     0%    /var
/dev/sd3a      7.9G    2.0K    7.5G     0%    /data
[root@obsd ~]#

And of course you can add it to the /etc/fstab file to provide persistence through a reboot of the system.

Juanma.

Comments