Bash Cures Cancer
Learn the UNIX/Linux command line

Home     Man Pages     SpamDefeator


MKSWAP(8)		  Linux Programmer's Manual		    MKSWAP(8)



NAME
       mkswap - set up a Linux swap area

SYNOPSIS
       mkswap [-c] [-vN] [-f] [-p PSZ] [-L label] device [size]

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

       (After  creating	 the  swap area, you need the swapon 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.)

       The device argument will usually be a disk partition  (something	 like
       /dev/hda4 or /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 par-
       titions.	 (Warning: Solaris also uses this type.	 Be  careful  not  to
       kill your Solaris partitions.)

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

       The 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 mkswap gets it  wrong.
       The  symptom  is that a subsequent swapon fails because no swap signa-
       ture is found. Typical values for 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 signa-
       ture.

       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 sim-
       ple 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 depends on the architecture and
       kernel  version.	  It is roughly 2GiB on i386, PPC, m68k, ARM, 1GiB on
       sparc, 512MiB on mips, 128GiB on alpha and 3TiB on sparc64.  For	 ker-
       nels after 2.3.3 there is not that limitation.

       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 /proc/swaps  (since
       2.1.25).

       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 con-
       tents of this file depend on architecture and kernel version).

       To  setup a swap file, it is necessary to create that file before ini-
       tializing it with mkswap , e.g. using a command like

	      # dd if=/dev/zero of=swapfile bs=1024 count=65536

       Note that a swap file must not contain any holes (so, using  cp(1)  to
       create the file is not acceptable).


OPTIONS
       -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.

       -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 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.

       -p PSZ Specify the page size to use.

       -L label
	      Specify a label, to allow swapon by label.  (Only for new style
	      swap areas.)

       -v0    Create an old style swap area.

       -v1    Create a new style swap area.


       If  no  -v  option is given, 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.


SEE ALSO
       fdisk(8), swapon(8)



Linux 2.2.4			25 March 1999			    MKSWAP(8)


UNIX/Linux commands referenced on this page:
  1. swapon
  2. at
  3. time
  4. look
  5. kill
  6. size
  7. file
  8. last
  9. as
  10. setup
  11. bitmap
  12. i386
  13. cat
  14. dd
  15. less
  16. touch