//po4a: entry man manual
////
Copyright 1998 Andries E. Brouwer (aeb@cwi.nl)
May be distributed under the GNU General Public License
////
= mkswap(8)
:doctype: manpage
:man manual: System Administration
:man source: util-linux {release-version}
:page-layout: base
:command: mkswap

== NAME

mkswap - set up a Linux swap area

== SYNOPSIS

*mkswap* [options] _device_ [_size_]

== DESCRIPTION

*mkswap* sets up a Linux swap area on a device or in a file.

The _device_ argument will usually be a disk partition (something like _/dev/sdb7_) but can also be a file. The Linux kernel does not look at partition IDs, but many installation scripts will assume that partitions of hex type 82 (LINUX_SWAP) are meant to be swap partitions. (*Warning: Solaris also uses this type. Be careful not to kill your Solaris partitions.*)

The _size_ parameter is superfluous but retained for backwards compatibility. (It specifies the desired size of the swap area in 1024-byte blocks. *mkswap* will use the entire partition or file if it is omitted. Specifying it is unwise - a typo may destroy your disk.)

After creating the swap area, you need the *swapon*(8) command to start using it. Usually swap areas are listed in _/etc/fstab_ so that they can be taken into use at boot time by a *swapon -a* command in some boot script.

== WARNING

The swap header does not touch the first block. A boot loader or disk label can be there, but it is not a recommended setup. The recommended setup is to use a separate partition for a Linux swap area.

*mkswap*, like many others mkfs-like utils, *erases the first partition block to make any previous filesystem invisible.*

However, *mkswap* refuses to erase the first block on a device with a disk label (SUN, BSD, ...).

== OPTIONS

*-c*, *--check*::
Check the device (if it is a block device) for bad blocks before creating the swap area. If any bad blocks are found, the count is printed.

*-f*, *--force*::
Go ahead even if the command is stupid. This allows the creation of a swap area larger than the file or partition it resides on.
+
Also, without this option, *mkswap* will refuse to erase the first block on a device with a partition table.

*-q*, *--quiet*::
Suppress output and warning messages.

*-L*, *--label* _label_::
Specify a _label_ for the device, to allow *swapon*(8) by label.

*--lock*[=_mode_]::
Use exclusive BSD lock for device or file it operates. The optional argument _mode_ can be *yes*, *no* (or 1 and 0) or *nonblock*. If the _mode_ argument is omitted, it defaults to *yes*. This option overwrites environment variable *$LOCK_BLOCK_DEVICE*. The default is not to use any lock at all, but it's recommended to avoid collisions with *systemd-udevd*(8) or other tools.

*-p*, *--pagesize* _size_::
Specify the page _size_ (in bytes) to use. This option is usually unnecessary; *mkswap* reads the size from the kernel.

*-U*, *--uuid* _UUID_::
Specify the _UUID_ to use. The default is to generate a UUID. The format of the UUID is a series of
hex digits separated by hyphens, like this: "c1b9d5a2-f162-11cf-9ece-0020afc76f16". The UUID parameter
may also be one of the following:
+
*clear*;;
clear the filesystem UUID
*random*;;
generate a new randomly-generated UUID
*time*;;
generate a new time-based UUID

*-v*, *--swapversion 1*::
Specify the swap-space version. (This option is currently pointless, as the old *-v 0* option has become obsolete and now only *-v 1* is supported. The kernel has not supported v0 swap-space format since 2.5.22 (June 2002). The new version v1 is supported since 2.1.117 (August 1998).)

*--verbose*::
Verbose execution. With this option *mkswap* will output more details about detected problems during swap area set up.

include::man-common/help-version.adoc[]

== ENVIRONMENT

LIBBLKID_DEBUG=all::
enables libblkid debug output.

LOCK_BLOCK_DEVICE=<mode>::
use exclusive BSD lock. The mode is "1" or "0". See *--lock* for more details.

== NOTES

The maximum useful size of a swap area depends on the architecture and the kernel version.

The maximum number of the pages that is possible to address by swap area header is 4294967295 (32-bit unsigned int). The remaining space on the swap device is ignored.

Presently, Linux allows 32 swap areas. The areas in use can be seen in the file _/proc/swaps_.

*mkswap* refuses areas smaller than 10 pages.

If you don't know the page size that your machine uses, you can look it up with *getconf PAGESIZE*.

To set up a swap file, it is necessary to create that file before initializing it with *mkswap*, e.g. using a command like

....
# dd if=/dev/zero of=swapfile bs=1MiB count=$((8*1024))
....

to create 8GiB swapfile.

Please read notes from *swapon*(8) about *the swap file use restrictions* (holes, preallocation and copy-on-write issues).

== SEE ALSO

*fdisk*(8),
*swapon*(8)

include::man-common/bugreports.adoc[]

include::man-common/footer.adoc[]

ifdef::translation[]
include::man-common/translation.adoc[]
endif::[]
