---
name: "mknod"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/mknod/8"
---

# mknod(8)

make device special files

## NAME

**mknod** – make device special files

## SYNOPSIS

**mknod** \[**-m** *mode*\] *name* **b**\|**c** *major* *minor*

**mknod** \[**-m** *mode*\] *name* **p**

## DESCRIPTION

The **mknod** command creates device special files. Normally the shell script */dev/MAKEDEV* is used to create special files for commonly known devices; it executes **mknod** with the appropriate arguments and can make all the files required for the device.

The options are as follows:

- **-m** *mode*

  Set the file permission bits of newly created device special files to *mode*. The mode argument can be in any of the formats specified to the [chmod(1)](/chmod/1.md) utility. If a symbolic mode is specified, the operators ‘+’ and ‘-’ are interpreted relative to an initial mode of “a=rw”.

To make nodes manually, the arguments are:

- *name*

  Device or FIFO name. For example “sd” for a SCSI disk or a “pty” for pseudo-devices. FIFOs may be named arbitrarily by the user.

- **b** \| **c** \| **p**

  Type of device or FIFO. If the device is a block type device such as a tape or disk drive which needs both cooked and raw special files, the type is **b**. All other devices are character type devices, such as terminal and pseudo devices, and are type **c**. A FIFO (also known as a named pipe) is type **p**.

- *major*

  The major device number is an integer number which tells the kernel which device driver entry point to use. To learn what major device number to use for a particular device, check the file */dev/MAKEDEV* to see if the device is known.

- *minor*

  The minor device number tells the kernel which subunit the node corresponds to on the device; for example, a subunit may be a filesystem partition or a tty line.

  Major and minor device numbers can be given in any format acceptable to [strtoul(3)](/strtoul/3.md), so that a leading “0x” indicates a hexadecimal number, and a leading “0” will cause the number to be interpreted as octal.

## SEE ALSO

[chmod(1)](/chmod/1.md), [mkfifo(1)](/mkfifo/1.md), [mkfifo(2)](/mkfifo/2.md), [mknod(2)](/mknod/2.md), [MAKEDEV(8)](/MAKEDEV/8.md)

## STANDARDS

As an extension, **mknod** can also take multiple lists of parameters in one go. Note that **-m** is not reset from one list to the next so, for example, in

```
mknod -m 700 name b 12 5 name2 b 12 6
```

both *name* and *name2* will be mode 700.

## HISTORY

A **mknod** command appeared in Version 4 AT&T UNIX.
