mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-23 21:17:11 -05:00
doc: Add new Swap Space section.
* doc/guix.texi (operating-system Reference): Update swap-devices. * doc/guix.texi (Swap Space): Add it. * gnu/system/examples/desktop.tmpl: Add swap-devices example. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
4af3262d98
commit
9685c0637d
2 changed files with 116 additions and 38 deletions
147
doc/guix.texi
147
doc/guix.texi
|
@ -319,6 +319,7 @@ System Configuration
|
|||
* operating-system Reference:: Detail of operating-system declarations.
|
||||
* File Systems:: Configuring file system mounts.
|
||||
* Mapped Devices:: Block device extra processing.
|
||||
* Swap Space:: Backing RAM with disk space.
|
||||
* User Accounts:: Specifying user accounts.
|
||||
* Keyboard Layout:: How the system interprets key strokes.
|
||||
* Locales:: Language and cultural convention settings.
|
||||
|
@ -2515,10 +2516,9 @@ system relative to this path. If you have opted for @file{/boot/efi} as an
|
|||
EFI mount point for example, mount it at @file{/mnt/boot/efi} now so it is
|
||||
found by @code{guix system init} afterwards.
|
||||
|
||||
Finally, if you plan to use one or more swap partitions (@pxref{Memory
|
||||
Concepts, swap space,, libc, The GNU C Library Reference Manual}), make
|
||||
sure to initialize them with @command{mkswap}. Assuming you have one
|
||||
swap partition on @file{/dev/sda3}, you would run:
|
||||
Finally, if you plan to use one or more swap partitions (@pxref{Swap
|
||||
Space}), make sure to initialize them with @command{mkswap}. Assuming
|
||||
you have one swap partition on @file{/dev/sda3}, you would run:
|
||||
|
||||
@example
|
||||
mkswap /dev/sda3
|
||||
|
@ -13987,6 +13987,7 @@ instance to support new system services.
|
|||
* operating-system Reference:: Detail of operating-system declarations.
|
||||
* File Systems:: Configuring file system mounts.
|
||||
* Mapped Devices:: Block device extra processing.
|
||||
* Swap Space:: Backing RAM with disk space.
|
||||
* User Accounts:: Specifying user accounts.
|
||||
* Keyboard Layout:: How the system interprets key strokes.
|
||||
* Locales:: Language and cultural convention settings.
|
||||
|
@ -14155,7 +14156,7 @@ configuration, but with a few modifications.
|
|||
|
||||
@cindex encrypted disk
|
||||
The configuration for a typical ``desktop'' usage, with an encrypted
|
||||
root partition, the X11 display
|
||||
root partition, a swap file on the root partition, the X11 display
|
||||
server, GNOME and Xfce (users can choose which of these desktop
|
||||
environments to use at the log-in screen by pressing @kbd{F1}), network
|
||||
management, power management, and more, would look like this:
|
||||
|
@ -14353,38 +14354,9 @@ A list of mapped devices. @xref{Mapped Devices}.
|
|||
@item @code{file-systems}
|
||||
A list of file systems. @xref{File Systems}.
|
||||
|
||||
@cindex swap devices
|
||||
@cindex swap space
|
||||
@item @code{swap-devices} (default: @code{'()})
|
||||
A list of UUIDs, file system labels, or strings identifying devices or
|
||||
files to be used for ``swap
|
||||
space'' (@pxref{Memory Concepts,,, libc, The GNU C Library Reference
|
||||
Manual}). Here are some examples:
|
||||
|
||||
@table @code
|
||||
@item (list (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))
|
||||
Use the swap partition with the given UUID@. You can learn the UUID of a
|
||||
Linux swap partition by running @command{swaplabel @var{device}}, where
|
||||
@var{device} is the @file{/dev} file name of that partition.
|
||||
|
||||
@item (list (file-system-label "swap"))
|
||||
Use the partition with label @code{swap}. Again, the
|
||||
@command{swaplabel} command allows you to view and change the label of a
|
||||
Linux swap partition.
|
||||
|
||||
@item (list "/swapfile")
|
||||
Use the file @file{/swapfile} as swap space.
|
||||
|
||||
@item (list "/dev/sda3" "/dev/sdb2")
|
||||
Use the @file{/dev/sda3} and @file{/dev/sdb2} partitions as swap space.
|
||||
We recommend referring to swap devices by UUIDs or labels as shown above
|
||||
instead.
|
||||
@end table
|
||||
|
||||
It is possible to specify a swap file in a file system on a mapped
|
||||
device (under @file{/dev/mapper}), provided that the necessary device
|
||||
mapping and file system are also specified. @xref{Mapped Devices} and
|
||||
@ref{File Systems}.
|
||||
@cindex swap devices
|
||||
A list of swap spaces. @xref{Swap Space}.
|
||||
|
||||
@item @code{users} (default: @code{%base-user-accounts})
|
||||
@itemx @code{groups} (default: @code{%base-groups})
|
||||
|
@ -14974,7 +14946,8 @@ It is also desirable to encrypt swap space, since swap space may contain
|
|||
sensitive data. One way to accomplish that is to use a swap file in a
|
||||
file system on a device mapped via LUKS encryption. In this way, the
|
||||
swap file is encrypted because the entire device is encrypted.
|
||||
@xref{Preparing for Installation,,Disk Partitioning}, for an example.
|
||||
@xref{Swap Space}, or @xref{Preparing for Installation,,Disk
|
||||
Partitioning}, for an example.
|
||||
|
||||
A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1}
|
||||
may be declared as follows:
|
||||
|
@ -15006,6 +14979,106 @@ Devices @file{/dev/mapper/vg0-alpha} and @file{/dev/mapper/vg0-beta} can
|
|||
then be used as the @code{device} of a @code{file-system} declaration
|
||||
(@pxref{File Systems}).
|
||||
|
||||
@node Swap Space
|
||||
@section Swap Space
|
||||
@cindex swap space
|
||||
|
||||
Swap space, as it is commonly called, is a disk area specifically
|
||||
designated for paging: the process in charge of memory management
|
||||
(the Linux kernel or Hurd's default pager) can decide that some memory
|
||||
pages stored in RAM which belong to a running program but are unused
|
||||
should be stored on disk instead. It unloads those from the RAM,
|
||||
freeing up precious fast memory, and writes them to the swap space. If
|
||||
the program tries to access that very page, the memory management
|
||||
process loads it back into memory for the program to use.
|
||||
|
||||
A common misconception about swap is that it is only useful when small
|
||||
amounts of RAM are available to the system. However, it should be noted
|
||||
that kernels often use all available RAM for disk access caching to make
|
||||
I/O faster, and thus paging out unused portions of program memory will
|
||||
expand the RAM available for such caching.
|
||||
|
||||
For a more detailed description of how memory is managed from the
|
||||
viewpoint of a monolithic kernel, @xref{Memory
|
||||
Concepts,,, libc, The GNU C Library Reference Manual}.
|
||||
|
||||
The Linux kernel has support for swap partitions and swap files: the
|
||||
former uses a whole disk partition for paging, whereas the second uses a
|
||||
file on a file system for that (the file system driver needs to support
|
||||
it). On a comparable setup, both have the same performance, so one
|
||||
should consider ease of use when deciding between them. Partitions are
|
||||
``simpler'' and do not need file system support, but need to be
|
||||
allocated at disk formatting time (logical volumes notwithstanding),
|
||||
whereas files can be allocated and deallocated at any time.
|
||||
|
||||
Note that swap space is not zeroed on shutdown, so sensitive data (such
|
||||
as passwords) may linger on it if it was paged out. As such, you should
|
||||
consider having your swap reside on an encrypted device (@pxref{Mapped
|
||||
Devices}).
|
||||
|
||||
@deftp {Data Type} swap-space
|
||||
Objects of this type represent swap spaces. They contain the following
|
||||
members:
|
||||
|
||||
@table @asis
|
||||
@item @code{target}
|
||||
The device or file to use, either a UUID, a @code{file-system-label} or
|
||||
a string, as in the definition of a @code{file-system} (@pxref{File
|
||||
Systems}).
|
||||
|
||||
@item @code{dependencies} (default: @code{'()})
|
||||
A list of @code{file-system} or @code{mapped-device} objects, upon which
|
||||
the availability of the space depends. Note that just like for
|
||||
@code{file-system} objects, dependencies which are needed for boot and
|
||||
mounted in early userspace are not managed by the Shepherd, and so
|
||||
automatically filtered out for you.
|
||||
|
||||
@item @code{priority} (default: @code{#f})
|
||||
Only supported by the Linux kernel. Either @code{#f} to disable swap
|
||||
priority, or an integer between 0 and 32767. The kernel will first use
|
||||
swap spaces of higher priority when paging, and use same priority spaces
|
||||
on a round-robin basis. The kernel will use swap spaces without a set
|
||||
priority after prioritized spaces, and in the order that they appeared in
|
||||
(not round-robin).
|
||||
|
||||
@item @code{discard?} (default: @code{#f})
|
||||
Only supported by the Linux kernel. When true, the kernel will notify
|
||||
the disk controller of discarded pages, for example with the TRIM
|
||||
operation on Solid State Drives.
|
||||
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
Here are some examples:
|
||||
|
||||
@lisp
|
||||
(swap-space (target (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))
|
||||
@end lisp
|
||||
|
||||
Use the swap partition with the given UUID@. You can learn the UUID of a
|
||||
Linux swap partition by running @command{swaplabel @var{device}}, where
|
||||
@var{device} is the @file{/dev} file name of that partition.
|
||||
|
||||
@lisp
|
||||
(swap-space
|
||||
(target (file-system-label "swap"))
|
||||
(dependencies (list lvm-device)))
|
||||
@end lisp
|
||||
|
||||
Use the partition with label @code{swap}, which can be found after the
|
||||
@var{lvm-device} mapped device has been opened. Again, the
|
||||
@command{swaplabel} command allows you to view and change the label of a
|
||||
Linux swap partition.
|
||||
|
||||
@lisp
|
||||
(swap-space
|
||||
(target "/btrfs/swapfile")
|
||||
(dependencies (list btrfs-fs)))
|
||||
@end lisp
|
||||
|
||||
Use the file @file{/btrfs/swapfile} as swap space, which is present on the
|
||||
@var{btrfs-fs} filesystem.
|
||||
|
||||
@node User Accounts
|
||||
@section User Accounts
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;; This is an operating system configuration template
|
||||
;; for a "desktop" setup with GNOME and Xfce where the
|
||||
;; root partition is encrypted with LUKS.
|
||||
;; root partition is encrypted with LUKS, and a swap file.
|
||||
|
||||
(use-modules (gnu) (gnu system nss))
|
||||
(use-service-modules desktop xorg)
|
||||
|
@ -42,6 +42,11 @@
|
|||
(type "vfat")))
|
||||
%base-file-systems))
|
||||
|
||||
;; Specify a swap file for the system, which resides on the
|
||||
;; root file system.
|
||||
(swap-devices (list (swap-space
|
||||
(target "/swapfile"))))
|
||||
|
||||
;; Create user `bob' with `alice' as its initial password.
|
||||
(users (cons (user-account
|
||||
(name "bob")
|
||||
|
|
Loading…
Reference in a new issue