157 lines
5.0 KiB
Groff
157 lines
5.0 KiB
Groff
.\" Copyright 1998 Andries E. Brouwer (aeb@cwi.nl)
|
|
.\"
|
|
.\" May be distributed under the GNU General Public License
|
|
.\" Rewritten for 2.1.117, aeb, 981010.
|
|
.\"
|
|
.TH MKSWAP 8 "25 March 1999" "Linux 2.2.4" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
mkswap \- set up a Linux swap area
|
|
.SH SYNOPSIS
|
|
.BI "mkswap [\-c] [\-v" N "] [\-f] [\-p " PSZ "] [\-L " label "] " device " [" size "]"
|
|
.SH DESCRIPTION
|
|
.B mkswap
|
|
sets up a Linux swap area on a device or in a file.
|
|
|
|
(After creating the swap area, you need the
|
|
.B swapon
|
|
command to start using it. Usually swap areas are listed in
|
|
.I /etc/fstab
|
|
so that they can be taken into use at boot time by a
|
|
.B swapon -a
|
|
command in some boot script.)
|
|
|
|
The
|
|
.I device
|
|
argument will usually be a disk partition (something like
|
|
.I /dev/hda4
|
|
or
|
|
.IR /dev/sdb7 )
|
|
but can also be a file.
|
|
The Linux kernel does not look at partition Id's, 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
|
|
.I size
|
|
parameter is superfluous but retained for backwards compatibility.
|
|
(It specifies the desired size of the swap area in 1024-byte blocks.
|
|
.B mkswap
|
|
will use the entire partition or file if it is omitted.
|
|
Specifying it is unwise - a typo may destroy your disk.)
|
|
|
|
The
|
|
.I PSZ
|
|
parameter specifies the page size to use. It is almost always
|
|
unnecessary (even unwise) to specify it, but certain old libc
|
|
versions lie about the page size, so it is possible that
|
|
.B mkswap
|
|
gets it wrong. The symptom is that a subsequent
|
|
.B swapon
|
|
fails because no swap signature is found. Typical values for
|
|
.I PSZ
|
|
are 4096 or 8192.
|
|
|
|
Linux knows about two styles of swap areas, old style and new style.
|
|
The last 10 bytes of the first page of the swap area distinguishes
|
|
them: old style has `SWAP_SPACE', new style has `SWAPSPACE2' as
|
|
signature.
|
|
|
|
In the old style, the rest of this first page was a bit map,
|
|
with a 1 bit for each usable page of the swap area.
|
|
Since the first page holds this bit map, the first bit is 0.
|
|
Also, the last 10 bytes hold the signature. So, if the page
|
|
size is S, an old style swap area can describe at most
|
|
8*(S-10)-1 pages used for swapping.
|
|
With S=4096 (as on i386), the useful area is at most 133890048 bytes
|
|
(almost 128 MiB), and the rest is wasted.
|
|
On an alpha and sparc64, with S=8192, the useful area is at most
|
|
535560992 bytes (almost 512 MiB).
|
|
|
|
The old setup wastes most of this bitmap page, because zero bits
|
|
denote bad blocks or blocks past the end of the swap space,
|
|
and a simple integer suffices to indicate the size of the swap space,
|
|
while the bad blocks, if any, can simply be listed. Nobody wants
|
|
to use a swap space with hundreds of bad blocks. (I would not even
|
|
use a swap space with 1 bad block.)
|
|
In the new style swap area this is precisely what is done.
|
|
The maximum useful size of a swap area now depends on the architecture.
|
|
It is roughly 2GiB on i386, PPC, m68k, ARM, 1GiB on sparc, 512MiB on mips,
|
|
128GiB on alpha and 3TiB on sparc64.
|
|
|
|
Note that before 2.1.117 the kernel allocated one byte for each page,
|
|
while it now allocates two bytes, so that taking a swap area of 2 GiB
|
|
in use might require 2 MiB of kernel memory.
|
|
|
|
Presently, Linux allows 32 swap areas (this was 8 before Linux 2.4.10).
|
|
The areas in use can be seen in the file
|
|
.I /proc/swaps
|
|
(since 2.1.25).
|
|
|
|
.B mkswap
|
|
refuses areas smaller than 10 pages.
|
|
|
|
If you don't know the page size that your machine uses, you may be
|
|
able to look it up with "cat /proc/cpuinfo" (or you may not -
|
|
the contents of this file depend on architecture and kernel version).
|
|
|
|
To setup a swap file, it is necessary to create that file before
|
|
initializing it with
|
|
.B mkswap ,
|
|
e.g. using a command like
|
|
|
|
.nf
|
|
.RS
|
|
# dd if=/dev/zero of=swapfile bs=1024 count=65536
|
|
.RE
|
|
.fi
|
|
|
|
Note that a swap file must not contain any holes (so, using
|
|
.BR cp (1)
|
|
to create the file is not acceptable).
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
.B \-c
|
|
Check the device (if it is a block device) for bad blocks
|
|
before creating the swap area.
|
|
If any are found, the count is printed.
|
|
.TP
|
|
.B \-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.
|
|
On SPARC, force creation of the swap area.
|
|
Without this option
|
|
.B mkswap
|
|
will refuse to create a v0 swap on a device with a valid SPARC superblock,
|
|
as that probably means one is going to erase the partition table.
|
|
.TP
|
|
.BI "\-p " PSZ
|
|
Specify the page size to use.
|
|
.TP
|
|
.BI "\-L " label
|
|
Specify a label, to allow swapon by label.
|
|
(Only for new style swap areas.)
|
|
.TP
|
|
.B \-v0
|
|
Create an old style swap area.
|
|
.TP
|
|
.B \-v1
|
|
Create a new style swap area.
|
|
|
|
.LP
|
|
If no \-v option is given,
|
|
.B mkswap
|
|
will default to new style, but use old style if the current kernel
|
|
is older than 2.1.117 (and also if PAGE_SIZE is less than 2048).
|
|
The new style header does not touch the first block, so may be
|
|
preferable, in case you have a boot loader or disk label there.
|
|
If you need to use both 2.0 and 2.2 kernels, use the \-v0 option
|
|
when creating the swapspace.
|
|
|
|
.SH "SEE ALSO"
|
|
.BR fdisk (8),
|
|
.BR swapon (8)
|