mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -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.
|
* operating-system Reference:: Detail of operating-system declarations.
|
||||||
* File Systems:: Configuring file system mounts.
|
* File Systems:: Configuring file system mounts.
|
||||||
* Mapped Devices:: Block device extra processing.
|
* Mapped Devices:: Block device extra processing.
|
||||||
|
* Swap Space:: Backing RAM with disk space.
|
||||||
* User Accounts:: Specifying user accounts.
|
* User Accounts:: Specifying user accounts.
|
||||||
* Keyboard Layout:: How the system interprets key strokes.
|
* Keyboard Layout:: How the system interprets key strokes.
|
||||||
* Locales:: Language and cultural convention settings.
|
* 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
|
EFI mount point for example, mount it at @file{/mnt/boot/efi} now so it is
|
||||||
found by @code{guix system init} afterwards.
|
found by @code{guix system init} afterwards.
|
||||||
|
|
||||||
Finally, if you plan to use one or more swap partitions (@pxref{Memory
|
Finally, if you plan to use one or more swap partitions (@pxref{Swap
|
||||||
Concepts, swap space,, libc, The GNU C Library Reference Manual}), make
|
Space}), make sure to initialize them with @command{mkswap}. Assuming
|
||||||
sure to initialize them with @command{mkswap}. Assuming you have one
|
you have one swap partition on @file{/dev/sda3}, you would run:
|
||||||
swap partition on @file{/dev/sda3}, you would run:
|
|
||||||
|
|
||||||
@example
|
@example
|
||||||
mkswap /dev/sda3
|
mkswap /dev/sda3
|
||||||
|
@ -13987,6 +13987,7 @@ instance to support new system services.
|
||||||
* operating-system Reference:: Detail of operating-system declarations.
|
* operating-system Reference:: Detail of operating-system declarations.
|
||||||
* File Systems:: Configuring file system mounts.
|
* File Systems:: Configuring file system mounts.
|
||||||
* Mapped Devices:: Block device extra processing.
|
* Mapped Devices:: Block device extra processing.
|
||||||
|
* Swap Space:: Backing RAM with disk space.
|
||||||
* User Accounts:: Specifying user accounts.
|
* User Accounts:: Specifying user accounts.
|
||||||
* Keyboard Layout:: How the system interprets key strokes.
|
* Keyboard Layout:: How the system interprets key strokes.
|
||||||
* Locales:: Language and cultural convention settings.
|
* Locales:: Language and cultural convention settings.
|
||||||
|
@ -14155,7 +14156,7 @@ configuration, but with a few modifications.
|
||||||
|
|
||||||
@cindex encrypted disk
|
@cindex encrypted disk
|
||||||
The configuration for a typical ``desktop'' usage, with an encrypted
|
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
|
server, GNOME and Xfce (users can choose which of these desktop
|
||||||
environments to use at the log-in screen by pressing @kbd{F1}), network
|
environments to use at the log-in screen by pressing @kbd{F1}), network
|
||||||
management, power management, and more, would look like this:
|
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}
|
@item @code{file-systems}
|
||||||
A list of file systems. @xref{File Systems}.
|
A list of file systems. @xref{File Systems}.
|
||||||
|
|
||||||
@cindex swap devices
|
|
||||||
@cindex swap space
|
|
||||||
@item @code{swap-devices} (default: @code{'()})
|
@item @code{swap-devices} (default: @code{'()})
|
||||||
A list of UUIDs, file system labels, or strings identifying devices or
|
@cindex swap devices
|
||||||
files to be used for ``swap
|
A list of swap spaces. @xref{Swap Space}.
|
||||||
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}.
|
|
||||||
|
|
||||||
@item @code{users} (default: @code{%base-user-accounts})
|
@item @code{users} (default: @code{%base-user-accounts})
|
||||||
@itemx @code{groups} (default: @code{%base-groups})
|
@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
|
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
|
file system on a device mapped via LUKS encryption. In this way, the
|
||||||
swap file is encrypted because the entire device is encrypted.
|
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}
|
A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1}
|
||||||
may be declared as follows:
|
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
|
then be used as the @code{device} of a @code{file-system} declaration
|
||||||
(@pxref{File Systems}).
|
(@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
|
@node User Accounts
|
||||||
@section User Accounts
|
@section User Accounts
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;; This is an operating system configuration template
|
;; This is an operating system configuration template
|
||||||
;; for a "desktop" setup with GNOME and Xfce where the
|
;; 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-modules (gnu) (gnu system nss))
|
||||||
(use-service-modules desktop xorg)
|
(use-service-modules desktop xorg)
|
||||||
|
@ -42,6 +42,11 @@
|
||||||
(type "vfat")))
|
(type "vfat")))
|
||||||
%base-file-systems))
|
%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.
|
;; Create user `bob' with `alice' as its initial password.
|
||||||
(users (cons (user-account
|
(users (cons (user-account
|
||||||
(name "bob")
|
(name "bob")
|
||||||
|
|
Loading…
Reference in a new issue